diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js index c9976c8d3e70bf45af863ba1be4fdf8e12320de7..50325e97d4dabcd16fae2a2817314f4a7ddf3243 100644 --- a/src/core/js/edit_mode.js +++ b/src/core/js/edit_mode.js @@ -188,6 +188,10 @@ var edit_mode = new function() { this.set_entity_dropable = function(entity, dragover, dragleave, parent_drop, property_drop) { + if (getEntityRole(entity) === "Property") { + // currently no parents and subproperties for properties. + return; + } var rts = entity.getElementsByClassName("caosdb-entity-panel-body"); for (var rel of rts) { rel.addEventListener("dragleave", dragleave); @@ -604,16 +608,14 @@ var edit_mode = new function() { ]; if (getEntityRole(roleElem[0]) == "Property") { const current_datatype = getEntityDatatype(entity); - for (const input of this.make_datatype_input(current_datatype)) { - // returns [`atomic_datatype`, `reference_scope`, `is_list`] - inputs.push(input); - } + inputs.push(edit_mode.make_datatype_input(current_datatype)); const current_unit = getEntityUnit(entity); inputs.push(edit_mode.make_unit_input(current_unit)); // TODO currently no parents for properties. Why not? parentsSection.hide(); + header.attr("title", ""); } else if (getEntityRole(roleElem[0]) == "File") { inputs.push(this.make_input("path", getEntityPath(entity))); } @@ -665,14 +667,16 @@ var edit_mode = new function() { this.make_unit_input = function(unit) { - const unit_input = $('<div class="form-group"/>') - .append(form_elements + const unit_input = $(form_elements .make_text_input({ name: "unit", label: "unit", value: unit, })); - return unit_input; + unit_input.toggleClass("form-group", true); + unit_input.find(".col-sm-3").toggleClass("col-sm-2", true).toggleClass("col-sm-3", false); + unit_input.find(".col-sm-9").toggleClass("col-sm-2", true).toggleClass("col-sm-9", false); + return unit_input[0]; } this._known_atomic_datatypes = [ @@ -688,8 +692,10 @@ var edit_mode = new function() { /** * Make three input elements which contain all necessary parts of a datatype. * - * The three input elements are for the `atomic_datatype`, which is one of + * The three input elements are wrapped in a single DIV.form-group. + * * @param {string} [datatype] - defaults to TEXT if undefined. + * @returns {HTMLElement} */ this.make_datatype_input = function(datatype) { var _datatype = datatype || "TEXT"; @@ -715,7 +721,7 @@ var edit_mode = new function() { const datatype_selector = $(form_elements ._make_field_wrapper(datatype_config.name)) .append(form_elements._make_input_label_str(datatype_config)) - .append($('<div class="col-sm-9"/>').append(select))[0]; + .append($('<div class="col-sm-3"/>').append(select)); // generate select input for the RecordTypes which are the reference's // scope. @@ -740,7 +746,16 @@ var edit_mode = new function() { const list_checkbox = form_elements .make_checkbox_input(list_checkbox_config); - return [datatype_selector, ref_selector, list_checkbox]; + // styling + $(list_checkbox).children().toggleClass("col-sm-3",false).toggleClass("col-sm-9", false).toggleClass("col-sm-1", true); + + const form_group = $('<div class="form-group">').append([datatype_selector, ref_selector, list_checkbox]); + form_group.find(".form-group").toggleClass("form-group", false); + form_group.find(".col-sm-3").toggleClass("col-sm-2", true).toggleClass("col-sm-3", false); + form_group.find(".col-sm-9").toggleClass("col-sm-3", true).toggleClass("col-sm-9", false); + + + return form_group[0]; } this.make_input = function(label, value) { diff --git a/src/core/js/form_elements.js b/src/core/js/form_elements.js index cdc4b54176c2c635f7482f1812622cb0064ac6ba..d005dd8b494a96bcdefc7c7fde35190c0203f47e 100644 --- a/src/core/js/form_elements.js +++ b/src/core/js/form_elements.js @@ -1143,7 +1143,7 @@ var form_elements = new function () { let ret = $(this._make_field_wrapper(config.name)); let name = config.name; let label = this._make_input_label_str(config); - let type = config.type; + let type = config.type || "text"; let value = config.value; let input = $('<input class="form-control caosdb-f-property-single-raw-value" type="' + type + '" name="' + name + diff --git a/src/core/xsl/entity_palette.xsl b/src/core/xsl/entity_palette.xsl index aea42a8750a74f509557bcf842e4d1f8dc97bef9..65f2bb7ccdbb15b83a5e4c1865e4686d06701bb6 100644 --- a/src/core/xsl/entity_palette.xsl +++ b/src/core/xsl/entity_palette.xsl @@ -51,9 +51,22 @@ </xsl:template> <xsl:template match="Property"> - <li class="caosdb-f-edit-drag list-group-item caosdb-v-edit-drag"> - <xsl:attribute name="id">caosdb-f-edit-p-<xsl:value-of select="@id"/></xsl:attribute> - <xsl:value-of select="@name"/> - </li> + <xsl:choose> + <xsl:when test="name()='name'"> + <!-- ignore name property --> + </xsl:when> + <xsl:when test="name()='description'"> + <!-- ignore description property --> + </xsl:when> + <xsl:when test="name()='unit'"> + <!-- ignore unit property --> + </xsl:when> + <xsl:otherwise> + <li class="caosdb-f-edit-drag list-group-item caosdb-v-edit-drag"> + <xsl:attribute name="id">caosdb-f-edit-p-<xsl:value-of select="@id"/></xsl:attribute> + <xsl:value-of select="@name"/> + </li> + </xsl:otherwise> + </xsl:choose> </xsl:template> </xsl:stylesheet>