diff --git a/fhem/www/pgm2/console.js b/fhem/www/pgm2/console.js index 87099056f..b0611b41d 100644 --- a/fhem/www/pgm2/console.js +++ b/fhem/www/pgm2/console.js @@ -175,7 +175,22 @@ function consAddRegexpPart() { $("").insertAfter("button#eventReset"); + "Create/Modify Device").insertAfter("button#eventReset"); + + var knownTypes = { + "notify": { modify: "set modDev addRegexpPart evtDev event", + createArg: "evtDev:event {}" }, + "FileLog":{ modify: "set modDev addRegexpPart evtDev event", + createArg: "./log/modDev.log evtDev:event" }, + "watchdog":{createArg: "evtDev:event 00:15 SAME {}" }, + "sequence":{createArg: "evtDev:event 00:15 evtDev:event" } + }; + + var modDev, devList, devHash = {}; + var creates = []; + for(var t in knownTypes) + if(knownTypes[t].createArg) + creates.push(t); $("button#addRegexpPart").click(function(){ // get selection, build regexp from event @@ -187,50 +202,95 @@ consAddRegexpPart() var ret = txt.match(re); if(!ret) return FW_okDialog(hlp); - var dev=ret[3], evt=ret[4]; - evt = evt.replace(/\s/g, "."); - re1 = dev+" "+evt; - evt = evt.replace(/\b-?\d*\.?\d+\b/g, '.*').replace(/\.\* \.\*/g, '.*'); - re2 = dev+" "+evt; - // build dialog + var evtDev=ret[3]; + var evt1 = ret[4].replace(/\s/g, ".") + .replace(/[\^\$\[\]\(\)\\]/g, function(s){return"\\"+s}); + var evt2 = evt1.replace(/\b-?\d*\.?\d+\b/g,'.*').replace(/\.\* \.\*/g,'.*'); + + // build the dialog var txt = '\n'; - txt += "Extend the regular expression of the device
"; - txt += "

"; - txt += "
"+ - ""+ - "

"; - if(re1 != re2) - txt += "
"+ - ""+ - "

"; - $('body').append(''); - $('#addReP').dialog( + var inputPrf=""+ + inputPrf+"'defmod' id='mod'/>

" + txt += ""; + txt += "

"; + + if(evt1 != evt2) { + txt += "
"+inputPrf+"'evtType' id='rdEx' checked/>"+ + "

"; + txt += "
"+inputPrf+"'evtType' id='rdNum'/>"+ + "

"; + } + txt += "
 "; + + $('body').append(''); + $('#evtCoM').dialog( { modal:true, closeOnEscape:true, width:"auto", - close:function(){ $('#addReP').remove(); }, + close:function(){ $('#evtCoM').remove(); }, buttons:[ { text:"Cancel", click:function(){ $(this).dialog('close'); }}, { text:"OK", click:function(){ - var dev = $("select#evtDev").val(); - var cmd = "set "+dev+" addRegexpPart "+ - ($('input[name=evtType]:checked').attr("id")=='rdEx' ? re1 : re2); - FW_cmd(FW_root+"?cmd="+cmd+"&XHR=1"); + FW_cmd(FW_root+"?cmd="+$("#evtCoM #cmd").html()+"&XHR=1"); $(this).dialog('close'); - location = FW_root+'?detail='+dev; - }}] - }); + location = FW_root+'?detail='+modDev; + }}], + open:function(){ + $("#evtCoM #newType").val("notify"); + $("#evtCoM input,#evtCoM select").change(optChanged); + } + }); + + function + optChanged() + { + var event = evt1; + if(evt1 != evt2 && $("#evtCoM #rdNum").is(":checked")) + event = evt2; + var cmd; + + if($("#evtCoM #def").is(":checked")) { // define + $("#evtCoM #newType").show(); + $("#evtCoM #modDev").hide(); + var type = $("#evtCoM #newType").val(), num=1; + var nRe = new RegExp(evtDev+"_"+type+"_(\\d+)"); + for(var i1=0; i1= num) + num = parseInt(m[1])+1; + } + modDev = evtDev+"_"+type+"_"+num; + cmd = "define "+modDev+" "+type+" "+knownTypes[type].createArg; + + } else { + $("#evtCoM #newType").hide(); + $("#evtCoM #modDev").show(); + modDev = $("#evtCoM #modDev").val(); + cmd = knownTypes[devHash[modDev].Internals.TYPE].modify; - FW_cmd(FW_root+"?cmd=jsonlist2&XHR=1", function(data){ - var devList = JSON.parse(data); - for(var i1=0; i1= 0) - $("select#evtDev").append(''); } + + $("#evtCoM #cmd").text(cmd + .replace(/modDev/g,modDev) + .replace(/evtDev/g,evtDev) + .replace(/event/g,event)); + } + + FW_cmd(FW_root+"?cmd=jsonlist2 .* TYPE&XHR=1", function(data){ + devList = JSON.parse(data).Results; + for(var i1=0; i1'+dev.Name+''); + devHash[dev.Name] = dev; + } + optChanged(); }); }); }