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