Merge branch 'development' into LTS_development
This commit is contained in:
commit
10af060ab4
2 changed files with 42 additions and 32 deletions
|
@ -4,8 +4,8 @@ i),g));return c(a<<h|a>>>32-h,b)}function m(a){var b="",c="",d;for(d=0;3>=d;d++)
|
|||
k=b(k,f,i,l,g[a+9],12,2336552879),l=b(l,k,f,i,g[a+10],17,4294925233),i=b(i,l,k,f,g[a+11],22,2304563134),f=b(f,i,l,k,g[a+12],7,1804603682),k=b(k,f,i,l,g[a+13],12,4254626195),l=b(l,k,f,i,g[a+14],17,2792965006),i=b(i,l,k,f,g[a+15],22,1236535329),f=d(f,i,l,k,g[a+1],5,4129170786),k=d(k,f,i,l,g[a+6],9,3225465664),l=d(l,k,f,i,g[a+11],14,643717713),i=d(i,l,k,f,g[a+0],20,3921069994),f=d(f,i,l,k,g[a+5],5,3593408605),k=d(k,f,i,l,g[a+10],9,38016083),l=d(l,k,f,i,g[a+15],14,3634488961),i=d(i,l,k,f,g[a+4],20,3889429448),
|
||||
f=d(f,i,l,k,g[a+9],5,568446438),k=d(k,f,i,l,g[a+14],9,3275163606),l=d(l,k,f,i,g[a+3],14,4107603335),i=d(i,l,k,f,g[a+8],20,1163531501),f=d(f,i,l,k,g[a+13],5,2850285829),k=d(k,f,i,l,g[a+2],9,4243563512),l=d(l,k,f,i,g[a+7],14,1735328473),i=d(i,l,k,f,g[a+12],20,2368359562),f=e(f,i,l,k,g[a+5],4,4294588738),k=e(k,f,i,l,g[a+8],11,2272392833),l=e(l,k,f,i,g[a+11],16,1839030562),i=e(i,l,k,f,g[a+14],23,4259657740),f=e(f,i,l,k,g[a+1],4,2763975236),k=e(k,f,i,l,g[a+4],11,1272893353),l=e(l,k,f,i,g[a+7],16,4139469664),
|
||||
i=e(i,l,k,f,g[a+10],23,3200236656),f=e(f,i,l,k,g[a+13],4,681279174),k=e(k,f,i,l,g[a+0],11,3936430074),l=e(l,k,f,i,g[a+3],16,3572445317),i=e(i,l,k,f,g[a+6],23,76029189),f=e(f,i,l,k,g[a+9],4,3654602809),k=e(k,f,i,l,g[a+12],11,3873151461),l=e(l,k,f,i,g[a+15],16,530742520),i=e(i,l,k,f,g[a+2],23,3299628645),f=j(f,i,l,k,g[a+0],6,4096336452),k=j(k,f,i,l,g[a+7],10,1126891415),l=j(l,k,f,i,g[a+14],15,2878612391),i=j(i,l,k,f,g[a+5],21,4237533241),f=j(f,i,l,k,g[a+12],6,1700485571),k=j(k,f,i,l,g[a+3],10,2399980690),
|
||||
l=j(l,k,f,i,g[a+10],15,4293915773),i=j(i,l,k,f,g[a+1],21,2240044497),f=j(f,i,l,k,g[a+8],6,1873313359),k=j(k,f,i,l,g[a+15],10,4264355552),l=j(l,k,f,i,g[a+6],15,2734768916),i=j(i,l,k,f,g[a+13],21,1309151649),f=j(f,i,l,k,g[a+4],6,4149444226),k=j(k,f,i,l,g[a+11],10,3174756917),l=j(l,k,f,i,g[a+2],15,718787259),i=j(i,l,k,f,g[a+9],21,3951481745),f=c(f,p),i=c(i,n),l=c(l,h),k=c(k,s);return(m(f)+m(i)+m(l)+m(k)).toLowerCase()};(function(a){a.fn.stupidtable=function(){a(this).on("click","thead th",function(){a(this).stupidsort()})};a.fn.stupidsort=function(){function c(c){var b=0,d;a(c).children("td,th").each(function(){if(b==p)return d=a(this),!1;var c=a(this).attr("colspan");b+=c?Number(c):1});c="undefined"!=typeof d.data("sort-value")?d.data("sort-value"):"undefined"!=typeof d.attr("data-sort-value")?d.attr("data-sort-value"):d.text();switch(m){case "string":case "string-ins":c=String(c).toLowerCase();break;case "int":c=
|
||||
parseInt(Number(c));break;case "float":c=Number(c)}return c}var b=a(this),d=b.closest("table"),e=d.children("tbody"),j=e.children("tr"),m=b.attr("data-sort-type");if(m){var g=!0;b.hasClass("sorting-asc")&&(g=!1);var p=0;b.prevAll().each(function(){var c=a(this).attr("colspan");p+=c?Number(c):1});j.sort(function(a,b){var d=g?1:-1,a=c(a),b=c(b);return a>b?1*d:a<b?-1*d:0});e.append(j);d.find("thead th").removeClass("sorting-asc").removeClass("sorting-desc");b.addClass(g?"sorting-asc":"sorting-desc")}}})(jQuery);$(function(){UI.elements={menu:$("nav > .menu"),secondary_menu:$("nav.secondary_menu"),main:$("main"),connection:{status:$("#connection"),user_and_host:$("#user_and_host"),msg:$("#message")}};UI.buildMenu();UI.stored.getOpts();if(location.hash){var a=decodeURIComponent(location.hash).substring(1).split("@")[0].split("&");mist.user.name=a[0];a[1]&&(mist.user.host=a[1])}mist.send(function(){$(window).trigger("hashchange")},{},{timeout:5,hide:!0})});
|
||||
l=j(l,k,f,i,g[a+10],15,4293915773),i=j(i,l,k,f,g[a+1],21,2240044497),f=j(f,i,l,k,g[a+8],6,1873313359),k=j(k,f,i,l,g[a+15],10,4264355552),l=j(l,k,f,i,g[a+6],15,2734768916),i=j(i,l,k,f,g[a+13],21,1309151649),f=j(f,i,l,k,g[a+4],6,4149444226),k=j(k,f,i,l,g[a+11],10,3174756917),l=j(l,k,f,i,g[a+2],15,718787259),i=j(i,l,k,f,g[a+9],21,3951481745),f=c(f,p),i=c(i,n),l=c(l,h),k=c(k,s);return(m(f)+m(i)+m(l)+m(k)).toLowerCase()};(function(a){a.fn.stupidtable=function(){a(this).on("click","thead th",function(){a(this).stupidsort()})};a.fn.stupidsort=function(){function c(b){var c=0,d;a(b).children("td,th").each(function(){if(c==p)return d=a(this),!1;var b=a(this).attr("colspan");c+=b?Number(b):1});b="undefined"!=typeof d.data("sort-value")?d.data("sort-value"):"undefined"!=typeof d.attr("data-sort-value")?d.attr("data-sort-value"):d.text();switch(m){case "string":case "string-ins":b=String(b).toLowerCase();break;case "int":b=
|
||||
parseInt(Number(b));break;case "float":b=Number(b)}return b}var b=a(this),d=b.closest("table"),e=d.children("tbody"),j=e.children("tr"),m=b.attr("data-sort-type");if(m){var g=!0;b.hasClass("sorting-asc")&&(g=!1);var p=0;b.prevAll().each(function(){var b=a(this).attr("colspan");p+=b?Number(b):1});j.sort(function(a,b){var d=g?1:-1,a=c(a),b=c(b);return a>b?1*d:a<b?-1*d:0});e.append(j);d.find("thead th").removeClass("sorting-asc").removeClass("sorting-desc");b.addClass(g?"sorting-asc":"sorting-desc")}}})(jQuery);$(function(){UI.elements={menu:$("nav > .menu"),secondary_menu:$("nav.secondary_menu"),main:$("main"),connection:{status:$("#connection"),user_and_host:$("#user_and_host"),msg:$("#message")}};UI.buildMenu();UI.stored.getOpts();if(location.hash){var a=decodeURIComponent(location.hash).substring(1).split("@")[0].split("&");mist.user.name=a[0];a[1]&&(mist.user.host=a[1])}mist.send(function(){$(window).trigger("hashchange")},{},{timeout:5,hide:!0})});
|
||||
$(window).on("hashchange",function(){var a=decodeURIComponent(location.hash).substring(1).split("@");a[1]||(a[1]="");a=a[1].split("&");""==a[0]&&(a[0]="Overview");UI.showTab(a[0],a[1])});
|
||||
var UI={debug:!1,elements:{},stored:{getOpts:function(){var a=localStorage.stored;a&&(a=JSON.parse(a));$.extend(!0,this.vars,a);return this.vars},saveOpt:function(a,c){this.vars[a]=c;localStorage.stored=JSON.stringify(this.vars);return this.vars},vars:{helpme:!0}},interval:{clear:function(){"undefined"!=typeof this.opts&&(clearInterval(this.opts.id),delete this.opts)},set:function(a,c){this.opts&&log("[interval]","Set called on interval, but an interval is already active.");this.opts={delay:c,callback:a};
|
||||
this.opts.id=setInterval(a,c)}},returnTab:["Overview"],countrylist:{AF:"Afghanistan",AX:"Åland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia, Plurinational State of",BQ:"Bonaire, Sint Eustatius and Saba",
|
||||
|
@ -19,38 +19,38 @@ ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",SS:"South Su
|
|||
UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela, Bolivarian Republic of",VN:"Viet Nam",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe"},tooltip:{show:function(a,c){$tooltip=this.element;$.contains(document.body,$tooltip[0])||$("body").append($tooltip);$tooltip.html(c);clearTimeout(this.hiding);
|
||||
delete this.hiding;var b=$(document).height()-$tooltip.outerHeight(),d=$(document).width()-$tooltip.outerWidth();$tooltip.css("left",Math.min(a.pageX+10,d-10));$tooltip.css("top",Math.min(a.pageY+25,b-10));$tooltip.show().addClass("show")},hide:function(){$tooltip=this.element;$tooltip.removeClass("show");this.hiding=setTimeout(function(){$tooltip.hide()},500)},element:$("<div>").attr("id","tooltip")},popup:{element:null,show:function(a){this.element=$("<div>").attr("id","popup").append($("<button>").text("Close").addClass("close").click(function(){UI.popup.element.fadeOut("fast",
|
||||
function(){UI.popup.element.remove();UI.popup.element=null})})).append(a);$("body").append(this.element)}},menu:[{Overview:{},Protocols:{},Streams:{},Preview:{},Triggers:{LTSonly:!1},Logs:{},Statistics:{},"Server Stats":{}},{Disconnect:{classes:["red"]}},{Guides:{link:"http://mistserver.org/documentation#Userdocs"},Tools:{submenu:{"Release notes":{link:"http://mistserver.org/documentation#Devdocs"},"Mist Shop":{link:"http://mistserver.org/products"},"Email for Help":{},"Terms & Conditions":{link:"http://mistserver.org/documentation#Legal"}}}}],
|
||||
buildMenu:function(){function a(a,c){var b=$("<a>").addClass("button");b.html($("<span>").addClass("plain").text(a)).append($("<span>").addClass("highlighted").text(a));for(var d in c.classes)b.addClass(c.classes[d]);"LTSonly"in c&&b.addClass("LTSonly");"link"in c?b.attr("href",c.link).attr("target","_blank"):"submenu"in c||b.click(function(c){UI.navto(a);c.stopPropagation()});return b}var c=UI.elements.menu,b;for(b in UI.menu){0<b&&c.append($("<br>"));for(var d in UI.menu[b]){var e=UI.menu[b][d],
|
||||
buildMenu:function(){function a(a,b){var c=$("<a>").addClass("button");c.html($("<span>").addClass("plain").text(a)).append($("<span>").addClass("highlighted").text(a));for(var d in b.classes)c.addClass(b.classes[d]);"LTSonly"in b&&c.addClass("LTSonly");"link"in b?c.attr("href",b.link).attr("target","_blank"):"submenu"in b||c.click(function(b){UI.navto(a);b.stopPropagation()});return c}var c=UI.elements.menu,b;for(b in UI.menu){0<b&&c.append($("<br>"));for(var d in UI.menu[b]){var e=UI.menu[b][d],
|
||||
j=a(d,e);c.append(j);if("submenu"in e){var m=$("<span>").addClass("submenu");j.addClass("arrowdown").append(m);for(var g in e.submenu)m.append(a(g,e.submenu[g]))}}}b=$("<div>").attr("id","ih_button").text("?").click(function(){$("body").toggleClass("helpme");UI.stored.saveOpt("helpme",$("body").hasClass("helpme"))}).attr("title","Click to toggle the display of integrated help");UI.stored.getOpts().helpme&&$("body").addClass("helpme");c.after(b).after($("<div>").addClass("separator"))},buildUI:function(a){var c=
|
||||
$("<div>").addClass("input_container"),b;for(b in a){var d=a[b];if(d instanceof jQuery)c.append(d);else if("help"==d.type){var e=$("<span>").addClass("text_container").append($("<span>").addClass("description").append(d.help));c.append(e);if("classes"in d)for(var j in d.classes)e.addClass(d.classes[j])}else if("text"==d.type)c.append($("<span>").addClass("text_container").append($("<span>").addClass("text").append(d.text)));else if("custom"==d.type)c.append(d.custom);else if("buttons"==d.type)for(j in e=
|
||||
$("<span>").addClass("button_container"),"css"in d&&e.css(d.css),c.append(e),d.buttons){var m=d.buttons[j],g=$("<button>").text(m.label).data("opts",m);"css"in m&&g.css(m.css);e.append(g);switch(m.type){case "cancel":g.addClass("cancel").click(m["function"]);break;case "save":g.addClass("save").click(function(){var a=$(this).closest(".input_container"),c=!1;a.find(".hasValidate").each(function(){if(c=$(this).data("validate")(this,!0))return!1});c||(a.find(".isSetting").each(function(){var a=$(this).getval(),
|
||||
c=$(this).data("pointer");if(""==a)if("default"in $(this).data("opts"))a=$(this).data("opts")["default"];else return delete c.main[c.index],!0;c.main[c.index]=a}),(a=$(this).data("opts")["function"])&&a(this))});break;default:g.click(m["function"])}}else{m=$("<label>").addClass("UIelement");c.append(m);"css"in d&&m.css(d.css);m.append($("<span>").addClass("label").html(d.label+":"));g=$("<span>").addClass("field_container");m.append(g);switch(d.type){case "password":e=$("<input>").attr("type","password");
|
||||
$("<span>").addClass("button_container"),"css"in d&&e.css(d.css),c.append(e),d.buttons){var m=d.buttons[j],g=$("<button>").text(m.label).data("opts",m);"css"in m&&g.css(m.css);e.append(g);switch(m.type){case "cancel":g.addClass("cancel").click(m["function"]);break;case "save":g.addClass("save").click(function(){var a=$(this).closest(".input_container"),b=!1;a.find(".hasValidate").each(function(){if(b=$(this).data("validate")(this,!0))return!1});b||(a.find(".isSetting").each(function(){var a=$(this).getval(),
|
||||
b=$(this).data("pointer");if(""==a)if("default"in $(this).data("opts"))a=$(this).data("opts")["default"];else return delete b.main[b.index],!0;b.main[b.index]=a}),(a=$(this).data("opts")["function"])&&a(this))});break;default:g.click(m["function"])}}else{m=$("<label>").addClass("UIelement");c.append(m);"css"in d&&m.css(d.css);m.append($("<span>").addClass("label").html(d.label+":"));g=$("<span>").addClass("field_container");m.append(g);switch(d.type){case "password":e=$("<input>").attr("type","password");
|
||||
break;case "int":e=$("<input>").attr("type","number");"min"in d&&e.attr("min",d.min);"max"in d&&e.attr("max",d.min);"validate"in d?d.validate.push("int"):d.validate=["int"];break;case "span":e=$("<span>");break;case "debug":d.select=[["","Default"],[0,"0 - All debugging messages disabled"],[1,"1 - Messages about failed operations"],[2,"2 - Previous level, and error messages"],[3,"3 - Previous level, and warning messages"],[4,"4 - Previous level, and status messages for development"],[5,"5 - Previous level, and more status messages for development"],
|
||||
[6,"6 - Previous level, and verbose debugging messages"],[7,"7 - Previous level, and very verbose debugging messages"],[8,"8 - Report everything in extreme detail"],[9,"9 - Report everything in insane detail"],[10,"10 - All messages enabled"]];case "select":e=$("<select>");for(j in d.select){var p=$("<option>");"string"==typeof d.select[j]?p.text(d.select[j]):p.val(d.select[j][0]).text(d.select[j][1]);e.append(p)}break;case "textarea":e=$("<textarea>").on("keydown",function(a){a.stopPropagation()});
|
||||
break;case "checkbox":e=$("<input>").attr("type","checkbox");break;case "hidden":e=$("<input>").attr("type","hidden");m.hide();break;case "email":e=$("<input>").attr("type","email").attr("autocomplete","on").attr("required","");break;case "browse":e=$("<input>").attr("type","text");"filetypes"in d&&e.data("filetypes",d.filetypes);break;case "geolimited":case "hostlimited":e=$("<input>").attr("type","hidden");break;case "radioselect":e=$("<div>").addClass("radioselect");for(b in d.radioselect){var n=
|
||||
$("<input>").attr("type","radio").val(d.radioselect[b][0]).attr("name",d.label);("LTSonly"in d&&!mist.data.LTS||d.readonly)&&n.prop("disabled",!0);p=$("<label>").append(n).append($("<span>").html(d.radioselect[b][1]));e.append(p);if(2<d.radioselect[b].length)for(j in n=$("<select>").change(function(){$(this).parent().find("input[type=radio]:enabled").prop("checked","true")}),p.append(n),("LTSonly"in d&&!mist.data.LTS||d.readonly)&&n.prop("disabled",!0),d.radioselect[b][2])p=$("<option>"),n.append(p),
|
||||
d.radioselect[b][2][j]instanceof Array?p.val(d.radioselect[b][2][j][0]).html(d.radioselect[b][2][j][1]):p.html(d.radioselect[b][2][j])}break;case "checklist":e=$("<div>").addClass("checkcontainer");$controls=$("<div>").addClass("controls");$checklist=$("<div>").addClass("checklist");e.append($controls).append($checklist);$controls.append($("<label>").text("All").prepend($("<input>").attr("type","checkbox").click(function(){$(this).is(":checked")?$(this).closest(".checkcontainer").find("input[type=checkbox]").prop("checked",
|
||||
!0):$(this).closest(".checkcontainer").find("input[type=checkbox]").prop("checked",!1)})));for(b in d.checklist)"string"==typeof d.checklist[b]&&(d.checklist[b]=[d.checklist[b],d.checklist[b]]),$checklist.append($("<label>").text(d.checklist[b][1]).prepend($("<input>").attr("type","checkbox").attr("name",d.checklist[b][0])));break;case "DOMfield":e=d.DOMfield;break;default:e=$("<input>").attr("type","text")}e.addClass("field").data("opts",d);"pointer"in d&&e.attr("name",d.pointer.index);g.append(e);
|
||||
if("classes"in d)for(j in d.classes)e.addClass(d.classes[j]);"placeholder"in d&&e.attr("placeholder",d.placeholder);"default"in d&&e.attr("placeholder",d["default"]);"unit"in d&&g.append($("<span>").addClass("unit").html(d.unit));"readonly"in d&&(e.attr("readonly","readonly"),e.click(function(){$(this).select()}));"qrcode"in d&&g.append($("<span>").addClass("unit").html($("<button>").text("QR").click(function(){var a=String($(this).closest(".field_container").find(".field").getval()),c=$("<div>").addClass("qrcode");
|
||||
UI.popup.show($("<span>").addClass("qr_container").append($("<p>").text(a)).append(c));c.qrcode({text:a,size:Math.min(c.width(),c.height())})})));"rows"in d&&e.attr("rows",d.rows);"LTSonly"in d&&!mist.data.LTS&&(g.addClass("LTSonly"),e.prop("disabled",!0));switch(d.type){case "browse":n=$("<div>").addClass("grouper").append(m);c.append(n);n=$("<button>").text("Browse");g.append(n);n.click(function(){function a(c){j.text("Loading..");mist.send(function(a){e.text(a.browse.path[0]);j.html(n.clone(true).text("..").attr("title",
|
||||
"Folder up"));if(a.browse.subdirectories){a.browse.subdirectories.sort();for(var c in a.browse.subdirectories){var h=a.browse.subdirectories[c];j.append(n.clone(true).attr("title",e.text()+p+h).text(h))}}if(a.browse.files){a.browse.files.sort();for(c in a.browse.files){var h=a.browse.files[c],m=e.text()+p+h,h=$("<a>").text(h).addClass("file").attr("title",m);j.append(h);if(o){var q=true,s;for(s in o)if(typeof o[s]!="undefined"&&mist.inputMatch(o[s],m)){q=false;break}q&&h.hide()}h.click(function(){var a=
|
||||
$(this).attr("title");d.setval(a);g.show();b.remove()})}}},{browse:c})}var c=$(this).closest(".grouper"),b=$("<div>").addClass("browse_container"),d=c.find(".field"),g=$(this),e=$("<span>").addClass("field"),m=$("<button>").text("Select this folder"),j=$("<div>").addClass("browse_contents"),n=$("<a>").addClass("folder"),o=d.data("filetypes");c.append(b);b.append($("<label>").addClass("UIelement").append($("<span>").addClass("label").text("Current folder:")).append($("<span>").addClass("field_container").append(e).append(m))).append(j);
|
||||
m.click(function(){var a=e.text()+"/";d.setval(a);g.show();b.remove()});var p="/";mist.data.config.version.indexOf("indows")>-1&&(p="\\");n.click(function(){var c=e.text()+p+$(this).text();a(c)});c=d.getval();c=c.split(p);c.pop();c=c.join(p);g.hide();a(c)});break;case "geolimited":case "hostlimited":n={field:e};n.blackwhite=$("<select>").append($("<option>").val("-").text("Blacklist")).append($("<option>").val("+").text("Whitelist"));n.values=$("<span>").addClass("limit_value_list");switch(d.type){case "geolimited":n.prototype=
|
||||
$("<select>").append($("<option>").val("").text("[Select a country]"));for(b in UI.countrylist)n.prototype.append($("<option>").val(b).html(UI.countrylist[b]));break;case "hostlimited":n.prototype=$("<input>").attr("type","text").attr("placeholder","type a host")}n.prototype.on("change keyup",function(){$(this).closest(".field_container").data("subUI").blackwhite.trigger("change")});n.blackwhite.change(function(){var a=$(this).closest(".field_container").data("subUI"),c=[],b=false;a.values.children().each(function(){b=
|
||||
$(this).val();b!=""?c.push(b):$(this).remove()});a.values.append(a.prototype.clone(true));c.length>0?a.field.val($(this).val()+c.join(" ")):a.field.val("");a.field.trigger("change")});"LTSonly"in d&&!mist.data.LTS&&(n.blackwhite.prop("disabled",!0),n.prototype.prop("disabled",!0));n.values.append(n.prototype.clone(!0));g.data("subUI",n).addClass("limit_list").append(n.blackwhite).append(n.values)}"pointer"in d&&(e.data("pointer",d.pointer).addClass("isSetting"),g=d.pointer.main[d.pointer.index],"undefined"!=
|
||||
if("classes"in d)for(j in d.classes)e.addClass(d.classes[j]);"placeholder"in d&&e.attr("placeholder",d.placeholder);"default"in d&&e.attr("placeholder",d["default"]);"unit"in d&&g.append($("<span>").addClass("unit").html(d.unit));"readonly"in d&&(e.attr("readonly","readonly"),e.click(function(){$(this).select()}));"qrcode"in d&&g.append($("<span>").addClass("unit").html($("<button>").text("QR").click(function(){var a=String($(this).closest(".field_container").find(".field").getval()),b=$("<div>").addClass("qrcode");
|
||||
UI.popup.show($("<span>").addClass("qr_container").append($("<p>").text(a)).append(b));b.qrcode({text:a,size:Math.min(b.width(),b.height())})})));"rows"in d&&e.attr("rows",d.rows);"LTSonly"in d&&!mist.data.LTS&&(g.addClass("LTSonly"),e.prop("disabled",!0));switch(d.type){case "browse":n=$("<div>").addClass("grouper").append(m);c.append(n);n=$("<button>").text("Browse");g.append(n);n.click(function(){function a(b){j.text("Loading..");mist.send(function(a){e.text(a.browse.path[0]);j.html(n.clone(true).text("..").attr("title",
|
||||
"Folder up"));if(a.browse.subdirectories){a.browse.subdirectories.sort();for(var b in a.browse.subdirectories){var h=a.browse.subdirectories[b];j.append(n.clone(true).attr("title",e.text()+p+h).text(h))}}if(a.browse.files){a.browse.files.sort();for(b in a.browse.files){var h=a.browse.files[b],m=e.text()+p+h,h=$("<a>").text(h).addClass("file").attr("title",m);j.append(h);if(o){var q=true,s;for(s in o)if(typeof o[s]!="undefined"&&mist.inputMatch(o[s],m)){q=false;break}q&&h.hide()}h.click(function(){var a=
|
||||
$(this).attr("title");d.setval(a);g.show();c.remove()})}}},{browse:b})}var b=$(this).closest(".grouper"),c=$("<div>").addClass("browse_container"),d=b.find(".field"),g=$(this),e=$("<span>").addClass("field"),m=$("<button>").text("Select this folder"),j=$("<div>").addClass("browse_contents"),n=$("<a>").addClass("folder"),o=d.data("filetypes");b.append(c);c.append($("<label>").addClass("UIelement").append($("<span>").addClass("label").text("Current folder:")).append($("<span>").addClass("field_container").append(e).append(m))).append(j);
|
||||
m.click(function(){var a=e.text()+"/";d.setval(a);g.show();c.remove()});var p="/";mist.data.config.version.indexOf("indows")>-1&&(p="\\");n.click(function(){var b=e.text()+p+$(this).text();a(b)});b=d.getval();b=b.split(p);b.pop();b=b.join(p);g.hide();a(b)});break;case "geolimited":case "hostlimited":n={field:e};n.blackwhite=$("<select>").append($("<option>").val("-").text("Blacklist")).append($("<option>").val("+").text("Whitelist"));n.values=$("<span>").addClass("limit_value_list");switch(d.type){case "geolimited":n.prototype=
|
||||
$("<select>").append($("<option>").val("").text("[Select a country]"));for(b in UI.countrylist)n.prototype.append($("<option>").val(b).html(UI.countrylist[b]));break;case "hostlimited":n.prototype=$("<input>").attr("type","text").attr("placeholder","type a host")}n.prototype.on("change keyup",function(){$(this).closest(".field_container").data("subUI").blackwhite.trigger("change")});n.blackwhite.change(function(){var a=$(this).closest(".field_container").data("subUI"),b=[],c=false;a.values.children().each(function(){c=
|
||||
$(this).val();c!=""?b.push(c):$(this).remove()});a.values.append(a.prototype.clone(true));b.length>0?a.field.val($(this).val()+b.join(" ")):a.field.val("");a.field.trigger("change")});"LTSonly"in d&&!mist.data.LTS&&(n.blackwhite.prop("disabled",!0),n.prototype.prop("disabled",!0));n.values.append(n.prototype.clone(!0));g.data("subUI",n).addClass("limit_list").append(n.blackwhite).append(n.values)}"pointer"in d&&(e.data("pointer",d.pointer).addClass("isSetting"),g=d.pointer.main[d.pointer.index],"undefined"!=
|
||||
g&&e.setval(g));"value"in d&&e.setval(d.value);g=$("<span>").addClass("help_container");m.append(g);"help"in d&&(g.append($("<span>").addClass("ih_balloon").html(d.help)),e.on("focus mouseover",function(){$(this).closest("label").addClass("active")}).on("blur mouseout",function(){$(this).closest("label").removeClass("active")}));if("validate"in d){m=[];for(j in d.validate){n=d.validate[j];if("function"!=typeof n)switch(n){case "required":n=function(a){return a==""?{msg:"This is a required field.",
|
||||
classes:["red"]}:false};break;case "int":n=function(a,c){var b=$(c).data("opts");if(!$(c)[0].validity.valid){var d=[];"min"in b&&d.push(" greater than or equal to "+b.min);"max"in b&&d.push(" smaller than or equal to "+b.max);return{msg:"Please enter an integer"+d.join(" and")+".",classes:["red"]}}if(parseInt(Number(a))!=a)return{msg:"Please enter an integer.",classes:["red"]}};break;case "streamname":n=function(a,c){if(!isNaN(a.charAt(0)))return{msg:"The first character may not be a number.",classes:["red"]};
|
||||
if(a.toLowerCase()!=a)return{msg:"Uppercase letters are not allowed.",classes:["red"]};if(a.replace(/[^\da-z_]/g,"")!=a)return{msg:"Special characters (except for underscores) are not allowed.",classes:["red"]};if("streams"in mist.data&&a in mist.data.streams&&$(c).data("pointer").main.name!=a)return{msg:"This streamname already exists.<br>If you want to edit an existing stream, please click edit on the the streams tab.",classes:["red"]}};break;default:n=function(){}}m.push(n)}e.data("validate_functions",
|
||||
m).data("help_container",g).data("validate",function(a,c){var b=$(a).getval(),d=$(a).data("validate_functions"),g=$(a).data("help_container");g.find(".err_balloon").remove();for(var e in d){var m=d[e](b,a);if(m){$err=$("<span>").addClass("err_balloon").html(m.msg);for(var j in m.classes)$err.addClass(m.classes[j]);g.prepend($err);c&&$(a).focus();return true}}return false}).addClass("hasValidate").on("change keyup",function(){$(this).data("validate")($(this))});""!=e.getval()&&e.trigger("change")}"function"in
|
||||
classes:["red"]}:false};break;case "int":n=function(a,b){var c=$(b).data("opts");if(!$(b)[0].validity.valid){var d=[];"min"in c&&d.push(" greater than or equal to "+c.min);"max"in c&&d.push(" smaller than or equal to "+c.max);return{msg:"Please enter an integer"+d.join(" and")+".",classes:["red"]}}if(parseInt(Number(a))!=a)return{msg:"Please enter an integer.",classes:["red"]}};break;case "streamname":n=function(a,b){if(!isNaN(a.charAt(0)))return{msg:"The first character may not be a number.",classes:["red"]};
|
||||
if(a.toLowerCase()!=a)return{msg:"Uppercase letters are not allowed.",classes:["red"]};if(a.replace(/[^\da-z_]/g,"")!=a)return{msg:"Special characters (except for underscores) are not allowed.",classes:["red"]};if("streams"in mist.data&&a in mist.data.streams&&$(b).data("pointer").main.name!=a)return{msg:"This streamname already exists.<br>If you want to edit an existing stream, please click edit on the the streams tab.",classes:["red"]}};break;default:n=function(){}}m.push(n)}e.data("validate_functions",
|
||||
m).data("help_container",g).data("validate",function(a,b){var c=$(a).getval(),d=$(a).data("validate_functions"),g=$(a).data("help_container");g.find(".err_balloon").remove();for(var e in d){var m=d[e](c,a);if(m){$err=$("<span>").addClass("err_balloon").html(m.msg);for(var j in m.classes)$err.addClass(m.classes[j]);g.prepend($err);b&&$(a).focus();return true}}return false}).addClass("hasValidate").on("change keyup",function(){$(this).data("validate")($(this))});""!=e.getval()&&e.trigger("change")}"function"in
|
||||
d&&(e.on("change keyup",d["function"]),e.trigger("change"))}}c.on("keydown",function(a){switch(a.which){case 13:$(this).find("button.save").trigger("click");break;case 27:$(this).find("button.cancel").trigger("click")}});return c},buildVheaderTable:function(a){var c=$("<table>").css("margin","0.2em"),b=$("<tr>").addClass("header").append($("<td>").addClass("vheader").attr("rowspan",a.labels.length+1).append($("<span>").text(a.vheader))),d=[];b.append($("<td>"));for(var e in a.labels)d.push($("<tr>").append($("<td>").html(""==
|
||||
a.labels[e]?" ":a.labels[e]+":")));for(var j in a.content)for(e in b.append($("<td>").html(a.content[j].header)),a.content[j].body)d[e].append($("<td>").html(a.content[j].body[e]));c.append($("<tbody>").append(b).append(d));return c},plot:{addGraph:function(a,c){var b={id:a.id,xaxis:a.xaxis,datasets:[],elements:{cont:$("<div>").addClass("graph"),plot:$("<div>").addClass("plot"),legend:$("<div>").addClass("legend").attr("draggable","true")}};UI.draggable(b.elements.legend);b.elements.cont.append(b.elements.plot).append(b.elements.legend);
|
||||
c.append(b.elements.cont);return b},go:function(a){if(!(1>Object.keys(a).length)){var c={totals:[],clients:[]},b;for(b in a)for(var d in a[b].datasets){var e=a[b].datasets[d];switch(e.datatype){case "clients":case "upbps":case "downbps":switch(e.origin[0]){case "total":c.totals.push({fields:[e.datatype],end:-15});break;case "stream":c.totals.push({fields:[e.datatype],streams:[e.origin[1]],end:-15});break;case "protocol":c.totals.push({fields:[e.datatype],protocols:[e.origin[1]],end:-15})}break;case "cpuload":case "memload":c.capabilities=
|
||||
{}}}0==c.totals.length&&delete c.totals;0==c.clients.length&&delete c.clients;mist.send(function(){for(var c in a){var b=a[c];if(1>b.datasets.length){b.elements.plot.html("");b.elements.legend.html("");break}switch(b.xaxis){case "time":var d=[];b.yaxes={};var e=[],n;for(n in b.datasets){var h=b.datasets[n];h.display&&(h.getdata(),h.yaxistype in b.yaxes||(d.push(UI.plot.yaxes[h.yaxistype]),b.yaxes[h.yaxistype]=d.length),h.yaxis=b.yaxes[h.yaxistype],e.push(h))}d[0]&&(d[0].color=0);b.plot=$.plot(b.elements.plot,
|
||||
e,{legend:{show:!1},xaxis:UI.plot.xaxes[b.xaxis],yaxes:d,grid:{hoverable:!0,borderWidth:{top:0,right:0,bottom:1,left:1},color:"black",backgroundColor:{colors:["rgba(0,0,0,0)","rgba(0,0,0,0.025)"]}},crosshair:{mode:"x"}});d=$("<table>").addClass("legend-list").addClass("nolay").html($("<tr>").html($("<td>").html($("<h3>").text(b.id))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").data("opts",b).text("X").addClass("close").click(function(){var c=
|
||||
$(this).data("opts");if(confirm("Are you sure you want to remove "+c.id+"?")){c.elements.cont.remove();var b=$(".graph_ids option:contains("+c.id+")"),d=b.parent();b.remove();UI.plot.del(c.id);delete a[c.id];d.trigger("change");UI.plot.go(a)}}))));b.elements.legend.html(d);var s=function(a){var c=b.elements.legend.find(".value"),d=1;if(typeof a=="undefined")c.eq(0).html("Latest:");else{var g=b.plot.getXAxes()[0],a=Math.min(g.max,a),a=Math.max(g.min,a);c.eq(0).html(UI.format.time(a/1E3))}for(var e in b.datasets){var f=
|
||||
" ";if(b.datasets[e].display){var g=UI.plot.yaxes[b.datasets[e].yaxistype].tickFormatter,h=b.datasets[e].data;if(a)for(var j in h){if(h[j][0]==a){f=g(h[j][1]);break}if(h[j][0]>a){if(j!=0){f=h[j];h=h[j-1];f=g(f[1]+(a-f[0])*(h[1]-f[1])/(h[0]-f[0]))}break}}else f=g(b.datasets[e].data[b.datasets[e].data.length-1][1])}c.eq(d).html(f);d++}};b.plot.getOptions();for(n in b.datasets)e=$("<input>").attr("type","checkbox").data("index",n).data("graph",b).click(function(){var a=$(this).data("graph");$(this).is(":checked")?
|
||||
a.datasets[$(this).data("index")].display=true:a.datasets[$(this).data("index")].display=false;var c={};c[a.id]=a;UI.plot.go(c)}),b.datasets[n].display&&e.attr("checked","checked"),d.append($("<tr>").html($("<td>").html($("<label>").html(e).append($("<div>").addClass("series-color").css("background-color",b.datasets[n].color)).append(b.datasets[n].label))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").text("X").addClass("close").data("index",
|
||||
n).data("graph",b).click(function(){var c=$(this).data("index"),b=$(this).data("graph");if(confirm("Are you sure you want to remove "+b.datasets[c].label+" from "+b.id+"?")){b.datasets.splice(c,1);if(b.datasets.length==0){b.elements.cont.remove();var c=$(".graph_ids option:contains("+b.id+")"),d=c.parent();c.remove();d.trigger("change");UI.plot.del(b.id);delete a[b.id];UI.plot.go(a)}else{UI.plot.save(b);c={};c[b.id]=b;UI.plot.go(c)}}}))));s();var f=!1;b.elements.plot.on("plothover",function(a,c,b){if(c.x!=
|
||||
f){s(c.x);f=c.x}if(b){a=$("<span>").append($("<h3>").text(b.series.label).prepend($("<div>").addClass("series-color").css("background-color",b.series.color))).append($("<table>").addClass("nolay").html($("<tr>").html($("<td>").text("Time:")).append($("<td>").html(UI.format.dateTime(b.datapoint[0]/1E3,"long")))).append($("<tr>").html($("<td>").text("Value:")).append($("<td>").html(b.series.yaxis.tickFormatter(b.datapoint[1],b.series.yaxis)))));UI.tooltip.show(c,a.children())}else UI.tooltip.hide()}).on("mouseout",
|
||||
{}}}0==c.totals.length&&delete c.totals;0==c.clients.length&&delete c.clients;mist.send(function(){for(var b in a){var c=a[b];if(1>c.datasets.length){c.elements.plot.html("");c.elements.legend.html("");break}switch(c.xaxis){case "time":var d=[];c.yaxes={};var e=[],n;for(n in c.datasets){var h=c.datasets[n];h.display&&(h.getdata(),h.yaxistype in c.yaxes||(d.push(UI.plot.yaxes[h.yaxistype]),c.yaxes[h.yaxistype]=d.length),h.yaxis=c.yaxes[h.yaxistype],e.push(h))}d[0]&&(d[0].color=0);c.plot=$.plot(c.elements.plot,
|
||||
e,{legend:{show:!1},xaxis:UI.plot.xaxes[c.xaxis],yaxes:d,grid:{hoverable:!0,borderWidth:{top:0,right:0,bottom:1,left:1},color:"black",backgroundColor:{colors:["rgba(0,0,0,0)","rgba(0,0,0,0.025)"]}},crosshair:{mode:"x"}});d=$("<table>").addClass("legend-list").addClass("nolay").html($("<tr>").html($("<td>").html($("<h3>").text(c.id))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").data("opts",c).text("X").addClass("close").click(function(){var b=
|
||||
$(this).data("opts");if(confirm("Are you sure you want to remove "+b.id+"?")){b.elements.cont.remove();var c=$(".graph_ids option:contains("+b.id+")"),d=c.parent();c.remove();UI.plot.del(b.id);delete a[b.id];d.trigger("change");UI.plot.go(a)}}))));c.elements.legend.html(d);var s=function(a){var b=c.elements.legend.find(".value"),d=1;if(typeof a=="undefined")b.eq(0).html("Latest:");else{var g=c.plot.getXAxes()[0],a=Math.min(g.max,a),a=Math.max(g.min,a);b.eq(0).html(UI.format.time(a/1E3))}for(var e in c.datasets){var f=
|
||||
" ";if(c.datasets[e].display){var g=UI.plot.yaxes[c.datasets[e].yaxistype].tickFormatter,h=c.datasets[e].data;if(a)for(var j in h){if(h[j][0]==a){f=g(h[j][1]);break}if(h[j][0]>a){if(j!=0){f=h[j];h=h[j-1];f=g(f[1]+(a-f[0])*(h[1]-f[1])/(h[0]-f[0]))}break}}else f=g(c.datasets[e].data[c.datasets[e].data.length-1][1])}b.eq(d).html(f);d++}};c.plot.getOptions();for(n in c.datasets)e=$("<input>").attr("type","checkbox").data("index",n).data("graph",c).click(function(){var a=$(this).data("graph");$(this).is(":checked")?
|
||||
a.datasets[$(this).data("index")].display=true:a.datasets[$(this).data("index")].display=false;var b={};b[a.id]=a;UI.plot.go(b)}),c.datasets[n].display&&e.attr("checked","checked"),d.append($("<tr>").html($("<td>").html($("<label>").html(e).append($("<div>").addClass("series-color").css("background-color",c.datasets[n].color)).append(c.datasets[n].label))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").text("X").addClass("close").data("index",
|
||||
n).data("graph",c).click(function(){var b=$(this).data("index"),c=$(this).data("graph");if(confirm("Are you sure you want to remove "+c.datasets[b].label+" from "+c.id+"?")){c.datasets.splice(b,1);if(c.datasets.length==0){c.elements.cont.remove();var b=$(".graph_ids option:contains("+c.id+")"),d=b.parent();b.remove();d.trigger("change");UI.plot.del(c.id);delete a[c.id];UI.plot.go(a)}else{UI.plot.save(c);b={};b[c.id]=c;UI.plot.go(b)}}}))));s();var f=!1;c.elements.plot.on("plothover",function(a,b,c){if(b.x!=
|
||||
f){s(b.x);f=b.x}if(c){a=$("<span>").append($("<h3>").text(c.series.label).prepend($("<div>").addClass("series-color").css("background-color",c.series.color))).append($("<table>").addClass("nolay").html($("<tr>").html($("<td>").text("Time:")).append($("<td>").html(UI.format.dateTime(c.datapoint[0]/1E3,"long")))).append($("<tr>").html($("<td>").text("Value:")).append($("<td>").html(c.series.yaxis.tickFormatter(c.datapoint[1],c.series.yaxis)))));UI.tooltip.show(b,a.children())}else UI.tooltip.hide()}).on("mouseout",
|
||||
function(){s()})}}},c)}},save:function(a){var c={id:a.id,xaxis:a.xaxis,datasets:[]},b;for(b in a.datasets)c.datasets.push({origin:a.datasets[b].origin,datatype:a.datasets[b].datatype});a=mist.stored.get().graphs||{};a[c.id]=c;mist.stored.set("graphs",a)},del:function(a){var c=mist.stored.get().graphs||{};delete c[a];mist.stored.set("graphs",c)},datatype:{getOptions:function(a){var c=$.extend(!0,{},UI.plot.datatype.templates.general),b=$.extend(!0,{},UI.plot.datatype.templates[a.datatype]),a=$.extend(!0,
|
||||
b,a),a=$.extend(!0,c,a);switch(a.origin[0]){case "total":switch(a.datatype){case "cpuload":case "memload":break;default:a.label+=" (total)"}break;case "stream":case "protocol":a.label+=" ("+a.origin[1]+")"}var c=[],d;for(d in a.basecolor)b=a.basecolor[d],b+=50*(0.5-Math.random()),b=Math.round(b),b=Math.min(255,Math.max(0,b)),c.push(b);a.color="rgb("+c.join(",")+")";return a},templates:{general:{display:!0,datatype:"general",label:"",yaxistype:"amount",data:[],lines:{show:!0},points:{show:!1},getdata:function(){var a=
|
||||
mist.data.totals["stream"==this.origin[0]?this.origin[1]:"all_streams"]["protocol"==this.origin[0]?this.origin[1]:"all_protocols"][this.datatype];return this.data=a}},cpuload:{label:"CPU use",yaxistype:"percentage",basecolor:[237,194,64],cores:1,getdata:function(){var a=!1,c;for(c in this.data)this.data[c][0]<1E3*(mist.data.config.time-600)&&(a=c);!1!==a&&this.data.splice(0,Number(a)+1);this.data.push([1E3*mist.data.config.time,mist.data.capabilities.cpu_use/10]);return this.data}},memload:{label:"Memory load",
|
||||
|
@ -67,7 +67,7 @@ showTab:function(a,c){var b=UI.elements.main;if(mist.user.loggedin&&!("ui_settin
|
|||
break}UI.elements.menu.css("opacity","0");UI.elements.connection.status.text("Disconnected").removeClass("green").addClass("red");b.append(UI.buildUI([{type:"help",help:"Please provide your account details.<br>You were asked to set these when MistController was started for the first time. If you did not yet set any account details, log in with your desired credentials to create a new account."},{label:"Host",help:"Url location of the MistServer API. Generally located at http://MistServerIP:4242/api",
|
||||
"default":"http://localhost:4242/api",pointer:{main:mist.user,index:"host"}},{label:"Username",help:"Please enter your username here.",validate:["required"],pointer:{main:mist.user,index:"name"}},{label:"Password",type:"password",help:"Please enter your password here.",validate:["required"],pointer:{main:mist.user,index:"password"}},{type:"buttons",buttons:[{label:"Login",type:"save","function":function(){mist.send(function(){UI.navto("Overview")})}}]}]));break;case "Create a new account":UI.elements.menu.css("visibility",
|
||||
"hidden");b.append($("<p>").text("No account has been created yet in the MistServer at ").append($("<i>").text(mist.user.host)).append("."));b.append(UI.buildUI([{type:"buttons",buttons:[{label:"Select other host",type:"cancel",css:{"float":"left"},"function":function(){UI.navto("Login")}}]},{type:"custom",custom:$("<br>")},{label:"Desired username",type:"str",validate:["required"],help:"Enter your desired username. In the future, you will need this to access the Management Interface.",pointer:{main:mist.user,
|
||||
index:"name"}},{label:"Desired password",type:"password",validate:["required",function(a,c){$(".match_password").not($(c)).trigger("change");return false}],help:"Enter your desired password. In the future, you will need this to access the Management Interface.",pointer:{main:mist.user,index:"password"},classes:["match_password"]},{label:"Repeat password",type:"password",validate:["required",function(a,c){return a!=$(".match_password").not($(c)).val()?{msg:'The fields "Desired password" and "Repeat password" do not match.',
|
||||
index:"name"}},{label:"Desired password",type:"password",validate:["required",function(a,b){$(".match_password").not($(b)).trigger("change");return false}],help:"Enter your desired password. In the future, you will need this to access the Management Interface.",pointer:{main:mist.user,index:"password"},classes:["match_password"]},{label:"Repeat password",type:"password",validate:["required",function(a,b){return a!=$(".match_password").not($(b)).val()?{msg:'The fields "Desired password" and "Repeat password" do not match.',
|
||||
classes:["red"]}:false}],help:"Repeat your desired password.",classes:["match_password"]},{type:"buttons",buttons:[{type:"save",label:"Create new account","function":function(){mist.send(function(){UI.navto("Account created")},{authorize:{new_username:mist.user.name,new_password:mist.user.password}})}}]}]));break;case "Account created":UI.elements.menu.css("visibility","hidden");b.append($("<p>").text("Your account has been created succesfully.")).append(UI.buildUI([{type:"text",text:"Would you like to enable all (currently) available protocols with their default settings?"},
|
||||
{type:"buttons",buttons:[{label:"Enable protocols",type:"save","function":function(){if(mist.data.config.protocols)b.append("Unable to enable all protocols as protocol settings already exist.<br>");else{b.append("Retrieving available protocols..<br>");mist.send(function(a){var c=[],d;for(d in a.capabilities.connectors)if(a.capabilities.connectors[d].required)b.append('Could not enable protocol "'+d+'" because it has required settings.<br>');else{c.push({connector:d});b.append('Enabled protocol "'+
|
||||
d+'".<br>')}b.append("Saving protocol settings..<br>");mist.send(function(){b.append("Protocols enabled. Redirecting..");setTimeout(function(){UI.navto("Overview")},5E3)},{config:{protocols:c}})},{capabilities:true})}}},{label:"Skip",type:"cancel","function":function(){UI.navto("Overview")}}]}]));break;case "Overview":var e=$("<span>").text("Loading.."),j=$("<span>"),m=$("<span>"),g=$("<span>");b.append(UI.buildUI([{type:"help",help:"You can find most basic information about your MistServer here.<br>You can also set the debug level and force a save to the config.json file that MistServer uses to save your settings. "},
|
||||
|
@ -77,7 +77,7 @@ label:"Debug level",pointer:{main:mist.data.config,index:"debug"},help:"You can
|
|||
mist.send(function(){UI.navto("Overview")},{autoupdate:true})})):e.text("Unknown")};if(!mist.stored.get().update||864E5<(new Date).getTime()-mist.stored.get().update.lastchecked){var n=mist.stored.get().update||{};n.lastchecked=(new Date).getTime();mist.send(function(a){mist.stored.set("update",$.extend(true,n,a.update));p()},{checkupdate:!0})}else p()}else e.text("");var h=function(){mist.send(function(){s()},{totals:{fields:["clients"],start:-10},active_streams:true})},s=function(){j.text(("active_streams"in
|
||||
mist.data?mist.data.active_streams?mist.data.active_streams.length:0:"?")+" active, "+(mist.data.streams?Object.keys(mist.data.streams).length:0)+" configured");if("totals"in mist.data&&"all_streams"in mist.data.totals)var a=mist.data.totals.all_streams.all_protocols.clients,a=a.length?UI.format.number(a[a.length-1][1]):0;else a="Loading..";m.text(a);g.text(UI.format.dateTime(mist.data.config.time,"long"))};h();s();UI.interval.set(h,3E4);break;case "Protocols":if("undefined"==typeof mist.data.capabilities){mist.send(function(){UI.navto(a)},
|
||||
{capabilities:!0});b.append("Loading..");break}var f=$("<tbody>");b.append(UI.buildUI([{type:"help",help:"You can find an overview of all the protocols and their relevant information here. You can add, edit or delete protocols."}])).append($("<button>").text("New protocol").click(function(){UI.navto("Edit Protocol")})).append($("<table>").html($("<thead>").html($("<tr>").html($("<th>").text("Protocol")).append($("<th>").text("Status")).append($("<th>").text("Settings")).append($("<th>")))).append(f));
|
||||
var i=function(){function a(c){var b=mist.data.capabilities.connectors[c.connector];if(!b)return"";var d=[],g=["required","optional"],f;for(f in g)for(var e in b[g[f]])c[e]&&c[e]!=""?d.push(e+": "+c[e]):b[g[f]][e]["default"]&&d.push(e+": "+b[g[f]][e]["default"]);return $("<span>").addClass("description").text(d.join(", "))}f.html("");for(var c in mist.data.config.protocols){var b=mist.data.config.protocols[c];f.append($("<tr>").data("index",c).append($("<td>").text(b.connector)).append($("<td>").html(UI.format.status(b))).append($("<td>").html(a(b))).append($("<td>").css("text-align",
|
||||
var i=function(){function a(b){var c=mist.data.capabilities.connectors[b.connector];if(!c)return"";var d=[],g=["required","optional"],f;for(f in g)for(var e in c[g[f]])b[e]&&b[e]!=""?d.push(e+": "+b[e]):c[g[f]][e]["default"]&&d.push(e+": "+c[g[f]][e]["default"]);return $("<span>").addClass("description").text(d.join(", "))}f.html("");for(var b in mist.data.config.protocols){var c=mist.data.config.protocols[b];f.append($("<tr>").data("index",b).append($("<td>").text(c.connector)).append($("<td>").html(UI.format.status(c))).append($("<td>").html(a(c))).append($("<td>").css("text-align",
|
||||
"right").html($("<button>").text("Edit").click(function(){UI.navto("Edit Protocol",$(this).closest("tr").data("index"))})).append($("<button>").text("Delete").click(function(){var a=$(this).closest("tr").data("index");if(confirm('Are you sure you want to delete the protocol "'+mist.data.config.protocols[a].connector+'"?')){mist.data.config.protocols.splice(a,1);mist.send(function(){UI.navto("Protocols")},{config:mist.data.config})}}))))}};i();UI.interval.set(function(){mist.send(function(){i()})},
|
||||
3E4);break;case "Edit Protocol":if("undefined"==typeof mist.data.capabilities){mist.send(function(){UI.navto(a,c)},{capabilities:!0});b.append("Loading..");break}var l=!1;""!=c&&0<=c&&(l=!0);var k={},q;for(q in mist.data.config.protocols)k[mist.data.config.protocols[q].connector]=1;var P=function(a){var b=mist.data.capabilities.connectors[a],d=mist.convertBuildOptions(b,o);d.push({type:"hidden",pointer:{main:o,index:"connector"},value:a});d.push({type:"buttons",buttons:[{type:"save",label:"Save",
|
||||
"function":function(){if(l)mist.data.config.protocols[c]=o;else{if(!mist.data.config.protocols)mist.data.config.protocols=[];mist.data.config.protocols.push(o)}mist.send(function(){UI.navto("Protocols")},{config:mist.data.config})}},{type:"cancel",label:"Cancel","function":function(){UI.navto("Protocols")}}]});if("deps"in b&&b.deps!=""){$t=$("<span>").text("Dependencies:");$ul=$("<ul>");$t.append($ul);if(typeof b.deps=="string")b.deps=b.deps.split(", ");for(var e in b.deps){a=$("<li>").text(b.deps[e]+
|
||||
|
@ -147,9 +147,9 @@ UI.elements.connection.user_and_host.text(mist.user.name+" @ "+mist.user.host);U
|
|||
0])};var e={},g;for(g in c.fields)e[c.fields[g]]=[];var k=0,j;if(c.data){if(c.start>mist.data.config.time-600){j=(mist.data.config.time-600)*1E3;d();j=c.start*1E3;d()}else j=c.start*1E3;for(g in c.data){if(g==0){j=c.start*1E3;var m=0}else{j=j+c.interval[m][1]*1E3;c.interval[m][0]--;if(c.interval[m][0]<=0){m++;m<c.interval.length-1&&(k=k+2)}}if(k%2==1){d();k--}for(var p in c.data[g])e[c.fields[p]].push([j,c.data[g][p]]);if(k){d();k--}}if(mist.data.config.time-c.end>20){d();j=(mist.data.config.time-
|
||||
15)*1E3;d()}}else{j=(mist.data.config.time-600)*1E3;d();j=(mist.data.config.time-15)*1E3;d()}d=e;stream=a?a.join(" "):"all_streams";protocol=b?b.join("_"):"all_protocols";stream in mist.data.totals||(mist.data.totals[stream]={});protocol in mist.data.totals[stream]||(mist.data.totals[stream][protocol]={});$.extend(mist.data.totals[stream][protocol],d)},mist.data.totals={},"fields"in d.totals)e(c.totals.streams,c.totals.protocols,d.totals);else for(p in d.totals)e(c.totals[p].streams,c.totals[p].protocols,
|
||||
d.totals[p]);a&&a(d,b);break;case "CHALL":d.authorize.challenge==mist.user.authstring?(""!=mist.user.password&&UI.elements.connection.msg.text("The credentials you provided are incorrect.").addClass("red"),UI.navto("Login")):""==mist.user.password?UI.navto("Login"):(mist.user.authstring=d.authorize.challenge,mist.send(a,c,b));break;case "NOACC":UI.navto("Create a new account");break;case "ACC_MADE":delete c.authorize;mist.send(a,c,b);break;default:UI.navto("Login")}}};b.hide||UI.elements.connection.msg.removeClass("red").text("Data sent, waiting for a reply..").append($("<br>")).append($("<a>").text("Cancel request").click(function(){e.abort()}));
|
||||
var e=$.ajax(d)},inputMatch:function(a,c){if("undefined"==typeof a)return!1;var b=a.replace(/[^\w\s]/g,"\\$&"),b=b.replace(/\\\?/g,".").replace(/\\\*/g,"(?:.)*");return RegExp("^"+b+"$","i").test(c)},convertBuildOptions:function(a,c){var b=[],d=["required","optional"];"desc"in a&&b.push({type:"help",help:a.desc});for(var e in d)if(a[d[e]]){b.push($("<h4>").text(UI.format.capital(d[e])+" parameters"));for(var j in a[d[e]]){var m=a[d[e]][j],g={label:UI.format.capital(m.name),pointer:{main:c,index:j},
|
||||
validate:[]};"required"==d[e]&&!("default"in m)&&g.validate.push("required");"default"in m&&(g.placeholder=m["default"]);"help"in m&&(g.help=m.help);"unit"in m&&(g.unit=m.unit);switch(m.type){case "int":g.type="int";break;case "uint":g.type="int";g.min=0;break;case "debug":g.type="debug";break;case "select":g.type="select";g.select=m.select;break;default:g.type="str"}b.push(g)}}return b},stored:{get:function(){return mist.data.ui_settings||{}},set:function(a,c){var b=this.get();b[a]=c;mist.send(function(){},
|
||||
{ui_settings:b})},del:function(a){delete mist.data.ui_settings[a];mist.send(function(){},{ui_settings:mist.data.ui_settings})}}};function log(){try{UI.debug&&[].push.call(arguments,Error().stack),[].unshift.call(arguments,"["+UI.format.time((new Date).getTime()/1E3)+"]"),console.log.apply(console,arguments)}catch(a){}}
|
||||
var e=$.ajax(d)},inputMatch:function(a,c){if("undefined"==typeof a)return!1;if("string"==typeof a){var b=a.replace(/[^\w\s]/g,"\\$&"),b=b.replace(/\\\?/g,".").replace(/\\\*/g,"(?:.)*"),b=RegExp("^"+b+"$","i");return b.test(c)}for(var d in a)if(b=a[d].replace(/[^\w\s]/g,"\\$&"),b=b.replace(/\\\?/g,".").replace(/\\\*/g,"(?:.)*"),b=RegExp("^"+b+"$","i"),b.test(c))return!0;return!1},convertBuildOptions:function(a,c){var b=[],d=["required","optional"];"desc"in a&&b.push({type:"help",help:a.desc});for(var e in d)if(a[d[e]]){b.push($("<h4>").text(UI.format.capital(d[e])+
|
||||
" parameters"));for(var j in a[d[e]]){var m=a[d[e]][j],g={label:UI.format.capital(m.name),pointer:{main:c,index:j},validate:[]};"required"==d[e]&&!("default"in m)&&g.validate.push("required");"default"in m&&(g.placeholder=m["default"]);"help"in m&&(g.help=m.help);"unit"in m&&(g.unit=m.unit);switch(m.type){case "int":g.type="int";break;case "uint":g.type="int";g.min=0;break;case "debug":g.type="debug";break;case "select":g.type="select";g.select=m.select;break;default:g.type="str"}b.push(g)}}return b},
|
||||
stored:{get:function(){return mist.data.ui_settings||{}},set:function(a,c){var b=this.get();b[a]=c;mist.send(function(){},{ui_settings:b})},del:function(a){delete mist.data.ui_settings[a];mist.send(function(){},{ui_settings:mist.data.ui_settings})}}};function log(){try{UI.debug&&[].push.call(arguments,Error().stack),[].unshift.call(arguments,"["+UI.format.time((new Date).getTime()/1E3)+"]"),console.log.apply(console,arguments)}catch(a){}}
|
||||
$.fn.getval=function(){var a=$(this).data("opts"),c=$(this).val();if(a&&"type"in a)switch(a.type){case "span":c=$(this).html();break;case "checkbox":c=$(this).prop("checked");break;case "radioselect":a=$(this).find("label > input[type=radio]:checked").parent();a.length?(c=[],c.push(a.children("input[type=radio]").val()),a=a.children("select"),a.length&&c.push(a.val())):c="";break;case "checklist":c=[],$(this).find(".checklist input[type=checkbox]:checked").each(function(){c.push($(this).attr("name"))})}return c};
|
||||
$.fn.setval=function(a){var c=$(this).data("opts");$(this).val(a);if(c&&"type"in c)switch(c.type){case "span":$(this).html(a);break;case "checkbox":$(this).prop("checked",a);break;case "geolimited":case "hostlimited":c=$(this).closest(".field_container").data("subUI");if("undefined"==typeof a||0==a.length)a="-";c.blackwhite.val(a.charAt(0));var a=a.substr(1).split(" "),b;for(b in a)c.values.append(c.prototype.clone(!0).val(a[b]));c.blackwhite.trigger("change");break;case "radioselect":if("undefined"==
|
||||
typeof a)return $(this);b=$(this).find('label > input[type=radio][value="'+a[0]+'"]').prop("checked",!0).parent();1<a.length&&b.children("select").val(a[1]);break;case "checklist":for(b in c=$(this).find(".checklist input[type=checkbox]").prop("checked",!1),a)c.filter('[name="'+a[b]+'"]').prop("checked",!0)}$(this).trigger("change");return $(this)};
|
||||
|
|
12
lsp/mist.js
12
lsp/mist.js
|
@ -4165,11 +4165,21 @@ var mist = {
|
|||
},
|
||||
inputMatch: function(match,string){
|
||||
if (typeof match == 'undefined') { return false; }
|
||||
|
||||
if (typeof match == 'string') {
|
||||
var query = match.replace(/[^\w\s]/g,'\\$&'); //prefix any special chars with a \
|
||||
query = query.replace(/\\\?/g,'.').replace(/\\\*/g,'(?:.)*'); //replace ? with . and * with any amount of .
|
||||
var regex = new RegExp('^'+query+'$','i'); //case insensitive
|
||||
return regex.test(string);
|
||||
}
|
||||
for (var s in match){
|
||||
var query = match[s].replace(/[^\w\s]/g,'\\$&'); //prefix any special chars with a \
|
||||
query = query.replace(/\\\?/g,'.').replace(/\\\*/g,'(?:.)*'); //replace ? with . and * with any amount of .
|
||||
var regex = new RegExp('^'+query+'$','i'); //case insensitive
|
||||
if (regex.test(string)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
convertBuildOptions: function(input,saveas) {
|
||||
var build = [];
|
||||
|
|
Loading…
Add table
Reference in a new issue