diff --git a/src/core/js/form_elements.js b/src/core/js/form_elements.js index 59397d76f158b931aec61da5a6b66b4b887c4562..8a757e5c9c2973f8ac111b9c3bc69e49c8debdf3 100644 --- a/src/core/js/form_elements.js +++ b/src/core/js/form_elements.js @@ -99,7 +99,6 @@ var form_elements = new function () { this.logger = log.getLogger("form_elements"); this.cancel_form_event = new Event("caosdb.form.cancel"); this.submit_form_event = new Event("caosdb.form.submit"); - this.form_ready_event = new Event("caosdb.form.ready"); this.field_changed_event = new Event("caosdb.field.changed"); this.field_enabled_event = new Event("caosdb.field.enabled"); this.field_disabled_event = new Event("caosdb.field.disabled"); @@ -776,31 +775,18 @@ var form_elements = new function () { this.make_form_wrapper = function (form, config) { var wrapper = $('<div class="caosdb-f-form-wrapper"/>'); - var header = this.make_heading(config); - wrapper.append(header); - var loading = $(createWaitingNotification("loading...")); - var logger = this.logger; var cancel = (e) => { - logger.trace("cancel form", e); + form_elements.logger.trace("cancel form", e); wrapper.remove(); }; - wrapper.append(loading); + wrapper[0].addEventListener(this.cancel_form_event.type, cancel, true); - Promise.resolve(form).then(form => { - // form ready - loading.remove(); - wrapper.append(form); - wrapper[0].dispatchEvent(this.form_ready_event); - }).catch(err => { - logger.error("form loading error", err); - loading.remove(); - wrapper.append(err); - }); - - wrapper[0].addEventListener(this.cancel_form_event.type, cancel, true); + var header = this.make_heading(config); + wrapper.append(header); + wrapper.append(form); return wrapper[0]; } @@ -826,9 +812,9 @@ var form_elements = new function () { /** * Create a form. * - * The returned element is a container which will eventually contain a HTML - * form element. The container emits a {@link form_ready_event} when the - * form is ready. + * The returned element is a container which contains a HTML form element. + * The fields are ready or the will emit a {@link field_ready_event} when + * they are. * * @param {FormConfig} config * @return {HTMLElement} diff --git a/test/core/js/modules/edit_mode.js.js b/test/core/js/modules/edit_mode.js.js index 40d2a3b1984109d8caf64fbd181e02a9c3aafa88..2d7a605fd29788d189d2af0d828266e7e3a35f84 100644 --- a/test/core/js/modules/edit_mode.js.js +++ b/test/core/js/modules/edit_mode.js.js @@ -486,9 +486,6 @@ QUnit.test("remove_delete_button", function (assert) { { - const sleep = function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); - } const datamodel = ` <div><div class=\"btn-group-vertical\"><button type=\"button\" class=\"btn btn-default caosdb-f-edit-panel-new-button new-property\">Create new Property</button><button type=\"button\" class=\"btn btn-default caosdb-f-edit-panel-new-button new-recordtype\">Create new RecordType</button></div><div title=\"Drag and drop Properties from this panel to the Entities on the left.\" class=\"panel panel-default\"><div class=\"panel-heading\"><h5>Existing Properties</h5></div><div class=\"panel-body\"><div class=\"input-group\" style=\"width: 100%;\"><input class=\"form-control\" placeholder=\"filter...\" title=\"Type a name (full or partial).\" oninput=\"edit_mode.filter('properties');\" id=\"caosdb-f-filter-properties\" type=\"text\" /><span class=\"input-group-btn\"><button class=\"btn btn-default caosdb-f-edit-panel-new-button new-property caosdb-f-hide-on-empty-input\" title=\"Create this Property.\"><span class=\"glyphicon glyphicon-plus\"></span></button></span></div><ul class=\"caosdb-v-edit-list\"><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-20\">name</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-21\">unit</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-p-24\">description</li></ul></div></div><div title=\"Drag and drop RecordTypes from this panel to the Entities on the left.\" class=\"panel panel-default\"><div class=\"panel-heading\"><h5>Existing RecordTypes</h5></div><div class=\"panel-body\"><div class=\"input-group\" style=\"width: 100%;\"><input class=\"form-control\" placeholder=\"filter...\" title=\"Type a name (full or partial).\" oninput=\"edit_mode.filter('recordtypes');\" id=\"caosdb-f-filter-recordtypes\" type=\"text\" /><span class=\"input-group-btn\"><button class=\"btn btn-default caosdb-f-edit-panel-new-button new-recordtype caosdb-f-hide-on-empty-input\" title=\"Create this RecordType\"><span class=\"glyphicon glyphicon-plus\"></span></button></span></div><ul class=\"caosdb-v-edit-list\"><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-rt-30992\">Test</li><li class=\"caosdb-f-edit-drag list-group-item caosdb-v-edit-drag\" id=\"caosdb-f-edit-rt-31015\">Test2</li></ul></div></div></div>`; diff --git a/test/core/js/modules/ext_bottom_line.js.js b/test/core/js/modules/ext_bottom_line.js.js index 610d95d1b00b3a8bf220a6d39e12ed71ecaa9090..48dc64f231c1dc5929eece1f44756d60cb17c0a1 100644 --- a/test/core/js/modules/ext_bottom_line.js.js +++ b/test/core/js/modules/ext_bottom_line.js.js @@ -24,10 +24,6 @@ var ext_bottom_line_test_suite = function ($, ext_bottom_line, QUnit) { - const sleep = (ms) => { - return new Promise(res => setTimeout(res, ms)) - } - var test_config = { "version": 0.1, "fallback": "blablabla", "creators": [ diff --git a/test/core/js/modules/ext_xls_download.js.js b/test/core/js/modules/ext_xls_download.js.js index 5426580436933b942cec6750b521747ab62f2d00..195e9c825d9601dc08f29c8f1b2171ff13eeef47 100644 --- a/test/core/js/modules/ext_xls_download.js.js +++ b/test/core/js/modules/ext_xls_download.js.js @@ -64,40 +64,35 @@ QUnit.module("ext_xls_download", { }); -{ - const sleep = function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); - } - QUnit.test("call downloadXLS", async function(assert) { - var done = assert.async(2); +QUnit.test("call downloadXLS", async function(assert) { + var done = assert.async(2); - // mock server response (successful) - connection.runScript = async function(exec, param){ - assert.equal(exec, "xls_from_csv.py", "call xls_from_csv.py"); - done(); - return str2xml('<response><script code="0" /><stdout>bla</stdout></response>'); - } + // mock server response (successful) + connection.runScript = async function(exec, param){ + assert.equal(exec, "xls_from_csv.py", "call xls_from_csv.py"); + done(); + return str2xml('<response><script code="0" /><stdout>bla</stdout></response>'); + } - caosdb_table_export.go_to_script_results = function(filename) { - assert.equal(filename, "bla", "filename correct"); - done(); - } + caosdb_table_export.go_to_script_results = function(filename) { + assert.equal(filename, "bla", "filename correct"); + done(); + } - var tsv_data = $('<a id="caosdb-f-query-select-data-tsv" />'); - var modal = $('<div id="downloadModal"><div>'); - $(document.body).append([tsv_data, modal]); + var tsv_data = $('<a id="caosdb-f-query-select-data-tsv" />'); + var modal = $('<div id="downloadModal"><div>'); + $(document.body).append([tsv_data, modal]); - var xsl_link = $("<a/>"); - downloadXLS(xsl_link[0]); + var xsl_link = $("<a/>"); + downloadXLS(xsl_link[0]); - await sleep(500); + await sleep(500); - tsv_data.remove(); - modal.remove(); - }); -} + tsv_data.remove(); + modal.remove(); +}); QUnit.test("_clean_cell", function(assert) { assert.equal(caosdb_table_export._clean_cell("\n\t\n\t"), " ", "No valid content"); diff --git a/test/core/js/modules/form_elements.js.js b/test/core/js/modules/form_elements.js.js index 1bf83675aa2b5ad8d33834fff31b47cd10158b3d..f72d73156f37ecd24d9bce97e5f91c1c74f39475 100644 --- a/test/core/js/modules/form_elements.js.js +++ b/test/core/js/modules/form_elements.js.js @@ -545,11 +545,6 @@ QUnit.test("field_ready", function(assert) { }); }); -{ -const sleep = (ms) => { - return new Promise(res => setTimeout(res, ms)) -} - QUnit.test("make_alert - cancel", async function(assert) { var cancel_callback = assert.async() var _alert = form_elements.make_alert({ @@ -688,5 +683,3 @@ QUnit.test("select_input caching", async function (assert) { await sleep(200); assert.equal(form_elements.get_cache_value(field[0]), "f", "value back to value from cache"); }); - -} diff --git a/test/core/js/modules/query_shortcuts.js.js b/test/core/js/modules/query_shortcuts.js.js index f088b729001daac8a42ed276507e2370f3e08679..3798c5fe81ea6e860cd176797a9a6959a9a64895 100644 --- a/test/core/js/modules/query_shortcuts.js.js +++ b/test/core/js/modules/query_shortcuts.js.js @@ -141,7 +141,9 @@ QUnit.test("init_delete_shortcut_form", function(assert) { assert.equal(panel.find(".caosdb-f-form-wrapper").length, 1, "panel has form after"); // test cancel button - panel[0].addEventListener("caosdb.form.cancel", function(e) { + var done = assert.async(); + panel[0].addEventListener("caosdb.form.cancel", async function(e) { + await sleep(200); assert.equal(panel.find("form").length, 0, "form is gone"); done(); }, true); @@ -187,23 +189,17 @@ QUnit.test("make_delete_form", function(assert) { } var form = query_shortcuts.make_delete_form(panel[0], delete_callback); + $('body').append(form); - // wait for form - form.addEventListener("caosdb.form.ready", function(e) { - - assert.equal($(form).hasClass("caosdb-f-form-wrapper"), true, "is form"); - assert.equal($(form).find("input[type='checkbox']").length, 3, "three checkboxes (for three user-defined shortcuts)"); - - // check two - $(form).find(":checkbox[name='id28']").click(); - $(form).find(":checkbox[name='id29']").click(); - $(form).find("[type='submit']").click(); - - $(form).find("button.caosdb-f-form-elements-cancel-button").click(); + assert.equal($(form).hasClass("caosdb-f-form-wrapper"), true, "is form"); + assert.equal($(form).find("input[type='checkbox']").length, 3, "three checkboxes (for three user-defined shortcuts)"); - }, true); + // check two + $(form).find(":checkbox[name='id28']").click(); + $(form).find(":checkbox[name='id29']").click(); + $(form).find("[type='submit']").click(); - $('body').append(form); + $(form).find("button.caosdb-f-form-elements-cancel-button").click(); }); @@ -228,31 +224,24 @@ QUnit.test("transform_entities", async function(assert) { }); QUnit.test("make_create_form", function(assert) { - - var done = assert.async(); var panel = $('<div/>'); var form = query_shortcuts.make_create_form(panel[0], () => {}); assert.ok($(form).hasClass("caosdb-f-form-wrapper"), "form created"); $('body').append(form); - form.addEventListener(form_elements.form_ready_event.type, function(e) { - $(form).find(":input[name='templateDescription']").val("NEW DESC"); - $(form).find(":input[name='Query']").val("NEW QUERY"); + $(form).find(":input[name='templateDescription']").val("NEW DESC"); + $(form).find(":input[name='Query']").val("NEW QUERY"); - var entity = getEntityXML(form); - assert.equal(xml2str(entity), "<Record><Parent name=\"UserTemplate\"/><Property name=\"templateDescription\">NEW DESC</Property><Property name=\"Query\">NEW QUERY</Property></Record>", "entity extracted"); + var entity = getEntityXML(form); + assert.equal(xml2str(entity), "<Record><Parent name=\"UserTemplate\"/><Property name=\"templateDescription\">NEW DESC</Property><Property name=\"Query\">NEW QUERY</Property></Record>", "entity extracted"); - form_elements.dismiss_form(form); - done(); + form_elements.dismiss_form(form); - }, true); }); QUnit.test("make_update_form", function(assert) { - - var done = assert.async(); var panel = $('<div/>'); var header = $('<span class="h3">Shortcuts</span>'); var userTemplate1 = query_shortcuts.generate_user_shortcut("the_description", "FIND nothing", "id28"); @@ -271,16 +260,12 @@ QUnit.test("make_update_form", function(assert) { $('body').append(form); - form.addEventListener(form_elements.form_ready_event.type, function(e) { - $(form).find(":input[name='templateDescription']").val("NEW DESC"); - $(form).find(":input[name='Query']").val("NEW QUERY"); - - var entity = getEntityXML(form); - assert.equal(xml2str(entity), "<Record id=\"id28\"><Parent name=\"UserTemplate\"/><Property name=\"templateDescription\">NEW DESC</Property><Property name=\"Query\">NEW QUERY</Property></Record>", "entity extracted"); + $(form).find(":input[name='templateDescription']").val("NEW DESC"); + $(form).find(":input[name='Query']").val("NEW QUERY"); - form_elements.dismiss_form(form); - done(); + var entity = getEntityXML(form); + assert.equal(xml2str(entity), "<Record id=\"id28\"><Parent name=\"UserTemplate\"/><Property name=\"templateDescription\">NEW DESC</Property><Property name=\"Query\">NEW QUERY</Property></Record>", "entity extracted"); - }, true); + form_elements.dismiss_form(form); }); diff --git a/test/core/js/modules/webcaosdb.js.js b/test/core/js/modules/webcaosdb.js.js index 7b3f7abf404f261668c18690df337b73794dd8bd..95c4f62d983077374343a099d4d4bcb2680e25d5 100644 --- a/test/core/js/modules/webcaosdb.js.js +++ b/test/core/js/modules/webcaosdb.js.js @@ -2008,7 +2008,3 @@ QUnit.test("init_load_history_buttons and init_load_history_buttons", async func $(html).remove(); }); - -const sleep = function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} diff --git a/test/core/js/setup.js b/test/core/js/setup.js index 9894827988999e89a6388206f10bdd815098e81e..fac4fd78d0c867cf213917b16d874513d1871a09 100644 --- a/test/core/js/setup.js +++ b/test/core/js/setup.js @@ -46,3 +46,6 @@ QUnit.done(function( details ) { $.post("/done", report); }); +const sleep = function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +}