diff --git a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx index 824ce480b..9ce6a0ceb 100644 --- a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx +++ b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx @@ -531,6 +531,7 @@ class ContainerListComponent } this.addContainer = this.addContainer.bind(this); + this.deleteContainer = this.deleteContainer.bind(this); this.updateNewContainerName = this.updateNewContainerName.bind(this); } @@ -560,17 +561,12 @@ class ContainerListComponent && this.state.containers.map((container) =>
  • {container.key} - -
  • ) - } } ; @@ -687,6 +683,63 @@ class ContainerListComponent }); }); } + + private deleteContainer(event: React.MouseEvent): void { + + event.preventDefault(); + + const deleteButton: HTMLButtonElement + = event.target as HTMLButtonElement + const containerKey: string = deleteButton + .getAttribute("data-containerKey") as string; + + const init: RequestInit = { + + body: JSON.stringify({}), + credentials: "same-origin", + method: "DELETE", + } + + const url: string = `${this.props.dispatcherPrefix}` + + `/page-models/${this.props.ccmApplication}/` + + `${this.props.pageModelName}` + + `/containers/${containerKey}`; + + fetch(url, init) + .then((response: Response) => { + + if (response.ok) { + + const containers = this + .state + .containers + .filter((container) => { + return container.key !== containerKey; + }); + + this.setState({ + ...this.state, + containers, + }) + + } else { + this.setState({ + ...this.state, + errorMsg: `Failed to delete container ` + + `"${containerKey}": ` + + ` ${response.status} ${response.statusText}`, + }); + } + + }) + .catch((error) => { + this.setState({ + ...this.state, + errorMsg: `Failed to delete container ` + + `"${containerKey}": ${error.message}`, + }); + }); + } } // interface PageModelEditorProps {