Add diagram delete support
Some checks failed
Tests / test-java-8-war-generation (push) Failing after 26s
Tests / test-mvn-livecycle (11) (push) Failing after 5s
Tests / test-mvn-livecycle (17) (push) Failing after 6s
Tests / test-embedded (11) (push) Has been skipped
Tests / test-embedded (17) (push) Has been skipped
Tests / test-mvn-jetty-run (11) (push) Has been skipped
Tests / test-mvn-jetty-run (17) (push) Has been skipped
Tests / test-jetty (11) (push) Has been skipped
Tests / test-jetty (17) (push) Has been skipped
Tests / test-tomcat (11) (push) Has been skipped
Tests / test-tomcat (17) (push) Has been skipped
Some checks failed
Tests / test-java-8-war-generation (push) Failing after 26s
Tests / test-mvn-livecycle (11) (push) Failing after 5s
Tests / test-mvn-livecycle (17) (push) Failing after 6s
Tests / test-embedded (11) (push) Has been skipped
Tests / test-embedded (17) (push) Has been skipped
Tests / test-mvn-jetty-run (11) (push) Has been skipped
Tests / test-mvn-jetty-run (17) (push) Has been skipped
Tests / test-jetty (11) (push) Has been skipped
Tests / test-jetty (17) (push) Has been skipped
Tests / test-tomcat (11) (push) Has been skipped
Tests / test-tomcat (17) (push) Has been skipped
This commit is contained in:
@@ -118,7 +118,31 @@ public class DiagramStorageServlet extends HttpServlet {
|
||||
final HttpServletRequest req,
|
||||
final HttpServletResponse resp
|
||||
) throws ServletException, IOException {
|
||||
writeError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, "Delete is disabled");
|
||||
if (!isAuthorized(req)) {
|
||||
writeError(resp, HttpServletResponse.SC_UNAUTHORIZED, "Missing or invalid token");
|
||||
return;
|
||||
}
|
||||
final String id = extractId(req);
|
||||
if (id == null || id.isBlank()) {
|
||||
writeError(resp, HttpServletResponse.SC_BAD_REQUEST, "Diagram id is required");
|
||||
return;
|
||||
}
|
||||
if (!storage.isValidId(id)) {
|
||||
writeError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid diagram id");
|
||||
return;
|
||||
}
|
||||
final boolean deleted;
|
||||
try {
|
||||
deleted = storage.delete(id);
|
||||
} catch (IOException e) {
|
||||
writeError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to delete diagram");
|
||||
return;
|
||||
}
|
||||
if (!deleted) {
|
||||
writeError(resp, HttpServletResponse.SC_NOT_FOUND, "Diagram not found");
|
||||
return;
|
||||
}
|
||||
writeJson(resp, HttpServletResponse.SC_OK, Map.of("id", id, "deleted", true));
|
||||
}
|
||||
|
||||
private String extractId(final HttpServletRequest req) {
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<div class="actions-row">
|
||||
<input id="diagram-storage-save" class="ok" type="button" value="Sauvegarder" />
|
||||
<input id="diagram-storage-load" type="button" value="Charger" />
|
||||
<input id="diagram-storage-delete" class="cancel" type="button" value="Supprimer" />
|
||||
<input id="diagram-storage-refresh" type="button" value="Rafraichir la liste" />
|
||||
</div>
|
||||
<p id="diagram-storage-status" class="status-message"></p>
|
||||
|
||||
@@ -280,6 +280,48 @@
|
||||
});
|
||||
}
|
||||
|
||||
function deleteDiagram(pathValue) {
|
||||
log("delete click", pathValue || dom.path.value);
|
||||
const path = validatePath(pathValue || dom.path.value);
|
||||
if (!path) {
|
||||
return;
|
||||
}
|
||||
const confirmMessage = `Supprimer le diagramme "${path}" ?`;
|
||||
if (!window.confirm(confirmMessage)) {
|
||||
return;
|
||||
}
|
||||
if (dom.del) {
|
||||
dom.del.disabled = true;
|
||||
}
|
||||
const headers = authHeaders({});
|
||||
fetch(`${API_BASE}/${encodeURIComponent(path)}`, { method: "DELETE", headers })
|
||||
.then(handleResponse)
|
||||
.then(() => {
|
||||
setStatus(`Diagramme "${path}" supprime.`, "success");
|
||||
if (dom.path) {
|
||||
dom.path.value = "";
|
||||
}
|
||||
if (dom.name) {
|
||||
dom.name.value = "";
|
||||
}
|
||||
refreshList();
|
||||
closeModal("diagram-storage");
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.status === 401) {
|
||||
setToken();
|
||||
} else {
|
||||
setStatus(`Echec de la suppression : ${err.message}`, "error");
|
||||
console.error("[diagram-storage] delete error", err);
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
if (dom.del) {
|
||||
dom.del.disabled = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function bindMenuButtons() {
|
||||
const candidates = [
|
||||
{ id: "menu-item-editor-save", label: "menu save click" },
|
||||
@@ -326,7 +368,10 @@
|
||||
dom.load.addEventListener("click", () => loadDiagram());
|
||||
}
|
||||
if (dom.del) {
|
||||
dom.del.addEventListener("click", () => {});
|
||||
const freshDelete = dom.del.cloneNode(true);
|
||||
dom.del.parentNode.replaceChild(freshDelete, dom.del);
|
||||
dom.del = freshDelete;
|
||||
dom.del.addEventListener("click", () => deleteDiagram());
|
||||
}
|
||||
if (dom.refresh) {
|
||||
dom.refresh.addEventListener("click", () => refreshList(true));
|
||||
|
||||
Reference in New Issue
Block a user