From 1e79c0a6e5624722682a737635b07ca6fbbdeb18 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Tue, 30 Jun 2020 13:34:41 +0200 Subject: [PATCH] WIP: edit_mode - reference datatype --- src/core/js/caosdb.js | 1 + src/core/js/edit_mode.js | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/core/js/caosdb.js b/src/core/js/caosdb.js index 1c1318fe..82515737 100644 --- a/src/core/js/caosdb.js +++ b/src/core/js/caosdb.js @@ -140,6 +140,7 @@ function getEntityRole(element) { * @return A string containing the datatype of the element. */ function getEntityUnit(element) { + // TODO do not restrict to input here? var res = $(element).find("input.caosdb-f-entity-unit"); if (res.length == 1) { var x = res.val(); diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js index cc935bd3..fda15477 100644 --- a/src/core/js/edit_mode.js +++ b/src/core/js/edit_mode.js @@ -544,6 +544,7 @@ var edit_mode = new function() { this.make_input("description", getEntityDescription(entity)), ]; if (getEntityRole(roleElem[0]) == "Property") { + // TODO seperate unit, list, datatype, refid factories and listeners // TODO refactor getEntityUnit and use that var unit = getEntityHeadingAttribute(entity, "unit"); for (const input of this.make_datatype_input(getEntityDatatype(entity), unit)) { @@ -584,6 +585,7 @@ var edit_mode = new function() { // TODO show unit for double and integer } + this.make_datatype_input = function(datatype, unit) { var is_list = edit_mode.isListDatatype(datatype); if (is_list) { @@ -598,17 +600,31 @@ var edit_mode = new function() { "DATETIME": false, "BOOLEAN": false, "FILE": false, - /*TODO "REFERENCE":false*/ + "REFERENCE":false, } var select = $('<select></select>'); for (const dt of Object.keys(datatypes)) { select.append('<option data-has-refid="' + (dt == "REFERENCE") + '" data-has-unit="' + datatypes[dt] + '" value="' + dt + '" ' + (dt == datatype ? 'selected="true"' : '') + '>' + dt + '</option>'); } - return [ - $('<div class="form-group"><label class="col-sm-2 control-label caosdb-f-entity-datatype-label">datatype</label><div class="col-sm-3"><select class="form-control caosdb-f-entity-datatype">' + select.html() + '</select></div><label class="col-sm-2 control-label caosdb-f-entity-reference-label">reference</label><div class="col-sm-3"><input readonly="true" class="form-control caosdb-f-entity-reference" value="" placeholder="Drop a RT"></input></div><label class="col-sm-1 control-label caosdb-f-entity-is-list-label">list</label><div class="col-sm-1"><input class="caosdb-f-entity-is-list" type="checkbox" ' + (is_list ? 'checked="true" ' : "") + '/></div>')[0], - $('<div class="form-group"><label class="col-sm-2 control-label caosdb-f-entity-unit-label">unit</label><div class="col-sm-2"><input type="text" class="form-control caosdb-f-entity-unit" value="' + (typeof unit == 'undefined' ? "" : unit) + '"></input></div></div>')[0], - ]; + const datatype_input = $(` +<div class="form-group"> + <label class="col-sm-2 control-label caosdb-f-entity-datatype-label">datatype</label> + <div class="col-sm-3"> + <select class="form-control caosdb-f-entity-datatype">${select.html()}</select> + </div> + <label class="col-sm-2 control-label caosdb-f-entity-reference-label">reference</label> + <div class="col-sm-3"> + <input readonly="true" class="form-control caosdb-f-entity-reference" value="" placeholder="Drop a RT"></input> + </div> + <label class="col-sm-1 control-label caosdb-f-entity-is-list-label">list</label> + <div class="col-sm-1"> + <input class="caosdb-f-entity-is-list" type="checkbox" ${(is_list ? 'checked="true" ' : "")}/> + </div> +</div>`)[0]; + + const unit_input = $('<div class="form-group"><label class="col-sm-2 control-label caosdb-f-entity-unit-label">unit</label><div class="col-sm-2"><input type="text" class="form-control caosdb-f-entity-unit" value="' + (typeof unit == 'undefined' ? "" : unit) + '"></input></div></div>')[0], + return [ datatype_input, unit_input ]; } this.make_input = function(label, value) { -- GitLab