diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js index 466d48d52f26da3b3a49d2614628abcd661e0061..03cc7bfbb399e898a88cb99dc0a05cc90289f96a 100644 --- a/src/core/js/webcaosdb.js +++ b/src/core/js/webcaosdb.js @@ -1113,17 +1113,39 @@ var version_history = new function () { // the version id is stored in the restore button's // data-version-id attribute const versionid = eve.delegateTarget.getAttribute("data-version-id") - try { - await restore_old_version(versionid); - // reload after sucessful update + const reload = () => { window.location.reload(); - } catch (e) { - logger.error(e); - // print errors in an alert div - $(version_info).find(".modal-body").prepend( - $(`<div class="alert alert-danger alert-dismissible " role="alert"> <button class="btn-close" data-bs-dismiss="alert" aria-label="close"></button> Restore failed! <p>${e.message}</p></div>`)); - } + const _alert = form_elements.make_alert({ + title: "Warning", + message: "You are going to restore this version of the entity.", + proceed_callback: async () => { + try { + await restore_old_version(versionid); + $(_alert).remove(); + // reload after sucessful update + $(version_info).find(".modal-body").prepend( + $(`<div class="alert alert-success" role="alert">Restore successful! <p>You are being forwarded to the latest version of this entity or you can click <a href="#" onclick="window.location.reload()">here</a>.</p></div>`)); + setTimeout(reload, 5000); + } catch (e) { + logger.error(e); + // print errors in an alert div + $(version_info).find(".modal-body").prepend( + $(`<div class="alert alert-danger alert-dismissible " role="alert"> <button class="btn-close" data-bs-dismiss="alert" aria-label="close"></button> Restore failed! <p>${e.message}</p></div>`)); + + } + }, + cancel_callback: () => { + // do nothing + $(_alert).remove(); + $(version_info).find("table").show(); + }, + proceed_text: "Yes, restore!", + remember_my_decision_id: "restore_entity", + }); + + $(version_info).find("table").after(_alert).hide(); + $(_alert).addClass("text-end"); }); } } diff --git a/test/core/js/modules/webcaosdb.js.js b/test/core/js/modules/webcaosdb.js.js index a39ac044d9f5af96a9e381cafad9dff80620554e..5f45c32adb9d171c5d362467d0bba0840f02836f 100644 --- a/test/core/js/modules/webcaosdb.js.js +++ b/test/core/js/modules/webcaosdb.js.js @@ -1945,7 +1945,9 @@ QUnit.test("init_restore_version_buttons", async function (assert) { assert.ok(!restore_button.hasClass("d-none"), "restore_button is not hidden anymore"); // restore_button triggers retrieval of history + localStorage["form_elements.alert_decision.restore_entity"] = "proceed"; restore_button.first().click(); + localStorage.removeItem("form_elements.alert_decision.restore_entity"); await sleep(500); // restore is not possible in the unit test