1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[1091,34271,57843,99127],{49897:(M,m,r)=>{r.r(m),r.d(m,{del:()=>R,get:()=>v,head:()=>y,patch:()=>c,post:()=>x,put:()=>P});var l=r(91749),D=r.n(l),O=r(33530),_=r.n(O);const p=config.relative_path+"/api/v3";async function f(t,e){if(t.url=t.url.startsWith("/api")?config.relative_path+t.url:p+t.url,typeof e=="function"){E(t).then(a=>e(null,a),a=>e(a));return}try{return await E(t)}catch(a){if(a.message==="A valid login session was not found. Please log in and try again."){const{url:n}=await(0,l.fire)("filter:admin.reauth",{url:"login"});return(0,O.confirm)("[[error:api.reauth-required]]",i=>{i&&ajaxify.go(n)})}throw a}}async function E(t){const{url:e}=t;delete t.url,t.data&&!(t.data instanceof FormData)&&(t.data=JSON.stringify(t.data||{}),t.headers["content-type"]="application/json; charset=utf-8"),{options:t}=await(0,l.fire)("filter:api.options",{options:t}),t.data&&(t.body=t.data,delete t.data);const a=await fetch(e,t),{headers:n}=a;if(n.get("x-redirect"))return E({url:n.get("x-redirect"),...t});const i=n.get("content-type"),d=i&&i.startsWith("application/json");let o;if(t.method!=="HEAD"&&(d?o=await a.json():o=await a.text()),!a.ok)throw o?new Error(d?o.status.message:o):new Error(a.statusText);return d&&o&&o.hasOwnProperty("status")&&o.hasOwnProperty("response")?o.response:o}function v(t,e,a){return f({url:t+(e&&Object.keys(e).length?"?"+$.param(e):"")},a)}function y(t,e,a){return f({url:t+(e&&Object.keys(e).length?"?"+$.param(e):""),method:"HEAD"},a)}function x(t,e,a){return f({url:t,method:"POST",data:e,headers:{"x-csrf-token":config.csrf_token}},a)}function c(t,e,a){return f({url:t,method:"PATCH",data:e,headers:{"x-csrf-token":config.csrf_token}},a)}function P(t,e,a){return f({url:t,method:"PUT",data:e,headers:{"x-csrf-token":config.csrf_token}},a)}function R(t,e,a){return f({url:t,method:"DELETE",data:e,headers:{"x-csrf-token":config.csrf_token}},a)}},98569:(M,m,r)=>{r.r(m),r.d(m,{init:()=>R});var l=r(70106),D=r(81335),O=r.n(D),_=r(33530),p=r.n(_),f=r(17459),E=r.n(f),v=r(49897),y=r(91749),x=r.n(y);l.t1.register(l.ZT,l.PP,l.kc,l.No,l.FN,l.m_,l.dN);let c=null,P=!1;function R({set:a,dataset:n}){const i=document.getElementById("analytics-traffic"),d=i.getContext("2d"),o=utils.getHoursArray();P=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),P&&(l.t1.defaults.plugins.tooltip.enabled=!1),t({set:a});const s=f.Translator.create();return new Promise(h=>{s.translateKey(`admin/menu:${ajaxify.data.template.name.replace("admin/","")}`,[]).then(u=>{const g={labels:o,datasets:[{label:u,fill:!0,tension:.25,backgroundColor:"rgba(151,187,205,0.2)",borderColor:"rgba(151,187,205,1)",pointBackgroun
1dColor:"rgba(151,187,205,1)",pointHoverBackgroundColor:"rgba(151,187,205,1)",pointBorderColor:"#fff",pointHoverBorderColor:"rgba(151,187,205,1)",data:n||[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]};i.width=$(i).parent().width(),g.datasets[0].yAxisID="left-y-axis",c=new l.t1(d,{type:"line",data:g,options:{responsive:!0,scales:{"left-y-axis":{type:"linear",position:"left",beginAtZero:!0,title:{display:!0,text:u}}},interaction:{intersect:!1,mode:"index"}}}),n?h(c):e(a).then(h)})})}function t({set:a}){$('[data-action="updateGraph"]:not([data-units="custom"])').on("click",function(){let n=new Date;const i=$(this).attr("data-amount");$(this).attr("data-units")==="days"&&n.setHours(0,0,0,0),n=n.getTime(),e(a,$(this).attr("data-units"),n,i),Promise.resolve().then(function(){var d=[r(17459)];(function(o){o.translate("[[admin/dashboard:page-views-custom]]",function(s){$('[data-action="updateGraph"][data-units="custom"]').text(s)})}).apply(null,d)}).catch(r.oe)}),$('[data-action="updateGraph"][data-units="custom"]').on("click",function(){const n=$(this);D.render("admin/partials/pageviews-range-select",{}).then(function(i){const d=_.dialog({title:"[[admin/dashboard:page-views-custom]]",message:i,buttons:{submit:{label:"[[global:search]]",className:"btn-primary",callback:o}}}).on("shown.bs.modal",function(){const s=new Date,h=s.toISOString().slice(0,10);s.setDate(s.getDate()-1);const u=s.toISOString().slice(0,10);d.find("#startRange").val(n.attr("data-startRange")||u),d.find("#endRange").val(n.attr("data-endRange")||h)});function o(){const s=d.find("form").serializeObject(),h=/\d{4}-\d{2}-\d{2}/;if(!s.startRange&&!s.endRange){e(a,"days");return}else if(!h.test(s.startRange)||!h.test(s.endRange))return d.find(".alert-danger").removeClass("hidden"),!1;let u=new Date(s.endRange);u.setDate(u.getDate()+1),u=u.getTime();const g=(u-new Date(s.startRange).getTime())/(1e3*60*60*24);e(a,"days",u,g),n.attr("data-startRange",s.startRange),n.attr("data-endRange",s.endRange),n.html(s.startRange+" – "+s.endRange)}})})}function e(a,n=ajaxify.data.query.units||"hours",i=ajaxify.data.query.until,d=ajaxify.data.query.count){return c?new Promise(o=>{v.get(`/admin/analytics/${a}`,{units:n,until:i,amount:d}).then(s=>{n==="days"?c.data.xLabels=utils.getDaysArray(i,d):c.data.xLabels=utils.getHoursArray(),c.data.datasets[0].data=s,c.data.labels=c.data.xLabels,c.update();const h=$("#view-as-json"),u=$.param({units:n||"hours",until:i,count:d});h.attr("href",`${config.relative_path}/api/v3/admin/analytics/${ajaxify.data.set}?${u}`);const g=ajaxify.removeRelativePath(ajaxify.data.url.slice(1));ajaxify.updateHistory(`${g}?${u}`,!0),y.fire("action:admin.dashboard.updateGraph",{graph:c}),o(c)})}):Promise.reject(new Error("[[error:invalid-data]]"))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.