mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 07:56:03 +00:00
console.js: replace addRegexpPart with "Create/Modify Device" (Forum #67306)
git-svn-id: https://svn.fhem.de/fhem/trunk@13434 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
6efd548053
commit
918e0e37e3
@ -175,7 +175,22 @@ function
|
|||||||
consAddRegexpPart()
|
consAddRegexpPart()
|
||||||
{
|
{
|
||||||
$("<button style='margin-left:1em' id='addRegexpPart'>"+
|
$("<button style='margin-left:1em' id='addRegexpPart'>"+
|
||||||
"addRegexpPart</button>").insertAfter("button#eventReset");
|
"Create/Modify Device</button>").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(){
|
$("button#addRegexpPart").click(function(){
|
||||||
// get selection, build regexp from event
|
// get selection, build regexp from event
|
||||||
@ -187,50 +202,95 @@ consAddRegexpPart()
|
|||||||
var ret = txt.match(re);
|
var ret = txt.match(re);
|
||||||
if(!ret)
|
if(!ret)
|
||||||
return FW_okDialog(hlp);
|
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 = '<style type="text/css">\n'+
|
var txt = '<style type="text/css">\n'+
|
||||||
'div.evt label { display:block; margin-left:2em; }\n'+
|
'div.evt label { display:block; margin-left:2em; }\n'+
|
||||||
'div.evt input { float:left; }\n'+
|
'div.evt input { float:left; }\n'+
|
||||||
'</style>\n';
|
'</style>\n';
|
||||||
txt += "Extend the regular expression of the device<br>";
|
|
||||||
txt += "<select id='evtDev'></select><br><br>";
|
|
||||||
txt += "<div class='evt'>"+
|
|
||||||
"<input type='radio' name='evtType' id='rdEx' checked/>"+
|
|
||||||
"<label>with exactly this event:<br>"+re1+"</label></div><br>";
|
|
||||||
if(re1 != re2)
|
|
||||||
txt += "<div class='evt'>"+
|
|
||||||
"<input type='radio' name='evtType' id='rdNum'/>"+
|
|
||||||
"<label>with any number matching:<br>"+re2+"</label></div><br>";
|
|
||||||
|
|
||||||
$('body').append('<div id="addReP" style="display:none">'+txt+'</div>');
|
var inputPrf="<input type='radio' name="
|
||||||
$('#addReP').dialog(
|
txt += inputPrf+"'defmod' id='def' checked/><label>Create</label>"+
|
||||||
|
inputPrf+"'defmod' id='mod'/><label>Modify</label><br><br>"
|
||||||
|
txt += "<select id='modDev' style='display:none'></select>";
|
||||||
|
txt += "<select id='newType'><option>"+
|
||||||
|
creates.sort().join("</option><option>")+
|
||||||
|
"</select><br><br>";
|
||||||
|
|
||||||
|
if(evt1 != evt2) {
|
||||||
|
txt += "<div class='evt'>"+inputPrf+"'evtType' id='rdEx' checked/>"+
|
||||||
|
"<label>with exactly this event</div><br>";
|
||||||
|
txt += "<div class='evt'>"+inputPrf+"'evtType' id='rdNum'/>"+
|
||||||
|
"<label>with any number matching</label></div><br>";
|
||||||
|
}
|
||||||
|
txt += "<div class='evt' id='cmd'> </txt>";
|
||||||
|
|
||||||
|
$('body').append('<div id="evtCoM" style="display:none">'+txt+'</div>');
|
||||||
|
$('#evtCoM').dialog(
|
||||||
{ modal:true, closeOnEscape:true, width:"auto",
|
{ modal:true, closeOnEscape:true, width:"auto",
|
||||||
close:function(){ $('#addReP').remove(); },
|
close:function(){ $('#evtCoM').remove(); },
|
||||||
buttons:[
|
buttons:[
|
||||||
{ text:"Cancel", click:function(){ $(this).dialog('close'); }},
|
{ text:"Cancel", click:function(){ $(this).dialog('close'); }},
|
||||||
{ text:"OK", click:function(){
|
{ text:"OK", click:function(){
|
||||||
var dev = $("select#evtDev").val();
|
FW_cmd(FW_root+"?cmd="+$("#evtCoM #cmd").html()+"&XHR=1");
|
||||||
var cmd = "set "+dev+" addRegexpPart "+
|
|
||||||
($('input[name=evtType]:checked').attr("id")=='rdEx' ? re1 : re2);
|
|
||||||
FW_cmd(FW_root+"?cmd="+cmd+"&XHR=1");
|
|
||||||
$(this).dialog('close');
|
$(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<devList.length; i1++) {
|
||||||
|
var m = nRe.exec(devList[i1].Name);
|
||||||
|
if(m && m[1] >= 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<devList.Results.length; i1++) {
|
|
||||||
var dev = devList.Results[i1];
|
|
||||||
if(dev.PossibleSets.indexOf("addRegexpPart") >= 0)
|
|
||||||
$("select#evtDev").append('<option>'+dev.Name+'</option>');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("#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<devList.length; i1++) {
|
||||||
|
var dev = devList[i1], type = dev.Internals.TYPE;
|
||||||
|
if(knownTypes[type] && knownTypes[type].modify)
|
||||||
|
$("select#modDev").append('<option>'+dev.Name+'</option>');
|
||||||
|
devHash[dev.Name] = dev;
|
||||||
|
}
|
||||||
|
optChanged();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user