From c8e14f91e749aeb2bd4804181900f1fcdfaef1b8 Mon Sep 17 00:00:00 2001 From: Nam Giang Date: Tue, 6 Aug 2019 17:23:57 -0700 Subject: [PATCH] optimization for switch node --- .../@node-red/nodes/core/logic/10-switch.html | 124 +++++++++++++----- 1 file changed, 90 insertions(+), 34 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/logic/10-switch.html b/packages/node_modules/@node-red/nodes/core/logic/10-switch.html index 3cd3fb032..cef869741 100644 --- a/packages/node_modules/@node-red/nodes/core/logic/10-switch.html +++ b/packages/node_modules/@node-red/nodes/core/logic/10-switch.html @@ -208,14 +208,33 @@ selectField.append($("").val(operators[d].v).text(/^switch/.test(operators[d].t)?node._(operators[d].t):operators[d].t)); } } - var valueField = $('',{class:"node-input-rule-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'str',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); - var numValueField = $('',{class:"node-input-rule-num-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['flow','global','num','jsonata','env']}); - var expValueField = $('',{class:"node-input-rule-exp-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'jsonata',types:['jsonata']}); - var btwnValueField = $('',{class:"node-input-rule-btwn-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); - var btwnAndLabel = $('',{class:"node-input-rule-btwn-label"}).text(" "+andLabel+" ").appendTo(row3); - var btwnValue2Field = $('',{class:"node-input-rule-btwn-value2",type:"text",style:"margin-left:2px;"}).appendTo(row3).typedInput({default:'num',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); - var typeValueField = $('',{class:"node-input-rule-type-value",type:"text",style:"margin-left: 5px;"}).appendTo(row) - .typedInput({default:'string',types:[ + + function createValueField(){ + return $('',{class:"node-input-rule-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'str',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); + } + + function createNumValueField(){ + return $('',{class:"node-input-rule-num-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['flow','global','num','jsonata','env']}); + } + + function createExpValueField(){ + return $('',{class:"node-input-rule-exp-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'jsonata',types:['jsonata']}); + } + + function createBtwnValueField(){ + return $('',{class:"node-input-rule-btwn-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); + } + + function createBtwnAndLabel(){ + return $('',{class:"node-input-rule-btwn-label"}).text(" "+andLabel+" ").appendTo(row3); + } + + function createBtwnValue2Field(){ + return $('',{class:"node-input-rule-btwn-value2",type:"text",style:"margin-left:2px;"}).appendTo(row3).typedInput({default:'num',types:['msg','flow','global','str','num','jsonata','env',previousValueType]}); + } + + function createTypeValueField(){ + return $('',{class:"node-input-rule-type-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'string',types:[ {value:"string",label:"string",hasValue:false}, {value:"number",label:"number",hasValue:false}, {value:"boolean",label:"boolean",hasValue:false}, @@ -226,6 +245,15 @@ {value:"undefined",label:"undefined",hasValue:false}, {value:"null",label:"null",hasValue:false} ]}); + } + + var valueField = null; + var numValueField = null; + var expValueField = null; + var btwnAndLabel = null; + var btwnValue2Field = null; + var typeValueField = null; + var finalspan = $('',{style:"float: right;margin-top: 6px;"}).appendTo(row); finalspan.append(' → '+(i+1)+' '); var caseSensitive = $('',{id:"node-input-rule-case-"+i,class:"node-input-rule-case",type:"checkbox",style:"width:auto;vertical-align:top"}).appendTo(row2); @@ -233,43 +261,49 @@ selectField.change(function() { resizeRule(container); var type = selectField.val(); - if ((type === "btwn") || (type === "index")) { + + try { valueField.typedInput('hide'); + } catch(e){} + try { expValueField.typedInput('hide'); + } catch(e){} + try { numValueField.typedInput('hide'); + } catch(e){} + try { typeValueField.typedInput('hide'); + } catch(e){} + try { + btwnValue2Field.typedInput('hide'); + } catch(e){} + + if ((type === "btwn") || (type === "index")) { + if (!btwnValueField){ + btwnValueField = createBtwnValueField(); + } btwnValueField.typedInput('show'); } else if ((type === "head") || (type === "tail")) { - btwnValueField.typedInput('hide'); - btwnValue2Field.typedInput('hide'); - expValueField.typedInput('hide'); - numValueField.typedInput('show'); - typeValueField.typedInput('hide'); - valueField.typedInput('hide'); - } else if (type === "jsonata_exp") { - btwnValueField.typedInput('hide'); - btwnValue2Field.typedInput('hide'); - expValueField.typedInput('show'); - numValueField.typedInput('hide'); - typeValueField.typedInput('hide'); - valueField.typedInput('hide'); - } else { - btwnValueField.typedInput('hide'); - expValueField.typedInput('hide'); - numValueField.typedInput('hide'); - typeValueField.typedInput('hide'); - valueField.typedInput('hide'); - if (type === "true" || type === "false" || type === "null" || type === "nnull" || type === "empty" || type === "nempty" || type === "else") { - valueField.typedInput('hide'); - typeValueField.typedInput('hide'); + if (!numValueField){ + numValueField = createNumValueField(); } - else + numValueField.typedInput('show'); + } else if (type === "jsonata_exp") { + if (!expValueField){ + expValueField = createExpValueField(); + } + expValueField.typedInput('show'); + } else { if (type === "istype") { - valueField.typedInput('hide'); + if (!typeValueField){ + typeValueField = createTypeValueField(); + } typeValueField.typedInput('show'); } else { - typeValueField.typedInput('hide'); + if (!valueField){ + valueField = createValueField(); + } valueField.typedInput('show'); } } @@ -279,6 +313,9 @@ } else if ((type === "btwn") || (type === "index")) { row2.hide(); row3.show(); + if (!btwnValue2Field){ + btwnValue2Field = createBtwnValue2Field(); + } btwnValue2Field.typedInput('show'); } else { row2.hide(); @@ -287,20 +324,39 @@ }); selectField.val(rule.t); if ((rule.t == "btwn") || (rule.t == "index")) { + if (!btwnValueField){ + btwnValueField = createBtwnValueField(); + } btwnValueField.typedInput('value',rule.v); btwnValueField.typedInput('type',rule.vt||'num'); + + if (!btwnValue2Field){ + btwnValue2Field = createBtwnValue2Field(); + } btwnValue2Field.typedInput('value',rule.v2); btwnValue2Field.typedInput('type',rule.v2t||'num'); } else if ((rule.t === "head") || (rule.t === "tail")) { + if (!numValueField){ + numValueField = createNumValueField(); + } numValueField.typedInput('value',rule.v); numValueField.typedInput('type',rule.vt||'num'); } else if (rule.t === "istype") { + if (!typeValueField){ + typeValueField =createTypeValueField(); + } typeValueField.typedInput('value',rule.vt); typeValueField.typedInput('type',rule.vt); } else if (rule.t === "jsonata_exp") { + if (!expValueField){ + expValueField = createExpValueField(); + } expValueField.typedInput('value',rule.v); expValueField.typedInput('type',rule.vt||'jsonata'); } else if (typeof rule.v != "undefined") { + if (!valueField){ + valueField = createValueField(); + } valueField.typedInput('value',rule.v); valueField.typedInput('type',rule.vt||'str'); }