From 44dadcb8a70d5aef164dde6fbb6f3c330d7b540e Mon Sep 17 00:00:00 2001 From: Shweelan Samson Date: Wed, 3 Oct 2018 02:20:25 +0300 Subject: [PATCH] Support booleans and numbers in edit parameter --- client/drawer-component.js | 67 +++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/client/drawer-component.js b/client/drawer-component.js index 45813d3..ada2109 100644 --- a/client/drawer-component.js +++ b/client/drawer-component.js @@ -15,25 +15,54 @@ function mval(val) { } function renderStagingSpv(task, queueFunc, cancelFunc) { - const input = m("input", { - value: task.parameterValues[0][1], - oninput: e => { - e.redraw = false; - task.parameterValues[0][1] = input.dom.value; - }, - onkeydown: e => { - if (e.keyCode === 13) queueFunc(); - else if (e.keyCode === 27) cancelFunc(); - else e.redraw = false; - }, - oncreate: vnode => { - vnode.dom.focus(); - vnode.dom.select(); - // Need to prevent scrolling on focus because - // we're animating height and using overflow: hidden - vnode.dom.parentNode.parentNode.scrollTop = 0; - } - }); + function keydown(e) { + if (e.keyCode === 13) queueFunc(); + else if (e.keyCode === 27) cancelFunc(); + else e.redraw = false; + } + + let input; + if (task.parameterValues[0][2] === "xsd:boolean") { + input = m( + "select", + { + value: task.parameterValues[0][1].toString(), + onchange: e => { + e.redraw = false; + task.parameterValues[0][1] = input.dom.value; + }, + onkeydown: keydown, + oncreate: vnode => { + vnode.dom.focus(); + } + }, + [ + m("option", { value: "true" }, "true"), + m("option", { value: "false" }, "false") + ] + ); + } else { + input = m("input", { + type: ["xsd:dateTime", "xsd:int", "xsd:unsignedInt"].includes( + task.parameterValues[0][2] + ) + ? "number" + : "text", + value: task.parameterValues[0][1], + oninput: e => { + e.redraw = false; + task.parameterValues[0][1] = input.dom.value; + }, + onkeydown: keydown, + oncreate: vnode => { + vnode.dom.focus(); + vnode.dom.select(); + // Need to prevent scrolling on focus because + // we're animating height and using overflow: hidden + vnode.dom.parentNode.parentNode.scrollTop = 0; + } + }); + } return [m("span", "Editing ", mparam(task.parameterValues[0][0])), input]; }