web/admin: show stage binding form when creating stage in bound list

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer
2022-12-25 15:09:22 +01:00
parent f5738804ff
commit dbaf03430e
16 changed files with 834 additions and 152 deletions

View File

@ -141,14 +141,18 @@ export class BoundStagesList extends Table<FlowStageBinding> {
renderToolbar(): TemplateResult {
return html`
<ak-stage-wizard
createText=${t`Create & bind Stage`}
?showBindingPage=${true}
bindingTarget=${ifDefined(this.target)}
></ak-stage-wizard>
<ak-forms-modal>
<span slot="submit"> ${t`Create`} </span>
<span slot="header"> ${t`Create Stage binding`} </span>
<ak-stage-binding-form slot="form" targetPk=${ifDefined(this.target)}>
</ak-stage-binding-form>
<button slot="trigger" class="pf-c-button pf-m-primary">${t`Bind stage`}</button>
<button slot="trigger" class="pf-c-button pf-m-primary">${t`Bind existing stage`}</button>
</ak-forms-modal>
<ak-stage-wizard createText=${t`Create Stage`}></ak-stage-wizard>
${super.renderToolbar()}
`;
}

View File

@ -31,7 +31,7 @@ export class StageBindingForm extends ModelForm<FlowStageBinding, string> {
targetPk?: string;
getSuccessMessage(): string {
if (this.instance) {
if (this.instance?.pk) {
return t`Successfully updated binding.`;
} else {
return t`Successfully created binding.`;
@ -39,9 +39,9 @@ export class StageBindingForm extends ModelForm<FlowStageBinding, string> {
}
send = (data: FlowStageBinding): Promise<FlowStageBinding> => {
if (this.instance) {
if (this.instance?.pk) {
return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUpdate({
fsbUuid: this.instance.pk || "",
fsbUuid: this.instance.pk,
flowStageBindingRequest: data,
});
} else {
@ -67,21 +67,18 @@ export class StageBindingForm extends ModelForm<FlowStageBinding, string> {
`;
}
getOrder(): Promise<number> {
if (this.instance) {
return Promise.resolve(this.instance.order);
async getOrder(): Promise<number> {
if (this.instance?.pk) {
return this.instance.order;
}
return new FlowsApi(DEFAULT_CONFIG)
.flowsBindingsList({
target: this.targetPk || "",
})
.then((bindings) => {
const orders = bindings.results.map((binding) => binding.order);
if (orders.length < 1) {
return 0;
}
return Math.max(...orders) + 1;
});
const bindings = await new FlowsApi(DEFAULT_CONFIG).flowsBindingsList({
target: this.targetPk || "",
});
const orders = bindings.results.map((binding) => binding.order);
if (orders.length < 1) {
return 0;
}
return Math.max(...orders) + 1;
}
renderTarget(): TemplateResult {