webapi-eca/webpages/handlers/forge_rules.html
2013-12-11 12:49:36 +01:00

129 lines
No EOL
4.1 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Forge A Rule</title>
{{{head_requires}}}
<script type = "text/template" id="templ_rule">
{
"id": "rule_id",
"event": "custom",
"condition": { "property": "yourValue" },
"actions": [
{
"module": "probinder->newContent",
"arguments": {
"content": "Rule#2: $X.subject"
}
}
]
}
</script>
</head>
<body>
{{{div_menubar}}}
<div id="mainbody">
<div id="pagetitle">Hi {{user.username}}, forge your own rules!</div>
<p>
<form id="form_rule">
<div id="div_left">
<input type="hidden" id="command" value="store_rule" />
<textarea id="textarea_rule" rows="20" cols="60"> </textarea>
<p id="required_params">
</p>
<p>
<button id="but_submit">save</button>
</p>
</div>
<div id="div_middle">
<p><b>Available Event Modules:</b></p>
<ul> </ul>
</div>
<div id="div_right">
<p><b>Available Action Modules:</b></p>
<ul> </ul>
</div>
</form>
</p>
</div>
<script type="text/javascript">
$( "#form_rule" ).submit(function( event ) {
var arrInputs = $( "#form_rule .inp_param" );
console.log(arrInputs);
for( var i = 0; i < arrInputs.length; i++) {
console.log(arrInputs[i]);
}
event.preventDefault();
});
$('#but_submit').click(function() {
// var req_fields =
var obj = {
command : 'store_rule',
data: $('#textarea_rule').val()
};
$.post('/usercommand', obj)
// $.post('/usercommand', $('form#rules_form').serialize())
.done(function(data) {
$('#required_params').children().remove();
if(data.success) {
alert(data.info);
} else {
// TODO fix, same logic twice
console.log(data.actionmodules);
console.log(data.eventmodules);
for(var el in data.eventmodules) {
var oEM = JSON.parse(data.eventmodules[el]);
console.log(oEM);
$('#required_params').append($('<p>').html($('<b>Event Module "'+el+'" requires parameters:</b>')));
for(var eel in oEM){
var inp = '<b>' + eel + ': </b><input type="password" id="em_'+el+'_'+eel+'" class="inp_param" />('+oEM[eel].description+')';
$('#required_params').append($('<p>').html(inp));
}
}
for(var el in data.actionmodules) {
$('#required_params').append($('<p>').html($('<b>Action Module "'+el+'" requires parameters:</b>')));
var oAM = JSON.parse(data.actionmodules[el]);
console.log(oAM);
for(var ael in oAM){
var inp = '<b>' + ael + ': </b><input type="password" id="am_'+el+'_'+ael+'" class="inp_param" />('+oAM[ael].description+')';
$('#required_params').append($('<p>').html(inp));
}
}
}
})
.fail(function(err) {
console.log(err);
alert('Posting of rule failed: ' + err.responseText);
});
});
// TODO fix, same logic twice
$.post('/usercommand', { command: 'get_eventmodules' })
.done(function(data) {
for(var mod in data) {
var mthds = data[mod].methods;
if(mthds) {
var arr = mthds.split(',');
for(var i = 0; i < arr.length; i++) {
$('#div_middle ul').append($('<li>').text(mod + '->' + arr[i]));
}
}
}
});
$.post('/usercommand', { command: 'get_actionmodules' })
.done(function(data) {
for(var mod in data) {
var mthds = data[mod].methods;
if(mthds) {
var arr = mthds.split(',');
for(var i = 0; i < arr.length; i++) {
$('#div_right ul').append($('<li>').text(mod + '->' + arr[i]));
}
}
}
});
$('#textarea_rule').val($('#templ_rule').html());
</script>
</body>
</html>