diff --git a/httpdocs/js/ntop.min.js b/httpdocs/js/ntop.min.js index 38846530ef..60f0571a20 100644 --- a/httpdocs/js/ntop.min.js +++ b/httpdocs/js/ntop.min.js @@ -1,2 +1,2 @@ -function datatableRemoveEmptyRow(table){$("tbody tr.emptyRow",$(table)).remove()}function datatableAddEmptyRow(table,empty_str){var columns=$("thead th",$(table)).filter(function(){return $(this).css("display")!="none"}).length;$("tbody",$(table)).html(''+empty_str+"")}function datatableGetNumDisplayedItems(table){return $("tr:not(.emptyRow)",$(table)).length-1}function datatableIsEmpty(table){return datatableGetNumDisplayedItems(table)==0}function datatableGetByForm(form){return $("table",$("#dt-top-details",$(form)).parent())}function datatableUndoAddRow(new_row,empty_str,bt_to_enable,callback_str){if(bt_to_enable)$(bt_to_enable).removeAttr("disabled").removeClass("disabled");var form=$(new_row).closest("form");$(new_row).remove();aysUpdateForm(form);var dt=datatableGetByForm(form);if(datatableIsEmpty(dt))datatableAddEmptyRow(dt,empty_str);if(callback_str)window[callback_str](new_row)}function datatableForEachRow(table,callbacks){$("tr:not(:first)",table).each(function(row_i){if(typeof callbacks==="function"){callbacks.bind(this)(row_i)}else{var i;for(i=0;i'+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info",callback_str,"javascript:void(0)")}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info","",link)}function datatableMakeSelectUnique(tr_obj,added_rows_prefix,options){options=paramsExtend({on_change:$.noop,selector_fn:function(obj){return obj.find("select").first()}},options);function datatableForeachSelectOtherThan(this_select,added_rows_prefix,selector_fn,callback){$("[id^="+added_rows_prefix+"]").each(function(){var other=selector_fn($(this));if(other[0]!=this_select[0])callback(other)})}function datatableOptionChangeStatus(option_obj,enable){if(enable){option_obj.removeAttr("disabled")}else{var select_obj=option_obj.closest("select");var should_reset=select_obj.val()==option_obj.val();option_obj.attr("disabled","disabled");if(should_reset){var new_val=select_obj.find("option:not([disabled])").first().val();select_obj.val(new_val);select_obj.attr("data-old-val",new_val)}}}function datatableOnSelectEntryChange(added_rows_prefix,selector_fn,change_callback){var old_value=$(this).attr("data-old-val")||"";var new_value=$(this).val()||"";var others=[];if(old_value==new_value)old_value="";datatableForeachSelectOtherThan($(this),added_rows_prefix,selector_fn,function(other){datatableOptionChangeStatus(other.find("option[value='"+old_value+"']"),true);datatableOptionChangeStatus(other.find("option[value='"+new_value+"']"),false);others.push(other)});change_callback($(this),old_value,new_value,others,datatableOptionChangeStatus);$(this).attr("data-old-val",new_value)}function datatableOnAddSelectEntry(select_obj,added_rows_prefix,selector_fn){select_obj.val("");datatableForeachSelectOtherThan(select_obj,added_rows_prefix,selector_fn,function(other){other.trigger("change")});var new_sel=select_obj.find("option:not([disabled])").first();var new_val=new_sel.val();select_obj.val(new_val);select_obj.trigger("change")}var select=options.selector_fn(tr_obj);select.on("change",function(){datatableOnSelectEntryChange.bind(this)(added_rows_prefix,options.selector_fn,options.on_change)});select.on("remove",function(){$(this).val("").trigger("change")});datatableOnAddSelectEntry(select,added_rows_prefix,options.selector_fn)}function datatableOrderedInsert(table,td_idx,to_insert,to_insert_val,cmp_fn){var cmp_fn=cmp_fn||function(a,b){return b-a};var inserted=false;datatableForEachRow(table,function(){if(inserted)return;var tr=$(this);var cmp_val=parseInt($("td:nth-child("+td_idx+")",tr).html());if(!isNaN(cmp_val)&&cmp_fn(cmp_val,to_insert_val)<0){tr.before(to_insert);inserted=true}});if(!inserted)$(table).append(to_insert)}function datatableIsLastPage(table){var lastpage=$("#dt-bottom-details .pagination li:nth-last-child(3)",$(table));return!(lastpage.length==1&&lastpage.hasClass("active")==false)}function datatableGetColumn(table,id_key,id_value){var res=table.data("datatable").resultset.data.filter(function(item){return item[id_key]===id_value});if(res)return res[0]}function datatableGetColumnIndex(table,column_key){var index=table.data("datatable").options.columns.findIndex(function(item){return item.field===column_key});return index}function datatableInitRefreshRows(table,column_id,refresh_interval,trend_columns){var $dt=table.data("datatable");var rows=$dt.resultset.data;var old_timer=table.data("dt-rr-timer");var old_req=table.data("dt-rr-ajax");trend_columns=trend_columns||{};if(old_timer){clearInterval(old_timer);table.removeData("dt-rr-timer")}if(old_req){old_req.abort();table.removeData("dt-rr-ajax")}var ids=[];var id_to_row={};for(var row in rows){var data=rows[row];if(data[column_id]){var data_id=data[column_id];id_to_row[data_id]=row;ids.push(data_id)}}if(!ids)return false;var params={custom_hosts:ids.join(",")};var url=$dt.options.url;var first_load=true;var _process_result=function(result){if(typeof result==="string")result=JSON.parse(result);if(!result){console.error("Bad JSON result");return}for(var row in result.data){var data=result.data[row];var data_id=data[column_id];if(data_id&&id_to_row[data_id]){var row_idx=id_to_row[data_id];var row_html=$dt.rows[row_idx];var row_tds=$("td",row_html);for(var key in data){var col_idx=datatableGetColumnIndex(table,key);var cell=row_tds[col_idx];var $cell=$(cell);var old_val=$cell.data("dt-rr-cur-val")||$(cell).html();var trend_value_formatter=trend_columns[key];var new_val=data[key];var arrows="";if(trend_value_formatter){if(parseFloat(new_val)!=new_val)console.warn("Invalid number: "+new_val);if(!first_load)arrows=" "+drawTrend(parseFloat(new_val),parseFloat(old_val));$cell.data("dt-rr-cur-val",new_val);new_val=trend_value_formatter(new_val)}$(cell).html(new_val!=0?new_val+arrows:"")}}}first_load=false;table.removeData("dt-rr-ajax")};table.data("dt-rr-timer",setInterval(function(){var old_req=table.data("dt-rr-ajax");if(old_req)return;table.data("dt-rr-ajax",$.ajax({type:"GET",url:url,data:params,cache:false,success:_process_result}))},refresh_interval));_process_result($dt.resultset)}function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}var NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",email:"^[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$",https:"^https?://.+$"};function init_data_patterns(){$(`input[data-pattern]`).each(function(){const data_pattern=$(this).data("pattern");if(!data_pattern)return;const pattern=data_pattern.split("|").map(p=>REGEXES[p]).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}function is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}function is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}function is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}function isNumeric(value){return/^\d+$/.test(value)}function is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}function fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}function export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else{return''}}function getOSIcon(name){var icon="";if(name.search("Linux")!=-1||name.search("Ubuntu")!=-1)icon=" ";else if(name.search("Android")!=-1)icon=" ";else if(name.search("Windows")!=-1||name.search("Win32")!=-1||name.search("MSIE")!=-1)icon=" ";else if(name.search("iPhone")!=-1||name.search("iPad")!=-1||name.search("OS X")!=-1)icon=" ";return icon}function abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return(bytes/terabyte).toFixed(precision)+" TB";else return bytes.toFixed(precision)+" Bytes"}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};function drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}function toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}function disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});toggleAllTabs(false)}function enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});toggleAllTabs(true)}function capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}function addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}function scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length)i=sizes.length-1;return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}function formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&value0&&bytes0&&bits0){years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};function epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+secondsToTime(tdiff)+" ago]"}function graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}function paramsExtend(defaults,override){return $.extend({},defaults,override)}function paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}function paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});function hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}function handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}function _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}function makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");_add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");_add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx);_add_find_host_link(form,"page","layer_2")}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");_add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");_add_find_host_link(form,"mode","restore")}return true}}function tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}function noHtml(s){return s.replace(/<[^>]+>/g,"")}function cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}function parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(check_status_code(xhr.status,xhr.statusText,$("#import-error"))){$button.removeAttr("disabled");return}if(!d.success){$("#import-error").text(d.error).show();$button.removeAttr("disabled");params.reset_csrf(d.csrf)}else{location.reload()}}).fail(({status:status,statusText:statusText})=>{check_status_code(status,statusText,$("#import-error"));$button.removeAttr("disabled")})}};reader.readAsText(file,"UTF-8")}});$("#import-modal").on("submit","form",function(e){e.preventDefault();$("#btn-import").trigger("click")})}function serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{serialized[obj.name]=obj.value}});return serialized}function cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}const fetchWithTimeout=(uri,options={},time=5e3)=>{const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})};$(document).ready(function(){init_data_patterns();$(`input#import-input`).on("change",function(){const filename=$(this).val().replace("C:\\fakepath\\","");$(`label[for='#import-input']`).html(filename)})});var schema_2_label={};var data_2_label={};var graph_i18n={};function initLabelMaps(_schema_2_label,_data_2_label,_graph_i18n){schema_2_label=_schema_2_label;data_2_label=_data_2_label;graph_i18n=_graph_i18n}function getSerieLabel(schema,serie,visualization,serie_index){var data_label=serie.label;var new_label=data_2_label[data_label];if(visualization&&visualization.metrics_labels&&visualization.metrics_labels[serie_index])return visualization.metrics_labels[serie_index];if(serie.ext_label)return serie.ext_label;else if(schema=="top:local_senders"||schema=="top:local_receivers"){if(serie.ext_label)return serie.ext_label;else return serie.tags.host}else if(schema.startsWith("top:")){if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.l4proto)return serie.tags.l4proto;else if(serie.tags.dscp_class)return serie.tags.dscp_class;else if(serie.tags.device&&serie.tags.if_index){if(serie.ext_label!="")return serie.ext_label;else return"("+serie.tags.if_index+")"}else if(serie.tags.device&&serie.tags.port)return serie.tags.port;else if(serie.tags.exporter&&serie.tags.ifname)return serie.tags.ifname;else if(serie.tags.profile)return serie.tags.profile;else if(serie.tags.user_script)return serie.tags.user_script;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return capitaliseFirstLetter(new_label);return capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={rsi:["RSI cur vs past","#00FF5D",relativeStrengthIndexArray,{periods:num_smoothed_points}]};function add_smoothed_serie(fn_to_use){var options=smooth_functions[fn_to_use];var smoothed;if(fn_to_use=="rsi"){if(!past_serie)return;var delta_serie=[];for(var i=0;i0){var aligned;if(fn_to_use!="ema"&&fn_to_use!="sma"&&fn_to_use!="rsi"){var scale=d3.max(total_serie)/max_val;var scaled=$.map(smoothed,function(x){return x*scale});aligned=upsampleSerie(scaled,data.count)}else{var remaining=data.count-smoothed.length;var to_fill=remaining0){var ref_serie=res[0].values;let tok=ref_serie[0][0];let was_unreachable=false;unreachable_timestamps={};for(var i=0;inow&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","white-space":"nowrap","text-align":"center"}});var old_dt=graph_table.data("datatable");if(old_dt&&old_dt.pendingRequest)old_dt.pendingRequest.abort();graph_table.removeData("datatable");graph_table.html("");graph_table.datatable({title:"",url:url,perPage:per_page,noResultsMessage:function(){if(ts_chart.queryWasAborted())return i18n.query_was_aborted;else return i18n.no_results_found},post:function(){var params=$.extend({},graph_params);delete params.ts_compare;delete params.initial_point;params.limit=1;params.detail_view=view.id;return params},loadingYOffset:40,columns:columns,buttons:view.nindex_view?[nindex_buttons]:[],tableCallback:function(){var data=this.resultset;ts_chart.tableRequestCompleted();if(!data){return}if(data.currentPage>1)graph_table.data("has_interaction",true);var stats_div=$("#chart1-flows-stats");var has_drilldown=data&&data.data.some(function(row){return row.drilldown});if(!has_drilldown)$("table td:last-child, th:last-child",graph_table).remove();if(data&&data.stats&&data.stats.loading_time){$("#flows-load-time").html(data.stats.loading_time);$("#flows-processed-records").html(data.stats.num_records_processed);stats_div.show()}else stats_div.hide()},rowCallback:function(row,row_data){if(typeof row_data.tags==="object"&&(params_obj.category&&row_data.tags.category===params_obj.category||params_obj.protocol&&row_data.tags.protocol===params_obj.protocol)){row.addClass("info")}return row}})}}function draw_processes_graph(http_prefix,graph_div_id,host){var links;var nodes={};var url=http_prefix+"/lua/get_processes_graph_data.lua?host="+host;d3.json(url,function(error,json){if(error)return console.warn(error);links=json;var _link;links.forEach(function(link){if(link.source_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.source}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.source_pid+"&pid_name="+link.source_name+"&host="+host+"&page=flows"}link.source=nodes[link.source]||(nodes[link.source]={name:link.source_name,num:link.source,link:_link,type:link.source_type,pid:link.source_pid});if(link.target_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.target}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.target_pid+"&pid_name="+link.target_name+"&host="+host+"&page=flows"}link.target=nodes[link.target]||(nodes[link.target]={name:link.target_name,num:link.target,link:_link,type:link.target_type,pid:link.target_pid})});var width=960,height=500,arrow_size=6;var color=d3.scale.category10();color["proc"]="red";color["host"]="lightsteelblue";var force=d3.layout.force().nodes(d3.values(nodes)).links(links).size([width,height]).linkDistance(120).charge(-400).on("tick",tick).start();var svg=d3.select("#"+graph_div_id).append("svg").attr("id","ebpf_graph").attr("width",width).attr("height",height);svg.append("defs").selectAll("marker").data(["proc2proc","proc2host","host2proc","host2host"]).enter().append("marker").attr("id",function(d){return d}).attr("viewBox","0 -5 10 10").attr("refX",15).attr("refY",-1.5).attr("markerWidth",arrow_size).attr("markerHeight",arrow_size).attr("orient","auto").append("path").attr("d","M0,-5L10,0L0,5");var path=svg.append("g").selectAll("path").data(force.links()).enter().append("path").attr("class",function(d){return"link "+d.type}).attr("marker-end",function(d){return"url(#"+d.type+")"});var circle=svg.append("g").selectAll("circle").data(force.nodes()).enter().append("circle").attr("class","ebpf_circle").attr("r",8).style("fill",function(d){return color[d.type]}).call(force.drag).on("dblclick",function(d){window.location.href=d.link});var text=svg.append("g").selectAll("text").data(force.nodes()).enter().append("text").attr("class","ebpf_text").attr("x",12).attr("y",".31em").text(function(d){if(d.pid>=0)return d.name+" [pid: "+d.pid+"]";else{return d.name}});function tick(){path.attr("d",linkArc);circle.attr("transform",transform);text.attr("transform",transform)}function linkArc(d){var dx=d.target.x-d.source.x,dy=d.target.y-d.source.y,dr=Math.sqrt(dx*dx+dy*dy);return"M"+d.source.x+","+d.source.y+"A"+dr+","+dr+" 0 0,1 "+d.target.x+","+d.target.y}function transform(d){return"translate("+d.x+","+d.y+")"}})}function makeUniqueValidator(items_function){return function(field){var cmp_name=field.val();var count=0;if(!cmp_name)return true;items_function(field).each(function(){var name=$(this).val();if(name==cmp_name)count=count+1});return count==1}}function memberValueValidator(input){var member=input.val();if(member==="")return true;return is_mac_address(member)||is_network_mask(member,true)}function makePasswordPatternValidator(pattern){return function passwordPatternValidator(input){if(!input.val())return true;return $(input).val().match(pattern)}}function passwordMatchValidator(input){var other_input=$(input).closest("form").find("[data-passwordmatch]").not(input);if(!input.val()||!other_input.val())return true;return other_input.val()===input.val()}function poolnameValidator(input){if(!input.val())return true;return $(input).val().match(/^[a-z0-9_]*$/)}function passwordMatchRecheck(form){var items=$(form).find("[data-passwordmatch]");var not_empty=0;items.each(function(){if($(this).val()!="")not_empty++});if(not_empty==items.length)items.trigger("input")}function hostOrMacValidator(input){var host=input.val();if(host==="")return true;return is_mac_address(host)||is_good_ipv4(host)||is_good_ipv6(host)}function ipAddressValidator(input){var host=input.val();if(host==="")return true;return is_good_ipv4(host)||is_good_ipv6(host)}const INDEX_SEARCH_COLUMN=3;$.fn.dataTable.ext.buttons.filterScripts={className:"filter-scripts-button",init:function(dt,node,config){const button_id=config.attr.id;$(node).removeClass("btn").removeClass("btn-secondary");const button_text=$(node).html();let count=0;if(button_id=="all-scripts"){count=dt.data().length}else if(button_id=="enabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(parsed)count+=1})}else if(button_id=="disabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(!parsed)count+=1})}$(node).html(`${button_text} (${count})`)},action:function(e,dt,node,config){const button_id=config.attr.id;$("#all-scripts, #enabled-scripts, #disabled-scripts").removeClass("active");if(button_id=="all-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("").draw();window.history.replaceState(undefined,undefined,"#all")}else if(button_id=="enabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("true").draw();window.history.replaceState(undefined,undefined,"#enabled")}else if(button_id=="disabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("false").draw();window.history.replaceState(undefined,undefined,"#disabled")}$(`span[data-toggle='popover']`).popover({trigger:"manual",html:true,animation:false}).on("mouseenter",function(){let self=this;$(this).popover("show");$(".popover").on("mouseleave",function(){$(self).popover("hide")})}).on("mouseleave",function(){let self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover("hide")}},50)});$(`#${button_id}`).addClass("active")}};const registerServiceWorker=()=>{if("serviceWorker"in navigator){navigator.serviceWorker.register("/sw.js")}};const NOTIFICATION_DEBUG=false;class PushNotificationBuilder{constructor(title="Hello World"){this.title=title;this.options={};this.options.actions=[];this.options.icon="/img/icons/icon-128x128.png";this.options.badge="/img/icons/icon-72x72.png"}setTitle(title){this.title=title;return this}setBody(body){this.options.body=body;return this}setIcon(icon){this.options.icon=icon;return this}setLang(lang){this.options.lang=lang;return this}setRequireInteraction(interaction){this.options.requireInteraction=interaction;return this}setTimestamp(timestamp){this.options.timestamp=timestamp;return this}setOnClick(callback){this.callback=callback;return this}build(){const n=new Notification(this.title,this.options);if(this.callback){n.onclick=this.callback}return n}}class NotificationManager{static enableNotification(){try{Notification.requestPermission(status=>{if(NOTIFICATION_DEBUG)console.info(status)})}catch(err){console.error("Something went wrong! ☹️",err)}}static push(pushNotification={title:"Hello World",options:{}}){if(!pushNotification)throw"The notification object cannot be null!";if(NotificationManager.canReceiveNotification){(async()=>{try{const registration=await navigator.serviceWorker.getRegistration();registration.showNotification(pushNotification.title,pushNotification.options)}catch(err){console.error(err)}})()}}static get canReceiveNotification(){return NotificationManager.permissionNotification=="granted"}static get permissionNotification(){return Notification.permission}}(function($){let modal_id_ctr=0;class ModalHandler{constructor(form,options){if(typeof options.csrf==="undefined"){throw new Error("ModalHandler::Missing CSRF token!")}this.element=form;this.dialog=$(form).closest(".modal");this.options=options;this.csrf=options.csrf;this.dontDisableSubmit=options.dontDisableSubmit;this.observer=new MutationObserver(list=>{this.bindFormValidation();this.toggleFormSubmission()});this.observer.observe(this.element[0],{childList:true,subtree:true});this.initialState=null;this.currentState=null;this.firstCloseAttempt=false;this.isSubmitting=false;const submitButton=$(this.element).find(`[type='submit']`);if(submitButton.length==0){throw new Error("ModalHandler::The submit button was not found inside the form!")}submitButton.attr("disabled","disabled")}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find("textarea,select,input").each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(selector).val(value);$(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(){const self=this;this.delegateModalClosing();this.options.onModalInit(this.fillFormModal());$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(function(i,input){let timeoutId=-1;const $input=$(this);const checkValidation=()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true},isInputEmpty:$input.val().trim()==""};const $parent=$input.parent();let messageToShow;let $error=$parent.find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Empty!");messageToShow=validation.data.validationEmptyMessage||validation.data.validationMessage}else if(validation.data.cannotBeEmpty&&!validation.isInputEmpty){input.setCustomValidity("")}else{messageToShow=validation.data.validationMessage}if(!input.validity.valid&&messageToShow){$input.addClass("is-invalid");$error.text(messageToShow);$parent.append($error)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation()},500);self.toggleFormSubmission();self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}toggleFormSubmission(){let isValid=true;$(this.element).find("input,select,textarea").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit']`).removeAttr("disabled"):$(this.element).find(`[type='submit']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit();dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");let request;const self=this;if(self.options.method=="post"){request=$.ajax({url:this.options.endpoint,data:JSON.stringify(dataToSend),method:self.options.method,dataType:"json",contentType:"application/json; charset=utf-8"})}else{request=$.get(this.options.endpoint,dataToSend)}this.isSubmitting=true;request.done(function(response,textStatus){self.isSubmitting=false;self.currentState=null;if(self.options.resetAfterSubmit)self.cleanForm();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;self.options.onSubmitError(dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}delegateResetButton(){const self=this;const resetButton=$(this.element).find(`[type='reset']`);if(resetButton.length==0)return;const defaultValues=serializeFormArray($(this.element).serializeArray());resetButton.click(function(e){e.preventDefault();$(self.element).find("input:visible,select").each(function(i,input){const key=$(input).attr("name");$(input).val(defaultValues[key]).removeClass("is-invalid").removeClass("is-valid")})})}}$.fn.modalHandler=function(args){if(this.length!=1)throw new Error("Only a form element can by initialized!");const options=$.extend({csrf:"",endpoint:"",resetAfterSubmit:true,dontDisableSubmit:false,isSyncRequest:false,method:"get",loadFormData:function(){},onModalInit:function(loadedData){},onModalShow:function(){},beforeSumbit:function(){return{}},onSubmitSuccess:function(response){},onSubmitError:function(sent,textStatus,errorThrown){},onModalReset:function(defaultData){}},args);const mh=new ModalHandler(this,options);mh.delegateSubmit();return mh}})(jQuery);jQuery.fn.dataTableExt.sErrMode="console";jQuery.fn.dataTableExt.formatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display")return secondsToTime(data);return data});class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'dt-search'f>B>rtip"){return{dom:dom,pagingType:"full_numbers",lengthMenu:[[10,25,50,-1],[10,25,50,`${i18n.all}`]],language:{info:i18n.showing_x_to_y_rows,search:i18n.script_search,infoFiltered:"",paginate:{previous:"<",next:">",first:"«",last:"»"}},saveState:true,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"border-left ml-1 float-right"}}}}}static setAjaxConfig(config,url,dataSrc="",method="get",params={}){config.ajax={url:url,type:method,dataSrc:dataSrc,data:function(d){return $.extend({},d,params)}};return config}static extendConfig(config,extension){if(extension.hasFilters){extension.stateSaveCallback=function(settings,data){localStorage.setItem("DataTables_"+settings.sInstance,JSON.stringify(data))};extension.stateLoadCallback=function(settings){return JSON.parse(localStorage.getItem("DataTables_"+settings.sInstance))};extension.stateSaveParams=function(settings,data){$("[data-filter]").each(function(){const activeFilter=$(this).find(`li.active`).data("filter-key");if(!activeFilter)return;if(!data.filters)data.filters={};data.filters[$(this).data("filter")]=activeFilter})}}return $.extend({},config,extension)}static addFilterDropdown(title,filters=[],columnIndex,filterID,tableAPI){const createEntry=(val,key,callback)=>{const $entry=$(``);$entry.click(function(e){if($dropdownTitle.parent().find(`i.fas`).length==0){$dropdownTitle.parent().prepend(``)}$dropdownTitle.text($entry.text());$dropdownTitle.attr(`data-filter-key`,key);$menuContainer.find("li").removeClass(`active`);$entry.addClass(`active`);if(callback)callback(e)});return $entry};const filterKey=title.toLowerCase().split(" ").join("_");const dropdownId=`${filterKey}-filter-menu`;const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${title}`);$dropdownButton.append($dropdownTitle);const $menuContainer=$(``);for(let filter of filters){const $entry=createEntry(filter.label,filter.key,e=>{if(filter.callback){filter.callback()}tableAPI.column(columnIndex).search(filter.regex,true,false).draw()});$menuContainer.append($entry)}const $allEntry=createEntry(i18n.all,"all",e=>{$dropdownTitle.parent().find("i.fas.fa-filter").remove();$dropdownTitle.html(`${title}`).removeAttr(`data-filter-key`);tableAPI.columns(columnIndex).search("").draw(true)});$(filterID).prepend($dropdownContainer.append($dropdownButton,$menuContainer.prepend($allEntry)));DataTableUtils.setCurrentFilter(tableAPI,filterKey)}static setCurrentFilter(tableAPI,filterKey){if(!tableAPI.state)return;if(!tableAPI.state.loaded())return;if(!tableAPI.state.loaded().filters)return;const filters=tableAPI.state.loaded().filters;if(!filters)return;const filter=filters[filterKey];if(!filter)return;const $entry=$(`#${filterKey}-filter-menu li[data-filter-key='${filter}']`).addClass("active");if(filter!="all")$(`#${filterKey}-filter-menu button`).prepend(``).find(`span`).html($entry.text());tableAPI.state.save()}static secondsToHHMMSS(seconds){const padZeroes=n=>`${n}`.padStart(2,"0");const sec=seconds%60;const mins=Math.floor(seconds/60)%60;const hours=Math.floor(seconds/3600);return`${padZeroes(hours)}:${padZeroes(mins)}:${padZeroes(sec)}`}}const alertNotifications={};let alertNotificationUtilsId=0;class AlertNotification{constructor({title:title,body:body,link:link,delay:delay=0,id:id,style:style}={}){this.title=title;this.body=body;this.link=link;this.delay=delay;this.id=id;this.style=style}render(){const self=this;const $toast=$(``);if(this.delay!==0){$toast.data("autohide",true);$toast.data("delay",this.delay)}else{$toast.data("autohide",false)}$toast.data("notification-id",this.id);const $toastHeader=$(`
\n ${this.title}\n
`);const $toastBody=$(`
${this.body}
`);if(this.action&&this.action.link!=undefined&&this.action.link!=""){const $anchor=$(`${this.action.label}`);$toastBody.append($anchor)}if(this.dismissable){$toastHeader.append(`\n \n `)}if(this.isAboveAll){$toast.css("z-index","9999")}$toast.append($toastHeader,$toastBody);$toast.toast("show");$toast.on("hidden.bs.toast",function(){AlertNotificationUtils.hideAlert(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"[AlertNotification] :: The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class AlertNotificationUtils{static initAlerts(){$(`.toast.alert-notification`).each(function(){const noScope=$(this).data("notificationNoScope");const pages=noScope==""||noScope==undefined?[]:noScope.split(";");if(pages.length>0&&pages.some(page=>location.href.contains(page))){$(this).remove()}$(this).toast("show")})}static hideAlert(notificationId){if(!notificationId){console.warn("[AlertNotificationUtils] :: The notification id cannot be null!");return}if(!(notificationId in alertNotifications)){console.warn("[AlertNotificationUtils] :: The notification hasn't been found!");return}alertNotifications[notificationId].destroy();delete alertNotifications[notificationId]}static updateNotification(notificationId,body){if(!(notificationId in alertNotifications)){throw"[AlertNotificationUtils] :: The notification was not found!"}alertNotifications[notificationId].updateBody(body)}static showAlert(option){const styles={warning:{bg:"warning",text:"text-dark",icon:"fa-exclamation-circle"},info:{bg:"info",text:"text-white",icon:"fa-info-circle"},success:{bg:"success",text:"text-white",icon:"fa-check-circle"},error:{bg:"danger",text:"text-white",icon:"fa-times-circle"}};option.style=styles[option.level]||styles.warning;if(option.id===undefined)throw"[AlertNotificationUtils] :: An AlertNotification must have an in id!";if(option.id in alertNotifications)throw"[AlertNotificationUtils] :: An AlertNotification with the same id already exists!";if(option.title===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a title!";if(option.body===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a body!";const notification=new AlertNotification(option);$(`#main-container`).prepend(notification.render());alertNotifications[option.id]=notification;return notification}static bindClosingEvent(){$(".toast.alert-notification[data-notification-id]").on("hidden.bs.toast",function(){$.post(`${http_prefix}/lua/handler_alert_notification.lua`,{notification_id:$(this).data("notificationId"),action:`disposed`})})}} +function datatableRemoveEmptyRow(table){$("tbody tr.emptyRow",$(table)).remove()}function datatableAddEmptyRow(table,empty_str){var columns=$("thead th",$(table)).filter(function(){return $(this).css("display")!="none"}).length;$("tbody",$(table)).html(''+empty_str+"")}function datatableGetNumDisplayedItems(table){return $("tr:not(.emptyRow)",$(table)).length-1}function datatableIsEmpty(table){return datatableGetNumDisplayedItems(table)==0}function datatableGetByForm(form){return $("table",$("#dt-top-details",$(form)).parent())}function datatableUndoAddRow(new_row,empty_str,bt_to_enable,callback_str){if(bt_to_enable)$(bt_to_enable).removeAttr("disabled").removeClass("disabled");var form=$(new_row).closest("form");$(new_row).remove();aysUpdateForm(form);var dt=datatableGetByForm(form);if(datatableIsEmpty(dt))datatableAddEmptyRow(dt,empty_str);if(callback_str)window[callback_str](new_row)}function datatableForEachRow(table,callbacks){$("tr:not(:first)",table).each(function(row_i){if(typeof callbacks==="function"){callbacks.bind(this)(row_i)}else{var i;for(i=0;i'+label+"")}function datatableAddDeleteButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-danger",callback_str,"javascript:void(0)")}function datatableAddActionButtonCallback(td_idx,callback_str,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info",callback_str,"javascript:void(0)")}function datatableAddLinkButtonCallback(td_idx,link,label){datatableAddButtonCallback.bind(this)(td_idx,label,"badge-info","",link)}function datatableMakeSelectUnique(tr_obj,added_rows_prefix,options){options=paramsExtend({on_change:$.noop,selector_fn:function(obj){return obj.find("select").first()}},options);function datatableForeachSelectOtherThan(this_select,added_rows_prefix,selector_fn,callback){$("[id^="+added_rows_prefix+"]").each(function(){var other=selector_fn($(this));if(other[0]!=this_select[0])callback(other)})}function datatableOptionChangeStatus(option_obj,enable){if(enable){option_obj.removeAttr("disabled")}else{var select_obj=option_obj.closest("select");var should_reset=select_obj.val()==option_obj.val();option_obj.attr("disabled","disabled");if(should_reset){var new_val=select_obj.find("option:not([disabled])").first().val();select_obj.val(new_val);select_obj.attr("data-old-val",new_val)}}}function datatableOnSelectEntryChange(added_rows_prefix,selector_fn,change_callback){var old_value=$(this).attr("data-old-val")||"";var new_value=$(this).val()||"";var others=[];if(old_value==new_value)old_value="";datatableForeachSelectOtherThan($(this),added_rows_prefix,selector_fn,function(other){datatableOptionChangeStatus(other.find("option[value='"+old_value+"']"),true);datatableOptionChangeStatus(other.find("option[value='"+new_value+"']"),false);others.push(other)});change_callback($(this),old_value,new_value,others,datatableOptionChangeStatus);$(this).attr("data-old-val",new_value)}function datatableOnAddSelectEntry(select_obj,added_rows_prefix,selector_fn){select_obj.val("");datatableForeachSelectOtherThan(select_obj,added_rows_prefix,selector_fn,function(other){other.trigger("change")});var new_sel=select_obj.find("option:not([disabled])").first();var new_val=new_sel.val();select_obj.val(new_val);select_obj.trigger("change")}var select=options.selector_fn(tr_obj);select.on("change",function(){datatableOnSelectEntryChange.bind(this)(added_rows_prefix,options.selector_fn,options.on_change)});select.on("remove",function(){$(this).val("").trigger("change")});datatableOnAddSelectEntry(select,added_rows_prefix,options.selector_fn)}function datatableOrderedInsert(table,td_idx,to_insert,to_insert_val,cmp_fn){var cmp_fn=cmp_fn||function(a,b){return b-a};var inserted=false;datatableForEachRow(table,function(){if(inserted)return;var tr=$(this);var cmp_val=parseInt($("td:nth-child("+td_idx+")",tr).html());if(!isNaN(cmp_val)&&cmp_fn(cmp_val,to_insert_val)<0){tr.before(to_insert);inserted=true}});if(!inserted)$(table).append(to_insert)}function datatableIsLastPage(table){var lastpage=$("#dt-bottom-details .pagination li:nth-last-child(3)",$(table));return!(lastpage.length==1&&lastpage.hasClass("active")==false)}function datatableGetColumn(table,id_key,id_value){var res=table.data("datatable").resultset.data.filter(function(item){return item[id_key]===id_value});if(res)return res[0]}function datatableGetColumnIndex(table,column_key){var index=table.data("datatable").options.columns.findIndex(function(item){return item.field===column_key});return index}function datatableInitRefreshRows(table,column_id,refresh_interval,trend_columns){var $dt=table.data("datatable");var rows=$dt.resultset.data;var old_timer=table.data("dt-rr-timer");var old_req=table.data("dt-rr-ajax");trend_columns=trend_columns||{};if(old_timer){clearInterval(old_timer);table.removeData("dt-rr-timer")}if(old_req){old_req.abort();table.removeData("dt-rr-ajax")}var ids=[];var id_to_row={};for(var row in rows){var data=rows[row];if(data[column_id]){var data_id=data[column_id];id_to_row[data_id]=row;ids.push(data_id)}}if(!ids)return false;var params={custom_hosts:ids.join(",")};var url=$dt.options.url;var first_load=true;var _process_result=function(result){if(typeof result==="string")result=JSON.parse(result);if(!result){console.error("Bad JSON result");return}for(var row in result.data){var data=result.data[row];var data_id=data[column_id];if(data_id&&id_to_row[data_id]){var row_idx=id_to_row[data_id];var row_html=$dt.rows[row_idx];var row_tds=$("td",row_html);for(var key in data){var col_idx=datatableGetColumnIndex(table,key);var cell=row_tds[col_idx];var $cell=$(cell);var old_val=$cell.data("dt-rr-cur-val")||$(cell).html();var trend_value_formatter=trend_columns[key];var new_val=data[key];var arrows="";if(trend_value_formatter){if(parseFloat(new_val)!=new_val)console.warn("Invalid number: "+new_val);if(!first_load)arrows=" "+drawTrend(parseFloat(new_val),parseFloat(old_val));$cell.data("dt-rr-cur-val",new_val);new_val=trend_value_formatter(new_val)}$(cell).html(new_val!=0?new_val+arrows:"")}}}first_load=false;table.removeData("dt-rr-ajax")};table.data("dt-rr-timer",setInterval(function(){var old_req=table.data("dt-rr-ajax");if(old_req)return;table.data("dt-rr-ajax",$.ajax({type:"GET",url:url,data:params,cache:false,success:_process_result}))},refresh_interval));_process_result($dt.resultset)}function aysHandleForm(form_selector,options){if(!form_selector)form_selector="form";if(form_selector==="form"){form_selector='form:not([data-ays-ignore="true"])'}var default_options={submit_selector:'button[type="submit"]:not([data-ays-ignore="true"])',on_dirty_callback:$.noop,on_clean_callback:$.noop,handle_submit_buttons:true,handle_datatable:false,handle_tabs:false,disable_on_dirty:"",ays_options:{}};var o=$.extend(true,{},default_options,options);o.form_selector=form_selector;$(function(){$(o.form_selector).areYouSure(o.ays_options);if(o.handle_submit_buttons)$(o.form_selector).find(o.submit_selector).attr("disabled","disabled");$(o.form_selector).on("dirty.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).removeAttr("disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").attr("disabled","disabled");$(this).find("ul.pagination a").css("pointer-events","none").css("cursor","default")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){if(!$(this).closest("li").hasClass("active"))$(this).removeAttr("data-toggle").closest("li").addClass("disabled")})}$(o.disable_on_dirty).addClass("disabled");o.on_dirty_callback.bind(this)()});$(o.form_selector).on("clean.areYouSure",function(){if(o.handle_submit_buttons)$(this).find(o.submit_selector).attr("disabled","disabled");if(o.handle_datatable){$(this).find("a.dropdown-toggle").removeAttr("disabled");$(this).find("ul.pagination a").css("pointer-events","").css("cursor","")}if(o.handle_tabs){$(".nav-tabs").find("a").each(function(){$(this).attr("data-toggle","tab").closest("li").removeClass("disabled")})}$(o.disable_on_dirty).removeClass("disabled");o.on_clean_callback.bind(this)()})})}function aysResetForm(form_selector){$(form_selector).trigger("reinitialize.areYouSure")}function aysUpdateForm(form_selector){$(form_selector).trigger("rescan.areYouSure")}function aysRecheckForm(form_selector){$(form_selector).trigger("checkform.areYouSure")}function aysGetDirty(form_selector,fields_selector){fields_selector=fields_selector||":input:not(input[type=submit]):not(input[type=button])";var getValue=function($field){if($field.hasClass("ays-ignore")||$field.hasClass("aysIgnore")||$field.attr("data-ays-ignore")||$field.attr("name")===undefined){return null}if($field.is(":disabled")){return"ays-disabled"}var val;var type=$field.attr("type");if($field.is("select")){type="select"}switch(type){case"checkbox":case"radio":val=$field.is(":checked");break;case"select":val="";$field.find("option").each(function(o){var $option=$(this);if($option.is(":selected")){val+=$option.val()}});break;default:val=$field.val()}return val};var isFieldDirty=function($field){var origValue=$field.data("ays-orig");var curValue=getValue($field);var dirty=undefined!==origValue&&origValue!=curValue;return{dirty:dirty,origValue:origValue,curValue:curValue}};var l=[];$(form_selector).find(fields_selector).each(function(){var dirty_status=isFieldDirty($(this));if(dirty_status.dirty){dirty_status.input=$(this);l.push(dirty_status)}});return l}var NTOPNG_MIN_VISUAL_VALUE=.005;const REGEXES={ipv4:"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$",ipv6:"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*$",domainName:"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$",macAddress:"^([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})$",username:"^(?=[a-zA-Z0-9._]{3,20}$)(?!.*[_.]{2})[^_.].*[^_.]$",email:"^[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$",https:"^https?://.+$"};function init_data_patterns(){$(`input[data-pattern]`).each(function(){const data_pattern=$(this).data("pattern");if(!data_pattern)return;const pattern=data_pattern.split("|").map(p=>REGEXES[p]).join("|");$(this).attr("pattern",pattern);$(this).removeAttr("data-pattern")})}function is_good_ipv4(ipv4){return new RegExp(REGEXES.ipv4).test(ipv4)}function is_good_ipv6(ipv6){return new RegExp(REGEXES.ipv6).test(ipv6)}function is_mac_address(mac){return new RegExp(REGEXES.macAddress).test(mac)}function isNumeric(value){return/^\d+$/.test(value)}function is_network_mask(what,optional_mask){var elems=what.split("/");var mask=null;var ip_addr;if(elems.length!=2){if(!optional_mask)return null;else ip_addr=what}else{ip_addr=elems[0];if(!isNumeric(elems[1]))return null;mask=parseInt(elems[1]);if(mask<0)return null}if(is_good_ipv4(ip_addr)){if(mask===null)mask=32;else if(mask>32)return null;return{type:"ipv4",address:ip_addr,mask:mask}}else if(is_good_ipv6(elems[0])){if(mask===null)mask=128;else if(mask>128)return false;return{type:"ipv6",address:ip_addr,mask:mask}}return null}function fbits(bits){const sizes=["bit/s","Kbit/s","Mbit/s","Gbit/s","Tbit/s"];if(typeof bits==="undefined")return"-";if(bits==0)return"0";if(bits>0&&bits=sizes.length){return"> "+sizes[sizes.length-1]}if(i<=1){return Math.round(bits/Math.pow(1e3,i)*100)/100+" "+sizes[i]}else{var ret=parseFloat(bits/Math.pow(1e3,i)).toFixed(2);if(ret%1==0)ret=Math.round(ret);return ret+" "+sizes[i]}}function export_rate(eps){if(typeof eps==="undefined")return"-";var sizes=["exp/s","Kexp/s"];if(eps==0)return"0";if(eps>0&&eps0&&exports0&&pps0&&pps0&&fps0&&mps'}else{return''}}function getOSIcon(name){var icon="";if(name.search("Linux")!=-1||name.search("Ubuntu")!=-1)icon=" ";else if(name.search("Android")!=-1)icon=" ";else if(name.search("Windows")!=-1||name.search("Win32")!=-1||name.search("MSIE")!=-1)icon=" ";else if(name.search("iPhone")!=-1||name.search("iPad")!=-1||name.search("OS X")!=-1)icon=" ";return icon}function abbreviateString(str,len){if(!str)return"";if(str.length=0&&bytes=kilobyte&&bytes=megabyte&&bytes=gigabyte&&bytes=terabyte)return(bytes/terabyte).toFixed(precision)+" TB";else return bytes.toFixed(precision)+" Bytes"}String.prototype.capitalizeSingleWord=function(){var uc=this.toUpperCase();if(uc=="ASN"||uc=="OS")return uc;else return this.charAt(0).toUpperCase()+this.slice(1)};String.prototype.capitalize=function(){var res=this.split(" ");for(var i in res){res[i]=res[i].capitalizeSingleWord()}return res.join(" ")};function drawTrend(current,last,withColor){if(current==last){return''}else if(current>last){return'"}else{return''}}function toggleAllTabs(enabled){if(enabled===true)$("#historical-tabs-container").find("li").removeClass("disabled").find("a").attr("data-toggle","tab");else $("#historical-tabs-container").find("li").addClass("disabled").find("a").removeAttr("data-toggle")}function disableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",true)});toggleAllTabs(false)}function enableAllDropdownsAndTabs(){$("select").each(function(){$(this).prop("disabled",false)});toggleAllTabs(true)}function capitalize(s){return s&&s[0].toUpperCase()+s.slice(1)}function addCommas(nStr){nStr+="";var x=nStr.split(".");var x1=x[0];var x2=x.length>1?"."+x[1]:"";var rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1"+","+"$2")}return x1+x2}function scaleValue(val,sizes,scale,decimals){if(val==0)return[0,sizes[0]];let factor=decimals?10*decimals:10;var i=parseInt(Math.floor(Math.log(val)/Math.log(scale)));if(i<0||isNaN(i)){i=0}else if(i>=sizes.length)i=sizes.length-1;return[Math.round(val/Math.pow(scale,i)*factor)/factor,sizes[i]]}function formatValue(val){var sizes=["","K","M","G","T"];if(val==0)return"0";if(val>0&&val0&&value0&&bytes0&&bits0){years=Math.floor(days/365);if(years>0){days=days%365;msg=years+" year";if(years>1){msg+="s"}msg_array.push(msg);msg=""}msg=days+" day";if(days>1){msg+="s"}msg_array.push(msg);msg=""}if(hours>0){if(hours<10){msg="0"}msg+=hours+":"}if(minutes<10){msg+="0"}msg+=minutes+":";if(sec<10){msg+="0"}msg+=sec;msg_array.push(msg);return msg_array.join(", ")}Date.prototype.format=function(format){var o={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(var k in o)if(new RegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));return format};function epoch2Seen(epoch){var d=new Date(epoch*1e3);var tdiff=Math.floor((new Date).getTime()/1e3-epoch);return d.format("dd/MM/yyyy hh:mm:ss")+" ["+secondsToTime(tdiff)+" ago]"}function graphGetXAxisTicksFormat(diff_epoch){var tickFormat;if(diff_epoch<=86400){tickFormat="%H:%M:%S"}else if(diff_epoch<=2*86400){tickFormat="%b %e, %H:%M:%S"}else{tickFormat="%b %e"}return tickFormat}function paramsExtend(defaults,override){return $.extend({},defaults,override)}function paramsToForm(form,params){form=$(form);for(var k in params){if(params.hasOwnProperty(k)){var input=$('');input.appendTo(form)}}return form}function paramsPairsEncode(params){var i=0;var res={};for(var k in params){res["key_"+i]=k;res["val_"+i]=params[k];i=i+1}return res}jQuery.fn.extend({disable:function(state){return this.each(function(){var $this=$(this);if($this.is("input, button, textarea, select"))this.disabled=state;else $this.toggleClass("disabled",state)})}});function hostkey2hostInfo(host_key){var info;var hostinfo=[];host_key=host_key.replace(/____/g,":");host_key=host_key.replace(/___/g,"/");host_key=host_key.replace(/__/g,".");info=host_key.split("@");return info}function handle_tab_state(nav_object,default_tab){$("a",nav_object).click(function(e){e.preventDefault()});$(" > li > a",nav_object).on("shown.bs.tab",function(e){var id=$(e.target).attr("href").substr(1);if(history.replaceState){history.replaceState(null,null,"#"+id)}else{window.location.hash=id}});var hash=window.location.hash;if(!hash)hash="#"+default_tab;$('a[href="'+hash+'"]',nav_object).tab("show")}String.prototype.sformat=function(){var args=arguments;return this.replace(/{(\d+)}/g,function(match,number){return typeof args[number]!="undefined"?args[number]:match})};if(typeof String.prototype.contains==="undefined"){String.prototype.contains=function(s){return this.indexOf(s)!==-1}}function _add_find_host_link(form,name,data){$("").attr({type:"hidden",id:name,name:name,value:data}).appendTo(form)}function makeFindHostBeforeSubmitCallback(http_prefix){return function(form,data){if(data.type=="mac"){form.attr("action",http_prefix+"/lua/mac_details.lua")}else if(data.type=="network"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");_add_find_host_link(form,"network",data.network)}else if(data.type=="snmp"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_interface_details.lua");_add_find_host_link(form,"snmp_port_idx",data.snmp_port_idx);_add_find_host_link(form,"page","layer_2")}else if(data.type=="snmp_device"){form.attr("action",http_prefix+"/lua/pro/enterprise/snmp_device_details.lua")}else if(data.type=="asn"){form.attr("action",http_prefix+"/lua/hosts_stats.lua");_add_find_host_link(form,"asn",data.asn)}else{form.attr("action",http_prefix+"/lua/host_details.lua");_add_find_host_link(form,"mode","restore")}return true}}function tstampToDateString(html_tag,format,tdiff){tdiff=tdiff||0;var timestamp=parseInt(html_tag.html())+tdiff;var localized=d3.time.format(format)(new Date(timestamp*1e3));html_tag.html(localized).removeClass("hidden");return localized}function noHtml(s){return s.replace(/<[^>]+>/g,"")}function cleanCustomHostUrl(host){return host.replace(/^http:\/\//gi,"").replace(/^https:\/\//gi,"").replace(/^www\./gi,"").replace(/[^0-9a-zA-Z\.:\/_-]/gi,"")}function parseQuery(queryString){var query={};var pairs=(queryString[0]==="?"?queryString.substr(1):queryString).split("&");for(var i=0;i{if(check_status_code(xhr.status,xhr.statusText,$("#import-error"))){$button.removeAttr("disabled");return}if(!d.success){$("#import-error").text(d.error).show();$button.removeAttr("disabled");params.reset_csrf(d.csrf)}else{location.reload()}}).fail(({status:status,statusText:statusText})=>{check_status_code(status,statusText,$("#import-error"));$button.removeAttr("disabled")})}};reader.readAsText(file,"UTF-8")}});$("#import-modal").on("submit","form",function(e){e.preventDefault();$("#btn-import").trigger("click")})}function serializeFormArray(serializedArray){const serialized={};serializedArray.forEach(obj=>{if(obj.name.includes("[]")){return}else{serialized[obj.name]=obj.value}});return serialized}function cleanForm(formSelector){$(formSelector).find("input,select,textarea").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(formSelector)[0].reset()}const fetchWithTimeout=(uri,options={},time=5e3)=>{const controller=new AbortController;const config={...options,signal:controller.signal};const timeout=setTimeout(()=>{controller.abort()},time);return fetch(uri,config).then(response=>{if(!response.ok){throw new Error(`${response.status}: ${response.statusText}`)}return response}).catch(error=>{if(error.name==="AbortError"){throw new Error("Response timed out")}})};$(document).ready(function(){init_data_patterns();$(`input#import-input`).on("change",function(){const filename=$(this).val().replace("C:\\fakepath\\","");$(`label[for='#import-input']`).html(filename)})});var schema_2_label={};var data_2_label={};var graph_i18n={};function initLabelMaps(_schema_2_label,_data_2_label,_graph_i18n){schema_2_label=_schema_2_label;data_2_label=_data_2_label;graph_i18n=_graph_i18n}function getSerieLabel(schema,serie,visualization,serie_index){var data_label=serie.label;var new_label=data_2_label[data_label];if(visualization&&visualization.metrics_labels&&visualization.metrics_labels[serie_index])return visualization.metrics_labels[serie_index];if(serie.ext_label)return serie.ext_label;else if(schema=="top:local_senders"||schema=="top:local_receivers"){if(serie.ext_label)return serie.ext_label;else return serie.tags.host}else if(schema.startsWith("top:")){if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.l4proto)return serie.tags.l4proto;else if(serie.tags.dscp_class)return serie.tags.dscp_class;else if(serie.tags.device&&serie.tags.if_index){if(serie.ext_label!="")return serie.ext_label;else return"("+serie.tags.if_index+")"}else if(serie.tags.device&&serie.tags.port)return serie.tags.port;else if(serie.tags.exporter&&serie.tags.ifname)return serie.tags.ifname;else if(serie.tags.profile)return serie.tags.profile;else if(serie.tags.user_script)return serie.tags.user_script;else if(serie.tags.command)return serie.tags.command.substring(4).toUpperCase()}else if(data_label!="bytes"){if(serie.tags.protocol)return serie.tags.protocol+" ("+new_label+")";else if(serie.tags.category)return serie.tags.category+" ("+new_label+")";else if(serie.tags.device&&serie.tags.if_index)return serie.ext_label+" ("+new_label+")";else if(serie.tags.device&&serie.tags.port)return serie.tags.port+" ("+new_label+")"}else{if(serie.tags.protocol)return serie.tags.protocol;else if(serie.tags.category)return serie.tags.category;else if(serie.tags.profile)return serie.tags.profile;else if(data_label=="bytes"){if(schema.contains("volume"))return graph_i18n.traffic_volume;else return graph_i18n.traffic}}if(schema_2_label[schema])return capitaliseFirstLetter(schema_2_label[schema]);if(new_label)return capitaliseFirstLetter(new_label);return capitaliseFirstLetter(data_label)}function getValueFormatter(schema,metric_type,series,custom_formatter,stats){if(series&&series.length&&series[0].label){if(custom_formatter){var formatters=[];if(typeof custom_formatter!="object")custom_formatter=[custom_formatter];for(var i=0;icount){console.error("points mismatch: serie '"+getSerieLabel(schema_name,series[i])+"' has "+data.length+" points, expected "+count);rv=false}else if(data.length.1)return res}function buildTimeArray(start_time,end_time,step){var arr=[];for(var t=start_time;t$.now())$("#btn-jump-time-ahead").addClass("disabled");else $("#btn-jump-time-ahead").removeClass("disabled")}function showQuerySlow(){$("#query-slow-alert").show()}function hideQuerySlow(){$("#query-slow-alert").hide()}function chart_data_sum(series){return series.reduce(function(acc,x){return acc+x.values.reduce(function(acc,pt){return acc+pt[1]||0},0)},0)}function redrawExtraLines(chart,chart_id,extra_lines){d3.selectAll(chart_id+" line.extra-line").remove();if(extra_lines.length>0){var xValueScale=chart.xAxis.scale();var yValueScale=chart.yAxis1.scale();var g=d3.select(chart_id+" .stack1Wrap");for(var i=0;i0||has_initial_zoom();let extra_lines=[];let unreachable_timestamps={};var spinner=$('');$chart.parent().css("position","relative");var chart_colors_full=["#69B87F","#94CFA4","#B3DEB6","#E5F1A6","#FFFCC6","#FEDEA5","#FFB97B","#FF8D6D","#E27B85"];var chart_colors_min=["#7CC28F","#FCD384","#FD977B"];var split_directions_colors=["#69B87F","#FF7C00","#FF4700"];function format_unreachable(formatter){return function(y,d){if(d&&unreachable_timestamps[d[0]])return i18n.unreachable_host;return formatter(y)}}var num_ticks_y1=null;var num_ticks_y2=null;var domain_y1=null;var domain_y2=null;var first_run=true;var update_chart_data=function(new_data){d3_sel.datum([]).call(chart);d3_sel.datum(new_data);d3_sel.transition().duration(500).call(chart);if(first_run){num_ticks_y1=chart.yAxis1.ticks();num_ticks_y2=chart.yAxis2.ticks();domain_y1=chart.yDomain1();domain_y2=chart.yDomain2();first_run=false}if(metric_type==="gauge"){var cur_domain_y1=chart.yAxis1.scale().domain();var cur_domain_y2=chart.yAxis2.scale().domain();cur_domain_y1=cur_domain_y1[1]-cur_domain_y1[0];cur_domain_y2=cur_domain_y2[1]-cur_domain_y2[0];if(chart.yAxis1.tickFormat()!=ffloat)chart.yAxis1.ticks(Math.min(cur_domain_y1,num_ticks_y1));if(chart.yAxis2.tickFormat()!=ffloat)chart.yAxis2.ticks(Math.min(cur_domain_y2,num_ticks_y2))}var y1_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==1}));var y2_sum=chart_data_sum(new_data.filter(function(x){return x.yAxis==2}));if(y1_sum==0)chart.yDomain1([0,1]);else chart.yDomain1(domain_y1);if(y2_sum==0)chart.yDomain2([0,1]);else chart.yDomain2(domain_y2);d3_sel.call(chart);nv.utils.windowResize(function(){chart.update();redrawExtraLines(chart,chart_id,extra_lines)});redrawExtraLines(chart,chart_id,extra_lines);spinner.remove()};function isLegendDisabled(key,default_val){if(typeof localStorage!=="undefined"){var val=localStorage.getItem("chart_series.disabled."+key);if(val!=null)return val==="true"}return default_val}chart.legend.dispatch.on("legendClick",function(d,i){manual_trigger_extra_series[d.legend_key]=true;if(typeof localStorage!=="undefined")localStorage.setItem("chart_series.disabled."+d.legend_key,!d.disabled?true:false)});chart.dispatch.on("zoom",function(e){var cur_zoom=[params.epoch_begin,params.epoch_end];var t_start=Math.floor(e.xDomain[0]);var t_end=Math.ceil(e.xDomain[1]);var old_zoomed=chart.is_zoomed;var is_user_zoom=typeof e.is_user_zoom!=="undefined"?e.is_user_zoom:true;chart.is_zoomed=true;if(chart.updateStackedChart(t_start,t_end,false,is_user_zoom)){if(is_user_zoom||e.push_state){current_zoom_level+=1;var url=getHistoryParameters({epoch_begin:t_start,epoch_end:t_end});history.pushState({zoom_level:current_zoom_level,range:[t_start,t_end]},"",url)}chart.fixChartButtons()}else chart.is_zoomed=old_zoomed});function updateZoom(zoom,is_user_zoom,force){var t_start=zoom[0];var t_end=zoom[1];chart.updateStackedChart(t_start,t_end,false,is_user_zoom,null,force);chart.fixChartButtons()}chart.zoom_in=function(){var cur_interval=params.epoch_end-params.epoch_begin;if(cur_interval>60){var delta=cur_interval/4;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin+delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end-delta)*1e3));updateChartFromPickers()}};chart.zoom_out=function(){var cur_interval=params.epoch_end-params.epoch_begin;var delta=cur_interval/2;$("#period_begin").datetimepicker("date",new Date((params.epoch_begin-delta)*1e3));$("#period_end").datetimepicker("date",new Date((params.epoch_end+delta)*1e3));updateChartFromPickers()};$chart.on("dblclick",function(event){if($(event.target).hasClass("nv-legend-text"))return;chart.zoom_out()});$zoom_reset.on("click",function(){if(current_zoom_level){history.go(-current_zoom_level)}});window.addEventListener("popstate",function(e){var zoom=initial_range;if(e.state){zoom=e.state.range;current_zoom_level=e.state.zoom_level}else current_zoom_level=0;updateZoom(zoom,true,true)});chart.fixChartButtons=function(){if(current_zoom_level>0||has_initial_zoom()){$graph_zoom.find(".btn-warning:not(.custom-zoom-btn)").addClass("initial-zoom-sel").removeClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","visible");var zoom_link=$graph_zoom.find(".custom-zoom-btn");var link=zoom_link.val().replace(/&epoch_begin=.*/,"");link+="&epoch_begin="+params.epoch_begin+"&epoch_end="+params.epoch_end;zoom_link.val(link)}else{$graph_zoom.find(".initial-zoom-sel").addClass("btn-warning");$graph_zoom.find(".custom-zoom-btn").css("visibility","hidden");chart.is_zoomed=false}fixJumpButtons(params.epoch_begin,params.epoch_end);if(current_zoom_level>0)$zoom_reset.show();else $zoom_reset.hide()};function checkQueryCompleted(){var flows_dt=$("#chart1-flows");var wait_num_queries=ts_table_shown&&$("#chart1-flows").css("display")!=="none"?2:1;query_completed+=1;if(query_completed>=wait_num_queries){if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()}}chart.queryWasAborted=function(){return query_was_aborted};chart.abortQuery=function(){query_was_aborted=true;if(pending_chart_request){pending_chart_request.abort();chart.noData(i18n.query_was_aborted);update_chart_data([])}if(pending_table_request)pending_table_request.abort();if(query_timer){clearInterval(query_timer);query_timer=null}hideQuerySlow()};chart.tableRequestCompleted=function(){checkQueryCompleted();pending_table_request=null};chart.getDataUrl=function(){var data_params=jQuery.extend({},params);delete data_params.zoom;delete data_params.ts_compare;data_params.extended=1;return url+"?"+$.param(data_params,true)};var old_start,old_end,old_interval;chart.updateStackedChart=function(tstart,tend,no_spinner,is_user_zoom,on_load_callback,force_update){if(tstart)params.epoch_begin=tstart;if(tend)params.epoch_end=tend;const series_formatted_labels={};const now=Date.now()/1e3;var cur_interval=params.epoch_end-params.epoch_begin;var actual_step=findActualStep(step,params.epoch_begin);max_interval=actual_step*6;if(cur_interval=now){params.epoch_begin=params.epoch_end-max_interval}else{params.epoch_begin=Math.floor(epoch-max_interval/2);params.epoch_end=Math.floor(epoch+max_interval/2)}is_max_zoom=true;chart.zoomType(null)}}else if(cur_interval>max_interval){is_max_zoom=false;chart.zoomType("x")}old_interval=cur_interval;if(!first_load||has_initial_zoom()||force_update)align_step=null;fixTimeRange(chart,params,align_step,actual_step);if(first_load)initial_range=[params.epoch_begin,params.epoch_end];if(old_start==params.epoch_begin&&old_end==params.epoch_end&&!force_update)return false;old_start=params.epoch_begin;old_end=params.epoch_end;if(pending_table_request)pending_table_request.abort();if(pending_chart_request)pending_chart_request.abort();else if(!no_spinner)spinner.appendTo($chart.parent());$("#period_begin").datetimepicker("date",new Date(params.epoch_begin*1e3));$("#period_end").datetimepicker("date",new Date(Math.min(params.epoch_end*1e3,$.now())));if(query_timer)clearInterval(query_timer);query_timer=setInterval(showQuerySlow,seconds_before_query_slow*1e3);query_completed=0;query_was_aborted=false;chart.noData(i18n.no_data_available);hideQuerySlow();var req_params=$.extend({},params);if(!canCompareBackwards(req_params.epoch_begin,req_params.epoch_end))delete req_params.ts_compare;if(visualization.show_unreachable)req_params.no_fill=1;pending_chart_request=$.get(url,req_params,function(data){if(data&&data.error)chart.noData(data.error);if(!data||!data.series||!data.series.length||!checkSeriesConsinstency(schema_name,data.count,data.series)){update_chart_data([]);return}var tick_step=Math.ceil(chart.tick_step/data.step)*data.step;chart.xAxis.tickValues(buildTimeArray(data.start,data.start+data.count*data.step,tick_step));chart.xAxis.tickFormat(function(d){return d3.time.format(chart.x_fmt)(new Date(d*1e3))});var res=[];var series=data.series;var total_serie;var color_i=0;var chart_colors=series.length<=chart_colors_min.length?chart_colors_min:chart_colors_full;for(var j=0;jmax_cmp_over_total_ratio)is_disabled=true;res.push({key:capitaliseFirstLetter(key),yAxis:1,values:values,type:"line",classed:"line-dashed line-animated",color:"#7E91A0",legend_key:key,disabled:is_disabled})}}if(visualization&&visualization.extra_series){for(var i=0;imax_line_over_total_ratio)is_disabled=true;res.push({key:serie.label,yAxis:serie.axis||1,values:arrayToNvSerie(upsampleSerie([serie.value],data.count),data.start,data.step),type:serie.type||"line",color:serie.color||"red",classed:serie.class,legend_key:serie.label,disabled:is_disabled})}}if(!data.no_trend&&has_full_data&&total_serie.length>=3){var num_smoothed_points=Math.min(Math.max(Math.floor(total_serie.length/5),3),12);var smooth_functions={rsi:["RSI cur vs past","#00FF5D",relativeStrengthIndexArray,{periods:num_smoothed_points}]};function add_smoothed_serie(fn_to_use){var options=smooth_functions[fn_to_use];var smoothed;if(fn_to_use=="rsi"){if(!past_serie)return;var delta_serie=[];for(var i=0;i0){var aligned;if(fn_to_use!="ema"&&fn_to_use!="sma"&&fn_to_use!="rsi"){var scale=d3.max(total_serie)/max_val;var scaled=$.map(smoothed,function(x){return x*scale});aligned=upsampleSerie(scaled,data.count)}else{var remaining=data.count-smoothed.length;var to_fill=remaining0){var ref_serie=res[0].values;let tok=ref_serie[0][0];let was_unreachable=false;unreachable_timestamps={};for(var i=0;inow&&now0)serie[serie.length]=[now,serie[serie.length-1][1]]}}var enabled_series=res.filter(function(d){return d.disabled!==true});if(second_axis_series.length>0||enabled_series.length==0){for(var i=0;i0){chart.legend.updateState(false)}update_chart_data(res);first_time_loaded=false;if(data.source_aggregation)$("#data-aggr-dropdown > button > span:first").html(data.source_aggregation)}).fail(function(xhr,status,error){if(xhr.statusText=="abort"){return}console.error("Error while retrieving the timeseries data ["+status+"]: "+error);chart.noData(error);update_chart_data([])}).always(function(data,status,xhr){checkQueryCompleted();pending_chart_request=null});if(first_load){first_load=false;$(function(){var flows_dt=$("#chart1-flows").data("datatable");if(flows_dt)pending_table_request=flows_dt.pendingRequest})}else{var flows_dt=$("#chart1-flows");if(ts_table_shown){updateGraphsTableView(null,params);if($("#chart1-flows").css("display")!=="none")pending_table_request=flows_dt.data("datatable").pendingRequest}}if(typeof on_load_callback==="function")on_load_callback(chart);return true}}var graph_old_view=null;var graph_old_has_nindex=null;var graph_old_nindex_query=null;function tsQueryToTags(ts_query){return ts_query.split(",").reduce(function(params,value){var pos=value.indexOf(":");if(pos!=-1){var k=value.slice(0,pos);var v=value.slice(pos+1);params[k]=v}return params},{})}function recheckGraphTableEntries(){var table_view=graph_table_views;var tdiff=graph_params.epoch_end-graph_params.epoch_begin;var reset_selection=false;$("#chart1-flows").show();$("#graphs-table-selector").show();for(view_id in table_view){var view=table_view[view_id];var elem=$("#"+view.html_id);if(tdiff<=view.min_step){if(graph_old_view.id===view_id)reset_selection=true;elem.hide()}else elem.show()}var items_ul=$("#graphs-table-active-view").closest(".btn-group").find("ul:first");items_ul.find("li.dropdown-header").each(function(idx,e){var next_item=$(e).nextAll("li").filter(function(idx,e){return $(e).css("display")!=="none"||!$(e).attr("data-view-id")}).first();var divider=$(e).nextAll(".divider").first();if(!next_item.attr("data-view-id")){$(e).hide();divider.hide()}else{$(e).show();divider.show()}});if(reset_selection){var first_view=items_ul.find("li[data-view-id]").filter(function(idx,e){return $(e).css("display")!=="none"}).first();if(first_view.length)setActiveGraphsTableView(first_view.attr("data-view-id"));else{$("#chart1-flows").hide();$("#graphs-table-selector").hide()}return false}return true}function updateGraphsTableView(view,graph_params,has_nindex,nindex_query,per_page){if(view)graph_old_view=view;if(!recheckGraphTableEntries(graph_params)){return}if(view){graph_old_has_nindex=has_nindex;graph_old_nindex_query=nindex_query}else{view=graph_old_view;has_nindex=graph_old_has_nindex;nindex_query=graph_old_nindex_query}var graph_table=$("#chart1-flows");nindex_query=nindex_query+"&begin_time_clause="+graph_params.epoch_begin+"&end_time_clause="+graph_params.epoch_end;var nindex_buttons="";var params_obj=tsQueryToTags(graph_params.ts_query);if(!params_obj.host){nindex_buttons+='
"}nindex_buttons+='
";if(view.columns){var url=http_prefix+(view.nindex_view?"/lua/pro/get_nindex_flows.lua":"/lua/pro/get_ts_table.lua");var columns=view.columns.map(function(col){return{title:col[1],field:col[0],css:{textAlign:col[2],width:col[3]},hidden:col[4]?true:false}});columns.push({title:i18n.actions,field:"drilldown",css:{width:"1%","white-space":"nowrap","text-align":"center"}});var old_dt=graph_table.data("datatable");if(old_dt&&old_dt.pendingRequest)old_dt.pendingRequest.abort();graph_table.removeData("datatable");graph_table.html("");graph_table.datatable({title:"",url:url,perPage:per_page,noResultsMessage:function(){if(ts_chart.queryWasAborted())return i18n.query_was_aborted;else return i18n.no_results_found},post:function(){var params=$.extend({},graph_params);delete params.ts_compare;delete params.initial_point;params.limit=1;params.detail_view=view.id;return params},loadingYOffset:40,columns:columns,buttons:view.nindex_view?[nindex_buttons]:[],tableCallback:function(){var data=this.resultset;ts_chart.tableRequestCompleted();if(!data){return}if(data.currentPage>1)graph_table.data("has_interaction",true);var stats_div=$("#chart1-flows-stats");var has_drilldown=data&&data.data.some(function(row){return row.drilldown});if(!has_drilldown)$("table td:last-child, th:last-child",graph_table).remove();if(data&&data.stats&&data.stats.loading_time){$("#flows-load-time").html(data.stats.loading_time);$("#flows-processed-records").html(data.stats.num_records_processed);stats_div.show()}else stats_div.hide()},rowCallback:function(row,row_data){if(typeof row_data.tags==="object"&&(params_obj.category&&row_data.tags.category===params_obj.category||params_obj.protocol&&row_data.tags.protocol===params_obj.protocol)){row.addClass("info")}return row}})}}function draw_processes_graph(http_prefix,graph_div_id,host){var links;var nodes={};var url=http_prefix+"/lua/get_processes_graph_data.lua?host="+host;d3.json(url,function(error,json){if(error)return console.warn(error);links=json;var _link;links.forEach(function(link){if(link.source_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.source}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.source_pid+"&pid_name="+link.source_name+"&host="+host+"&page=flows"}link.source=nodes[link.source]||(nodes[link.source]={name:link.source_name,num:link.source,link:_link,type:link.source_type,pid:link.source_pid});if(link.target_pid==-1){_link=http_prefix+"/lua/host_details.lua?host="+link.target}else{_link=http_prefix+"/lua/process_details.lua?pid="+link.target_pid+"&pid_name="+link.target_name+"&host="+host+"&page=flows"}link.target=nodes[link.target]||(nodes[link.target]={name:link.target_name,num:link.target,link:_link,type:link.target_type,pid:link.target_pid})});var width=960,height=500,arrow_size=6;var color=d3.scale.category10();color["proc"]="red";color["host"]="lightsteelblue";var force=d3.layout.force().nodes(d3.values(nodes)).links(links).size([width,height]).linkDistance(120).charge(-400).on("tick",tick).start();var svg=d3.select("#"+graph_div_id).append("svg").attr("id","ebpf_graph").attr("width",width).attr("height",height);svg.append("defs").selectAll("marker").data(["proc2proc","proc2host","host2proc","host2host"]).enter().append("marker").attr("id",function(d){return d}).attr("viewBox","0 -5 10 10").attr("refX",15).attr("refY",-1.5).attr("markerWidth",arrow_size).attr("markerHeight",arrow_size).attr("orient","auto").append("path").attr("d","M0,-5L10,0L0,5");var path=svg.append("g").selectAll("path").data(force.links()).enter().append("path").attr("class",function(d){return"link "+d.type}).attr("marker-end",function(d){return"url(#"+d.type+")"});var circle=svg.append("g").selectAll("circle").data(force.nodes()).enter().append("circle").attr("class","ebpf_circle").attr("r",8).style("fill",function(d){return color[d.type]}).call(force.drag).on("dblclick",function(d){window.location.href=d.link});var text=svg.append("g").selectAll("text").data(force.nodes()).enter().append("text").attr("class","ebpf_text").attr("x",12).attr("y",".31em").text(function(d){if(d.pid>=0)return d.name+" [pid: "+d.pid+"]";else{return d.name}});function tick(){path.attr("d",linkArc);circle.attr("transform",transform);text.attr("transform",transform)}function linkArc(d){var dx=d.target.x-d.source.x,dy=d.target.y-d.source.y,dr=Math.sqrt(dx*dx+dy*dy);return"M"+d.source.x+","+d.source.y+"A"+dr+","+dr+" 0 0,1 "+d.target.x+","+d.target.y}function transform(d){return"translate("+d.x+","+d.y+")"}})}function makeUniqueValidator(items_function){return function(field){var cmp_name=field.val();var count=0;if(!cmp_name)return true;items_function(field).each(function(){var name=$(this).val();if(name==cmp_name)count=count+1});return count==1}}function memberValueValidator(input){var member=input.val();if(member==="")return true;return is_mac_address(member)||is_network_mask(member,true)}function makePasswordPatternValidator(pattern){return function passwordPatternValidator(input){if(!input.val())return true;return $(input).val().match(pattern)}}function passwordMatchValidator(input){var other_input=$(input).closest("form").find("[data-passwordmatch]").not(input);if(!input.val()||!other_input.val())return true;return other_input.val()===input.val()}function poolnameValidator(input){if(!input.val())return true;return $(input).val().match(/^[a-z0-9_]*$/)}function passwordMatchRecheck(form){var items=$(form).find("[data-passwordmatch]");var not_empty=0;items.each(function(){if($(this).val()!="")not_empty++});if(not_empty==items.length)items.trigger("input")}function hostOrMacValidator(input){var host=input.val();if(host==="")return true;return is_mac_address(host)||is_good_ipv4(host)||is_good_ipv6(host)}function ipAddressValidator(input){var host=input.val();if(host==="")return true;return is_good_ipv4(host)||is_good_ipv6(host)}const INDEX_SEARCH_COLUMN=3;$.fn.dataTable.ext.buttons.filterScripts={className:"filter-scripts-button",init:function(dt,node,config){const button_id=config.attr.id;$(node).removeClass("btn").removeClass("btn-secondary");const button_text=$(node).html();let count=0;if(button_id=="all-scripts"){count=dt.data().length}else if(button_id=="enabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(parsed)count+=1})}else if(button_id=="disabled-scripts"){dt.data().each(d=>{const parsed=d.is_enabled;if(!parsed)count+=1})}$(node).html(`${button_text} (${count})`)},action:function(e,dt,node,config){const button_id=config.attr.id;$("#all-scripts, #enabled-scripts, #disabled-scripts").removeClass("active");if(button_id=="all-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("").draw();window.history.replaceState(undefined,undefined,"#all")}else if(button_id=="enabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("true").draw();window.history.replaceState(undefined,undefined,"#enabled")}else if(button_id=="disabled-scripts"){dt.columns(INDEX_SEARCH_COLUMN).search("false").draw();window.history.replaceState(undefined,undefined,"#disabled")}$(`span[data-toggle='popover']`).popover({trigger:"manual",html:true,animation:false}).on("mouseenter",function(){let self=this;$(this).popover("show");$(".popover").on("mouseleave",function(){$(self).popover("hide")})}).on("mouseleave",function(){let self=this;setTimeout(function(){if(!$(".popover:hover").length){$(self).popover("hide")}},50)});$(`#${button_id}`).addClass("active")}};const registerServiceWorker=()=>{if("serviceWorker"in navigator){navigator.serviceWorker.register("/sw.js")}};const NOTIFICATION_DEBUG=false;class PushNotificationBuilder{constructor(title="Hello World"){this.title=title;this.options={};this.options.actions=[];this.options.icon="/img/icons/icon-128x128.png";this.options.badge="/img/icons/icon-72x72.png"}setTitle(title){this.title=title;return this}setBody(body){this.options.body=body;return this}setIcon(icon){this.options.icon=icon;return this}setLang(lang){this.options.lang=lang;return this}setRequireInteraction(interaction){this.options.requireInteraction=interaction;return this}setTimestamp(timestamp){this.options.timestamp=timestamp;return this}setOnClick(callback){this.callback=callback;return this}build(){const n=new Notification(this.title,this.options);if(this.callback){n.onclick=this.callback}return n}}class NotificationManager{static enableNotification(){try{Notification.requestPermission(status=>{if(NOTIFICATION_DEBUG)console.info(status)})}catch(err){console.error("Something went wrong! ☹️",err)}}static push(pushNotification={title:"Hello World",options:{}}){if(!pushNotification)throw"The notification object cannot be null!";if(NotificationManager.canReceiveNotification){(async()=>{try{const registration=await navigator.serviceWorker.getRegistration();registration.showNotification(pushNotification.title,pushNotification.options)}catch(err){console.error(err)}})()}}static get canReceiveNotification(){return NotificationManager.permissionNotification=="granted"}static get permissionNotification(){return Notification.permission}}(function($){let modal_id_ctr=0;class ModalHandler{constructor(form,options){if(typeof options.csrf==="undefined"){throw new Error("ModalHandler::Missing CSRF token!")}this.element=form;this.dialog=$(form).closest(".modal");this.options=options;this.csrf=options.csrf;this.dontDisableSubmit=options.dontDisableSubmit;this.observer=new MutationObserver(list=>{this.bindFormValidation();this.toggleFormSubmission()});this.observer.observe(this.element[0],{childList:true,subtree:true});this.initialState=null;this.currentState=null;this.firstCloseAttempt=false;this.isSubmitting=false;const submitButton=$(this.element).find(`[type='submit']`);if(submitButton.length==0){throw new Error("ModalHandler::The submit button was not found inside the form!")}submitButton.attr("disabled","disabled")}createFormSnapshot(){const snapshot={inputs:{},hidden:[]};$(this.element).find("textarea,select,input").each(function(){const type=$(this).prop("nodeName").toLowerCase();const name=$(this).attr("name");snapshot.inputs[`${type}[name='${name}']`]=$(this).val()});$(this.element).find(`[style='display: none;'], span.invalid-feedback`).each(function(){snapshot.hidden.push($(this))});return snapshot}compareFormSnaphsot(s1,s2){if(s1==null||s2==null)return true;for(let[key,value]of Object.entries(s1.inputs)){if(s2.inputs[key]!=value)return false}return true}delegateModalClosing(){const self=this;$(this.dialog).find("button.cancel").off("click").click(function(){self.firstCloseAttempt=false;$(self.element)[0].reportValidity();$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})});$(this.dialog).off("hide.bs.modal").on("hide.bs.modal",function(event){if(self.isSubmitting){event.preventDefault();return}if(self.compareFormSnaphsot(self.currentState,self.initialState)){return}if(self.firstCloseAttempt)return;event.preventDefault();self.firstCloseAttempt=true;$(self.dialog).find("button.close").fadeOut(100,function(){$(self.dialog).find(".confirm-closing").fadeIn(100)});return});$(this.dialog).off("hidden.bs.modal").on("hidden.bs.modal",function(event){for(const[selector,value]of Object.entries(self.initialState.inputs)){$(selector).val(value);$(selector).removeClass("is-invalid")}self.initialState.hidden.forEach($hidden=>{$hidden.hide()});self.element.find(`[type='submit']`).attr("disabled","disabled");self.currentState=null;self.firstCloseAttempt=false;$(self.dialog).find(".confirm-closing").fadeOut(100,function(){$(self.dialog).find("button.close").fadeIn(100)})})}fillFormModal(){return this.options.loadFormData()}invokeModalInit(){const self=this;this.delegateModalClosing();this.options.onModalInit(this.fillFormModal());$(this.element).parents(".modal").on("show.bs.modal",function(){self.options.onModalShow()});this.initialState=this.createFormSnapshot();this.currentState=null;this.delegateResetButton()}delegateSubmit(){this.bindFormValidation();const self=this;this.submitHandler=function(e){if(!self.options.isSyncRequest){e.preventDefault();e.stopPropagation();self.makeRequest()}};$(this.element).on("submit",this.submitHandler)}bindFormValidation(){const self=this;$(this.element).find(`input,select,textarea`).each(function(i,input){let timeoutId=-1;const $input=$(this);const checkValidation=()=>{const validation={data:{validationMessage:$input.data("validationMessage"),validationEmptyMessage:$input.data("validationEmptyMessage"),cannotBeEmpty:$input.attr("required")==="required"||$input.data("validationNotEmpty")==true},isInputEmpty:$input.val().trim()==""};const $parent=$input.parent();let messageToShow;let $error=$parent.find(`.invalid-feedback`);if($error.length==0){$error=$(``)}if(validation.data.cannotBeEmpty&&validation.isInputEmpty){input.setCustomValidity("Empty!");messageToShow=validation.data.validationEmptyMessage||validation.data.validationMessage}else if(validation.data.cannotBeEmpty&&!validation.isInputEmpty){input.setCustomValidity("")}else{messageToShow=validation.data.validationMessage}if(!input.validity.valid&&messageToShow){$input.addClass("is-invalid");$error.text(messageToShow);$parent.append($error)}else{$input.removeClass("is-invalid");$error.fadeOut(500,function(){$(this).remove()})}};$(this).off("input").on("input",function(e){self.currentState=self.createFormSnapshot();if(timeoutId!=-1)clearTimeout(timeoutId);if(!$input.attr("formnovalidate")){timeoutId=setTimeout(()=>{checkValidation()},500);self.toggleFormSubmission();self.firstCloseAttempt=false}});$(this).off("invalid").on("invalid",function(e){e.preventDefault();if(!$input.attr("formnovalidate")){checkValidation()}})})}toggleFormSubmission(){let isValid=true;$(this.element).find("input,select,textarea").each(function(idx,input){isValid&=input.validity.valid});isValid?$(this.element).find(`[type='submit']`).removeAttr("disabled"):$(this.element).find(`[type='submit']`).attr("disabled","disabled")}cleanForm(){$(this.element).find("input,textarea,select").each(function(i,input){$(this).removeClass(`is-valid`).removeClass(`is-invalid`)});$(this.element)[0].reset()}makeRequest(){const submitButton=$(this.element).find(`[type='submit']`);let dataToSend=this.options.beforeSumbit();dataToSend.csrf=this.csrf;dataToSend=$.extend(dataToSend,this.options.submitOptions);submitButton.attr("disabled","disabled");let request;const self=this;if(self.options.method=="post"){request=$.ajax({url:this.options.endpoint,data:JSON.stringify(dataToSend),method:self.options.method,dataType:"json",contentType:"application/json; charset=utf-8"})}else{request=$.get(this.options.endpoint,dataToSend)}this.isSubmitting=true;request.done(function(response,textStatus){self.isSubmitting=false;self.currentState=null;if(self.options.resetAfterSubmit)self.cleanForm();self.options.onSubmitSuccess(response,dataToSend,self);$(self.element).off("submit",self.submitHandler);self.delegateSubmit()}).fail(function(jqxhr,textStatus,errorThrown){self.isSubmitting=false;self.options.onSubmitError(dataToSend,textStatus,errorThrown)}).always(function(d){submitButton.removeAttr("disabled")})}delegateResetButton(){const self=this;const resetButton=$(this.element).find(`[type='reset']`);if(resetButton.length==0)return;const defaultValues=serializeFormArray($(this.element).serializeArray());resetButton.click(function(e){e.preventDefault();$(self.element).find("input:visible,select").each(function(i,input){const key=$(input).attr("name");$(input).val(defaultValues[key]).removeClass("is-invalid").removeClass("is-valid")})})}}$.fn.modalHandler=function(args){if(this.length!=1)throw new Error("Only a form element can by initialized!");const options=$.extend({csrf:"",endpoint:"",resetAfterSubmit:true,dontDisableSubmit:false,isSyncRequest:false,method:"get",loadFormData:function(){},onModalInit:function(loadedData){},onModalShow:function(){},beforeSumbit:function(){return{}},onSubmitSuccess:function(response){},onSubmitError:function(sent,textStatus,errorThrown){},onModalReset:function(defaultData){}},args);const mh=new ModalHandler(this,options);mh.delegateSubmit();return mh}})(jQuery);jQuery.fn.dataTableExt.sErrMode="console";jQuery.fn.dataTableExt.formatSecondsToHHMMSS=((data,type,row)=>{if(isNaN(data))return data;if(type=="display"&&data==0)return"-";if(type=="display")return secondsToTime(data);return data});class DataTableUtils{static getStdDatatableConfig(dtButtons=[],dom="<'d-flex'<'mr-auto'l><'dt-search'f>B>rtip"){return{dom:dom,pagingType:"full_numbers",lengthMenu:[[10,25,50,-1],[10,25,50,`${i18n.all}`]],language:{info:i18n.showing_x_to_y_rows,search:i18n.script_search,infoFiltered:"",paginate:{previous:"<",next:">",first:"«",last:"»"}},saveState:true,buttons:{buttons:dtButtons,dom:{button:{className:"btn btn-link"},container:{className:"border-left ml-1 float-right"}}}}}static setAjaxConfig(config,url,dataSrc="",method="get",params={}){config.ajax={url:url,type:method,dataSrc:dataSrc,data:function(d){return $.extend({},d,params)}};return config}static extendConfig(config,extension){if(extension.hasFilters){extension.stateSaveCallback=function(settings,data){localStorage.setItem("DataTables_"+settings.sInstance,JSON.stringify(data))};extension.stateLoadCallback=function(settings){return JSON.parse(localStorage.getItem("DataTables_"+settings.sInstance))};extension.stateSaveParams=function(settings,data){$("[data-filter]").each(function(){const activeFilter=$(this).find(`li.active`).data("filter-key");if(!activeFilter)return;if(!data.filters)data.filters={};data.filters[$(this).data("filter")]=activeFilter})}}return $.extend({},config,extension)}static addFilterDropdown(title,filters=[],columnIndex,filterID,tableAPI){const createEntry=(val,key,callback)=>{const $entry=$(``);$entry.click(function(e){if($dropdownTitle.parent().find(`i.fas`).length==0){$dropdownTitle.parent().prepend(``)}$dropdownTitle.text($entry.text());$dropdownTitle.attr(`data-filter-key`,key);$menuContainer.find("li").removeClass(`active`);$entry.addClass(`active`);if(callback)callback(e)});return $entry};const filterKey=title.toLowerCase().split(" ").join("_");const dropdownId=`${filterKey}-filter-menu`;const $dropdownContainer=$(``);const $dropdownButton=$(``);const $dropdownTitle=$(`${title}`);$dropdownButton.append($dropdownTitle);const $menuContainer=$(``);for(let filter of filters){const $entry=createEntry(filter.label,filter.key,e=>{if(filter.callback){filter.callback()}tableAPI.column(columnIndex).search(filter.regex,true,false).draw()});$menuContainer.append($entry)}const $allEntry=createEntry(i18n.all,"all",e=>{$dropdownTitle.parent().find("i.fas.fa-filter").remove();$dropdownTitle.html(`${title}`).removeAttr(`data-filter-key`);tableAPI.columns(columnIndex).search("").draw(true)});$(filterID).prepend($dropdownContainer.append($dropdownButton,$menuContainer.prepend($allEntry)));DataTableUtils.setCurrentFilter(tableAPI,filterKey)}static setCurrentFilter(tableAPI,filterKey){if(!tableAPI.state)return;if(!tableAPI.state.loaded())return;if(!tableAPI.state.loaded().filters)return;const filters=tableAPI.state.loaded().filters;if(!filters)return;const filter=filters[filterKey];if(!filter)return;const $entry=$(`#${filterKey}-filter-menu li[data-filter-key='${filter}']`).addClass("active");if(filter!="all")$(`#${filterKey}-filter-menu button`).prepend(``).find(`span`).html($entry.text());tableAPI.state.save()}static secondsToHHMMSS(seconds){const padZeroes=n=>`${n}`.padStart(2,"0");const sec=seconds%60;const mins=Math.floor(seconds/60)%60;const hours=Math.floor(seconds/3600);return`${padZeroes(hours)}:${padZeroes(mins)}:${padZeroes(sec)}`}}const alertNotifications={};let alertNotificationUtilsId=0;class AlertNotification{constructor({title:title,body:body,link:link,delay:delay=0,id:id,style:style}={}){this.title=title;this.body=body;this.link=link;this.delay=delay;this.id=id;this.style=style}render(){const self=this;const $toast=$(``);if(this.delay!==0){$toast.data("autohide",true);$toast.data("delay",this.delay)}else{$toast.data("autohide",false)}$toast.data("notification-id",this.id);const $toastHeader=$(`
\n ${this.title}\n
`);const $toastBody=$(`
${this.body}
`);if(this.action&&this.action.link!=undefined&&this.action.link!=""){const $anchor=$(`${this.action.label}`);$toastBody.append($anchor)}if(this.dismissable){$toastHeader.append(`\n \n `)}if(this.isAboveAll){$toast.css("z-index","9999")}$toast.append($toastHeader,$toastBody);$toast.toast("show");$toast.on("hidden.bs.toast",function(){AlertNotificationUtils.hideAlert(self.id)});this.$element=$toast;return $toast}updateBody(body){if(this.$element==undefined)throw"[AlertNotification] :: The notification has not been rendered yet!";this.$element.find(".toast-body span").text(body)}destroy(){this.$element.toast("dispose");this.$element.empty()}}class AlertNotificationUtils{static initAlerts(){$(`.toast.alert-notification`).each(function(){const noScope=$(this).data("notificationNoScope");const pages=noScope==""||noScope==undefined?[]:noScope.split(";");if(pages.length>0&&pages.some(page=>location.href.contains(page))){$(this).remove()}$(this).toast("show")})}static hideAlert(notificationId){if(!notificationId){console.warn("[AlertNotificationUtils] :: The notification id cannot be null!");return}if(!(notificationId in alertNotifications)){console.warn("[AlertNotificationUtils] :: The notification hasn't been found!");return}alertNotifications[notificationId].destroy();delete alertNotifications[notificationId]}static updateNotification(notificationId,body){if(!(notificationId in alertNotifications)){throw"[AlertNotificationUtils] :: The notification was not found!"}alertNotifications[notificationId].updateBody(body)}static showAlert(option){const styles={warning:{bg:"warning",text:"text-dark",icon:"fa-exclamation-circle"},info:{bg:"info",text:"text-white",icon:"fa-info-circle"},success:{bg:"success",text:"text-white",icon:"fa-check-circle"},error:{bg:"danger",text:"text-white",icon:"fa-times-circle"}};option.style=styles[option.level]||styles.warning;if(option.id===undefined)throw"[AlertNotificationUtils] :: An AlertNotification must have an in id!";if(option.id in alertNotifications)throw"[AlertNotificationUtils] :: An AlertNotification with the same id already exists!";if(option.title===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a title!";if(option.body===undefined)throw"[AlertNotificationUtils]:: An AlertNotification must have a body!";const notification=new AlertNotification(option);$(`#main-container`).prepend(notification.render());alertNotifications[option.id]=notification;return notification}static bindClosingEvent(){$(".toast.alert-notification[data-notification-id]").on("hidden.bs.toast",function(){$.post(`${http_prefix}/lua/handler_alert_notification.lua`,{notification_id:$(this).data("notificationId"),action:`disposed`})})}} //# sourceMappingURL=ntop.min.js.map \ No newline at end of file diff --git a/httpdocs/js/ntop.min.js.map b/httpdocs/js/ntop.min.js.map index b6ddbc3daa..f45bc9c010 100644 --- a/httpdocs/js/ntop.min.js.map +++ b/httpdocs/js/ntop.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["datatable_utils.js","ays_utils.js","ntopng_utils.js","graph_utils.js","ebpf_utils.js","ntopng_validators.js","plugin-script-datatable.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/alert-notifications-utils.js"],"names":["datatableRemoveEmptyRow","table","$","remove","datatableAddEmptyRow","empty_str","columns","filter","this","css","length","html","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","form","parent","datatableUndoAddRow","new_row","bt_to_enable","callback_str","removeAttr","removeClass","closest","aysUpdateForm","dt","window","datatableForEachRow","callbacks","each","row_i","bind","i","datatableAddButtonCallback","td_idx","label","bs_class","link","append","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","options","paramsExtend","on_change","noop","selector_fn","obj","find","first","datatableForeachSelectOtherThan","this_select","callback","other","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","val","attr","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","push","datatableOnAddSelectEntry","trigger","new_sel","select","on","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","parseInt","isNaN","before","datatableIsLastPage","lastpage","hasClass","datatableGetColumn","id_key","id_value","res","data","resultset","item","datatableGetColumnIndex","column_key","index","findIndex","field","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","clearInterval","removeData","abort","ids","id_to_row","row","data_id","params","custom_hosts","join","url","first_load","_process_result","result","JSON","parse","console","error","row_idx","row_html","row_tds","key","col_idx","cell","$cell","old_val","trend_value_formatter","arrows","parseFloat","warn","drawTrend","setInterval","ajax","type","cache","success","aysHandleForm","form_selector","default_options","submit_selector","on_dirty_callback","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","addClass","aysResetForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","$option","isFieldDirty","origValue","curValue","dirty","l","dirty_status","input","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","macAddress","username","email","https","init_data_patterns","data_pattern","pattern","split","map","p","is_good_ipv4","RegExp","test","is_good_ipv6","is_mac_address","mac","isNumeric","value","is_network_mask","what","optional_mask","elems","mask","ip_addr","address","fbits","bits","sizes","bits_log1000","Math","log","floor","round","pow","ret","toFixed","export_rate","eps","scaleValue","exports_format","exports","exports_label","i18n","toLowerCase","fbits_from_bytes","bytes","fpackets","pps","fpoints","fflows","fps","fmsgs","mps","falerts","aps","fint","x","toString","replace","ffloat","fpercent","fdate","when","epoch","d","Date","capitaliseFirstLetter","string","charAt","toUpperCase","slice","String","prototype","startsWith","indexOf","get_trend","actual","getOSIcon","name","icon","search","abbreviateString","str","len","substring","bytesToSize","precision","kilobyte","megabyte","gigabyte","terabyte","capitalizeSingleWord","uc","capitalize","current","last","withColor","toggleAllTabs","enabled","disableAllDropdownsAndTabs","prop","enableAllDropdownsAndTabs","s","addCommas","nStr","x1","x2","rgx","scale","decimals","factor","formatValue","formatPackets","n","formatPoints","formatFlows","formatMessages","fmillis","bytesToVolume","bytesToVolumeAndLabel","bitsToSize","secondsToTime","seconds","days","hours","minutes","sec","msg","msg_array","years","format","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","S","getMilliseconds","$1","getFullYear","substr","k","epoch2Seen","tdiff","getTime","graphGetXAxisTicksFormat","diff_epoch","tickFormat","defaults","override","paramsToForm","hasOwnProperty","appendTo","paramsPairsEncode","jQuery","fn","disable","state","$this","disabled","toggleClass","hostkey2hostInfo","host_key","info","hostinfo","handle_tab_state","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","location","hash","tab","sformat","args","arguments","match","number","contains","_add_find_host_link","makeFindHostBeforeSubmitCallback","http_prefix","network","snmp_port_idx","asn","tstampToDateString","html_tag","timestamp","localized","d3","time","noHtml","cleanCustomHostUrl","host","parseQuery","queryString","query","pairs","pair","decodeURIComponent","getHistoryParameters","cur_params","new_params","new_query","param","baseUrl","protocol","pathname","check_status_code","status_code","status_text","$error_label","is_different","text","request_failed_message","show","alert","importModalHelper","load_config_xhr","hide","off","$button","file","files","no_file","reader","FileReader","onload","json_conf","invalid_file","done","status","xhr","statusText","reset_csrf","csrf","reload","fail","readAsText","serializeFormArray","serializedArray","serialized","forEach","includes","cleanForm","formSelector","reset","fetchWithTimeout","uri","controller","AbortController","config","signal","timeout","setTimeout","fetch","then","response","ok","Error","catch","document","ready","filename","schema_2_label","data_2_label","graph_i18n","initLabelMaps","_schema_2_label","_data_2_label","_graph_i18n","getSerieLabel","schema","serie","visualization","serie_index","data_label","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","port","exporter","ifname","profile","user_script","command","traffic_volume","traffic","getValueFormatter","metric_type","series","custom_formatter","stats","formatters","as_counter","max_val","makeFlatLineValues","tstart","tstep","num","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","prev_i","next_i","min","ceil","v","buildTotalSerie","data_series","transpose","g","sum","arrayToNvSerie","serie_data","start","step","buildOtherSerie","total_serie","visual_total","max","buildTimeArray","start_time","end_time","arr","fixTimeRange","chart","align_step","actual_step","epoch_end","epoch_begin","frame","align","tick_step","resolution","fmt","range_params","range","limit","x_fmt","findActualStep","raw_step","supported_steps","retention","now_ts","now","delta","partial","aggregation_dp","tframe","retention_dp","has_initial_zoom","current_zoom_level","canCompareBackwards","jump_duration","current_duration","fixJumpButtons","duration","showQuerySlow","hideQuerySlow","chart_data_sum","reduce","acc","pt","redrawExtraLines","chart_id","extra_lines","selectAll","xValueScale","xAxis","yValueScale","yAxis1","style","attachStackedChartCallback","zoom_reset_id","show_all_smooth","initial_range","ts_table_shown","pending_chart_request","pending_table_request","d3_sel","$chart","$zoom_reset","$graph_zoom","max_interval","initial_interval","is_max_zoom","first_time_loaded","manual_trigger_extra_series","datetime_format","max_cmp_over_total_ratio","max_line_over_total_ratio","query_timer","seconds_before_query_slow","query_completed","query_was_aborted","last_known_t","visualization_options","is_zoomed","unreachable_timestamps","spinner","chart_colors_full","chart_colors_min","split_directions_colors","format_unreachable","formatter","y","num_ticks_y1","num_ticks_y2","domain_y1","domain_y2","first_run","update_chart_data","new_data","datum","call","transition","ticks","yAxis2","yDomain1","yDomain2","cur_domain_y1","domain","cur_domain_y2","y1_sum","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","localStorage","getItem","legend","dispatch","legend_key","setItem","cur_zoom","t_start","xDomain","t_end","old_zoomed","is_user_zoom","updateStackedChart","push_state","pushState","zoom_level","fixChartButtons","updateZoom","zoom","force","zoom_in","cur_interval","datetimepicker","updateChartFromPickers","zoom_out","event","go","addEventListener","zoom_link","checkQueryCompleted","flows_dt","wait_num_queries","queryWasAborted","abortQuery","noData","tableRequestCompleted","getDataUrl","data_params","ts_compare","extended","old_start","old_end","old_interval","tend","no_spinner","on_load_callback","force_update","series_formatted_labels","new_end","zoomType","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","rsi","relativeStrengthIndexArray","periods","add_smoothed_serie","fn_to_use","smoothed","delta_serie","aligned","scaled","remaining","to_fill","splice","yDomainRatioY2","ref_serie","tok","was_unreachable","is_unreachable","tval","tlast","formatter1","value_formatter","statistics","tot_formatter","stats_formatter","yAxis1_formatter","second_axis_series","formatter2","value_formatter2","yAxis2_formatter","stats_table","average","avg","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","perc_val","by_serie","enabled_series","updateState","source_aggregation","always","pendingRequest","updateGraphsTableView","graph_old_view","graph_old_has_nindex","graph_old_nindex_query","tsQueryToTags","ts_query","pos","recheckGraphTableEntries","table_view","graph_table_views","graph_params","reset_selection","view_id","view","elem","html_id","min_step","items_ul","idx","next_item","nextAll","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","nindex_view","col","title","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","post","initial_point","detail_view","loadingYOffset","buttons","tableCallback","currentPage","stats_div","has_drilldown","some","drilldown","loading_time","num_records_processed","rowCallback","row_data","draw_processes_graph","graph_div_id","links","nodes","json","_link","source_pid","source","source_name","source_type","pid","target_pid","target_name","target_type","height","arrow_size","category10","layout","size","linkDistance","charge","tick","svg","enter","path","circle","drag","href","linkArc","transform","dx","dy","dr","sqrt","makeUniqueValidator","items_function","cmp_name","memberValueValidator","member","makePasswordPatternValidator","passwordPatternValidator","passwordMatchValidator","other_input","not","poolnameValidator","passwordMatchRecheck","items","not_empty","hostOrMacValidator","ipAddressValidator","INDEX_SEARCH_COLUMN","dataTable","ext","filterScripts","className","init","node","button_id","button_text","parsed","is_enabled","action","draw","popover","animation","self","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","[object Object]","badge","body","lang","interaction","requireInteraction","Notification","onclick","NotificationManager","requestPermission","err","pushNotification","canReceiveNotification","registration","getRegistration","showNotification","permissionNotification","permission","modal_id_ctr","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","Object","entries","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","loadFormData","delegateModalClosing","onModalInit","fillFormModal","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","timeoutId","$input","checkValidation","validation","validationMessage","validationEmptyMessage","cannotBeEmpty","isInputEmpty","trim","$parent","messageToShow","$error","setCustomValidity","validity","valid","clearTimeout","isValid","dataToSend","beforeSumbit","submitOptions","request","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","onSubmitError","resetButton","defaultValues","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","all","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","button","container","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","filters","columnIndex","filterID","tableAPI","createEntry","$entry","$dropdownTitle","prepend","$menuContainer","filterKey","dropdownId","$dropdownContainer","$dropdownButton","column","regex","$allEntry","setCurrentFilter","loaded","save","padZeroes","padStart","mins","alertNotifications","alertNotificationUtilsId","AlertNotification","delay","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","AlertNotificationUtils","hideAlert","$element","empty","noScope","pages","page","notificationId","destroy","updateBody","option","styles","warning","level","notification","render","notification_id"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["datatable_utils.js","ays_utils.js","ntopng_utils.js","graph_utils.js","ebpf_utils.js","ntopng_validators.js","plugin-script-datatable.js","main.js","notification-daemon.js","utils/modal-utils.js","utils/datatable-utils.js","utils/alert-notifications-utils.js"],"names":["datatableRemoveEmptyRow","table","$","remove","datatableAddEmptyRow","empty_str","columns","filter","this","css","length","html","datatableGetNumDisplayedItems","datatableIsEmpty","datatableGetByForm","form","parent","datatableUndoAddRow","new_row","bt_to_enable","callback_str","removeAttr","removeClass","closest","aysUpdateForm","dt","window","datatableForEachRow","callbacks","each","row_i","bind","i","datatableAddButtonCallback","td_idx","label","bs_class","link","append","datatableAddDeleteButtonCallback","datatableAddActionButtonCallback","datatableAddLinkButtonCallback","datatableMakeSelectUnique","tr_obj","added_rows_prefix","options","paramsExtend","on_change","noop","selector_fn","obj","find","first","datatableForeachSelectOtherThan","this_select","callback","other","datatableOptionChangeStatus","option_obj","enable","select_obj","should_reset","val","attr","new_val","datatableOnSelectEntryChange","change_callback","old_value","new_value","others","push","datatableOnAddSelectEntry","trigger","new_sel","select","on","datatableOrderedInsert","to_insert","to_insert_val","cmp_fn","a","b","inserted","tr","cmp_val","parseInt","isNaN","before","datatableIsLastPage","lastpage","hasClass","datatableGetColumn","id_key","id_value","res","data","resultset","item","datatableGetColumnIndex","column_key","index","findIndex","field","datatableInitRefreshRows","column_id","refresh_interval","trend_columns","$dt","rows","old_timer","old_req","clearInterval","removeData","abort","ids","id_to_row","row","data_id","params","custom_hosts","join","url","first_load","_process_result","result","JSON","parse","console","error","row_idx","row_html","row_tds","key","col_idx","cell","$cell","old_val","trend_value_formatter","arrows","parseFloat","warn","drawTrend","setInterval","ajax","type","cache","success","aysHandleForm","form_selector","default_options","submit_selector","on_dirty_callback","on_clean_callback","handle_submit_buttons","handle_datatable","handle_tabs","disable_on_dirty","ays_options","o","extend","areYouSure","addClass","aysResetForm","aysRecheckForm","aysGetDirty","fields_selector","getValue","$field","undefined","is","$option","isFieldDirty","origValue","curValue","dirty","l","dirty_status","input","NTOPNG_MIN_VISUAL_VALUE","REGEXES","ipv4","ipv6","domainName","macAddress","username","email","https","init_data_patterns","data_pattern","pattern","split","map","p","is_good_ipv4","RegExp","test","is_good_ipv6","is_mac_address","mac","isNumeric","value","is_network_mask","what","optional_mask","elems","mask","ip_addr","address","fbits","bits","sizes","bits_log1000","Math","log","floor","round","pow","ret","toFixed","export_rate","eps","scaleValue","exports_format","exports","exports_label","i18n","toLowerCase","fbits_from_bytes","bytes","fpackets","pps","fpoints","fflows","fps","fmsgs","mps","falerts","aps","fint","x","toString","replace","ffloat","fpercent","fdate","when","epoch","d","Date","capitaliseFirstLetter","string","charAt","toUpperCase","slice","String","prototype","startsWith","indexOf","get_trend","actual","getOSIcon","name","icon","search","abbreviateString","str","len","substring","bytesToSize","precision","kilobyte","megabyte","gigabyte","terabyte","capitalizeSingleWord","uc","capitalize","current","last","withColor","toggleAllTabs","enabled","disableAllDropdownsAndTabs","prop","enableAllDropdownsAndTabs","s","addCommas","nStr","x1","x2","rgx","scale","decimals","factor","formatValue","formatPackets","n","formatPoints","formatFlows","formatMessages","fmillis","bytesToVolume","bytesToVolumeAndLabel","bitsToSize","secondsToTime","seconds","days","hours","minutes","sec","msg","msg_array","years","format","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","S","getMilliseconds","$1","getFullYear","substr","k","epoch2Seen","tdiff","getTime","graphGetXAxisTicksFormat","diff_epoch","tickFormat","defaults","override","paramsToForm","hasOwnProperty","appendTo","paramsPairsEncode","jQuery","fn","disable","state","$this","disabled","toggleClass","hostkey2hostInfo","host_key","info","hostinfo","handle_tab_state","nav_object","default_tab","click","e","preventDefault","id","target","history","replaceState","location","hash","tab","sformat","args","arguments","match","number","contains","_add_find_host_link","makeFindHostBeforeSubmitCallback","http_prefix","network","snmp_port_idx","asn","tstampToDateString","html_tag","timestamp","localized","d3","time","noHtml","cleanCustomHostUrl","host","parseQuery","queryString","query","pairs","pair","decodeURIComponent","getHistoryParameters","cur_params","new_params","new_query","param","baseUrl","protocol","pathname","check_status_code","status_code","status_text","$error_label","is_different","text","request_failed_message","show","alert","importModalHelper","load_config_xhr","hide","off","$button","file","files","no_file","reader","FileReader","onload","json_conf","invalid_file","done","status","xhr","statusText","reset_csrf","csrf","reload","fail","readAsText","serializeFormArray","serializedArray","serialized","forEach","includes","cleanForm","formSelector","reset","fetchWithTimeout","uri","controller","AbortController","config","signal","timeout","setTimeout","fetch","then","response","ok","Error","catch","document","ready","filename","schema_2_label","data_2_label","graph_i18n","initLabelMaps","_schema_2_label","_data_2_label","_graph_i18n","getSerieLabel","schema","serie","visualization","serie_index","data_label","new_label","metrics_labels","ext_label","tags","category","l4proto","dscp_class","device","if_index","port","exporter","ifname","profile","user_script","command","traffic_volume","traffic","getValueFormatter","metric_type","series","custom_formatter","stats","formatters","as_counter","max_val","makeFlatLineValues","tstart","tstep","num","t","values","checkSeriesConsinstency","schema_name","count","rv","upsampleSerie","num_points","intervals","lerp","v0","v1","prev_i","next_i","min","ceil","v","buildTotalSerie","data_series","transpose","g","sum","arrayToNvSerie","serie_data","start","step","buildOtherSerie","total_serie","visual_total","max","buildTimeArray","start_time","end_time","arr","fixTimeRange","chart","align_step","actual_step","epoch_end","epoch_begin","frame","align","tick_step","resolution","fmt","range_params","range","limit","x_fmt","findActualStep","raw_step","supported_steps","retention","now_ts","now","delta","partial","aggregation_dp","tframe","retention_dp","has_initial_zoom","current_zoom_level","canCompareBackwards","jump_duration","current_duration","fixJumpButtons","duration","showQuerySlow","hideQuerySlow","chart_data_sum","reduce","acc","pt","redrawExtraLines","chart_id","extra_lines","selectAll","xValueScale","xAxis","yValueScale","yAxis1","style","attachStackedChartCallback","zoom_reset_id","show_all_smooth","initial_range","ts_table_shown","pending_chart_request","pending_table_request","d3_sel","$chart","$zoom_reset","$graph_zoom","max_interval","initial_interval","is_max_zoom","first_time_loaded","manual_trigger_extra_series","datetime_format","max_cmp_over_total_ratio","max_line_over_total_ratio","query_timer","seconds_before_query_slow","query_completed","query_was_aborted","last_known_t","visualization_options","is_zoomed","unreachable_timestamps","spinner","chart_colors_full","chart_colors_min","split_directions_colors","format_unreachable","formatter","y","num_ticks_y1","num_ticks_y2","domain_y1","domain_y2","first_run","update_chart_data","new_data","datum","call","transition","ticks","yAxis2","yDomain1","yDomain2","cur_domain_y1","domain","cur_domain_y2","y1_sum","yAxis","y2_sum","nv","utils","windowResize","update","isLegendDisabled","default_val","localStorage","getItem","legend","dispatch","legend_key","setItem","cur_zoom","t_start","xDomain","t_end","old_zoomed","is_user_zoom","updateStackedChart","push_state","pushState","zoom_level","fixChartButtons","updateZoom","zoom","force","zoom_in","cur_interval","datetimepicker","updateChartFromPickers","zoom_out","event","go","addEventListener","zoom_link","checkQueryCompleted","flows_dt","wait_num_queries","queryWasAborted","abortQuery","noData","tableRequestCompleted","getDataUrl","data_params","ts_compare","extended","old_start","old_end","old_interval","tend","no_spinner","on_load_callback","force_update","series_formatted_labels","new_end","zoomType","no_data_available","req_params","show_unreachable","no_fill","get","tickValues","color_i","chart_colors","j","current_step","serie_type","serie_color","split_directions","axis","color","has_full_data","additional_series","total","other_serie","past_serie","ratio_over_total","is_disabled","classed","extra_series","class","no_trend","num_smoothed_points","smooth_functions","rsi","relativeStrengthIndexArray","periods","add_smoothed_serie","fn_to_use","smoothed","delta_serie","aligned","scaled","remaining","to_fill","splice","yDomainRatioY2","ref_serie","tok","was_unreachable","is_unreachable","tval","tlast","formatter1","value_formatter","statistics","tot_formatter","stats_formatter","yAxis1_formatter","second_axis_series","formatter2","value_formatter2","yAxis2_formatter","stats_table","average","avg","total_cell","average_cell","min_cell","max_cell","perc_cell","min_val","min_val_idx","max_val_idx","perc_val","by_serie","enabled_series","updateState","source_aggregation","always","pendingRequest","updateGraphsTableView","graph_old_view","graph_old_has_nindex","graph_old_nindex_query","tsQueryToTags","ts_query","pos","recheckGraphTableEntries","table_view","graph_table_views","graph_params","reset_selection","view_id","view","elem","html_id","min_step","items_ul","idx","next_item","nextAll","divider","first_view","setActiveGraphsTableView","has_nindex","nindex_query","per_page","graph_table","nindex_buttons","params_obj","nindex_view","col","title","textAlign","width","hidden","actions","white-space","text-align","old_dt","datatable","perPage","noResultsMessage","ts_chart","no_results_found","post","initial_point","detail_view","loadingYOffset","buttons","tableCallback","currentPage","stats_div","has_drilldown","some","drilldown","loading_time","num_records_processed","rowCallback","row_data","draw_processes_graph","graph_div_id","links","nodes","json","_link","source_pid","source","source_name","source_type","pid","target_pid","target_name","target_type","height","arrow_size","category10","layout","size","linkDistance","charge","tick","svg","enter","path","circle","drag","href","linkArc","transform","dx","dy","dr","sqrt","makeUniqueValidator","items_function","cmp_name","memberValueValidator","member","makePasswordPatternValidator","passwordPatternValidator","passwordMatchValidator","other_input","not","poolnameValidator","passwordMatchRecheck","items","not_empty","hostOrMacValidator","ipAddressValidator","INDEX_SEARCH_COLUMN","dataTable","ext","filterScripts","className","init","node","button_id","button_text","parsed","is_enabled","action","draw","popover","animation","self","registerServiceWorker","navigator","serviceWorker","register","NOTIFICATION_DEBUG","PushNotificationBuilder","[object Object]","badge","body","lang","interaction","requireInteraction","Notification","onclick","NotificationManager","requestPermission","err","pushNotification","canReceiveNotification","registration","getRegistration","showNotification","permissionNotification","permission","modal_id_ctr","ModalHandler","element","dialog","dontDisableSubmit","observer","MutationObserver","list","bindFormValidation","toggleFormSubmission","observe","childList","subtree","initialState","currentState","firstCloseAttempt","isSubmitting","submitButton","snapshot","inputs","s1","s2","Object","entries","reportValidity","fadeOut","fadeIn","compareFormSnaphsot","selector","$hidden","loadFormData","delegateModalClosing","onModalInit","fillFormModal","parents","onModalShow","createFormSnapshot","delegateResetButton","submitHandler","isSyncRequest","stopPropagation","makeRequest","timeoutId","$input","checkValidation","validation","validationMessage","validationEmptyMessage","cannotBeEmpty","isInputEmpty","trim","$parent","messageToShow","$error","setCustomValidity","validity","valid","clearTimeout","isValid","dataToSend","beforeSumbit","submitOptions","request","method","endpoint","stringify","dataType","contentType","textStatus","resetAfterSubmit","onSubmitSuccess","delegateSubmit","jqxhr","errorThrown","onSubmitError","resetButton","defaultValues","serializeArray","modalHandler","loadedData","sent","onModalReset","defaultData","mh","dataTableExt","sErrMode","formatSecondsToHHMMSS","DataTableUtils","dtButtons","dom","pagingType","lengthMenu","all","language","showing_x_to_y_rows","script_search","infoFiltered","paginate","previous","next","saveState","button","container","dataSrc","extension","hasFilters","stateSaveCallback","settings","sInstance","stateLoadCallback","stateSaveParams","activeFilter","filters","columnIndex","filterID","tableAPI","createEntry","$entry","$dropdownTitle","prepend","$menuContainer","filterKey","dropdownId","$dropdownContainer","$dropdownButton","column","regex","$allEntry","setCurrentFilter","loaded","save","padZeroes","padStart","mins","alertNotifications","alertNotificationUtilsId","AlertNotification","delay","$toast","$toastHeader","bg","$toastBody","$anchor","dismissable","isAboveAll","toast","AlertNotificationUtils","hideAlert","$element","empty","noScope","pages","page","notificationId","destroy","updateBody","option","styles","warning","level","notification","render","notification_id"],"mappings":"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"} \ No newline at end of file diff --git a/httpdocs/js/utils/datatable-utils.js b/httpdocs/js/utils/datatable-utils.js index 35b6f52fec..2482a41301 100644 --- a/httpdocs/js/utils/datatable-utils.js +++ b/httpdocs/js/utils/datatable-utils.js @@ -1,6 +1,7 @@ jQuery.fn.dataTableExt.sErrMode = 'console'; jQuery.fn.dataTableExt.formatSecondsToHHMMSS = (data, type, row) => { if (isNaN(data)) return data; + if (type == "display" && data == 0) return '-'; if (type == "display") return secondsToTime(data); return data; };