diff --git a/hide/comp/cdb/Cell.hx b/hide/comp/cdb/Cell.hx index 3ee114c29..acebeb8f9 100644 --- a/hide/comp/cdb/Cell.hx +++ b/hide/comp/cdb/Cell.hx @@ -1390,14 +1390,22 @@ class Cell { function getHtml(value : Dynamic, column : cdb.Data.Column) { switch (column.type) { case TId, TString, TDynamic: - return new Element(''); + var e = new Element(''); + e.on('click', function(_) { + e.prop('readonly', false); + }); + return e; case TBool: var el = new Element(''); if (value != null && value) el.attr("checked", "true"); return el; case TInt, TFloat: - return new Element(''); + var e = new Element(''); + e.on('click', function(_) { + e.prop('readonly', false); + }); + return e; case TRef(name): { var sdat = editor.base.getSheet(name); @@ -1509,64 +1517,52 @@ class Cell { if (children.length > 0) children.first().trigger("click"); - var val = d.val(); - var selected = val != null ? customType.cases[content.find("#dropdown-custom-type").val()] : null; - var stringValue = ""; + var newCtValue : Array = null; + var selected = d.val() != null ? customType.cases[d.val()] : null; if (selected != null) { - stringValue = selected.name; + newCtValue = []; + newCtValue.push(Std.int(d.val())); if (selected.args != null && selected.args.length > 0) { - stringValue = '${selected.name}('; - var paramsValues = paramsContent.find(".value"); for (idx in 0...selected.args.length) { var paramValue = paramsValues.eq(idx); - if (paramValue.is("input[type=checkbox]")) - stringValue += paramValue.is(":checked"); + if (paramValue.is("input[type=checkbox]")) { + var v = paramValue.is(':checked'); + newCtValue.push(v); + } + else if (paramValue.is("input[type=number]")) + newCtValue.push(Std.parseFloat(paramValue.val())); else if (paramValue.is("select")) { var sel = paramValue.find(":selected"); if (sel.val() != 0) - stringValue += sel.text(); + newCtValue.push(sel.text()); else - stringValue += ""; + newCtValue.push(""); } else if (paramValue.is("div")) { // Case where the param value is another cdbType - var v = paramValue.children().first().text(); - if (v == "" || v == " ") - v = "null"; - stringValue += v; + var v = ctValue[idx + 1] != null && ctValue[idx + 1].length > 1 ? ctValue[idx + 1] : null; + newCtValue.push(v); } else - stringValue += paramsValues.eq(idx).val(); - - if (idx != selected.args.length -1) - stringValue += (","); + newCtValue.push(paramsValues.eq(idx).val()); } - - stringValue += ')'; } } - else { - stringValue = ""; - } parentEl.empty(); - // Check if the value is correct - var res = try editor.base.parseValue(TCustom(customType.name), stringValue, false) catch( e : Dynamic ) null; - if (res != null) { + if (newCtValue != null) { if (ctValue == null) ctValue = []; for (idx in 0...ctValue.length) ctValue.pop(); - for (idx in 0...res.length) { - ctValue.push(res[idx]); + for (idx in 0...newCtValue.length) { + var u = newCtValue[idx]; + ctValue.push(newCtValue[idx]); } } - else - ctValue = null; - if (depth == 0) { this.setValue(ctValue); @@ -1574,8 +1570,8 @@ class Cell { this.focus(); } else { - stringValue = valueHtml(col, ctValue, line.table.getRealSheet(), currentValue, []).str; - new Element('

${stringValue}

').appendTo(parentEl); + var htmlValue = valueHtml(col, ctValue, line.table.getRealSheet(), currentValue, []); + new Element('

${htmlValue.str}

').appendTo(parentEl); parentEl.focus(); } }