(function(t){function e(e){for(var s,i,r=e[0],c=e[1],l=e[2],d=0,b=[];d0?n("b-card",[n("h2",[t._v(t._s(t.$t("runningTasks")))]),n("b-list-group",t._l(t.tasks,(function(t){return n("TaskListItem",{key:t.id,attrs:{task:t}})})),1)],1):t._e(),n("b-card",{staticClass:"mt-4"},[n("b-card-title",[t._v(t._s(t.$t("taskHistory")))]),n("br"),n("b-table",{attrs:{id:"task-history",items:t.historyItems,fields:t.historyFields,"current-page":t.historyCurrentPage,"tbody-tr-class":t.rowClass,"per-page":10},scopedSlots:t._u([{key:"cell(logs)",fn:function(e){return[n("router-link",{attrs:{to:"/log/"+e.item.logs}},[t._v(t._s(t.$t("logs")))])]}}])}),n("b-pagination",{attrs:{limit:"20","total-rows":t.historyItems.length,"per-page":10},model:{value:t.historyCurrentPage,callback:function(e){t.historyCurrentPage=e},expression:"historyCurrentPage"}})],1)],1)},wt=[],yt=(n("d81d"),n("5319"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("b-list-group-item",[n("b-row",{staticStyle:{height:"50px"}},[n("b-col",[n("h5",[t._v(t._s(t.task.display_name))])]),n("b-col",{staticClass:"shrink"},[n("router-link",{staticClass:"btn btn-link",attrs:{to:"/log/"+t.task.id}},[t._v(t._s(t.$t("logs")))])],1),n("b-col",{staticClass:"shrink"},[n("b-btn",{attrs:{variant:"link"},on:{click:function(e){return t.killTask(t.task.id)}}},[t._v(t._s(t.$t("kill")))])],1)],1),n("b-row",[n("b-col",[n("b-progress",{attrs:{max:t.task.progress.count}},[n("b-progress-bar",{attrs:{value:t.task.progress.done,"label-html":t.label,striped:!t.task.progress.waiting}})],1)],1)],1)],1)}),Ot=[],Nt={name:"TaskListItem",props:["task"],computed:{label:function(){var t=this.task.progress.count,e=this.task.progress.done;return"".concat(e,"/").concat(t,"")}},methods:{killTask:function(t){var e=this;O.killTask(t).then((function(){e.$bvToast.toast(e.$t("killConfirmation"),{title:e.$t("killConfirmationTitle"),variant:"success",toaster:"b-toaster-bottom-right"})}))}}},St=Nt,Tt=(n("74e5"),Object(f["a"])(St,yt,Ot,!1,null,"9b017c42",null)),It=Tt.exports,Jt={name:"Tasks",components:{TaskListItem:It},data:function(){return{loading:!0,tasks:[],taskHistory:[],timerId:null,historyFields:[{key:"name",label:this.$t("taskName")},{key:"time",label:this.$t("taskStarted")},{key:"duration",label:this.$t("taskDuration")},{key:"status",label:this.$t("taskStatus")},{key:"logs",label:this.$t("logs")}],historyCurrentPage:1,historyItems:[]}},props:{msg:String},mounted:function(){var t=this;this.loading=!0,this.update().then((function(){return t.loading=!1})),this.timerId=window.setInterval(this.update,1e3),this.updateHistory()},destroyed:function(){this.timerId&&window.clearInterval(this.timerId)},methods:{rowClass:function(t){return"failed"===t.status?"table-danger":null},updateHistory:function(){var t=this;O.getTaskHistory().then((function(e){t.historyItems=e.data.map((function(e){return{id:e.id,name:e.name,duration:t.taskDuration(e),time:U()(e.started).format("dd, MMM Do YYYY, HH:mm:ss"),logs:e.id,status:0===e.return_code?"ok":"failed"}}))}))},update:function(){var t=this;return O.getTasks().then((function(e){t.tasks=e.data}))},taskDuration:function(t){var e=U()(t.started),n=U()(t.ended),s=U.a.utc(n.diff(e)).format("HH[h] mm[m] ss[s]");return s=s.replace("00h ",""),s=s.replace(/^00m /,""),s=s.replace(/00s/,"<1s"),s=s.replace(/^0/,""),s}}},Ct=Jt,Lt=(n("fd0d"),Object(f["a"])(Ct,xt,wt,!1,null,"46960281",null)),Et=Lt.exports,zt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("b-card",[n("b-card-title",[t._v(" "+t._s(t.name)+" "),n("small",{staticStyle:{"vertical-align":"top"}},[!t.loading&&t.frontend.running?n("b-badge",{attrs:{variant:"success"}},[t._v(t._s(t.$t("online")))]):t.loading?t._e():n("b-badge",{attrs:{variant:"secondary"}},[t._v(t._s(t.$t("offline")))])],1)]),t.loading?t._e():n("div",{staticClass:"mb-3"},[n("b-button",{staticClass:"mr-1",attrs:{disabled:t.frontend.running||!t.valid,variant:"success"},on:{click:function(e){return t.start()}}},[t._v(t._s(t.$t("start"))+" ")]),n("b-button",{staticClass:"mr-1",attrs:{disabled:!t.frontend.running,variant:"danger"},on:{click:function(e){return t.stop()}}},[t._v(t._s(t.$t("stop"))+" ")]),n("b-button",{staticClass:"mr-1",attrs:{disabled:!t.frontend.running,variant:"primary",href:t.frontendUrl,target:"_blank"}},[t._v(" "+t._s(t.$t("go"))+" ")]),n("b-button",{attrs:{variant:"danger"},on:{click:function(e){return t.deleteFrontend()}}},[t._v(t._s(t.$t("delete")))])],1),t.loading?n("b-progress",{attrs:{striped:"",animated:"",value:"100"}}):n("b-card-body",[n("h4",[t._v(t._s(t.$t("frontendOptions.title")))]),n("b-card",[n("b-form-checkbox",{on:{change:function(e){return t.update()}},model:{value:t.frontend.auto_start,callback:function(e){t.$set(t.frontend,"auto_start",e)},expression:"frontend.auto_start"}},[t._v(" "+t._s(t.$t("autoStart"))+" ")]),n("b-form-checkbox",{on:{change:function(e){return t.update()}},model:{value:t.frontend.enable_monitoring,callback:function(e){t.$set(t.frontend,"enable_monitoring",e)},expression:"frontend.enable_monitoring"}},[t._v(" "+t._s(t.$t("enableMonitoring"))+" ")]),n("label",[t._v(t._s(t.$t("extraQueryArgs")))]),n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.frontend.extra_query_args,callback:function(e){t.$set(t.frontend,"extra_query_args",e)},expression:"frontend.extra_query_args"}}),n("label",[t._v(t._s(t.$t("customUrl")))]),n("b-form-input",{attrs:{placeholder:"http://"},on:{change:function(e){return t.update()}},model:{value:t.frontend.custom_url,callback:function(e){t.$set(t.frontend,"custom_url",e)},expression:"frontend.custom_url"}}),n("br"),t.valid?t._e():n("b-alert",{attrs:{variant:"warning",show:""}},[t._v(t._s(t.$t("frontendOptions.noJobSelectedWarning")))]),n("JobCheckboxGroup",{attrs:{frontend:t.frontend},on:{input:function(e){return t.update()}}})],1),n("br"),n("h4",[t._v(t._s(t.$t("jobOptions.title")))]),n("b-card",[n("WebOptions",{attrs:{options:t.frontend.web_options,"frontend-name":t.$route.params.name},on:{change:function(e){return t.update()}}})],1)],1)],1)},Ft=[],Ut=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("h5",[t._v(t._s(t.$t("selectJobs")))]),t.loading?n("b-progress",{attrs:{striped:"",animated:"",value:"100"}}):n("b-form-group",[t.jobs.length>0?n("b-form-checkbox-group",{attrs:{checked:t.frontend.jobs},on:{input:function(e){t.frontend.jobs=e,t.$emit("input")}}},t._l(t.jobs,(function(e){return n("div",{key:e.name},[n("b-form-checkbox",{attrs:{disabled:"indexed"!==e.status,value:e.name}},[t._v("["+t._s(e.name)+"]")]),n("br")],1)})),0):n("div",[n("span",{staticClass:"text-muted"},[t._v(t._s(t.$t("jobOptions.noJobAvailable")))]),t._v("  "),n("router-link",{attrs:{to:"/"}},[t._v(t._s(t.$t("create")))])],1)],1)],1)},At=[],Mt={name:"JobCheckboxGroup",props:["frontend"],mounted:function(){var t=this;O.getJobs().then((function(e){t.jobs=e.data,t.loading=!1}))},data:function(){return{loading:!0}}},qt=Mt,Dt=Object(f["a"])(qt,Ut,At,!1,null,null,null),Ht=Dt.exports,Rt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("label",[t._v(t._s(t.$t("webOptions.esUrl")))]),n("b-alert",{staticClass:"mt-1",attrs:{variant:t.esTestOk?"success":"danger",show:t.showEsTestAlert}},[t._v(" "+t._s(t.esTestMessage)+" ")]),n("b-input-group",[n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.options.es_url,callback:function(e){t.$set(t.options,"es_url",e)},expression:"options.es_url"}}),n("b-input-group-append",[n("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){return t.testEs()}}},[t._v(t._s(t.$t("test")))])],1)],1),n("b-form-checkbox",{attrs:{disabled:!this.options.es_url.startsWith("https")},on:{change:function(e){return t.update()}},model:{value:t.options.es_insecure_ssl,callback:function(e){t.$set(t.options,"es_insecure_ssl",e)},expression:"options.es_insecure_ssl"}},[t._v(" "+t._s(t.$t("webOptions.esInsecure"))+" ")]),n("label",[t._v(t._s(t.$t("webOptions.esIndex")))]),n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.options.es_index,callback:function(e){t.$set(t.options,"es_index",e)},expression:"options.es_index"}}),n("label",[t._v(t._s(t.$t("webOptions.lang")))]),n("b-form-select",{attrs:{options:["en","fr","zh-CN"]},on:{change:function(e){return t.update()}},model:{value:t.options.lang,callback:function(e){t.$set(t.options,"lang",e)},expression:"options.lang"}}),n("label",[t._v(t._s(t.$t("webOptions.bind")))]),n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.options.bind,callback:function(e){t.$set(t.options,"bind",e)},expression:"options.bind"}}),n("label",[t._v(t._s(t.$t("webOptions.tagline")))]),n("b-form-textarea",{on:{change:function(e){return t.update()}},model:{value:t.options.tagline,callback:function(e){t.$set(t.options,"tagline",e)},expression:"options.tagline"}}),n("label",[t._v(t._s(t.$t("webOptions.auth")))]),n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.options.auth,callback:function(e){t.$set(t.options,"auth",e)},expression:"options.auth"}}),n("label",[t._v(t._s(t.$t("webOptions.tagAuth")))]),n("b-form-input",{on:{change:function(e){return t.update()}},model:{value:t.options.tag_auth,callback:function(e){t.$set(t.options,"tag_auth",e)},expression:"options.tag_auth"}})],1)},Bt=[],Pt={name:"WebOptions",props:["options","frontendName"],data:function(){return{showEsTestAlert:!1,esTestOk:!1,esTestMessage:""}},methods:{update:function(){this.options.es_url.startsWith("https")||(this.options.es_insecure_ssl=!1),this.$emit("change",this.options)},testEs:function(){var t=this;O.pingEs(this.options.es_url,this.options.es_insecure_ssl).then((function(e){t.showEsTestAlert=!0,t.esTestOk=e.data.ok,t.esTestMessage=e.data.message}))}}},Vt=Pt,Wt=Object(f["a"])(Vt,Rt,Bt,!1,null,"0425656b",null),Qt=Wt.exports,Gt={name:"Frontend",components:{JobCheckboxGroup:Ht,WebOptions:Qt},data:function(){return{loading:!0,frontend:null}},computed:{valid:function(){return!this.loading&&this.frontend.jobs.length>0},frontendUrl:function(){return this.frontend.custom_url?this.frontend.custom_url+this.args:this.frontend.web_options.bind.startsWith("0.0.0.0")?window.location.protocol+"//"+window.location.hostname+":"+this.port+this.args:window.location.protocol+"//"+this.frontend.web_options.bind+this.args},name:function(){return this.$route.params.name},port:function(){return this.frontend.web_options.bind.split(":")[1]},args:function(){var t=this.frontend.extra_query_args;return""!==t?"#"+(t.startsWith("?")?t:"?"+t):""}},mounted:function(){var t=this;O.getFrontend(this.name).then((function(e){t.frontend=e.data,t.loading=!1}))},methods:{start:function(){this.frontend.running=!0,O.startFrontend(this.name)},stop:function(){this.frontend.running=!1,O.stopFrontend(this.name)},deleteFrontend:function(){var t=this;O.deleteFrontend(this.name).then((function(){t.$router.push("/frontends")}))},update:function(){O.updateFrontend(this.name,this.frontend)}}},Yt=Gt,Zt=Object(f["a"])(Yt,zt,Ft,!1,null,null,null),Kt=Zt.exports,Xt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("b-card",[n("b-card-body",[n("h4",{staticClass:"mb-3"},[t._v(t._s(t.taskId)+" "+t._s(t.$t("logs")))]),t.$store.state.sist2AdminInfo?n("div",[t._v(" "+t._s(t.$t("logFile"))+" "),n("code",[t._v(t._s(t.$store.state.sist2AdminInfo.logs_folder)+"/sist2-"+t._s(t.taskId)+".log")]),n("br"),n("br")]):t._e(),n("b-row",[n("b-col",[n("span",[t._v(t._s(t.$t("logLevel")))]),n("b-select",{attrs:{options:t.levels.slice(0,-1)},on:{input:function(e){return t.connect()}},model:{value:t.logLevel,callback:function(e){t.logLevel=e},expression:"logLevel"}})],1),n("b-col",[n("span",[t._v(t._s(t.$t("logMode")))]),n("b-select",{attrs:{options:t.modeOptions},on:{input:function(e){return t.connect()}},model:{value:t.mode,callback:function(e){t.mode=e},expression:"mode"}})],1)],1),n("div",{staticClass:"mt-3 ml-1",attrs:{id:"log-tail-output"}})],1)],1)},te=[],ee={name:"Tail",data:function(){return{logLevel:"DEBUG",levels:["DEBUG","INFO","WARNING","ERROR","ADMIN","FATAL"],socket:null,mode:"follow",modeOptions:[{text:this.$t("follow"),value:"follow"},{text:this.$t("wholeFile"),value:"wholeFile"}]}},computed:{taskId:function(){return this.$route.params.taskId}},methods:{connect:function(){var t=this,e=0,n=document.getElementById("log-tail-output");n.replaceChildren(),null!==this.socket&&this.socket.close();var s="follow"===this.mode?32:9999999999;this.socket=new WebSocket("ws://".concat(window.location.host,"/log/").concat(this.taskId,"?n=").concat(s)),this.socket.onopen=function(){t.socket.send("Hello from client")},this.socket.onmessage=function(o){var a;try{a=JSON.parse(o.data)}catch(c){return void console.error(o.data)}if(!("ping"in a)&&(void 0===a.level&&("stderr"in a?(a.level="ERROR",a.message=a["stderr"]):(a.level="ADMIN",a.message=a["sist2-admin"]),a.datetime="",a.filepath=""),!(t.levels.indexOf(a.level)=s&&n.firstChild.remove()}}}},mounted:function(){this.connect()}},ne=ee,se=(n("b5eb"),Object(f["a"])(ne,Xt,te,!1,null,null,null)),oe=se.exports;s["default"].use(J["a"]);var ae=[{path:"/",name:"Home",component:K},{path:"/job/:name",name:"Job",component:$t},{path:"/task/",name:"Tasks",component:Et},{path:"/frontend/:name",name:"Frontend",component:Kt},{path:"/log/:taskId",name:"Tail",component:oe}],ie=new J["a"]({mode:"hash",base:"",routes:ae}),re=ie,ce=n("1da1"),le=(n("96cf"),n("e9c4"),n("2f62"));function ue(t){var e={jobDesktopNotificationMap:t.jobDesktopNotificationMap};localStorage.setItem("sist2-admin-settings",JSON.stringify(e)),console.log("SAVED"),console.log(e)}s["default"].use(le["a"]);var de=new le["a"].Store({state:{sist2AdminInfo:null,jobDesktopNotificationMap:{}},mutations:{setSist2AdminInfo:function(t,e){return t.sist2AdminInfo=e},setJobDesktopNotificationMap:function(t,e){return t.jobDesktopNotificationMap=e}},actions:{notify:function(){var t=Object(ce["a"])(regeneratorRuntime.mark((function t(e,n){var s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(s=e.state,s.jobDesktopNotificationMap[n.job]){t.next=4;break}return console.log("pass"),t.abrupt("return");case 4:new Notification(n.messageString.replace("$JOB$",n.job));case 5:case"end":return t.stop()}}),t)})));function e(e,n){return t.apply(this,arguments)}return e}(),setJobDesktopNotification:function(){var t=Object(ce["a"])(regeneratorRuntime.mark((function t(e,n){var s,o,a,i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(s=e.state,o=n.job,a=n.enabled,!0!==a){t.next=8;break}return t.next=5,Notification.requestPermission();case 5:if(i=t.sent,"granted"===i){t.next=8;break}return t.abrupt("return",!1);case 8:return s.jobDesktopNotificationMap[o]=a,ue(s),t.abrupt("return",!0);case 11:case"end":return t.stop()}}),t)})));function e(e,n){return t.apply(this,arguments)}return e}(),loadBrowserSettings:function(t){var e=t.commit,n=localStorage.getItem("sist2-admin-settings");if(n){var s=JSON.parse(n);e("setJobDesktopNotificationMap",s["jobDesktopNotificationMap"])}}},modules:{}}),be=n("a925"),pe={en:{start:"Start",stop:"Stop",go:"Go",online:"online",offline:"offline",delete:"Delete",runNow:"Index now",create:"Create",test:"Test",jobTitle:"job configuration",tasks:"Tasks",runningTasks:"Running tasks",frontends:"Frontends",jobDisabled:"There is no valid index for this job",status:"Status",taskHistory:"Task history",taskName:"Task name",taskStarted:"Started",taskDuration:"Duration",taskStatus:"Status",logs:"Logs",kill:"Kill",killConfirmation:"SIGTERM signal sent to sist2 process",killConfirmationTitle:"Confirmation",follow:"Follow",wholeFile:"Whole file",logLevel:"Log level",logMode:"Follow mode",logFile:"Reading log file",jobs:"Jobs",newJobName:"New job name",newJobHelp:"Create a new job to get started!",newFrontendName:"New frontend name",scanned:"last scan",autoStart:"Start automatically",runJobConfirmationTitle:"Task queued",runJobConfirmation:"Check the Tasks page to monitor the status.",monitoring:"Monitoring",enableMonitoring:"Enable monitoring",extraQueryArgs:"Extra query arguments when launching from sist2-admin",customUrl:"Custom URL when launching from sist2-admin",selectJobs:"Select jobs",webOptions:{esUrl:"Elasticsearch URL",esIndex:"Elasticsearch index name",esInsecure:"Do not verify SSL connections to Elasticsearch.",lang:"UI Language",bind:"Listen address",tagline:"Tagline in navbar",auth:"Basic auth in user:password format",tagAuth:"Basic auth in user:password format for tagging"},scanOptions:{title:"Scanning options",path:"Path",threads:"Number of threads",memThrottle:"Total memory threshold in MiB for scan throttling",thumbnailQuality:"Thumbnail quality, on a scale of 1.0 to 31.0, 1.0 being the best",thumbnailCount:"Number of thumbnails to generate. Set a value > 1 to create video previews, set to 0 to disable thumbnails.",thumbnailSize:"Thumbnail size, in pixels",contentSize:"Number of bytes to be extracted from text documents. Set to 0 to disable",rewriteUrl:"Serve files from this url instead of from disk",depth:"Scan up to this many subdirectories deep",archive:"Archive file mode",archivePassphrase:"Passphrase for encrypted archive files",ocrLang:"Tesseract language",ocrLangAlert:"You must select at least one language",ocrEbooks:"Enable OCR'ing of ebook files",ocrImages:"Enable OCR'ing of image files",exclude:"Files that match this regex will not be scanned",excludePlaceholder:"Exclude",fast:"Only index file names & mime type",checksums:"Calculate file checksums when scanning",readSubtitles:"Read subtitles from media files",memBuffer:"Maximum memory buffer size per thread in MiB for files inside archives",treemapThreshold:"Relative size threshold for treemap"},indexOptions:{title:"Indexing options",threads:"Number of threads",esUrl:"Elasticsearch URL",esIndex:"Elasticsearch index name",esInsecure:"Do not verify SSL connections to Elasticsearch.",batchSize:"Index batch size",script:"User script"},jobOptions:{title:"Job options",cron:"Job schedule",scheduleEnabled:"Enable scheduled re-scan",noJobAvailable:"No jobs available.",desktopNotifications:"Desktop notifications"},frontendOptions:{title:"Frontend options",noJobSelectedWarning:"You must select at least one job to start this frontend"},notifications:{indexCompleted:"Task completed for [$JOB$]"}}};s["default"].use(o["a"]),s["default"].use(a["a"]),s["default"].use(be["a"]);var fe=new be["a"]({locale:"en",messages:pe});s["default"].config.productionTip=!1,new s["default"]({router:re,store:de,i18n:fe,render:function(t){return t(I)}}).$mount("#app")},"74e5":function(t,e,n){"use strict";n("3829")},"85ec":function(t,e,n){},a00e:function(t,e,n){},b5eb:function(t,e,n){"use strict";n("2a76")},fd0d:function(t,e,n){"use strict";n("a00e")}}); //# sourceMappingURL=app.b34f501e.js.map