mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-07-03 03:36:58 +00:00
Enhanced peer list rendering
- Used IntersectionObserver to better render peer list, in case of too many peers will slow down browser
This commit is contained in:
parent
c2642259b4
commit
f578d5c1c9
@ -1 +1 @@
|
|||||||
import{_ as r,c as i,d as o,w as e,j as l,a as t,T as _,i as a,l as d,S as u}from"./index-dDYGV8L8.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(x,h,k,w,$,v){const n=l("RouterView");return t(),i("div",p,[o(n,null,{default:e(({Component:s,route:c})=>[o(_,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(d(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",f]]);export{B as default};
|
import{_ as r,c as i,d as o,w as e,j as l,a as t,T as _,i as a,l as d,S as u}from"./index-Dps0XZ-9.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(x,h,k,w,$,v){const n=l("RouterView");return t(),i("div",p,[o(n,null,{default:e(({Component:s,route:c})=>[o(_,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(d(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",f]]);export{B as default};
|
@ -1 +0,0 @@
|
|||||||
import{_ as r,c as i,d as o,w as e,j as l,a as t,T as _,i as a,l as d,S as u}from"./index-Nht8Bi7_.js";const m={name:"configuration"},p={class:"mt-md-5 mt-3 text-body"};function f(x,h,k,w,$,v){const n=l("RouterView");return t(),i("div",p,[o(n,null,{default:e(({Component:s,route:c})=>[o(_,{name:"fade2",mode:"out-in"},{default:e(()=>[(t(),a(u,null,{default:e(()=>[(t(),a(d(s),{key:c.path}))]),_:2},1024))]),_:2},1024)]),_:1})])}const B=r(m,[["render",f]]);export{B as default};
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
.fade-enter-active[data-v-4806af36]{transition-delay:var(--6ae61cbb)!important}.progress-bar[data-v-2626b1f8]{width:0;transition:all 1s cubic-bezier(.42,0,.22,1)}.filter a[data-v-c11207d6]{text-decoration:none}
|
.fade-enter-active[data-v-4806af36]{transition-delay:var(--6ae61cbb)!important}.progress-bar[data-v-2626b1f8]{width:0;transition:all 1s cubic-bezier(.42,0,.22,1)}.filter a[data-v-8300994b]{text-decoration:none}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
import{$ as w,r as c,H as x,D as B,o as _,a as l,c as b,b as t,d as o,n as D,m as $,s as N,B as m,i as v,q as M,g as T}from"./index-Nht8Bi7_.js";import{L as s}from"./localeText-ClObbhxX.js";const I={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},R={class:"container d-flex h-100 w-100"},S={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},V={class:"card rounded-3 shadow flex-grow-1 bg-danger-subtle border-danger-subtle",id:"deleteConfigurationContainer"},A={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},L={class:"mb-0"},P={class:"card-body px-4 text-muted"},W={class:"mb-0"},q={key:0},z={key:1},E={key:2,class:"d-flex align-items-center gap-2"},G=["placeholder"],H=["disabled"],J={__name:"deleteConfiguration",emits:["backup"],setup(O,{emit:k}){const i=w().params.id,g=c(""),h=x(),p=B(),r=c(!1),y=()=>{clearInterval(p.Peers.RefreshInterval),r.value=!0,M("/api/deleteWireguardConfiguration",{Name:i},n=>{n.status?(h.push("/"),p.newMessage("Server","Configuration deleted","success")):r.value=!1})},u=c(!0),d=c([]),f=()=>{u.value=!0,T("/api/getWireguardConfigurationBackup",{configurationName:i},n=>{d.value=n.data,u.value=!1})};_(()=>{f()});const C=k;return(n,e)=>(l(),b("div",I,[t("div",R,[t("div",S,[t("div",V,[t("div",A,[t("h5",L,[o(s,{t:"Are you sure to delete this configuration?"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=a=>n.$emit("close"))})]),t("div",P,[t("p",W,[o(s,{t:"Once you deleted this configuration:"})]),t("ul",null,[t("li",null,[o(s,{t:"All connected peers will get disconnected"})]),t("li",null,[o(s,{t:"Both configuration file (.conf) and database table related to this configuration will get deleted"})])]),t("div",{class:D(["alert",[u.value?"alert-secondary":d.value.length>0?"alert-success":"alert-danger"]])},[u.value?(l(),b("div",q,[e[5]||(e[5]=t("i",{class:"bi bi-search me-2"},null,-1)),o(s,{t:"Checking backups..."})])):d.value.length>0?(l(),b("div",z,[e[6]||(e[6]=t("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have "+d.value.length+" backups"},null,8,["t"])])):(l(),b("div",E,[e[9]||(e[9]=t("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have no backup"}),t("a",{role:"button",onClick:e[1]||(e[1]=a=>C("backup")),class:"ms-auto btn btn-sm btn-primary rounded-3"},[e[7]||(e[7]=t("i",{class:"bi bi-clock-history me-2"},null,-1)),o(s,{t:"Backup"})]),t("a",{role:"button",onClick:e[2]||(e[2]=a=>f()),class:"btn btn-sm btn-primary rounded-3"},e[8]||(e[8]=[t("i",{class:"bi bi-arrow-clockwise"},null,-1)]))]))],2),e[11]||(e[11]=t("hr",null,null,-1)),t("p",null,[o(s,{t:"If you're sure, please type in the configuration name below and click Delete"})]),$(t("input",{class:"form-control rounded-3 mb-3",placeholder:m(i),"onUpdate:modelValue":e[3]||(e[3]=a=>g.value=a),type:"text"},null,8,G),[[N,g.value]]),t("button",{class:"btn btn-danger w-100",onClick:e[4]||(e[4]=a=>y()),disabled:g.value!==m(i)||r.value},[e[10]||(e[10]=t("i",{class:"bi bi-trash-fill me-2 rounded-3"},null,-1)),r.value?(l(),v(s,{key:1,t:"Deleting..."})):(l(),v(s,{key:0,t:"Delete"}))],8,H)])])])])]))}};export{J as default};
|
|
@ -1 +1 @@
|
|||||||
import{$ as w,r as c,I as x,D as _,o as B,a as l,c as b,b as t,d as o,n as D,m as N,x as $,A as v,i as k,z as I,g as M}from"./index-dDYGV8L8.js";import{L as s}from"./localeText-D-BSDEyz.js";const T={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},A={class:"container d-flex h-100 w-100"},R={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},S={class:"card rounded-3 shadow flex-grow-1 bg-danger-subtle border-danger-subtle",id:"deleteConfigurationContainer"},V={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},z={class:"mb-0"},L={class:"card-body px-4 text-muted"},P={class:"mb-0"},W={key:0},E={key:1},G={key:2,class:"d-flex align-items-center gap-2"},O=["placeholder"],U=["disabled"],J={__name:"deleteConfiguration",emits:["backup","close"],setup(j,{emit:h}){const a=w().params.id,g=c(""),y=x(),p=_(),i=c(!1),C=()=>{clearInterval(p.Peers.RefreshInterval),i.value=!0,I("/api/deleteWireguardConfiguration",{Name:a},d=>{d.status?(y.push("/"),p.newMessage("Server","Configuration deleted","success")):i.value=!1})},r=c(!0),u=c([]),f=()=>{r.value=!0,M("/api/getWireguardConfigurationBackup",{configurationName:a},d=>{u.value=d.data,r.value=!1})};B(()=>{f()});const m=h;return(d,e)=>(l(),b("div",T,[t("div",A,[t("div",R,[t("div",S,[t("div",V,[t("h5",z,[o(s,{t:"Are you sure to delete this configuration?"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=n=>m("close"))})]),t("div",L,[t("p",P,[o(s,{t:"Once you deleted this configuration:"})]),t("ul",null,[t("li",null,[o(s,{t:"All connected peers will get disconnected"})]),t("li",null,[o(s,{t:"Both configuration file (.conf) and database table related to this configuration will get deleted"})])]),t("div",{class:D(["alert",[r.value?"alert-secondary":u.value.length>0?"alert-success":"alert-danger"]])},[r.value?(l(),b("div",W,[e[5]||(e[5]=t("i",{class:"bi bi-search me-2"},null,-1)),o(s,{t:"Checking backups..."})])):u.value.length>0?(l(),b("div",E,[e[6]||(e[6]=t("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have "+u.value.length+" backups"},null,8,["t"])])):(l(),b("div",G,[e[9]||(e[9]=t("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have no backup"}),t("a",{role:"button",onClick:e[1]||(e[1]=n=>m("backup")),class:"ms-auto btn btn-sm btn-primary rounded-3"},[e[7]||(e[7]=t("i",{class:"bi bi-clock-history me-2"},null,-1)),o(s,{t:"Backup"})]),t("a",{role:"button",onClick:e[2]||(e[2]=n=>f()),class:"btn btn-sm btn-primary rounded-3"},e[8]||(e[8]=[t("i",{class:"bi bi-arrow-clockwise"},null,-1)]))]))],2),e[11]||(e[11]=t("hr",null,null,-1)),t("p",null,[o(s,{t:"If you're sure, please type in the configuration name below and click Delete"})]),N(t("input",{class:"form-control rounded-3 mb-3",placeholder:v(a),"onUpdate:modelValue":e[3]||(e[3]=n=>g.value=n),type:"text"},null,8,O),[[$,g.value]]),t("button",{class:"btn btn-danger w-100",onClick:e[4]||(e[4]=n=>C()),disabled:g.value!==v(a)||i.value},[e[10]||(e[10]=t("i",{class:"bi bi-trash-fill me-2 rounded-3"},null,-1)),i.value?(l(),k(s,{key:1,t:"Deleting..."})):(l(),k(s,{key:0,t:"Delete"}))],8,U)])])])])]))}};export{J as default};
|
import{$ as w,r as c,I as x,D as _,o as B,a as l,c as b,b as t,d as o,n as D,m as N,x as $,A as v,i as k,z as I,g as M}from"./index-Dps0XZ-9.js";import{L as s}from"./localeText-EFD0OAZT.js";const T={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},A={class:"container d-flex h-100 w-100"},R={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"700px"}},S={class:"card rounded-3 shadow flex-grow-1 bg-danger-subtle border-danger-subtle",id:"deleteConfigurationContainer"},V={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},z={class:"mb-0"},L={class:"card-body px-4 text-muted"},P={class:"mb-0"},W={key:0},E={key:1},G={key:2,class:"d-flex align-items-center gap-2"},O=["placeholder"],U=["disabled"],J={__name:"deleteConfiguration",emits:["backup","close"],setup(j,{emit:h}){const a=w().params.id,g=c(""),y=x(),p=_(),i=c(!1),C=()=>{clearInterval(p.Peers.RefreshInterval),i.value=!0,I("/api/deleteWireguardConfiguration",{Name:a},d=>{d.status?(y.push("/"),p.newMessage("Server","Configuration deleted","success")):i.value=!1})},r=c(!0),u=c([]),f=()=>{r.value=!0,M("/api/getWireguardConfigurationBackup",{configurationName:a},d=>{u.value=d.data,r.value=!1})};B(()=>{f()});const m=h;return(d,e)=>(l(),b("div",T,[t("div",A,[t("div",R,[t("div",S,[t("div",V,[t("h5",z,[o(s,{t:"Are you sure to delete this configuration?"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:e[0]||(e[0]=n=>m("close"))})]),t("div",L,[t("p",P,[o(s,{t:"Once you deleted this configuration:"})]),t("ul",null,[t("li",null,[o(s,{t:"All connected peers will get disconnected"})]),t("li",null,[o(s,{t:"Both configuration file (.conf) and database table related to this configuration will get deleted"})])]),t("div",{class:D(["alert",[r.value?"alert-secondary":u.value.length>0?"alert-success":"alert-danger"]])},[r.value?(l(),b("div",W,[e[5]||(e[5]=t("i",{class:"bi bi-search me-2"},null,-1)),o(s,{t:"Checking backups..."})])):u.value.length>0?(l(),b("div",E,[e[6]||(e[6]=t("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have "+u.value.length+" backups"},null,8,["t"])])):(l(),b("div",G,[e[9]||(e[9]=t("i",{class:"bi bi-x-circle-fill me-2"},null,-1)),o(s,{t:"This configuration have no backup"}),t("a",{role:"button",onClick:e[1]||(e[1]=n=>m("backup")),class:"ms-auto btn btn-sm btn-primary rounded-3"},[e[7]||(e[7]=t("i",{class:"bi bi-clock-history me-2"},null,-1)),o(s,{t:"Backup"})]),t("a",{role:"button",onClick:e[2]||(e[2]=n=>f()),class:"btn btn-sm btn-primary rounded-3"},e[8]||(e[8]=[t("i",{class:"bi bi-arrow-clockwise"},null,-1)]))]))],2),e[11]||(e[11]=t("hr",null,null,-1)),t("p",null,[o(s,{t:"If you're sure, please type in the configuration name below and click Delete"})]),N(t("input",{class:"form-control rounded-3 mb-3",placeholder:v(a),"onUpdate:modelValue":e[3]||(e[3]=n=>g.value=n),type:"text"},null,8,O),[[$,g.value]]),t("button",{class:"btn btn-danger w-100",onClick:e[4]||(e[4]=n=>C()),disabled:g.value!==v(a)||i.value},[e[10]||(e[10]=t("i",{class:"bi bi-trash-fill me-2 rounded-3"},null,-1)),i.value?(l(),k(s,{key:1,t:"Deleting..."})):(l(),k(s,{key:0,t:"Delete"}))],8,U)])])])])]))}};export{J as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/index-DriC7tFa.js
vendored
1
src/static/app/dist/assets/index-DriC7tFa.js
vendored
File diff suppressed because one or more lines are too long
44
src/static/app/dist/assets/index-Nht8Bi7_.js
vendored
44
src/static/app/dist/assets/index-Nht8Bi7_.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
import{_ as t,G as e,t as o}from"./index-Nht8Bi7_.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return e(this.t)}}};function a(c,r,n,p,_,i){return o(this.getLocaleText)}const x=t(s,[["render",a]]);export{x as L};
|
|
@ -1 +0,0 @@
|
|||||||
import{_ as t,G as e,t as o}from"./index-dDYGV8L8.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return e(this.t)}}};function a(c,r,n,p,_,i){return o(this.getLocaleText)}const x=t(s,[["render",a]]);export{x as L};
|
|
1
src/static/app/dist/assets/localeText-EFD0OAZT.js
vendored
Normal file
1
src/static/app/dist/assets/localeText-EFD0OAZT.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as e,G as t,a as o,c as a,t as c}from"./index-Dps0XZ-9.js";const s={name:"localeText",props:{t:""},computed:{getLocaleText(){return t(this.t)}}};function n(r,p,l,_,i,x){return o(),a("span",null,c(this.getLocaleText),1)}const u=e(s,[["render",n]]);export{u as L};
|
@ -1 +0,0 @@
|
|||||||
import{L as c}from"./localeText-ClObbhxX.js";import{d as n}from"./dayjs.min-DENWFVBv.js";import{_ as d,a as r,c as m,b as s,d as i,f as t,t as e,n as l,j as _}from"./index-Nht8Bi7_.js";const p={name:"message",methods:{dayjs:n},components:{LocaleText:c},props:{message:Object},mounted(){setTimeout(()=>{this.message.show=!1},5e3)}},g=["id"],h={class:"card-body"},f={class:"d-flex"},x={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},u={class:"ms-auto"};function b(y,v,w,T,j,a){const o=_("LocaleText");return r(),m("div",{class:l(["card shadow rounded-3 position-relative message ms-auto",{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"}]),id:this.message.id},[s("div",h,[s("div",f,[s("small",x,[i(o,{t:"FROM "}),t(" "+e(this.message.from),1)]),s("small",u,e(a.dayjs().format("hh:mm A")),1)]),t(" "+e(this.message.content),1)])],10,g)}const M=d(p,[["render",b],["__scopeId","data-v-f50b8f0c"]]);export{M};
|
|
@ -1 +1 @@
|
|||||||
import{L as l}from"./localeText-D-BSDEyz.js";import{d as c}from"./dayjs.min-Bi-IywVu.js";import{_ as h,a as o,c as a,b as e,d as i,w as u,f as p,t as n,T as g,n as f,j as _}from"./index-dDYGV8L8.js";const x={name:"message",methods:{dayjs:c,hide(){this.ct(),this.message.show=!1},show(){this.timeout=setTimeout(()=>{this.message.show=!1},5e3)},ct(){clearTimeout(this.timeout)}},components:{LocaleText:l},props:{message:Object},mounted(){this.show()},data(){return{dismiss:!1,timeout:null}}},v=["id"],b={key:0,class:"d-flex"},w={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},y={class:"ms-auto"},T={key:1},k={class:"card-body d-flex align-items-center gap-3"};function M(j,s,C,L,t,m){const d=_("LocaleText");return o(),a("div",{onMouseenter:s[1]||(s[1]=r=>{t.dismiss=!0,this.ct()}),onMouseleave:s[2]||(s[2]=r=>{t.dismiss=!1,this.show()}),class:"card shadow rounded-3 position-relative message ms-auto",id:this.message.id},[e("div",{class:f([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[i(g,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(o(),a("div",T,[e("small",{onClick:s[0]||(s[0]=r=>m.hide()),class:"d-block mx-auto w-100 text-center",style:{cursor:"pointer"}},[s[3]||(s[3]=e("i",{class:"bi bi-x-lg me-2"},null,-1)),i(d,{t:"Dismiss"})])])):(o(),a("div",b,[e("small",w,[i(d,{t:"FROM "}),p(" "+n(this.message.from),1)]),e("small",y,n(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",k,[e("div",null,n(this.message.content),1)])],40,v)}const z=h(x,[["render",M],["__scopeId","data-v-94c76b54"]]);export{z as M};
|
import{L as l}from"./localeText-EFD0OAZT.js";import{d as c}from"./dayjs.min-DmFTj_Cv.js";import{_ as h,a as o,c as a,b as e,d as i,w as u,f as p,t as n,T as g,n as f,j as _}from"./index-Dps0XZ-9.js";const x={name:"message",methods:{dayjs:c,hide(){this.ct(),this.message.show=!1},show(){this.timeout=setTimeout(()=>{this.message.show=!1},5e3)},ct(){clearTimeout(this.timeout)}},components:{LocaleText:l},props:{message:Object},mounted(){this.show()},data(){return{dismiss:!1,timeout:null}}},v=["id"],b={key:0,class:"d-flex"},w={class:"fw-bold d-block",style:{"text-transform":"uppercase"}},y={class:"ms-auto"},T={key:1},k={class:"card-body d-flex align-items-center gap-3"};function M(j,s,C,L,t,m){const d=_("LocaleText");return o(),a("div",{onMouseenter:s[1]||(s[1]=r=>{t.dismiss=!0,this.ct()}),onMouseleave:s[2]||(s[2]=r=>{t.dismiss=!1,this.show()}),class:"card shadow rounded-3 position-relative message ms-auto",id:this.message.id},[e("div",{class:f([{"text-bg-danger":this.message.type==="danger","text-bg-success":this.message.type==="success","text-bg-warning":this.message.type==="warning"},"card-header pos"])},[i(g,{name:"zoom",mode:"out-in"},{default:u(()=>[t.dismiss?(o(),a("div",T,[e("small",{onClick:s[0]||(s[0]=r=>m.hide()),class:"d-block mx-auto w-100 text-center",style:{cursor:"pointer"}},[s[3]||(s[3]=e("i",{class:"bi bi-x-lg me-2"},null,-1)),i(d,{t:"Dismiss"})])])):(o(),a("div",b,[e("small",w,[i(d,{t:"FROM "}),p(" "+n(this.message.from),1)]),e("small",y,n(m.dayjs().format("hh:mm A")),1)]))]),_:1})],2),e("div",k,[e("div",null,n(this.message.content),1)])],40,v)}const z=h(x,[["render",M],["__scopeId","data-v-94c76b54"]]);export{z as M};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
src/static/app/dist/assets/osmap-BzrslzxI.js
vendored
10
src/static/app/dist/assets/osmap-BzrslzxI.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
import{_ as f,D as m,r as _,a as s,c as a,b as e,d as l,w as g,T as h}from"./index-dDYGV8L8.js";import{L as v}from"./localeText-D-BSDEyz.js";const y={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},x={class:"container d-flex h-100 w-100"},w={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},C={class:"card rounded-3 shadow w-100"},k={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},F={class:"mb-0"},T={class:"card-body p-4"},D={class:"d-flex"},S=["disabled"],B={key:0,class:"d-block"},M={key:1,class:"d-block",id:"check"},G=["value"],L={__name:"peerConfigurationFile",props:{configurationFile:String},emits:["close"],setup(i,{emit:r}){const c=r,d=i,n=m(),o=_(!1),u=async()=>{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(d.configurationFile).then(()=>{o.value=!0,setTimeout(()=>{o.value=!1},3e3)}).catch(()=>{n.newMessage("WGDashboard","Failed to copy","danger")}):(document.querySelector("#peerConfigurationFile").select(),document.execCommand("copy")?(o.value=!0,setTimeout(()=>{o.value=!1},3e3)):n.newMessage("WGDashboard","Failed to copy","danger"))};return(p,t)=>(s(),a("div",y,[e("div",x,[e("div",w,[e("div",C,[e("div",k,[e("h4",F,[l(v,{t:"Peer Configuration File"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=b=>c("close"))})]),e("div",T,[e("div",D,[e("button",{onClick:t[1]||(t[1]=b=>u()),disabled:o.value,class:"ms-auto btn bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 position-relative"},[l(h,{name:"slide-up",mode:"out-in"},{default:g(()=>[o.value?(s(),a("span",M,t[3]||(t[3]=[e("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(s(),a("span",B,t[2]||(t[2]=[e("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,S)]),e("textarea",{style:{height:"300px"},class:"form-control w-100 rounded-3 mt-2",id:"peerConfigurationFile",value:i.configurationFile},null,8,G)])])])])]))}},W=f(L,[["__scopeId","data-v-fcd3ae95"]]);export{W as default};
|
import{_ as f,D as m,r as _,a as s,c as a,b as e,d as l,w as g,T as h}from"./index-Dps0XZ-9.js";import{L as v}from"./localeText-EFD0OAZT.js";const y={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},x={class:"container d-flex h-100 w-100"},w={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},C={class:"card rounded-3 shadow w-100"},k={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},F={class:"mb-0"},T={class:"card-body p-4"},D={class:"d-flex"},S=["disabled"],B={key:0,class:"d-block"},M={key:1,class:"d-block",id:"check"},G=["value"],L={__name:"peerConfigurationFile",props:{configurationFile:String},emits:["close"],setup(i,{emit:r}){const c=r,d=i,n=m(),o=_(!1),u=async()=>{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(d.configurationFile).then(()=>{o.value=!0,setTimeout(()=>{o.value=!1},3e3)}).catch(()=>{n.newMessage("WGDashboard","Failed to copy","danger")}):(document.querySelector("#peerConfigurationFile").select(),document.execCommand("copy")?(o.value=!0,setTimeout(()=>{o.value=!1},3e3)):n.newMessage("WGDashboard","Failed to copy","danger"))};return(p,t)=>(s(),a("div",y,[e("div",x,[e("div",w,[e("div",C,[e("div",k,[e("h4",F,[l(v,{t:"Peer Configuration File"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=b=>c("close"))})]),e("div",T,[e("div",D,[e("button",{onClick:t[1]||(t[1]=b=>u()),disabled:o.value,class:"ms-auto btn bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 position-relative"},[l(h,{name:"slide-up",mode:"out-in"},{default:g(()=>[o.value?(s(),a("span",M,t[3]||(t[3]=[e("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(s(),a("span",B,t[2]||(t[2]=[e("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,S)]),e("textarea",{style:{height:"300px"},class:"form-control w-100 rounded-3 mt-2",id:"peerConfigurationFile",value:i.configurationFile},null,8,G)])])])])]))}},W=f(L,[["__scopeId","data-v-fcd3ae95"]]);export{W as default};
|
@ -1 +0,0 @@
|
|||||||
import{_ as f,D as m,r as _,a as s,c as a,b as e,d as l,w as g,T as h}from"./index-Nht8Bi7_.js";import{L as v}from"./localeText-ClObbhxX.js";const y={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},x={class:"container d-flex h-100 w-100"},w={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},C={class:"card rounded-3 shadow w-100"},k={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},F={class:"mb-0"},T={class:"card-body p-4"},D={class:"d-flex"},S=["disabled"],B={key:0,class:"d-block"},M={key:1,class:"d-block",id:"check"},G=["value"],L={__name:"peerConfigurationFile",props:{configurationFile:String},emits:["close"],setup(i,{emit:r}){const c=r,d=i,n=m(),o=_(!1),u=async()=>{navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(d.configurationFile).then(()=>{o.value=!0,setTimeout(()=>{o.value=!1},3e3)}).catch(()=>{n.newMessage("WGDashboard","Failed to copy","danger")}):(document.querySelector("#peerConfigurationFile").select(),document.execCommand("copy")?(o.value=!0,setTimeout(()=>{o.value=!1},3e3)):n.newMessage("WGDashboard","Failed to copy","danger"))};return(p,t)=>(s(),a("div",y,[e("div",x,[e("div",w,[e("div",C,[e("div",k,[e("h4",F,[l(v,{t:"Peer Configuration File"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=b=>c("close"))})]),e("div",T,[e("div",D,[e("button",{onClick:t[1]||(t[1]=b=>u()),disabled:o.value,class:"ms-auto btn bg-primary-subtle border-primary-subtle text-primary-emphasis rounded-3 position-relative"},[l(h,{name:"slide-up",mode:"out-in"},{default:g(()=>[o.value?(s(),a("span",M,t[3]||(t[3]=[e("i",{class:"bi bi-check-circle-fill"},null,-1)]))):(s(),a("span",B,t[2]||(t[2]=[e("i",{class:"bi bi-clipboard-fill"},null,-1)])))]),_:1})],8,S)]),e("textarea",{style:{height:"300px"},class:"form-control w-100 rounded-3 mt-2",id:"peerConfigurationFile",value:i.configurationFile},null,8,G)])])])])]))}},W=f(L,[["__scopeId","data-v-fcd3ae95"]]);export{W as default};
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
import{S as p,a as b}from"./schedulePeerJob-B__8Gari.js";import{_ as h,W as u,p as m,j as i,a as o,c as a,b as e,d as r,w as _,F as v,h as f,i as J,e as x,k as g}from"./index-Nht8Bi7_.js";import{L as w}from"./localeText-ClObbhxX.js";import"./vue-datepicker-vEbbWPoH.js";import"./dayjs.min-DENWFVBv.js";const P={name:"peerJobs",setup(){return{store:u()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:p,ScheduleDropdown:b},data(){return{}},methods:{deleteJob(d){this.selectedPeer.jobs=this.selectedPeer.jobs.filter(t=>t.JobID!==d.JobID)},addJob(){this.selectedPeer.jobs.unshift(JSON.parse(JSON.stringify({JobID:m().toString(),Configuration:this.selectedPeer.configuration.Name,Peer:this.selectedPeer.id,Field:this.store.PeerScheduleJobs.dropdowns.Field[0].value,Operator:this.store.PeerScheduleJobs.dropdowns.Operator[0].value,Value:"",CreationDate:"",ExpireDate:"",Action:this.store.PeerScheduleJobs.dropdowns.Action[0].value})))}}},S={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},y={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},C={class:"card rounded-3 shadow",style:{width:"700px"}},D={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},k={class:"card-body px-4 pb-4 pt-2 position-relative"},N={class:"d-flex align-items-center mb-3"},T={class:"card shadow-sm",key:"none",style:{height:"153px"}},I={class:"card-body text-muted text-center d-flex"},L={class:"m-auto"};function O(d,t,B,F,V,A){const n=i("LocaleText"),l=i("SchedulePeerJob");return o(),a("div",S,[e("div",y,[e("div",$,[e("div",C,[e("div",D,[e("h4",j,[r(n,{t:"Schedule Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",k,[e("div",N,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow",onClick:t[1]||(t[1]=s=>this.addJob())},[t[3]||(t[3]=e("i",{class:"bi bi-plus-lg me-2"},null,-1)),r(n,{t:"Job"})])]),r(g,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:_(()=>[(o(!0),a(v,null,f(this.selectedPeer.jobs,(s,E)=>(o(),J(l,{onRefresh:t[2]||(t[2]=c=>this.$emit("refresh")),onDelete:c=>this.deleteJob(s),dropdowns:this.store.PeerScheduleJobs.dropdowns,key:s.JobID,pjob:s},null,8,["onDelete","dropdowns","pjob"]))),128)),this.selectedPeer.jobs.length===0?(o(),a("div",T,[e("div",I,[e("h6",L,[r(n,{t:"This peer does not have any job yet."})])])])):x("",!0)]),_:1})])])])])])}const z=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{z as default};
|
|
@ -1 +1 @@
|
|||||||
import{S as p,a as b}from"./schedulePeerJob-DFTf27Fr.js";import{_ as h,W as u,y as m,j as i,a as o,c as a,b as e,d as r,w as _,F as v,h as f,i as J,e as x,k as g}from"./index-dDYGV8L8.js";import{L as w}from"./localeText-D-BSDEyz.js";import"./vue-datepicker-Ca665Yye.js";import"./dayjs.min-Bi-IywVu.js";const P={name:"peerJobs",setup(){return{store:u()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:p,ScheduleDropdown:b},data(){return{}},methods:{deleteJob(d){this.selectedPeer.jobs=this.selectedPeer.jobs.filter(t=>t.JobID!==d.JobID)},addJob(){this.selectedPeer.jobs.unshift(JSON.parse(JSON.stringify({JobID:m().toString(),Configuration:this.selectedPeer.configuration.Name,Peer:this.selectedPeer.id,Field:this.store.PeerScheduleJobs.dropdowns.Field[0].value,Operator:this.store.PeerScheduleJobs.dropdowns.Operator[0].value,Value:"",CreationDate:"",ExpireDate:"",Action:this.store.PeerScheduleJobs.dropdowns.Action[0].value})))}}},y={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},S={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},C={class:"card rounded-3 shadow",style:{width:"700px"}},D={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},k={class:"card-body px-4 pb-4 pt-2 position-relative"},N={class:"d-flex align-items-center mb-3"},T={class:"card shadow-sm",key:"none",style:{height:"153px"}},I={class:"card-body text-muted text-center d-flex"},L={class:"m-auto"};function O(d,t,B,F,V,A){const n=i("LocaleText"),l=i("SchedulePeerJob");return o(),a("div",y,[e("div",S,[e("div",$,[e("div",C,[e("div",D,[e("h4",j,[r(n,{t:"Schedule Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",k,[e("div",N,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow",onClick:t[1]||(t[1]=s=>this.addJob())},[t[3]||(t[3]=e("i",{class:"bi bi-plus-lg me-2"},null,-1)),r(n,{t:"Job"})])]),r(g,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:_(()=>[(o(!0),a(v,null,f(this.selectedPeer.jobs,(s,E)=>(o(),J(l,{onRefresh:t[2]||(t[2]=c=>this.$emit("refresh")),onDelete:c=>this.deleteJob(s),dropdowns:this.store.PeerScheduleJobs.dropdowns,key:s.JobID,pjob:s},null,8,["onDelete","dropdowns","pjob"]))),128)),this.selectedPeer.jobs.length===0?(o(),a("div",T,[e("div",I,[e("h6",L,[r(n,{t:"This peer does not have any job yet."})])])])):x("",!0)]),_:1})])])])])])}const z=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{z as default};
|
import{S as p,a as b}from"./schedulePeerJob-CNVLsTZg.js";import{_ as h,W as u,y as m,j as i,a as o,c as a,b as e,d as r,w as _,F as v,h as f,i as J,e as x,k as g}from"./index-Dps0XZ-9.js";import{L as w}from"./localeText-EFD0OAZT.js";import"./vue-datepicker-DlPDai8n.js";import"./dayjs.min-DmFTj_Cv.js";const P={name:"peerJobs",setup(){return{store:u()}},props:{selectedPeer:Object},components:{LocaleText:w,SchedulePeerJob:p,ScheduleDropdown:b},data(){return{}},methods:{deleteJob(d){this.selectedPeer.jobs=this.selectedPeer.jobs.filter(t=>t.JobID!==d.JobID)},addJob(){this.selectedPeer.jobs.unshift(JSON.parse(JSON.stringify({JobID:m().toString(),Configuration:this.selectedPeer.configuration.Name,Peer:this.selectedPeer.id,Field:this.store.PeerScheduleJobs.dropdowns.Field[0].value,Operator:this.store.PeerScheduleJobs.dropdowns.Operator[0].value,Value:"",CreationDate:"",ExpireDate:"",Action:this.store.PeerScheduleJobs.dropdowns.Action[0].value})))}}},y={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},S={class:"container d-flex h-100 w-100"},$={class:"m-auto modal-dialog-centered dashboardModal"},C={class:"card rounded-3 shadow",style:{width:"700px"}},D={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},k={class:"card-body px-4 pb-4 pt-2 position-relative"},N={class:"d-flex align-items-center mb-3"},T={class:"card shadow-sm",key:"none",style:{height:"153px"}},I={class:"card-body text-muted text-center d-flex"},L={class:"m-auto"};function O(d,t,B,F,V,A){const n=i("LocaleText"),l=i("SchedulePeerJob");return o(),a("div",y,[e("div",S,[e("div",$,[e("div",C,[e("div",D,[e("h4",j,[r(n,{t:"Schedule Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",k,[e("div",N,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow",onClick:t[1]||(t[1]=s=>this.addJob())},[t[3]||(t[3]=e("i",{class:"bi bi-plus-lg me-2"},null,-1)),r(n,{t:"Job"})])]),r(g,{name:"schedulePeerJobTransition",tag:"div",class:"position-relative"},{default:_(()=>[(o(!0),a(v,null,f(this.selectedPeer.jobs,(s,E)=>(o(),J(l,{onRefresh:t[2]||(t[2]=c=>this.$emit("refresh")),onDelete:c=>this.deleteJob(s),dropdowns:this.store.PeerScheduleJobs.dropdowns,key:s.JobID,pjob:s},null,8,["onDelete","dropdowns","pjob"]))),128)),this.selectedPeer.jobs.length===0?(o(),a("div",T,[e("div",I,[e("h6",L,[r(n,{t:"This peer does not have any job yet."})])])])):x("",!0)]),_:1})])])])])])}const z=h(P,[["render",O],["__scopeId","data-v-5bbdd42b"]]);export{z as default};
|
@ -1 +1 @@
|
|||||||
import{S as _}from"./schedulePeerJob-DFTf27Fr.js";import{_ as g,W as v,y as f,j as c,a as o,c as r,b as e,d,F as p,h as b,t as m,e as y,i as x}from"./index-dDYGV8L8.js";import{L as J}from"./localeText-D-BSDEyz.js";import"./vue-datepicker-Ca665Yye.js";import"./dayjs.min-Bi-IywVu.js";const w={name:"peerJobsAllModal",setup(){return{store:v()}},components:{LocaleText:J,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},methods:{getuuid(){return f()}},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},$={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},k={class:"container d-flex h-100 w-100"},A={class:"m-auto modal-dialog-centered dashboardModal"},L={class:"card rounded-3 shadow",style:{width:"900px"}},S={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},C={class:"card-body px-4 pb-4 pt-2"},P={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},M={class:"accordion-header"},B=["data-bs-target"],N={key:0},D={class:"text-muted"},T=["id"],V={class:"accordion-body"},F={key:1,class:"card shadow-sm",style:{height:"153px"}},O={class:"card-body text-muted text-center d-flex"},W={class:"m-auto"};function E(a,t,I,R,q,z){const n=c("LocaleText"),u=c("SchedulePeerJob");return o(),r("div",$,[e("div",k,[e("div",A,[e("div",L,[e("div",S,[e("h4",j,[d(n,{t:"All Active Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",C,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow mb-2",onClick:t[1]||(t[1]=s=>this.$emit("allLogs"))},[t[4]||(t[4]=e("i",{class:"bi bi-clock me-2"},null,-1)),d(n,{t:"Logs"})]),this.getAllJobs.length>0?(o(),r("div",P,[(o(!0),r(p,null,b(this.getAllJobs,(s,l)=>(o(),r("div",{class:"accordion-item",key:s.id},[e("h2",M,[e("button",{class:"accordion-button collapsed",type:"button","data-bs-toggle":"collapse","data-bs-target":"#collapse_"+l},[e("small",null,[e("strong",null,[s.name?(o(),r("span",N,m(s.name)+" • ",1)):y("",!0),e("samp",D,m(s.id),1)])])],8,B)]),e("div",{id:"collapse_"+l,class:"accordion-collapse collapse","data-bs-parent":"#peerJobsLogsModalAccordion"},[e("div",V,[(o(!0),r(p,null,b(s.jobs,i=>(o(),x(u,{onDelete:t[2]||(t[2]=h=>this.$emit("refresh")),onRefresh:t[3]||(t[3]=h=>this.$emit("refresh")),dropdowns:this.store.PeerScheduleJobs.dropdowns,viewOnly:!0,key:i.JobID,pjob:i},null,8,["dropdowns","pjob"]))),128))])],8,T)]))),128))])):(o(),r("div",F,[e("div",O,[e("span",W,[d(n,{t:"No active job at the moment."})])])]))])])])])])}const X=g(w,[["render",E]]);export{X as default};
|
import{S as _}from"./schedulePeerJob-CNVLsTZg.js";import{_ as g,W as v,y as f,j as c,a as o,c as r,b as e,d,F as p,h as b,t as m,e as y,i as x}from"./index-Dps0XZ-9.js";import{L as J}from"./localeText-EFD0OAZT.js";import"./vue-datepicker-DlPDai8n.js";import"./dayjs.min-DmFTj_Cv.js";const w={name:"peerJobsAllModal",setup(){return{store:v()}},components:{LocaleText:J,SchedulePeerJob:_},props:{configurationPeers:Array[Object]},methods:{getuuid(){return f()}},computed:{getAllJobs(){return this.configurationPeers.filter(a=>a.jobs.length>0)}}},$={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},k={class:"container d-flex h-100 w-100"},A={class:"m-auto modal-dialog-centered dashboardModal"},L={class:"card rounded-3 shadow",style:{width:"900px"}},S={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},C={class:"card-body px-4 pb-4 pt-2"},P={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},M={class:"accordion-header"},B=["data-bs-target"],N={key:0},D={class:"text-muted"},T=["id"],V={class:"accordion-body"},F={key:1,class:"card shadow-sm",style:{height:"153px"}},O={class:"card-body text-muted text-center d-flex"},W={class:"m-auto"};function E(a,t,I,R,q,z){const n=c("LocaleText"),u=c("SchedulePeerJob");return o(),r("div",$,[e("div",k,[e("div",A,[e("div",L,[e("div",S,[e("h4",j,[d(n,{t:"All Active Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=s=>this.$emit("close"))})]),e("div",C,[e("button",{class:"btn bg-primary-subtle border-1 border-primary-subtle text-primary-emphasis rounded-3 shadow mb-2",onClick:t[1]||(t[1]=s=>this.$emit("allLogs"))},[t[4]||(t[4]=e("i",{class:"bi bi-clock me-2"},null,-1)),d(n,{t:"Logs"})]),this.getAllJobs.length>0?(o(),r("div",P,[(o(!0),r(p,null,b(this.getAllJobs,(s,l)=>(o(),r("div",{class:"accordion-item",key:s.id},[e("h2",M,[e("button",{class:"accordion-button collapsed",type:"button","data-bs-toggle":"collapse","data-bs-target":"#collapse_"+l},[e("small",null,[e("strong",null,[s.name?(o(),r("span",N,m(s.name)+" • ",1)):y("",!0),e("samp",D,m(s.id),1)])])],8,B)]),e("div",{id:"collapse_"+l,class:"accordion-collapse collapse","data-bs-parent":"#peerJobsLogsModalAccordion"},[e("div",V,[(o(!0),r(p,null,b(s.jobs,i=>(o(),x(u,{onDelete:t[2]||(t[2]=h=>this.$emit("refresh")),onRefresh:t[3]||(t[3]=h=>this.$emit("refresh")),dropdowns:this.store.PeerScheduleJobs.dropdowns,viewOnly:!0,key:i.JobID,pjob:i},null,8,["dropdowns","pjob"]))),128))])],8,T)]))),128))])):(o(),r("div",F,[e("div",O,[e("span",W,[d(n,{t:"No active job at the moment."})])])]))])])])])])}const X=g(w,[["render",E]]);export{X as default};
|
@ -1 +0,0 @@
|
|||||||
import{S as b}from"./schedulePeerJob-B__8Gari.js";import{_ as g,W as v,p as f,j as l,a as o,c as t,b as e,d as i,F as p,h,t as _,e as y,i as x}from"./index-Nht8Bi7_.js";import{L as J}from"./localeText-ClObbhxX.js";import"./vue-datepicker-vEbbWPoH.js";import"./dayjs.min-DENWFVBv.js";const w={name:"peerJobsAllModal",setup(){return{store:v()}},components:{LocaleText:J,SchedulePeerJob:b},props:{configurationPeers:Array[Object]},methods:{getuuid(){return f()}},computed:{getAllJobs(){return this.configurationPeers.filter(r=>r.jobs.length>0)}}},A={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},$={class:"container d-flex h-100 w-100"},k={class:"m-auto modal-dialog-centered dashboardModal"},S={class:"card rounded-3 shadow",style:{width:"700px"}},L={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"},j={class:"mb-0 fw-normal"},P={class:"card-body px-4 pb-4 pt-2"},C={key:0,class:"accordion",id:"peerJobsLogsModalAccordion"},M={class:"accordion-header"},B=["data-bs-target"],N={key:0},D={class:"text-muted"},T=["id"],V={class:"accordion-body"},F={key:1,class:"card shadow-sm",style:{height:"153px"}},O={class:"card-body text-muted text-center d-flex"},W={class:"m-auto"};function E(r,s,I,R,q,z){const n=l("LocaleText"),u=l("SchedulePeerJob");return o(),t("div",A,[e("div",$,[e("div",k,[e("div",S,[e("div",L,[e("h4",j,[i(n,{t:"All Active Jobs"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:s[0]||(s[0]=a=>this.$emit("close"))})]),e("div",P,[this.getAllJobs.length>0?(o(),t("div",C,[(o(!0),t(p,null,h(this.getAllJobs,(a,d)=>(o(),t("div",{class:"accordion-item",key:a.id},[e("h2",M,[e("button",{class:"accordion-button collapsed",type:"button","data-bs-toggle":"collapse","data-bs-target":"#collapse_"+d},[e("small",null,[e("strong",null,[a.name?(o(),t("span",N,_(a.name)+" • ",1)):y("",!0),e("samp",D,_(a.id),1)])])],8,B)]),e("div",{id:"collapse_"+d,class:"accordion-collapse collapse","data-bs-parent":"#peerJobsLogsModalAccordion"},[e("div",V,[(o(!0),t(p,null,h(a.jobs,c=>(o(),x(u,{onDelete:s[1]||(s[1]=m=>this.$emit("refresh")),onRefresh:s[2]||(s[2]=m=>this.$emit("refresh")),dropdowns:this.store.PeerScheduleJobs.dropdowns,viewOnly:!0,key:c.JobID,pjob:c},null,8,["dropdowns","pjob"]))),128))])],8,T)]))),128))])):(o(),t("div",F,[e("div",O,[e("span",W,[i(n,{t:"No active job at the moment."})])])]))])])])])])}const X=g(w,[["render",E]]);export{X as default};
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
19
src/static/app/dist/assets/peerList-Svxsfk2Z.js
vendored
19
src/static/app/dist/assets/peerList-Svxsfk2Z.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
import{b as a}from"./browser-CjSdxGTc.js";import{L as n}from"./localeText-ClObbhxX.js";import{_ as c,j as r,a as d,c as i,b as e,d as l}from"./index-Nht8Bi7_.js";const p={name:"peerQRCode",components:{LocaleText:n},props:{peerConfigData:String},mounted(){a.toCanvas(document.querySelector("#qrcode"),this.peerConfigData,o=>{o&&console.error(o)})}},_={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},m={class:"container d-flex h-100 w-100"},h={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},u={class:"card rounded-3 shadow"},f={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},b={class:"mb-0"},v={class:"card-body"},C={id:"qrcode",class:"rounded-3 shadow",ref:"qrcode"};function g(o,t,x,$,w,q){const s=r("LocaleText");return d(),i("div",_,[e("div",m,[e("div",h,[e("div",u,[e("div",f,[e("h4",b,[l(s,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=y=>this.$emit("close"))})]),e("div",v,[e("canvas",C,null,512)])])])])])}const Q=c(p,[["render",g]]);export{Q as default};
|
import{b as a}from"./browser-CjSdxGTc.js";import{L as n}from"./localeText-EFD0OAZT.js";import{_ as c,j as r,a as d,c as i,b as e,d as l}from"./index-Dps0XZ-9.js";const p={name:"peerQRCode",components:{LocaleText:n},props:{peerConfigData:String},mounted(){a.toCanvas(document.querySelector("#qrcode"),this.peerConfigData,o=>{o&&console.error(o)})}},_={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},m={class:"container d-flex h-100 w-100"},h={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},u={class:"card rounded-3 shadow"},f={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},b={class:"mb-0"},v={class:"card-body"},C={id:"qrcode",class:"rounded-3 shadow",ref:"qrcode"};function g(o,t,x,$,w,q){const s=r("LocaleText");return d(),i("div",_,[e("div",m,[e("div",h,[e("div",u,[e("div",f,[e("h4",b,[l(s,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=y=>this.$emit("close"))})]),e("div",v,[e("canvas",C,null,512)])])])])])}const Q=c(p,[["render",g]]);export{Q as default};
|
@ -1 +0,0 @@
|
|||||||
import{b as a}from"./browser-CjSdxGTc.js";import{L as n}from"./localeText-D-BSDEyz.js";import{_ as c,j as r,a as d,c as i,b as e,d as l}from"./index-dDYGV8L8.js";const p={name:"peerQRCode",components:{LocaleText:n},props:{peerConfigData:String},mounted(){a.toCanvas(document.querySelector("#qrcode"),this.peerConfigData,o=>{o&&console.error(o)})}},_={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0"},m={class:"container d-flex h-100 w-100"},h={class:"m-auto modal-dialog-centered dashboardModal justify-content-center"},u={class:"card rounded-3 shadow"},f={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},b={class:"mb-0"},v={class:"card-body"},C={id:"qrcode",class:"rounded-3 shadow",ref:"qrcode"};function g(o,t,x,$,w,q){const s=r("LocaleText");return d(),i("div",_,[e("div",m,[e("div",h,[e("div",u,[e("div",f,[e("h4",b,[l(s,{t:"QR Code"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:t[0]||(t[0]=y=>this.$emit("close"))})]),e("div",v,[e("canvas",C,null,512)])])])])])}const Q=c(p,[["render",g]]);export{Q as default};
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
import{_ as g,D as f,z as h,j as p,a as s,c as r,b as t,d as o,n as m,i as n,t as _,e as b}from"./index-dDYGV8L8.js";import{d}from"./dayjs.min-Bi-IywVu.js";import{V as y}from"./vue-datepicker-Ca665Yye.js";import{L as S}from"./localeText-D-BSDEyz.js";const k={name:"peerShareLinkModal",props:{peer:Object},components:{LocaleText:S,VueDatePicker:y},data(){return{dataCopy:void 0,loading:!1}},setup(){return{store:f()}},mounted(){this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0)},watch:{"peer.ShareLink":{deep:!0,handler(e,a){a.length!==e.length&&(this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0))}}},methods:{startSharing(){this.loading=!0,h("/api/sharePeer/create",{Configuration:this.peer.configuration.Name,Peer:this.peer.id,ExpireDate:d().add(7,"d").format("YYYY-MM-DD HH:mm:ss")},e=>{e.status?(this.peer.ShareLink=e.data,this.dataCopy=e.data.at(0)):this.store.newMessage("Server","Share link failed to create. Reason: "+e.message,"danger"),this.loading=!1})},updateLinkExpireDate(){h("/api/sharePeer/update",this.dataCopy,e=>{e.status?(this.dataCopy=e.data.at(0),this.peer.ShareLink=e.data,this.store.newMessage("Server","Link expire date updated","success")):this.store.newMessage("Server","Link expire date failed to update. Reason: "+e.message,"danger"),this.loading=!1})},stopSharing(){this.loading=!0,this.dataCopy.ExpireDate=d().format("YYYY-MM-DD HH:mm:ss"),this.updateLinkExpireDate()},parseTime(e){e?this.dataCopy.ExpireDate=d(e).format("YYYY-MM-DD HH:mm:ss"):this.dataCopy.ExpireDate=void 0,this.updateLinkExpireDate()}},computed:{getUrl(){const e=this.store.getActiveCrossServer();return e?`${e.host}/${this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}`:window.location.origin+window.location.pathname+this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}}},x={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},v={class:"container d-flex h-100 w-100"},C={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"500px"}},D={class:"card rounded-3 shadow flex-grow-1"},w={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4"},L={class:"mb-0"},M={key:0,class:"card-body px-4 pb-4"},Y={key:0},$={class:"mb-3 text-muted"},E=["disabled"],H={key:1},V={class:"d-flex gap-2 mb-4"},N=["href"],P={class:"d-flex flex-column gap-2 mb-3"},O=["disabled"];function T(e,a,U,B,I,c){const i=p("LocaleText"),u=p("VueDatePicker");return s(),r("div",x,[t("div",v,[t("div",C,[t("div",D,[t("div",w,[t("h4",L,[o(i,{t:"Share Peer"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:a[0]||(a[0]=l=>this.$emit("close"))})]),this.peer.ShareLink?(s(),r("div",M,[this.dataCopy?(s(),r("div",H,[t("div",V,[a[4]||(a[4]=t("i",{class:"bi bi-link-45deg"},null,-1)),t("a",{href:this.getUrl,class:"text-decoration-none",target:"_blank"},_(c.getUrl),9,N)]),t("div",P,[t("small",null,[a[5]||(a[5]=t("i",{class:"bi bi-calendar me-2"},null,-1)),o(i,{t:"Expire At"})]),o(u,{is24:!0,"min-date":new Date,"model-value":this.dataCopy.ExpireDate,"onUpdate:modelValue":this.parseTime,"time-picker-inline":"",format:"yyyy-MM-dd HH:mm:ss","preview-format":"yyyy-MM-dd HH:mm:ss",dark:this.store.Configuration.Server.dashboard_theme==="dark"},null,8,["min-date","model-value","onUpdate:modelValue","dark"])]),t("button",{onClick:a[2]||(a[2]=l=>this.stopSharing()),disabled:this.loading,class:"w-100 btn bg-danger-subtle text-danger-emphasis border-1 border-danger-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[6]||(a[6]=[t("i",{class:"bi bi-send-slash-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Stop Sharing..."})):(s(),n(i,{key:1,t:"Stop Sharing"}))],8,O)])):(s(),r("div",Y,[t("h6",$,[o(i,{t:"Currently the peer is not sharing"})]),t("button",{onClick:a[1]||(a[1]=l=>this.startSharing()),disabled:this.loading,class:"w-100 btn bg-success-subtle text-success-emphasis border-1 border-success-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[3]||(a[3]=[t("i",{class:"bi bi-send-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Sharing..."})):(s(),n(i,{key:1,t:"Start Sharing"}))],8,E)]))])):b("",!0)])])])])}const A=g(k,[["render",T]]);export{A as default};
|
import{_ as g,D as f,z as h,j as p,a as s,c as r,b as t,d as o,n as m,i as n,t as _,e as b}from"./index-Dps0XZ-9.js";import{d}from"./dayjs.min-DmFTj_Cv.js";import{V as y}from"./vue-datepicker-DlPDai8n.js";import{L as S}from"./localeText-EFD0OAZT.js";const k={name:"peerShareLinkModal",props:{peer:Object},components:{LocaleText:S,VueDatePicker:y},data(){return{dataCopy:void 0,loading:!1}},setup(){return{store:f()}},mounted(){this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0)},watch:{"peer.ShareLink":{deep:!0,handler(e,a){a.length!==e.length&&(this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0))}}},methods:{startSharing(){this.loading=!0,h("/api/sharePeer/create",{Configuration:this.peer.configuration.Name,Peer:this.peer.id,ExpireDate:d().add(7,"d").format("YYYY-MM-DD HH:mm:ss")},e=>{e.status?(this.peer.ShareLink=e.data,this.dataCopy=e.data.at(0)):this.store.newMessage("Server","Share link failed to create. Reason: "+e.message,"danger"),this.loading=!1})},updateLinkExpireDate(){h("/api/sharePeer/update",this.dataCopy,e=>{e.status?(this.dataCopy=e.data.at(0),this.peer.ShareLink=e.data,this.store.newMessage("Server","Link expire date updated","success")):this.store.newMessage("Server","Link expire date failed to update. Reason: "+e.message,"danger"),this.loading=!1})},stopSharing(){this.loading=!0,this.dataCopy.ExpireDate=d().format("YYYY-MM-DD HH:mm:ss"),this.updateLinkExpireDate()},parseTime(e){e?this.dataCopy.ExpireDate=d(e).format("YYYY-MM-DD HH:mm:ss"):this.dataCopy.ExpireDate=void 0,this.updateLinkExpireDate()}},computed:{getUrl(){const e=this.store.getActiveCrossServer();return e?`${e.host}/${this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}`:window.location.origin+window.location.pathname+this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}}},x={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},v={class:"container d-flex h-100 w-100"},C={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"500px"}},D={class:"card rounded-3 shadow flex-grow-1"},w={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4"},L={class:"mb-0"},M={key:0,class:"card-body px-4 pb-4"},Y={key:0},$={class:"mb-3 text-muted"},E=["disabled"],H={key:1},V={class:"d-flex gap-2 mb-4"},N=["href"],P={class:"d-flex flex-column gap-2 mb-3"},O=["disabled"];function T(e,a,U,B,I,c){const i=p("LocaleText"),u=p("VueDatePicker");return s(),r("div",x,[t("div",v,[t("div",C,[t("div",D,[t("div",w,[t("h4",L,[o(i,{t:"Share Peer"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:a[0]||(a[0]=l=>this.$emit("close"))})]),this.peer.ShareLink?(s(),r("div",M,[this.dataCopy?(s(),r("div",H,[t("div",V,[a[4]||(a[4]=t("i",{class:"bi bi-link-45deg"},null,-1)),t("a",{href:this.getUrl,class:"text-decoration-none",target:"_blank"},_(c.getUrl),9,N)]),t("div",P,[t("small",null,[a[5]||(a[5]=t("i",{class:"bi bi-calendar me-2"},null,-1)),o(i,{t:"Expire At"})]),o(u,{is24:!0,"min-date":new Date,"model-value":this.dataCopy.ExpireDate,"onUpdate:modelValue":this.parseTime,"time-picker-inline":"",format:"yyyy-MM-dd HH:mm:ss","preview-format":"yyyy-MM-dd HH:mm:ss",dark:this.store.Configuration.Server.dashboard_theme==="dark"},null,8,["min-date","model-value","onUpdate:modelValue","dark"])]),t("button",{onClick:a[2]||(a[2]=l=>this.stopSharing()),disabled:this.loading,class:"w-100 btn bg-danger-subtle text-danger-emphasis border-1 border-danger-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[6]||(a[6]=[t("i",{class:"bi bi-send-slash-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Stop Sharing..."})):(s(),n(i,{key:1,t:"Stop Sharing"}))],8,O)])):(s(),r("div",Y,[t("h6",$,[o(i,{t:"Currently the peer is not sharing"})]),t("button",{onClick:a[1]||(a[1]=l=>this.startSharing()),disabled:this.loading,class:"w-100 btn bg-success-subtle text-success-emphasis border-1 border-success-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[3]||(a[3]=[t("i",{class:"bi bi-send-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Sharing..."})):(s(),n(i,{key:1,t:"Start Sharing"}))],8,E)]))])):b("",!0)])])])])}const A=g(k,[["render",T]]);export{A as default};
|
@ -1 +0,0 @@
|
|||||||
import{_ as g,D as f,q as h,j as p,a as s,c as r,b as t,d as o,n as m,i as n,t as _,e as b}from"./index-Nht8Bi7_.js";import{d}from"./dayjs.min-DENWFVBv.js";import{V as y}from"./vue-datepicker-vEbbWPoH.js";import{L as S}from"./localeText-ClObbhxX.js";const k={name:"peerShareLinkModal",props:{peer:Object},components:{LocaleText:S,VueDatePicker:y},data(){return{dataCopy:void 0,loading:!1}},setup(){return{store:f()}},mounted(){this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0)},watch:{"peer.ShareLink":{deep:!0,handler(e,a){a.length!==e.length&&(this.dataCopy=JSON.parse(JSON.stringify(this.peer.ShareLink)).at(0))}}},methods:{startSharing(){this.loading=!0,h("/api/sharePeer/create",{Configuration:this.peer.configuration.Name,Peer:this.peer.id,ExpireDate:d().add(7,"d").format("YYYY-MM-DD HH:mm:ss")},e=>{e.status?(this.peer.ShareLink=e.data,this.dataCopy=e.data.at(0)):this.store.newMessage("Server","Share link failed to create. Reason: "+e.message,"danger"),this.loading=!1})},updateLinkExpireDate(){h("/api/sharePeer/update",this.dataCopy,e=>{e.status?(this.dataCopy=e.data.at(0),this.peer.ShareLink=e.data,this.store.newMessage("Server","Link expire date updated","success")):this.store.newMessage("Server","Link expire date failed to update. Reason: "+e.message,"danger"),this.loading=!1})},stopSharing(){this.loading=!0,this.dataCopy.ExpireDate=d().format("YYYY-MM-DD HH:mm:ss"),this.updateLinkExpireDate()},parseTime(e){e?this.dataCopy.ExpireDate=d(e).format("YYYY-MM-DD HH:mm:ss"):this.dataCopy.ExpireDate=void 0,this.updateLinkExpireDate()}},computed:{getUrl(){const e=this.store.getActiveCrossServer();return e?`${e.host}/${this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}`:window.location.origin+window.location.pathname+this.$router.resolve({path:"/share",query:{ShareID:this.dataCopy.ShareID}}).href}}},x={class:"peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll"},v={class:"container d-flex h-100 w-100"},C={class:"m-auto modal-dialog-centered dashboardModal",style:{width:"500px"}},D={class:"card rounded-3 shadow flex-grow-1"},w={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4"},L={class:"mb-0"},M={key:0,class:"card-body px-4 pb-4"},Y={key:0},$={class:"mb-3 text-muted"},E=["disabled"],H={key:1},V={class:"d-flex gap-2 mb-4"},N=["href"],P={class:"d-flex flex-column gap-2 mb-3"},O=["disabled"];function T(e,a,U,B,I,c){const i=p("LocaleText"),u=p("VueDatePicker");return s(),r("div",x,[t("div",v,[t("div",C,[t("div",D,[t("div",w,[t("h4",L,[o(i,{t:"Share Peer"})]),t("button",{type:"button",class:"btn-close ms-auto",onClick:a[0]||(a[0]=l=>this.$emit("close"))})]),this.peer.ShareLink?(s(),r("div",M,[this.dataCopy?(s(),r("div",H,[t("div",V,[a[4]||(a[4]=t("i",{class:"bi bi-link-45deg"},null,-1)),t("a",{href:this.getUrl,class:"text-decoration-none",target:"_blank"},_(c.getUrl),9,N)]),t("div",P,[t("small",null,[a[5]||(a[5]=t("i",{class:"bi bi-calendar me-2"},null,-1)),o(i,{t:"Expire At"})]),o(u,{is24:!0,"min-date":new Date,"model-value":this.dataCopy.ExpireDate,"onUpdate:modelValue":this.parseTime,"time-picker-inline":"",format:"yyyy-MM-dd HH:mm:ss","preview-format":"yyyy-MM-dd HH:mm:ss",dark:this.store.Configuration.Server.dashboard_theme==="dark"},null,8,["min-date","model-value","onUpdate:modelValue","dark"])]),t("button",{onClick:a[2]||(a[2]=l=>this.stopSharing()),disabled:this.loading,class:"w-100 btn bg-danger-subtle text-danger-emphasis border-1 border-danger-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[6]||(a[6]=[t("i",{class:"bi bi-send-slash-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Stop Sharing..."})):(s(),n(i,{key:1,t:"Stop Sharing"}))],8,O)])):(s(),r("div",Y,[t("h6",$,[o(i,{t:"Currently the peer is not sharing"})]),t("button",{onClick:a[1]||(a[1]=l=>this.startSharing()),disabled:this.loading,class:"w-100 btn bg-success-subtle text-success-emphasis border-1 border-success-subtle rounded-3 shadow-sm"},[t("span",{class:m({"animate__animated animate__flash animate__infinite animate__slower":this.loading})},a[3]||(a[3]=[t("i",{class:"bi bi-send-fill me-2"},null,-1)]),2),this.loading?(s(),n(i,{key:0,t:"Sharing..."})):(s(),n(i,{key:1,t:"Start Sharing"}))],8,E)]))])):b("",!0)])])])])}const R=g(k,[["render",T]]);export{R as default};
|
|
1
src/static/app/dist/assets/ping-5N83Ge0k.js
vendored
1
src/static/app/dist/assets/ping-5N83Ge0k.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
import{L as r}from"./localeText-D-BSDEyz.js";import{a as t,c as n,f as i,i as s,e as a}from"./index-dDYGV8L8.js";const d={key:0,class:"badge wireguardBg rounded-3 shadow"},c={key:1,class:"badge amneziawgBg rounded-3 shadow"},u={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(e){return(m,o)=>e.protocol==="wg"?(t(),n("span",d,[o[0]||(o[0]=i(" WireGuard ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):e.protocol==="awg"?(t(),n("span",c,[o[1]||(o[1]=i(" AmneziaWG ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):a("",!0)}};export{u as _};
|
import{L as r}from"./localeText-EFD0OAZT.js";import{a as t,c as n,f as i,i as s,e as a}from"./index-Dps0XZ-9.js";const d={key:0,class:"badge wireguardBg rounded-3 shadow"},c={key:1,class:"badge amneziawgBg rounded-3 shadow"},u={__name:"protocolBadge",props:{protocol:String,mini:!1},setup(e){return(m,o)=>e.protocol==="wg"?(t(),n("span",d,[o[0]||(o[0]=i(" WireGuard ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):e.protocol==="awg"?(t(),n("span",c,[o[1]||(o[1]=i(" AmneziaWG ")),e.mini?a("",!0):(t(),s(r,{key:0,t:"Configuration"}))])):a("",!0)}};export{u as _};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/setup-DPPzWcEd.js
vendored
1
src/static/app/dist/assets/setup-DPPzWcEd.js
vendored
@ -1 +0,0 @@
|
|||||||
import{_ as u,D as m,q as p,c as r,b as e,d as o,f as c,t as h,e as f,m as l,s as d,a as i,j as w}from"./index-Nht8Bi7_.js";import{L as g}from"./localeText-ClObbhxX.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},q={for:"confirmPassword",class:"mb-1 text-muted"},$=["disabled"],A={key:0,class:"d-flex align-items-center w-100"},M={key:1,class:"d-flex align-items-center w-100"};function B(n,s,D,E,U,F){const t=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",q,[e("small",null,[o(t,{t:"Confirm password"})])]),l(e("input",{type:"password",autocomplete:"confirm-new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.setup.repeatNewPassword=a),class:"form-control",id:"confirmPassword",name:"confirmPassword",required:""},null,512),[[d,this.setup.repeatNewPassword]])])]),e("button",{class:"btn btn-dark btn-lg mb-5 d-flex btn-brand shadow align-items-center",ref:"signInBtn",disabled:!this.goodToSubmit||this.loading||this.done,onClick:s[3]||(s[3]=a=>this.submit())},[!this.loading&&!this.done?(i(),r("span",A,[o(t,{t:"Next"}),s[5]||(s[5]=e("i",{class:"bi bi-chevron-right ms-auto"},null,-1))])):(i(),r("span",M,[o(t,{t:"Saving..."}),s[6]||(s[6]=e("span",{class:"spinner-border ms-auto spinner-border-sm",role:"status"},[e("span",{class:"visually-hidden"},"Loading...")],-1))]))],8,$)])])])],8,_)}const W=u(b,[["render",B]]);export{W as default};
|
|
@ -1 +1 @@
|
|||||||
import{_ as u,D as m,z as p,c as r,b as e,d as o,f as c,t as h,e as f,m as l,x as d,a as i,j as w}from"./index-dDYGV8L8.js";import{L as g}from"./localeText-D-BSDEyz.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},$={for:"confirmPassword",class:"mb-1 text-muted"},q=["disabled"],A={key:0,class:"d-flex align-items-center w-100"},M={key:1,class:"d-flex align-items-center w-100"};function B(n,s,D,E,U,F){const t=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",$,[e("small",null,[o(t,{t:"Confirm password"})])]),l(e("input",{type:"password",autocomplete:"confirm-new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.setup.repeatNewPassword=a),class:"form-control",id:"confirmPassword",name:"confirmPassword",required:""},null,512),[[d,this.setup.repeatNewPassword]])])]),e("button",{class:"btn btn-dark btn-lg mb-5 d-flex btn-brand shadow align-items-center",ref:"signInBtn",disabled:!this.goodToSubmit||this.loading||this.done,onClick:s[3]||(s[3]=a=>this.submit())},[!this.loading&&!this.done?(i(),r("span",A,[o(t,{t:"Next"}),s[5]||(s[5]=e("i",{class:"bi bi-chevron-right ms-auto"},null,-1))])):(i(),r("span",M,[o(t,{t:"Saving..."}),s[6]||(s[6]=e("span",{class:"spinner-border ms-auto spinner-border-sm",role:"status"},[e("span",{class:"visually-hidden"},"Loading...")],-1))]))],8,q)])])])],8,_)}const I=u(b,[["render",B]]);export{I as default};
|
import{_ as u,D as m,z as p,c as r,b as e,d as o,f as c,t as h,e as f,m as l,x as d,a as i,j as w}from"./index-Dps0XZ-9.js";import{L as g}from"./localeText-EFD0OAZT.js";const b={name:"setup",components:{LocaleText:g},setup(){return{store:m()}},data(){return{setup:{username:"",newPassword:"",repeatNewPassword:"",enable_totp:!0},loading:!1,errorMessage:"",done:!1}},computed:{goodToSubmit(){return this.setup.username&&this.setup.newPassword.length>=8&&this.setup.repeatNewPassword.length>=8&&this.setup.newPassword===this.setup.repeatNewPassword}},methods:{submit(){this.loading=!0,p("/api/Welcome_Finish",this.setup,n=>{n.status?(this.done=!0,this.$router.push("/2FASetup")):(document.querySelectorAll("#createAccount input").forEach(s=>s.classList.add("is-invalid")),this.errorMessage=n.message,document.querySelector(".login-container-fluid").scrollTo({top:0,left:0,behavior:"smooth"})),this.loading=!1})}}},_=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},v={class:"dashboardLogo display-4"},y={class:"mb-5"},P={key:0,class:"alert alert-danger"},N={class:"d-flex flex-column gap-3"},k={id:"createAccount",class:"d-flex flex-column gap-2"},S={class:"form-group text-body"},T={for:"username",class:"mb-1 text-muted"},C={class:"form-group text-body"},L={for:"password",class:"mb-1 text-muted"},V={class:"form-group text-body"},$={for:"confirmPassword",class:"mb-1 text-muted"},q=["disabled"],A={key:0,class:"d-flex align-items-center w-100"},M={key:1,class:"d-flex align-items-center w-100"};function B(n,s,D,E,U,F){const t=w("LocaleText");return i(),r("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[e("div",x,[e("span",v,[o(t,{t:"Nice to meet you!"})]),e("p",y,[o(t,{t:"Please fill in the following fields to finish setup"}),s[4]||(s[4]=c(" 😊"))]),e("div",null,[e("h3",null,[o(t,{t:"Create an account"})]),this.errorMessage?(i(),r("div",P,h(this.errorMessage),1)):f("",!0),e("div",N,[e("form",k,[e("div",S,[e("label",T,[e("small",null,[o(t,{t:"Enter an username you like"})])]),l(e("input",{type:"text",autocomplete:"username","onUpdate:modelValue":s[0]||(s[0]=a=>this.setup.username=a),class:"form-control",id:"username",name:"username",required:""},null,512),[[d,this.setup.username]])]),e("div",C,[e("label",L,[e("small",null,[o(t,{t:"Enter a password"}),e("code",null,[o(t,{t:"(At least 8 characters and make sure is strong enough!)"})])])]),l(e("input",{type:"password",autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.setup.newPassword=a),class:"form-control",id:"password",name:"password",required:""},null,512),[[d,this.setup.newPassword]])]),e("div",V,[e("label",$,[e("small",null,[o(t,{t:"Confirm password"})])]),l(e("input",{type:"password",autocomplete:"confirm-new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.setup.repeatNewPassword=a),class:"form-control",id:"confirmPassword",name:"confirmPassword",required:""},null,512),[[d,this.setup.repeatNewPassword]])])]),e("button",{class:"btn btn-dark btn-lg mb-5 d-flex btn-brand shadow align-items-center",ref:"signInBtn",disabled:!this.goodToSubmit||this.loading||this.done,onClick:s[3]||(s[3]=a=>this.submit())},[!this.loading&&!this.done?(i(),r("span",A,[o(t,{t:"Next"}),s[5]||(s[5]=e("i",{class:"bi bi-chevron-right ms-auto"},null,-1))])):(i(),r("span",M,[o(t,{t:"Saving..."}),s[6]||(s[6]=e("span",{class:"spinner-border ms-auto spinner-border-sm",role:"status"},[e("span",{class:"visually-hidden"},"Loading...")],-1))]))],8,q)])])])],8,_)}const I=u(b,[["render",B]]);export{I as default};
|
1
src/static/app/dist/assets/share-CtPPBNu2.js
vendored
1
src/static/app/dist/assets/share-CtPPBNu2.js
vendored
@ -1 +0,0 @@
|
|||||||
import{_,r,D as p,g as u,c as m,b as t,d as c,$ as h,a as f,j as b}from"./index-Nht8Bi7_.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-ClObbhxX.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},B={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},k={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},D={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},R=["download","href"];function j(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",D,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,R)])):(f(),m("div",C,[e[0]||(e[0]=t("div",{class:"animate__animated animate__fadeInUp"},[t("h1",{style:{"font-size":"20rem",filter:"blur(1rem)","animation-duration":"7s"},class:"animate__animated animate__flash animate__infinite"},[t("i",{class:"bi bi-file-binary"})])],-1)),t("div",U,[t("h3",I,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const $=_(g,[["render",j],["__scopeId","data-v-1b44aacd"]]);export{$ as default};
|
|
@ -1 +1 @@
|
|||||||
import{_,r,D as p,g as u,c as m,b as t,d as c,$ as h,a as f,j as b}from"./index-dDYGV8L8.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-D-BSDEyz.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},B={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},k={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},D={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},R=["download","href"];function j(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",D,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,R)])):(f(),m("div",C,[e[0]||(e[0]=t("div",{class:"animate__animated animate__fadeInUp"},[t("h1",{style:{"font-size":"20rem",filter:"blur(1rem)","animation-duration":"7s"},class:"animate__animated animate__flash animate__infinite"},[t("i",{class:"bi bi-file-binary"})])],-1)),t("div",U,[t("h3",I,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const $=_(g,[["render",j],["__scopeId","data-v-1b44aacd"]]);export{$ as default};
|
import{_,r,D as p,g as u,c as m,b as t,d as c,$ as h,a as f,j as b}from"./index-Dps0XZ-9.js";import{b as v}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-EFD0OAZT.js";const g={name:"share",components:{LocaleText:y},async setup(){const o=h(),e=r(!1),i=p(),n=r(""),s=r(void 0),l=r(new Blob);await u("/api/getDashboardTheme",{},d=>{n.value=d.data});const a=o.query.ShareID;return a===void 0||a.length===0?(s.value=void 0,e.value=!0):await u("/api/sharePeer/get",{ShareID:a},d=>{d.status?(s.value=d.data,l.value=new Blob([s.value.file],{type:"text/plain"})):s.value=void 0,e.value=!0}),{store:i,theme:n,peerConfiguration:s,blob:l}},mounted(){this.peerConfiguration&&v.toCanvas(document.querySelector("#qrcode"),this.peerConfiguration.file,o=>{o&&console.error(o)})},methods:{download(){const o=new Blob([this.peerConfiguration.file],{type:"text/plain"}),e=URL.createObjectURL(o),i=`${this.peerConfiguration.fileName}.conf`,n=document.createElement("a");n.href=e,n.download=i,n.click()}},computed:{getBlob(){return URL.createObjectURL(this.blob)}}},w=["data-bs-theme"],x={class:"m-auto text-body",style:{width:"500px"}},C={key:0,class:"text-center position-relative",style:{}},U={class:"position-absolute w-100 h-100 top-0 start-0 d-flex animate__animated animate__fadeInUp",style:{"animation-delay":"0.1s"}},I={class:"m-auto"},L={key:1,class:"d-flex align-items-center flex-column gap-3"},B={class:"h1 dashboardLogo text-center animate__animated animate__fadeInUp"},k={id:"qrcode",class:"rounded-3 shadow animate__animated animate__fadeInUp mb-3",ref:"qrcode"},D={class:"text-muted animate__animated animate__fadeInUp mb-1",style:{"animation-delay":"0.2s"}},R=["download","href"];function j(o,e,i,n,s,l){const a=b("LocaleText");return f(),m("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.theme},[t("div",x,[this.peerConfiguration?(f(),m("div",L,[t("div",B,[e[1]||(e[1]=t("h6",null,"WGDashboard",-1)),c(a,{t:"Scan QR Code with the WireGuard App to add peer"})]),t("canvas",k,null,512),t("p",D,[c(a,{t:"or click the button below to download the "}),e[2]||(e[2]=t("samp",null,".conf",-1)),c(a,{t:" file"})]),t("a",{download:this.peerConfiguration.fileName+".conf",href:l.getBlob,class:"btn btn-lg bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle animate__animated animate__fadeInUp shadow-sm",style:{"animation-delay":"0.25s"}},e[3]||(e[3]=[t("i",{class:"bi bi-download"},null,-1)]),8,R)])):(f(),m("div",C,[e[0]||(e[0]=t("div",{class:"animate__animated animate__fadeInUp"},[t("h1",{style:{"font-size":"20rem",filter:"blur(1rem)","animation-duration":"7s"},class:"animate__animated animate__flash animate__infinite"},[t("i",{class:"bi bi-file-binary"})])],-1)),t("div",U,[t("h3",I,[c(a,{t:"Oh no... This link is either expired or invalid."})])])]))])],8,w)}const $=_(g,[["render",j],["__scopeId","data-v-1b44aacd"]]);export{$ as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
import{_ as i,u as m,r as p,p as b,a as o,c as t,d as g,w as v,n as x,b as r,t as n,e as f,T as C,q as w}from"./index-dDYGV8L8.js";const y={class:"text-muted me-2"},_={class:"fw-bold"},k={__name:"cpuCore",props:{core_number:Number,percentage:Number,align:Boolean,square:Boolean},setup(e){m(c=>({e901480c:u.value}));const l=e,s=p(!1),u=b(()=>l.square?"40px":"25px");return(c,a)=>(o(),t("div",{class:"flex-grow-1 square rounded-3 border position-relative p-2",onMouseenter:a[0]||(a[0]=d=>s.value=!0),onMouseleave:a[1]||(a[1]=d=>s.value=!1),style:w({"background-color":`rgb(13 110 253 / ${e.percentage*10}%)`})},[g(C,{name:"zoomReversed"},{default:v(()=>[s.value?(o(),t("div",{key:0,style:{"white-space":"nowrap"},class:x(["floatingLabel z-3 border position-absolute d-block p-1 px-2 bg-body text-body rounded-3 border shadow d-flex",[e.align?"end-0":"start-0"]])},[r("small",y," Core #"+n(e.core_number+1),1),r("small",_,n(e.percentage)+"% ",1)],2)):f("",!0)]),_:1})],36))}},B=i(k,[["__scopeId","data-v-70102637"]]);export{B as C};
|
import{_ as i,u as m,r as p,p as b,a as o,c as t,d as g,w as v,n as x,b as r,t as n,e as f,T as C,q as w}from"./index-Dps0XZ-9.js";const y={class:"text-muted me-2"},_={class:"fw-bold"},k={__name:"cpuCore",props:{core_number:Number,percentage:Number,align:Boolean,square:Boolean},setup(e){m(c=>({e901480c:u.value}));const l=e,s=p(!1),u=b(()=>l.square?"40px":"25px");return(c,a)=>(o(),t("div",{class:"flex-grow-1 square rounded-3 border position-relative p-2",onMouseenter:a[0]||(a[0]=d=>s.value=!0),onMouseleave:a[1]||(a[1]=d=>s.value=!1),style:w({"background-color":`rgb(13 110 253 / ${e.percentage*10}%)`})},[g(C,{name:"zoomReversed"},{default:v(()=>[s.value?(o(),t("div",{key:0,style:{"white-space":"nowrap"},class:x(["floatingLabel z-3 border position-absolute d-block p-1 px-2 bg-body text-body rounded-3 border shadow d-flex",[e.align?"end-0":"start-0"]])},[r("small",y," Core #"+n(e.core_number+1),1),r("small",_,n(e.percentage)+"% ",1)],2)):f("",!0)]),_:1})],36))}},B=i(k,[["__scopeId","data-v-70102637"]]);export{B as C};
|
File diff suppressed because one or more lines are too long
1
src/static/app/dist/assets/totp-Dv_jLaod.js
vendored
1
src/static/app/dist/assets/totp-Dv_jLaod.js
vendored
@ -1 +0,0 @@
|
|||||||
import{_ as h,D as m,g as p,q as f,c as b,b as t,d as i,t as _,m as v,s as g,i as d,w as r,j as c,a as n}from"./index-Nht8Bi7_.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-ClObbhxX.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},q={for:"totp",class:"mb-2"},D={class:"text-muted"},S={class:"form-group mb-2"},A=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,j){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",q,[t("small",D,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",S,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,A),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const z=h(T,[["render",G]]);export{z as default};
|
|
@ -1 +1 @@
|
|||||||
import{_ as h,D as m,g as p,z as f,c as b,b as t,d as i,t as _,m as v,x as g,i as d,w as r,j as c,a as n}from"./index-dDYGV8L8.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-D-BSDEyz.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},D={for:"totp",class:"mb-2"},S={class:"text-muted"},q={class:"form-group mb-2"},A=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,j){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",D,[t("small",S,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",q,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,A),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const V=h(T,[["render",G]]);export{V as default};
|
import{_ as h,D as m,g as p,z as f,c as b,b as t,d as i,t as _,m as v,x as g,i as d,w as r,j as c,a as n}from"./index-Dps0XZ-9.js";import{b as x}from"./browser-CjSdxGTc.js";import{L as y}from"./localeText-EFD0OAZT.js";const T={name:"totp",components:{LocaleText:y},async setup(){const s=m();let e="";return await p("/api/Welcome_GetTotpLink",{},a=>{a.status&&(e=a.data)}),{l:e,store:s}},mounted(){this.l&&x.toCanvas(document.getElementById("qrcode"),this.l,function(s){})},data(){return{totp:"",totpInvalidMessage:"",verified:!1}},methods:{validateTotp(){}},watch:{totp(s){const e=document.querySelector("#totp");e.classList.remove("is-invalid","is-valid"),s.length===6&&(console.log(s),/[0-9]{6}/.test(s)?f("/api/Welcome_VerifyTotpLink",{totp:s},a=>{a.status?(this.verified=!0,e.classList.add("is-valid"),this.$emit("verified")):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP does not match.")}):(e.classList.add("is-invalid"),this.totpInvalidMessage="TOTP can only contain numbers"))}}},k=["data-bs-theme"],w={class:"m-auto text-body",style:{width:"500px"}},L={class:"d-flex flex-column"},M={class:"dashboardLogo display-4"},C={class:"mb-2"},P={class:"text-muted"},I={class:"p-3 bg-body-secondary rounded-3 border mb-3"},O={class:"text-muted mb-0"},B=["href"],$={style:{"line-break":"anywhere"}},D={for:"totp",class:"mb-2"},S={class:"text-muted"},q={class:"form-group mb-2"},A=["disabled"],E={class:"invalid-feedback"},F={class:"valid-feedback"},R={class:"d-flex gap-3 mt-5 flex-column"};function G(s,e,a,N,W,j){const o=c("LocaleText"),l=c("RouterLink");return n(),b("div",{class:"container-fluid login-container-fluid d-flex main pt-5 overflow-scroll","data-bs-theme":this.store.Configuration.Server.dashboard_theme},[t("div",w,[t("div",L,[t("div",null,[t("h1",M,[i(o,{t:"Multi-Factor Authentication (MFA)"})]),t("p",C,[t("small",P,[i(o,{t:"1. Please scan the following QR Code to generate TOTP with your choice of authenticator"})])]),e[1]||(e[1]=t("canvas",{id:"qrcode",class:"rounded-3 mb-2"},null,-1)),t("div",I,[t("p",O,[t("small",null,[i(o,{t:"Or you can click the link below:"})])]),t("a",{href:this.l},[t("code",$,_(this.l),1)],8,B)]),t("label",D,[t("small",S,[i(o,{t:"2. Enter the TOTP generated by your authenticator to verify"})])]),t("div",q,[v(t("input",{class:"form-control text-center totp",id:"totp",maxlength:"6",type:"text",inputmode:"numeric",autocomplete:"one-time-code","onUpdate:modelValue":e[0]||(e[0]=u=>this.totp=u),disabled:this.verified},null,8,A),[[g,this.totp]]),t("div",E,[i(o,{t:this.totpInvalidMessage},null,8,["t"])]),t("div",F,[i(o,{t:"TOTP verified!"})])])]),e[4]||(e[4]=t("hr",null,null,-1)),t("div",R,[this.verified?(n(),d(l,{key:1,to:"/",class:"btn btn-dark btn-lg d-flex btn-brand shadow align-items-center flex-grow-1 rounded-3"},{default:r(()=>[i(o,{t:"Complete"}),e[3]||(e[3]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1})):(n(),d(l,{key:0,to:"/",class:"btn bg-secondary-subtle text-secondary-emphasis rounded-3 flex-grow-1 btn-lg border-1 border-secondary-subtle shadow d-flex"},{default:r(()=>[i(o,{t:"I don't need MFA"}),e[2]||(e[2]=t("i",{class:"bi bi-chevron-right ms-auto"},null,-1))]),_:1}))])])])],8,k)}const V=h(T,[["render",G]]);export{V as default};
|
@ -1 +0,0 @@
|
|||||||
import{_ as h,W as b,g,c as o,b as t,d as n,m as y,s as f,A as v,w as r,T as c,a,f as x,F as u,h as m,n as T,z as k,t as i,e as A,j as _}from"./index-Nht8Bi7_.js";import{O as w}from"./osmap-BzrslzxI.js";import{L as R}from"./localeText-ClObbhxX.js";const M={name:"traceroute",components:{LocaleText:R,OSMap:w},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:b()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,g("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},S={class:"mt-md-5 mt-3 text-body"},$={class:"container-md"},C={class:"mb-3 text-body"},L={class:"d-flex gap-2 flex-column mb-5"},P={class:"mb-1 text-muted",for:"ipAddress"},V=["disabled"],N=["disabled"],O={key:0,class:"d-block"},z={key:1,class:"d-block"},B={class:"position-relative"},I={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},U={scope:"col"},q={key:0};function J(d,s,Q,X,Y,Z){const l=_("LocaleText"),p=_("OSMap");return a(),o("div",S,[t("div",$,[t("h3",C,[n(l,{t:"Traceroute"})]),t("div",L,[t("div",null,[t("label",P,[t("small",null,[n(l,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=v(e=>this.execute(),["enter"])),type:"text"},null,40,V),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 mt-3 position-relative",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(a(),o("span",z,s[4]||(s[4]=[t("span",{class:"spinner-border spinner-border-sm","aria-hidden":"true"},null,-1),t("span",{class:"visually-hidden",role:"status"},"Loading...",-1)]))):(a(),o("span",O,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),x("Trace! ")])))]),_:1})],8,N)]),t("div",B,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(a(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(l,{t:"Hop"})]),t("th",H,[n(l,{t:"IP Address"})]),t("th",K,[n(l,{t:"Average RTT (ms)"})]),t("th",W,[n(l,{t:"Min RTT (ms)"})]),t("th",j,[n(l,{t:"Max RTT (ms)"})]),t("th",U,[n(l,{t:"Geolocation"})])])]),t("tbody",null,[(a(!0),o(u,null,m(this.tracerouteResult,(e,tt)=>(a(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,i(e.ip),1)]),t("td",null,[t("small",null,i(e.avg_rtt),1)]),t("td",null,[t("small",null,i(e.min_rtt),1)]),t("td",null,[t("small",null,i(e.max_rtt),1)]),t("td",null,[e.geo.city&&e.geo.country?(a(),o("span",q,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):A("",!0)])]))),256))])])])])):(a(),o("div",I,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(a(),o(u,null,m(5,e=>t("div",{class:T(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:k({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const ot=h(M,[["render",J],["__scopeId","data-v-549eb223"]]);export{ot as default};
|
|
@ -1 +1 @@
|
|||||||
import{_ as h,W as b,g,c as o,b as t,d as n,m as y,x as f,C as x,w as r,T as c,a,f as v,F as u,h as m,n as T,q as k,t as i,e as A,j as _}from"./index-dDYGV8L8.js";import{O as w}from"./osmap-DCIMdT2q.js";import{L as R}from"./localeText-D-BSDEyz.js";import"./Event-4cBx5ORO.js";const C={name:"traceroute",components:{LocaleText:R,OSMap:w},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:b()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,g("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},M={class:"mt-md-5 mt-3 text-body"},S={class:"container-md"},$={class:"mb-3 text-body"},L={class:"d-flex gap-2 flex-column mb-5"},P={class:"mb-1 text-muted",for:"ipAddress"},V=["disabled"],N=["disabled"],O={key:0,class:"d-block"},B={key:1,class:"d-block"},I={class:"position-relative"},z={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},q={scope:"col"},U={key:0};function J(d,s,Q,X,Y,Z){const l=_("LocaleText"),p=_("OSMap");return a(),o("div",M,[t("div",S,[t("h3",$,[n(l,{t:"Traceroute"})]),t("div",L,[t("div",null,[t("label",P,[t("small",null,[n(l,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=x(e=>this.execute(),["enter"])),type:"text"},null,40,V),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 mt-3 position-relative",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(a(),o("span",B,s[4]||(s[4]=[t("span",{class:"spinner-border spinner-border-sm","aria-hidden":"true"},null,-1),t("span",{class:"visually-hidden",role:"status"},"Loading...",-1)]))):(a(),o("span",O,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),v("Trace! ")])))]),_:1})],8,N)]),t("div",I,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(a(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(l,{t:"Hop"})]),t("th",H,[n(l,{t:"IP Address"})]),t("th",K,[n(l,{t:"Average RTT (ms)"})]),t("th",W,[n(l,{t:"Min RTT (ms)"})]),t("th",j,[n(l,{t:"Max RTT (ms)"})]),t("th",q,[n(l,{t:"Geolocation"})])])]),t("tbody",null,[(a(!0),o(u,null,m(this.tracerouteResult,(e,tt)=>(a(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,i(e.ip),1)]),t("td",null,[t("small",null,i(e.avg_rtt),1)]),t("td",null,[t("small",null,i(e.min_rtt),1)]),t("td",null,[t("small",null,i(e.max_rtt),1)]),t("td",null,[e.geo.city&&e.geo.country?(a(),o("span",U,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):A("",!0)])]))),256))])])])])):(a(),o("div",z,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(a(),o(u,null,m(5,e=>t("div",{class:T(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:k({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const at=h(C,[["render",J],["__scopeId","data-v-549eb223"]]);export{at as default};
|
import{_ as h,W as b,g,c as o,b as t,d as n,m as y,x as f,C as x,w as r,T as c,a,f as v,F as u,h as m,n as T,q as k,t as i,e as A,j as _}from"./index-Dps0XZ-9.js";import{O as w}from"./osmap-CF45Rb1E.js";import{L as R}from"./localeText-EFD0OAZT.js";import"./Event-4cBx5ORO.js";const C={name:"traceroute",components:{LocaleText:R,OSMap:w},data(){return{tracing:!1,ipAddress:void 0,tracerouteResult:void 0}},setup(){return{store:b()}},methods:{execute(){this.ipAddress&&(this.tracing=!0,this.tracerouteResult=void 0,g("/api/traceroute/execute",{ipAddress:this.ipAddress},d=>{d.status?this.tracerouteResult=d.data:this.store.newMessage("Server",d.message,"danger"),this.tracing=!1}))}}},M={class:"mt-md-5 mt-3 text-body"},S={class:"container-md"},$={class:"mb-3 text-body"},L={class:"d-flex gap-2 flex-column mb-5"},P={class:"mb-1 text-muted",for:"ipAddress"},V=["disabled"],N=["disabled"],O={key:0,class:"d-block"},B={key:1,class:"d-block"},I={class:"position-relative"},z={key:"pingPlaceholder"},D={key:1},E={key:"table",class:"w-100 mt-2"},F={class:"table table-sm rounded-3 w-100"},G={scope:"col"},H={scope:"col"},K={scope:"col"},W={scope:"col"},j={scope:"col"},q={scope:"col"},U={key:0};function J(d,s,Q,X,Y,Z){const l=_("LocaleText"),p=_("OSMap");return a(),o("div",M,[t("div",S,[t("h3",$,[n(l,{t:"Traceroute"})]),t("div",L,[t("div",null,[t("label",P,[t("small",null,[n(l,{t:"Enter IP Address / Hostname"})])]),y(t("input",{disabled:this.tracing,id:"ipAddress",class:"form-control","onUpdate:modelValue":s[0]||(s[0]=e=>this.ipAddress=e),onKeyup:s[1]||(s[1]=x(e=>this.execute(),["enter"])),type:"text"},null,40,V),[[f,this.ipAddress]])]),t("button",{class:"btn btn-primary rounded-3 mt-3 position-relative",disabled:this.tracing||!this.ipAddress,onClick:s[2]||(s[2]=e=>this.execute())},[n(c,{name:"slide"},{default:r(()=>[this.tracing?(a(),o("span",B,s[4]||(s[4]=[t("span",{class:"spinner-border spinner-border-sm","aria-hidden":"true"},null,-1),t("span",{class:"visually-hidden",role:"status"},"Loading...",-1)]))):(a(),o("span",O,s[3]||(s[3]=[t("i",{class:"bi bi-person-walking me-2"},null,-1),v("Trace! ")])))]),_:1})],8,N)]),t("div",I,[n(c,{name:"ping"},{default:r(()=>[this.tracerouteResult?(a(),o("div",D,[n(p,{d:this.tracerouteResult,type:"traceroute"},null,8,["d"]),t("div",E,[t("table",F,[t("thead",null,[t("tr",null,[t("th",G,[n(l,{t:"Hop"})]),t("th",H,[n(l,{t:"IP Address"})]),t("th",K,[n(l,{t:"Average RTT (ms)"})]),t("th",W,[n(l,{t:"Min RTT (ms)"})]),t("th",j,[n(l,{t:"Max RTT (ms)"})]),t("th",q,[n(l,{t:"Geolocation"})])])]),t("tbody",null,[(a(!0),o(u,null,m(this.tracerouteResult,(e,tt)=>(a(),o("tr",null,[t("td",null,[t("small",null,i(e.hop),1)]),t("td",null,[t("small",null,i(e.ip),1)]),t("td",null,[t("small",null,i(e.avg_rtt),1)]),t("td",null,[t("small",null,i(e.min_rtt),1)]),t("td",null,[t("small",null,i(e.max_rtt),1)]),t("td",null,[e.geo.city&&e.geo.country?(a(),o("span",U,[t("small",null,i(e.geo.city)+", "+i(e.geo.country),1)])):A("",!0)])]))),256))])])])])):(a(),o("div",z,[s[5]||(s[5]=t("div",{class:"pingPlaceholder bg-body-secondary rounded-3 mb-3",style:{height:"300px !important"}},null,-1)),(a(),o(u,null,m(5,e=>t("div",{class:T(["pingPlaceholder bg-body-secondary rounded-3 mb-3",{"animate__animated animate__flash animate__slower animate__infinite":this.tracing}]),style:k({"animation-delay":`${e*.05}s`})},null,6)),64))]))]),_:1})])])])}const at=h(C,[["render",J],["__scopeId","data-v-549eb223"]]);export{at as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
src/static/app/dist/index.html
vendored
2
src/static/app/dist/index.html
vendored
@ -10,7 +10,7 @@
|
|||||||
<link rel="icon" href="/static/app/dist/favicon.png">
|
<link rel="icon" href="/static/app/dist/favicon.png">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>WGDashboard</title>
|
<title>WGDashboard</title>
|
||||||
<script type="module" crossorigin src="/static/app/dist/assets/index-dDYGV8L8.js"></script>
|
<script type="module" crossorigin src="/static/app/dist/assets/index-Dps0XZ-9.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/static/app/dist/assets/index-Bj4AOr1K.css">
|
<link rel="stylesheet" crossorigin href="/static/app/dist/assets/index-Bj4AOr1K.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
<script setup>
|
||||||
|
import {onBeforeUnmount, onMounted, ref} from "vue";
|
||||||
|
const observer = ref(undefined);
|
||||||
|
const emits = defineEmits(['loadMore'])
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
observer.value = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(e => {
|
||||||
|
if (e.isIntersecting){
|
||||||
|
emits('loadMore');
|
||||||
|
}
|
||||||
|
})}, {
|
||||||
|
rootMargin: "20px",
|
||||||
|
threshold: 1.0,
|
||||||
|
})
|
||||||
|
observer.value.observe(document.querySelector("#loadMore"))
|
||||||
|
})
|
||||||
|
|
||||||
|
onBeforeUnmount(() =>{
|
||||||
|
observer.value.disconnect();
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div style="margin-bottom: 20px; height: 1px" id="loadMore"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -40,9 +40,11 @@ import PeerSearchBar from "@/components/configurationComponents/peerSearchBar.vu
|
|||||||
import ProtocolBadge from "@/components/protocolBadge.vue";
|
import ProtocolBadge from "@/components/protocolBadge.vue";
|
||||||
import EditRawConfigurationFile
|
import EditRawConfigurationFile
|
||||||
from "@/components/configurationComponents/editConfigurationComponents/editRawConfigurationFile.vue";
|
from "@/components/configurationComponents/editConfigurationComponents/editRawConfigurationFile.vue";
|
||||||
|
import PeerIntersectionObserver from "@/components/configurationComponents/peerIntersectionObserver.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "peerList",
|
name: "peerList",
|
||||||
components: {
|
components: {
|
||||||
|
PeerIntersectionObserver,
|
||||||
EditRawConfigurationFile,
|
EditRawConfigurationFile,
|
||||||
ProtocolBadge,
|
ProtocolBadge,
|
||||||
PeerSearchBar,
|
PeerSearchBar,
|
||||||
@ -163,15 +165,16 @@ export default {
|
|||||||
peerSearchBarShow: false,
|
peerSearchBarShow: false,
|
||||||
searchStringTimeout: undefined,
|
searchStringTimeout: undefined,
|
||||||
searchString: "",
|
searchString: "",
|
||||||
|
showPeersCount: 0,
|
||||||
|
showPeersThreshold: 10,
|
||||||
|
observer: undefined
|
||||||
}
|
}
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
|
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$route': {
|
'$route': {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(){
|
handler(){
|
||||||
|
this.showPeersCount = 20;
|
||||||
clearInterval(this.dashboardConfigurationStore.Peers.RefreshInterval);
|
clearInterval(this.dashboardConfigurationStore.Peers.RefreshInterval);
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
let id = this.$route.params.id;
|
let id = this.$route.params.id;
|
||||||
@ -274,12 +277,16 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
setPeerInterval(){
|
setPeerInterval(){
|
||||||
this.dashboardConfigurationStore.Peers.RefreshInterval = setInterval(() => {
|
this.dashboardConfigurationStore.Peers.RefreshInterval = setInterval(() => {
|
||||||
this.getPeers()
|
this.getPeers()
|
||||||
}, parseInt(this.dashboardConfigurationStore.Configuration.Server.dashboard_refresh_interval))
|
}, parseInt(this.dashboardConfigurationStore.Configuration.Server.dashboard_refresh_interval))
|
||||||
},
|
},
|
||||||
|
disableMutationObserver(){
|
||||||
|
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
configurationSummary(){
|
configurationSummary(){
|
||||||
@ -389,7 +396,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
searchPeers(){
|
searchPeers(){
|
||||||
const fuse = new Fuse(this.configurationPeers, {
|
const fuse = new Fuse(this.configurationPeers, {
|
||||||
keys: ["name", "id", "allowed_ip"]
|
keys: ["name", "id", "allowed_ip"]
|
||||||
@ -403,7 +409,7 @@ export default {
|
|||||||
}) : this.configurationPeers;
|
}) : this.configurationPeers;
|
||||||
|
|
||||||
if (this.dashboardConfigurationStore.Configuration.Server.dashboard_sort === "restricted"){
|
if (this.dashboardConfigurationStore.Configuration.Server.dashboard_sort === "restricted"){
|
||||||
return result.slice().sort((a, b) => {
|
return result.sort((a, b) => {
|
||||||
if ( a[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort]
|
if ( a[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort]
|
||||||
< b[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort] ){
|
< b[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort] ){
|
||||||
return 1;
|
return 1;
|
||||||
@ -413,10 +419,10 @@ export default {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
});
|
}).slice(0, this.showPeersCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.slice().sort((a, b) => {
|
return result.sort((a, b) => {
|
||||||
if ( a[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort]
|
if ( a[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort]
|
||||||
< b[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort] ){
|
< b[this.dashboardConfigurationStore.Configuration.Server.dashboard_sort] ){
|
||||||
return -1;
|
return -1;
|
||||||
@ -426,323 +432,326 @@ export default {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
});
|
}).slice(0, this.showPeersCount)
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-if="!this.loading" class="container-md">
|
<div>
|
||||||
<div class="d-flex align-items-sm-center flex-column flex-sm-row gap-3">
|
<div v-if="!this.loading" class="container-md" id="peerList">
|
||||||
<div>
|
<div class="d-flex align-items-sm-center flex-column flex-sm-row gap-3">
|
||||||
<div class="text-muted d-flex align-items-center gap-2">
|
<div>
|
||||||
<h5 class="mb-0">
|
<div class="text-muted d-flex align-items-center gap-2">
|
||||||
<ProtocolBadge :protocol="this.configurationInfo.Protocol"></ProtocolBadge>
|
<h5 class="mb-0">
|
||||||
</h5>
|
<ProtocolBadge :protocol="this.configurationInfo.Protocol"></ProtocolBadge>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
<h1 class="mb-0 display-4"><samp>{{this.configurationInfo.Name}}</samp></h1>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex align-items-center gap-3">
|
<div class="ms-sm-auto d-flex gap-2 flex-column">
|
||||||
<h1 class="mb-0 display-4"><samp>{{this.configurationInfo.Name}}</samp></h1>
|
<div class="card rounded-3 bg-transparent ">
|
||||||
</div>
|
<div class="card-body py-2 d-flex align-items-center">
|
||||||
</div>
|
<small class="text-muted">
|
||||||
<div class="ms-sm-auto d-flex gap-2 flex-column">
|
<LocaleText t="Status"></LocaleText>
|
||||||
<div class="card rounded-3 bg-transparent ">
|
</small>
|
||||||
<div class="card-body py-2 d-flex align-items-center">
|
<div class="dot ms-2" :class="{active: this.configurationInfo.Status}"></div>
|
||||||
<small class="text-muted">
|
<div class="form-check form-switch mb-0 ms-auto pe-0 me-0">
|
||||||
<LocaleText t="Status"></LocaleText>
|
<label class="form-check-label" style="cursor: pointer" :for="'switch' + this.configurationInfo.id">
|
||||||
</small>
|
<LocaleText t="On" v-if="this.configurationInfo.Status && !this.configurationToggling"></LocaleText>
|
||||||
<div class="dot ms-2" :class="{active: this.configurationInfo.Status}"></div>
|
<LocaleText t="Off" v-else-if="!this.configurationInfo.Status && !this.configurationToggling"></LocaleText>
|
||||||
<div class="form-check form-switch mb-0 ms-auto pe-0 me-0">
|
<span v-if="this.configurationToggling"
|
||||||
<label class="form-check-label" style="cursor: pointer" :for="'switch' + this.configurationInfo.id">
|
class="spinner-border spinner-border-sm ms-2" aria-hidden="true">
|
||||||
<LocaleText t="On" v-if="this.configurationInfo.Status && !this.configurationToggling"></LocaleText>
|
|
||||||
<LocaleText t="Off" v-else-if="!this.configurationInfo.Status && !this.configurationToggling"></LocaleText>
|
|
||||||
<span v-if="this.configurationToggling"
|
|
||||||
class="spinner-border spinner-border-sm ms-2" aria-hidden="true">
|
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<input class="form-check-input"
|
<input class="form-check-input"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
:disabled="this.configurationToggling"
|
:disabled="this.configurationToggling"
|
||||||
type="checkbox" role="switch" :id="'switch' + this.configurationInfo.id"
|
type="checkbox" role="switch" :id="'switch' + this.configurationInfo.id"
|
||||||
@change="this.toggle()"
|
@change="this.toggle()"
|
||||||
v-model="this.configurationInfo.Status"
|
v-model="this.configurationInfo.Status"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="d-flex gap-2">
|
||||||
<div class="d-flex gap-2">
|
<RouterLink
|
||||||
<RouterLink
|
to="create"
|
||||||
to="create"
|
class="titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle ">
|
||||||
class="titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle ">
|
<i class="bi bi-plus-lg me-2"></i>
|
||||||
<i class="bi bi-plus-lg me-2"></i>
|
<LocaleText t="Peer"></LocaleText>
|
||||||
<LocaleText t="Peer"></LocaleText>
|
</RouterLink>
|
||||||
</RouterLink>
|
<button class="titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
||||||
<button class="titleBtn py-2 text-decoration-none btn text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
@click="editConfiguration.modalOpen = true"
|
||||||
@click="editConfiguration.modalOpen = true"
|
type="button" aria-expanded="false">
|
||||||
type="button" aria-expanded="false">
|
<i class="bi bi-gear-fill me-2"></i>
|
||||||
<i class="bi bi-gear-fill me-2"></i>
|
<LocaleText t="Configuration Settings"></LocaleText>
|
||||||
<LocaleText t="Configuration Settings"></LocaleText>
|
</button>
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
<div class="row mt-3 gy-2 gx-2 mb-2">
|
|
||||||
<div class="col-12 col-lg-3">
|
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
|
||||||
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
|
||||||
<p class="mb-0 text-muted"><small>
|
|
||||||
<LocaleText t="Address"></LocaleText>
|
|
||||||
</small></p>
|
|
||||||
{{this.configurationInfo.Address}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-3">
|
<hr>
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
<div class="row mt-3 gy-2 gx-2 mb-2">
|
||||||
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
<div class="col-12 col-lg-3">
|
||||||
<p class="mb-0 text-muted"><small>
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
<LocaleText t="Listen Port"></LocaleText>
|
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
||||||
</small></p>
|
<p class="mb-0 text-muted"><small>
|
||||||
{{this.configurationInfo.ListenPort}}
|
<LocaleText t="Address"></LocaleText>
|
||||||
|
</small></p>
|
||||||
|
{{this.configurationInfo.Address}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-lg-3">
|
||||||
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
|
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
||||||
|
<p class="mb-0 text-muted"><small>
|
||||||
|
<LocaleText t="Listen Port"></LocaleText>
|
||||||
|
</small></p>
|
||||||
|
{{this.configurationInfo.ListenPort}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="word-break: break-all" class="col-12 col-lg-6">
|
<div style="word-break: break-all" class="col-12 col-lg-6">
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
<div class="card-body py-2 d-flex flex-column justify-content-center">
|
||||||
<p class="mb-0 text-muted"><small>
|
|
||||||
<LocaleText t="Public Key"></LocaleText>
|
|
||||||
</small></p>
|
|
||||||
<samp>{{this.configurationInfo.PublicKey}}</samp>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row gx-2 gy-2 mb-2">
|
|
||||||
<div class="col-12 col-lg-3">
|
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
|
||||||
<div class="card-body d-flex">
|
|
||||||
<div>
|
|
||||||
<p class="mb-0 text-muted"><small>
|
<p class="mb-0 text-muted"><small>
|
||||||
<LocaleText t="Connected Peers"></LocaleText>
|
<LocaleText t="Public Key"></LocaleText>
|
||||||
</small></p>
|
</small></p>
|
||||||
<strong class="h4">
|
<samp>{{this.configurationInfo.PublicKey}}</samp>
|
||||||
{{configurationSummary.connectedPeers}} / {{configurationPeers.length}}
|
|
||||||
</strong>
|
|
||||||
</div>
|
</div>
|
||||||
<i class="bi bi-ethernet ms-auto h2 text-muted"></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-3">
|
<div class="row gx-2 gy-2 mb-2">
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
<div class="col-12 col-lg-3">
|
||||||
<div class="card-body d-flex">
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
<div>
|
<div class="card-body d-flex">
|
||||||
<p class="mb-0 text-muted"><small>
|
<div>
|
||||||
<LocaleText t="Total Usage"></LocaleText>
|
<p class="mb-0 text-muted"><small>
|
||||||
</small></p>
|
<LocaleText t="Connected Peers"></LocaleText>
|
||||||
<strong class="h4">{{configurationSummary.totalUsage}} GB</strong>
|
</small></p>
|
||||||
|
<strong class="h4">
|
||||||
|
{{configurationSummary.connectedPeers}} / {{configurationPeers.length}}
|
||||||
|
</strong>
|
||||||
|
</div>
|
||||||
|
<i class="bi bi-ethernet ms-auto h2 text-muted"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-lg-3">
|
||||||
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
|
<div class="card-body d-flex">
|
||||||
|
<div>
|
||||||
|
<p class="mb-0 text-muted"><small>
|
||||||
|
<LocaleText t="Total Usage"></LocaleText>
|
||||||
|
</small></p>
|
||||||
|
<strong class="h4">{{configurationSummary.totalUsage}} GB</strong>
|
||||||
|
</div>
|
||||||
|
<i class="bi bi-arrow-down-up ms-auto h2 text-muted"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-lg-3">
|
||||||
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
|
<div class="card-body d-flex">
|
||||||
|
<div>
|
||||||
|
<p class="mb-0 text-muted"><small>
|
||||||
|
<LocaleText t="Total Received"></LocaleText>
|
||||||
|
</small></p>
|
||||||
|
<strong class="h4 text-primary">{{configurationSummary.totalReceive}} GB</strong>
|
||||||
|
</div>
|
||||||
|
<i class="bi bi-arrow-down ms-auto h2 text-muted"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-lg-3">
|
||||||
|
<div class="card rounded-3 bg-transparent h-100">
|
||||||
|
<div class="card-body d-flex">
|
||||||
|
<div>
|
||||||
|
<p class="mb-0 text-muted"><small>
|
||||||
|
<LocaleText t="Total Sent"></LocaleText>
|
||||||
|
</small></p>
|
||||||
|
<strong class="h4 text-success">{{configurationSummary.totalSent}} GB</strong>
|
||||||
|
</div>
|
||||||
|
<i class="bi bi-arrow-up ms-auto h2 text-muted"></i>
|
||||||
</div>
|
</div>
|
||||||
<i class="bi bi-arrow-down-up ms-auto h2 text-muted"></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-3">
|
<div class="row gx-2 gy-2 mb-3">
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
<div class="col-12 col-lg-6">
|
||||||
<div class="card-body d-flex">
|
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
||||||
<div>
|
<div class="card-header bg-transparent border-0">
|
||||||
<p class="mb-0 text-muted"><small>
|
<small class="text-muted">
|
||||||
<LocaleText t="Total Received"></LocaleText>
|
<LocaleText t="Peers Data Usage"></LocaleText>
|
||||||
</small></p>
|
</small></div>
|
||||||
<strong class="h4 text-primary">{{configurationSummary.totalReceive}} GB</strong>
|
<div class="card-body pt-1">
|
||||||
|
<Bar
|
||||||
|
:data="individualDataUsage"
|
||||||
|
:options="individualDataUsageChartOption"
|
||||||
|
style="width: 100%; height: 200px; max-height: 200px"></Bar>
|
||||||
</div>
|
</div>
|
||||||
<i class="bi bi-arrow-down ms-auto h2 text-muted"></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-sm col-lg-3">
|
||||||
<div class="col-12 col-lg-3">
|
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
||||||
<div class="card rounded-3 bg-transparent h-100">
|
<div class="card-header bg-transparent border-0"><small class="text-muted">
|
||||||
<div class="card-body d-flex">
|
<LocaleText t="Real Time Received Data Usage"></LocaleText>
|
||||||
<div>
|
|
||||||
<p class="mb-0 text-muted"><small>
|
|
||||||
<LocaleText t="Total Sent"></LocaleText>
|
|
||||||
</small></p>
|
|
||||||
<strong class="h4 text-success">{{configurationSummary.totalSent}} GB</strong>
|
|
||||||
</div>
|
|
||||||
<i class="bi bi-arrow-up ms-auto h2 text-muted"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row gx-2 gy-2 mb-3">
|
|
||||||
<div class="col-12 col-lg-6">
|
|
||||||
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
|
||||||
<div class="card-header bg-transparent border-0">
|
|
||||||
<small class="text-muted">
|
|
||||||
<LocaleText t="Peers Data Usage"></LocaleText>
|
|
||||||
</small></div>
|
</small></div>
|
||||||
<div class="card-body pt-1">
|
<div class="card-body pt-1">
|
||||||
<Bar
|
<Line
|
||||||
:data="individualDataUsage"
|
:options="chartOptions"
|
||||||
:options="individualDataUsageChartOption"
|
:data="receiveData"
|
||||||
style="width: 100%; height: 200px; max-height: 200px"></Bar>
|
style="width: 100%; height: 200px; max-height: 200px"
|
||||||
|
></Line>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm col-lg-3">
|
||||||
|
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
||||||
|
<div class="card-header bg-transparent border-0"><small class="text-muted">
|
||||||
|
<LocaleText t="Real Time Sent Data Usage"></LocaleText>
|
||||||
|
</small></div>
|
||||||
|
<div class="card-body pt-1">
|
||||||
|
<Line
|
||||||
|
:options="chartOptions"
|
||||||
|
:data="sentData"
|
||||||
|
style="width: 100%; height: 200px; max-height: 200px"
|
||||||
|
></Line>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm col-lg-3">
|
<hr>
|
||||||
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
<div style="margin-bottom: 80px">
|
||||||
<div class="card-header bg-transparent border-0"><small class="text-muted">
|
<PeerSearch
|
||||||
<LocaleText t="Real Time Received Data Usage"></LocaleText>
|
@search="this.peerSearchBarShow = true"
|
||||||
</small></div>
|
@jobsAll="this.peerScheduleJobsAll.modalOpen = true"
|
||||||
<div class="card-body pt-1">
|
@jobLogs="this.peerScheduleJobsLogs.modalOpen = true"
|
||||||
<Line
|
@editConfiguration="this.editConfiguration.modalOpen = true"
|
||||||
:options="chartOptions"
|
@selectPeers="this.selectPeers.modalOpen = true"
|
||||||
:data="receiveData"
|
@backupRestore="this.backupRestore.modalOpen = true"
|
||||||
style="width: 100%; height: 200px; max-height: 200px"
|
@deleteConfiguration="this.deleteConfiguration.modalOpen = true"
|
||||||
></Line>
|
:configuration="this.configurationInfo"></PeerSearch>
|
||||||
|
<TransitionGroup name="list" tag="div" class="row gx-2 gy-2 z-0">
|
||||||
|
<div class="col-12 col-lg-6 col-xl-4"
|
||||||
|
:key="peer.id"
|
||||||
|
v-for="peer in this.searchPeers">
|
||||||
|
<Peer :Peer="peer"
|
||||||
|
@share="this.peerShare.selectedPeer = peer.id; this.peerShare.modalOpen = true;"
|
||||||
|
@refresh="this.getPeers()"
|
||||||
|
@jobs="peerScheduleJobs.modalOpen = true; peerScheduleJobs.selectedPeer = this.configurationPeers.find(x => x.id === peer.id)"
|
||||||
|
@setting="peerSetting.modalOpen = true; peerSetting.selectedPeer = this.configurationPeers.find(x => x.id === peer.id)"
|
||||||
|
@qrcode="(file) => {this.peerQRCode.peerConfigData = file; this.peerQRCode.modalOpen = true;}"
|
||||||
|
@configurationFile="(file) => {this.peerConfigurationFile.peerConfigData = file; this.peerConfigurationFile.modalOpen = true;}"
|
||||||
|
></Peer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</TransitionGroup>
|
||||||
</div>
|
|
||||||
<div class="col-sm col-lg-3">
|
|
||||||
<div class="card rounded-3 bg-transparent " style="height: 270px">
|
|
||||||
<div class="card-header bg-transparent border-0"><small class="text-muted">
|
|
||||||
<LocaleText t="Real Time Sent Data Usage"></LocaleText>
|
|
||||||
</small></div>
|
|
||||||
<div class="card-body pt-1">
|
|
||||||
<Line
|
|
||||||
:options="chartOptions"
|
|
||||||
:data="sentData"
|
|
||||||
style="width: 100%; height: 200px; max-height: 200px"
|
|
||||||
></Line>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<Transition name="slideUp">
|
||||||
|
<PeerSearchBar
|
||||||
|
@close="peerSearchBarShow = false"
|
||||||
|
v-if="this.peerSearchBarShow"></PeerSearchBar>
|
||||||
|
</Transition>
|
||||||
|
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerSettings v-if="this.peerSetting.modalOpen"
|
||||||
|
key="settings"
|
||||||
|
:selectedPeer="this.peerSetting.selectedPeer"
|
||||||
|
@refresh="this.getPeers()"
|
||||||
|
@close="this.peerSetting.modalOpen = false">
|
||||||
|
</PeerSettings>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerQRCode :peerConfigData="this.peerQRCode.peerConfigData"
|
||||||
|
key="qrcode"
|
||||||
|
@close="this.peerQRCode.modalOpen = false"
|
||||||
|
v-if="peerQRCode.modalOpen"></PeerQRCode>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerJobs
|
||||||
|
@refresh="this.getPeers()"
|
||||||
|
v-if="this.peerScheduleJobs.modalOpen"
|
||||||
|
:selectedPeer="this.peerScheduleJobs.selectedPeer"
|
||||||
|
@close="this.peerScheduleJobs.modalOpen = false">
|
||||||
|
</PeerJobs>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerJobsAllModal
|
||||||
|
v-if="this.peerScheduleJobsAll.modalOpen"
|
||||||
|
@refresh="this.getPeers()"
|
||||||
|
@allLogs="peerScheduleJobsLogs.modalOpen = true"
|
||||||
|
@close="this.peerScheduleJobsAll.modalOpen = false"
|
||||||
|
:configurationPeers="this.configurationPeers"
|
||||||
|
>
|
||||||
|
</PeerJobsAllModal>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerJobsLogsModal v-if="this.peerScheduleJobsLogs.modalOpen"
|
||||||
|
|
||||||
|
@close="this.peerScheduleJobsLogs.modalOpen = false"
|
||||||
|
:configurationInfo="this.configurationInfo"
|
||||||
|
>
|
||||||
|
</PeerJobsLogsModal>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerShareLinkModal
|
||||||
|
v-if="this.peerShare.modalOpen"
|
||||||
|
@close="this.peerShare.modalOpen = false; this.peerShare.selectedPeer = undefined;"
|
||||||
|
:peer="this.configurationPeers.find(x => x.id === this.peerShare.selectedPeer)"></PeerShareLinkModal>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<EditConfiguration
|
||||||
|
@editRaw="this.editRawConfigurationFile.modalOpen = true"
|
||||||
|
@close="this.editConfiguration.modalOpen = false"
|
||||||
|
@dataChanged="(d) => this.configurationInfo = d"
|
||||||
|
@backupRestore="this.backupRestore.modalOpen = true"
|
||||||
|
@deleteConfiguration="this.deleteConfiguration.modalOpen = true"
|
||||||
|
:configurationInfo="this.configurationInfo"
|
||||||
|
v-if="this.editConfiguration.modalOpen"></EditConfiguration>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<SelectPeers
|
||||||
|
@refresh="this.getPeers()"
|
||||||
|
v-if="this.selectPeers.modalOpen"
|
||||||
|
:configurationPeers="this.configurationPeers"
|
||||||
|
@close="this.selectPeers.modalOpen = false"
|
||||||
|
></SelectPeers>
|
||||||
|
</Transition>
|
||||||
|
|
||||||
|
<Transition name="zoom">
|
||||||
|
<DeleteConfiguration
|
||||||
|
@backup="backupRestore.modalOpen = true"
|
||||||
|
@close="deleteConfiguration.modalOpen = false"
|
||||||
|
v-if="deleteConfiguration.modalOpen"></DeleteConfiguration>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<EditRawConfigurationFile
|
||||||
|
@close="editRawConfigurationFile.modalOpen = false"
|
||||||
|
v-if="editRawConfigurationFile.modalOpen">
|
||||||
|
</EditRawConfigurationFile>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<ConfigurationBackupRestore
|
||||||
|
@close="backupRestore.modalOpen = false"
|
||||||
|
@refreshPeersList="this.getPeers()"
|
||||||
|
v-if="backupRestore.modalOpen"></ConfigurationBackupRestore>
|
||||||
|
</Transition>
|
||||||
|
<Transition name="zoom">
|
||||||
|
<PeerConfigurationFile
|
||||||
|
@close="peerConfigurationFile.modalOpen = false"
|
||||||
|
v-if="peerConfigurationFile.modalOpen"
|
||||||
|
:configurationFile="peerConfigurationFile.peerConfigData"
|
||||||
|
></PeerConfigurationFile>
|
||||||
|
</Transition>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<PeerIntersectionObserver @loadMore="this.showPeersCount += this.showPeersThreshold"></PeerIntersectionObserver>
|
||||||
<div style="margin-bottom: 80px">
|
|
||||||
<PeerSearch
|
|
||||||
@search="this.peerSearchBarShow = true"
|
|
||||||
@jobsAll="this.peerScheduleJobsAll.modalOpen = true"
|
|
||||||
@jobLogs="this.peerScheduleJobsLogs.modalOpen = true"
|
|
||||||
@editConfiguration="this.editConfiguration.modalOpen = true"
|
|
||||||
@selectPeers="this.selectPeers.modalOpen = true"
|
|
||||||
@backupRestore="this.backupRestore.modalOpen = true"
|
|
||||||
@deleteConfiguration="this.deleteConfiguration.modalOpen = true"
|
|
||||||
:configuration="this.configurationInfo"></PeerSearch>
|
|
||||||
<TransitionGroup name="list" tag="div" class="row gx-2 gy-2 z-0">
|
|
||||||
<div class="col-12 col-lg-6 col-xl-4"
|
|
||||||
:key="peer.id"
|
|
||||||
v-for="peer in this.searchPeers">
|
|
||||||
<Peer :Peer="peer"
|
|
||||||
@share="this.peerShare.selectedPeer = peer.id; this.peerShare.modalOpen = true;"
|
|
||||||
@refresh="this.getPeers()"
|
|
||||||
@jobs="peerScheduleJobs.modalOpen = true; peerScheduleJobs.selectedPeer = this.configurationPeers.find(x => x.id === peer.id)"
|
|
||||||
@setting="peerSetting.modalOpen = true; peerSetting.selectedPeer = this.configurationPeers.find(x => x.id === peer.id)"
|
|
||||||
@qrcode="(file) => {this.peerQRCode.peerConfigData = file; this.peerQRCode.modalOpen = true;}"
|
|
||||||
@configurationFile="(file) => {this.peerConfigurationFile.peerConfigData = file; this.peerConfigurationFile.modalOpen = true;}"
|
|
||||||
></Peer>
|
|
||||||
</div>
|
|
||||||
</TransitionGroup>
|
|
||||||
</div>
|
|
||||||
<Transition name="slideUp">
|
|
||||||
<PeerSearchBar
|
|
||||||
@close="peerSearchBarShow = false"
|
|
||||||
v-if="this.peerSearchBarShow"></PeerSearchBar>
|
|
||||||
</Transition>
|
|
||||||
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerSettings v-if="this.peerSetting.modalOpen"
|
|
||||||
key="settings"
|
|
||||||
:selectedPeer="this.peerSetting.selectedPeer"
|
|
||||||
@refresh="this.getPeers()"
|
|
||||||
@close="this.peerSetting.modalOpen = false">
|
|
||||||
</PeerSettings>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerQRCode :peerConfigData="this.peerQRCode.peerConfigData"
|
|
||||||
key="qrcode"
|
|
||||||
@close="this.peerQRCode.modalOpen = false"
|
|
||||||
v-if="peerQRCode.modalOpen"></PeerQRCode>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerJobs
|
|
||||||
@refresh="this.getPeers()"
|
|
||||||
v-if="this.peerScheduleJobs.modalOpen"
|
|
||||||
:selectedPeer="this.peerScheduleJobs.selectedPeer"
|
|
||||||
@close="this.peerScheduleJobs.modalOpen = false">
|
|
||||||
</PeerJobs>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerJobsAllModal
|
|
||||||
v-if="this.peerScheduleJobsAll.modalOpen"
|
|
||||||
@refresh="this.getPeers()"
|
|
||||||
@allLogs="peerScheduleJobsLogs.modalOpen = true"
|
|
||||||
@close="this.peerScheduleJobsAll.modalOpen = false"
|
|
||||||
:configurationPeers="this.configurationPeers"
|
|
||||||
>
|
|
||||||
</PeerJobsAllModal>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerJobsLogsModal v-if="this.peerScheduleJobsLogs.modalOpen"
|
|
||||||
|
|
||||||
@close="this.peerScheduleJobsLogs.modalOpen = false"
|
|
||||||
:configurationInfo="this.configurationInfo"
|
|
||||||
>
|
|
||||||
</PeerJobsLogsModal>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerShareLinkModal
|
|
||||||
v-if="this.peerShare.modalOpen"
|
|
||||||
@close="this.peerShare.modalOpen = false; this.peerShare.selectedPeer = undefined;"
|
|
||||||
:peer="this.configurationPeers.find(x => x.id === this.peerShare.selectedPeer)"></PeerShareLinkModal>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<EditConfiguration
|
|
||||||
@editRaw="this.editRawConfigurationFile.modalOpen = true"
|
|
||||||
@close="this.editConfiguration.modalOpen = false"
|
|
||||||
@dataChanged="(d) => this.configurationInfo = d"
|
|
||||||
@backupRestore="this.backupRestore.modalOpen = true"
|
|
||||||
@deleteConfiguration="this.deleteConfiguration.modalOpen = true"
|
|
||||||
:configurationInfo="this.configurationInfo"
|
|
||||||
v-if="this.editConfiguration.modalOpen"></EditConfiguration>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<SelectPeers
|
|
||||||
@refresh="this.getPeers()"
|
|
||||||
v-if="this.selectPeers.modalOpen"
|
|
||||||
:configurationPeers="this.configurationPeers"
|
|
||||||
@close="this.selectPeers.modalOpen = false"
|
|
||||||
></SelectPeers>
|
|
||||||
</Transition>
|
|
||||||
|
|
||||||
<Transition name="zoom">
|
|
||||||
<DeleteConfiguration
|
|
||||||
@backup="backupRestore.modalOpen = true"
|
|
||||||
@close="deleteConfiguration.modalOpen = false"
|
|
||||||
v-if="deleteConfiguration.modalOpen"></DeleteConfiguration>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<EditRawConfigurationFile
|
|
||||||
@close="editRawConfigurationFile.modalOpen = false"
|
|
||||||
v-if="editRawConfigurationFile.modalOpen">
|
|
||||||
</EditRawConfigurationFile>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<ConfigurationBackupRestore
|
|
||||||
@close="backupRestore.modalOpen = false"
|
|
||||||
@refreshPeersList="this.getPeers()"
|
|
||||||
v-if="backupRestore.modalOpen"></ConfigurationBackupRestore>
|
|
||||||
</Transition>
|
|
||||||
<Transition name="zoom">
|
|
||||||
<PeerConfigurationFile
|
|
||||||
@close="peerConfigurationFile.modalOpen = false"
|
|
||||||
v-if="peerConfigurationFile.modalOpen"
|
|
||||||
:configurationFile="peerConfigurationFile.peerConfigData"
|
|
||||||
></PeerConfigurationFile>
|
|
||||||
</Transition>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -763,17 +772,5 @@ th, td{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.slideUp-enter-active,
|
|
||||||
.slideUp-leave-active{
|
|
||||||
transition: all 0.5s cubic-bezier(0.82, 0.58, 0.17, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.slideUp-enter-from,
|
|
||||||
.slideUp-leave-to {
|
|
||||||
transform: translateY(100%);
|
|
||||||
filter: blur(3px);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
@ -112,7 +112,7 @@ export default {
|
|||||||
<LocaleText t="Sort By"></LocaleText>
|
<LocaleText t="Sort By"></LocaleText>
|
||||||
<span class="badge text-bg-primary ms-2">{{this.sort[store.Configuration.Server.dashboard_sort]}}</span>
|
<span class="badge text-bg-primary ms-2">{{this.sort[store.Configuration.Server.dashboard_sort]}}</span>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu rounded-3 ">
|
<ul class="dropdown-menu rounded-3">
|
||||||
<li v-for="(value, key) in this.sort" >
|
<li v-for="(value, key) in this.sort" >
|
||||||
<button class="dropdown-item d-flex align-items-center" @click="this.updateSort(key)">
|
<button class="dropdown-item d-flex align-items-center" @click="this.updateSort(key)">
|
||||||
<small>
|
<small>
|
||||||
@ -156,22 +156,21 @@ export default {
|
|||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle"
|
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle"
|
||||||
@click="this.downloadAllPeer()">
|
@click="this.downloadAllPeer()">
|
||||||
<i class="bi bi-download me-2"></i>
|
<i class="bi bi-download me-2 me-lg-0 me-xl-2"></i>
|
||||||
<LocaleText t="Download All"></LocaleText>
|
<LocaleText t="Download All" class="d-sm-block d-lg-none d-xl-block"></LocaleText>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
||||||
@click="this.$emit('selectPeers')">
|
@click="this.$emit('selectPeers')">
|
||||||
<i class="bi bi-check2-all me-2"></i>
|
<i class="bi bi-check2-all me-2 me-lg-0 me-xl-2"></i>
|
||||||
<LocaleText t="Select Peers"></LocaleText>
|
<LocaleText t="Select Peers" class="d-sm-block d-lg-none d-xl-block"></LocaleText>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
<button class="btn btn-sm text-primary-emphasis bg-primary-subtle rounded-3 border-1 border-primary-subtle "
|
||||||
@click="this.$emit('jobsAll')"
|
@click="this.$emit('jobsAll')"
|
||||||
type="button" aria-expanded="false">
|
type="button" aria-expanded="false">
|
||||||
<i class="bi bi-person-walking me-2"></i>
|
<i class="bi bi-person-walking me-2 me-lg-0 me-xl-2"></i>
|
||||||
<LocaleText t="Active Jobs"></LocaleText>
|
<LocaleText t="Active Jobs" class="d-sm-block d-lg-none d-xl-block"></LocaleText>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -216,8 +215,5 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
i{
|
|
||||||
margin-right: 1rem !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -34,36 +34,39 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="fixed-bottom w-100 bottom-0 z-2" style="z-index: 1;">
|
<Transition name="slideUp" appear type="animation" style="animation-delay: 1s">
|
||||||
<div class="container-fluid">
|
<div class="fixed-bottom w-100 bottom-0 z-2" style="z-index: 1;">
|
||||||
<div class="row g-0">
|
<div class="container-fluid">
|
||||||
<div class="col-md-3 col-lg-2"></div>
|
<div class="row g-0">
|
||||||
<div class="col-md-9 col-lg-10 d-flex justify-content-center py-2">
|
<div class="col-md-3 col-lg-2"></div>
|
||||||
<div class="rounded-3 p-2 border shadow searchPeersContainer bg-body-tertiary">
|
<div class="col-md-9 col-lg-10 d-flex justify-content-center py-2">
|
||||||
<div class="d-flex gap-1 align-items-center px-2">
|
<div class="rounded-3 p-2 border shadow searchPeersContainer bg-body-tertiary">
|
||||||
<h6 class="mb-0 me-2">
|
<div class="d-flex gap-1 align-items-center px-2">
|
||||||
<label for="searchPeers">
|
<h6 class="mb-0 me-2">
|
||||||
<i class="bi bi-search"></i>
|
<label for="searchPeers">
|
||||||
</label>
|
<i class="bi bi-search"></i>
|
||||||
</h6>
|
</label>
|
||||||
<input
|
</h6>
|
||||||
ref="searchBar"
|
<input
|
||||||
class="form-control rounded-3 bg-secondary-subtle border-1 border-secondary-subtle "
|
ref="searchBar"
|
||||||
:placeholder="searchBarPlaceholder"
|
class="form-control rounded-3 bg-secondary-subtle border-1 border-secondary-subtle "
|
||||||
id="searchPeers"
|
:placeholder="searchBarPlaceholder"
|
||||||
@keyup="debounce()"
|
id="searchPeers"
|
||||||
v-model="searchString">
|
@keyup="debounce()"
|
||||||
<button
|
v-model="searchString">
|
||||||
@click="emits('close')"
|
<button
|
||||||
class="btn btn-secondary rounded-3 d-flex align-items-center">
|
@click="emits('close')"
|
||||||
<i class="bi bi-x-circle-fill me-2"></i><LocaleText t="Hide"></LocaleText>
|
class="btn bg-secondary-subtle text-secondary-emphasis border-secondary-subtle rounded-3 d-flex align-items-center">
|
||||||
</button>
|
<i class="bi bi-x-circle-fill me-2"></i>
|
||||||
|
<LocaleText t="Done"></LocaleText>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</Transition>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@ -72,5 +75,14 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.slideUp-enter-active,
|
||||||
|
.slideUp-leave-active{
|
||||||
|
transition: all 0.5s cubic-bezier(0.82, 0.58, 0.17, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slideUp-enter-from,
|
||||||
|
.slideUp-leave-to {
|
||||||
|
transform: translateY(100%);
|
||||||
|
filter: blur(3px);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -95,20 +95,22 @@ export default {
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="text-body filter mb-3 d-flex gap-2 flex-column flex-md-row" v-if="this.configurationLoaded">
|
<div class="text-body filter mb-3 d-flex gap-2 flex-column flex-md-row" v-if="this.configurationLoaded">
|
||||||
<div class="d-flex align-items-center gap-3 align-items-center ">
|
<div class="d-flex align-items-center gap-3 align-items-center mb-3 mb-md-0">
|
||||||
<small class="text-muted">
|
<small class="text-muted">
|
||||||
<LocaleText t="Sort By"></LocaleText>
|
<LocaleText t="Sort By"></LocaleText>
|
||||||
</small>
|
</small>
|
||||||
<a role="button"
|
<div class="d-flex ms-auto ms-lg-0">
|
||||||
@click="updateSort(sv)"
|
<a role="button"
|
||||||
:class="{'bg-primary-subtle text-primary-emphasis': this.currentSort.key === sv}"
|
@click="updateSort(sv)"
|
||||||
class="px-2 py-1 rounded-3" v-for="(s, sv) in this.sort">
|
:class="{'bg-primary-subtle text-primary-emphasis': this.currentSort.key === sv}"
|
||||||
<small>
|
class="px-2 py-1 rounded-3" v-for="(s, sv) in this.sort">
|
||||||
<i class="bi me-2"
|
<small>
|
||||||
:class="[this.currentSort.order === 'asc' ? 'bi-sort-up' : 'bi-sort-down']"
|
<i class="bi me-2"
|
||||||
v-if="this.currentSort.key === sv"></i>{{s}}
|
:class="[this.currentSort.order === 'asc' ? 'bi-sort-up' : 'bi-sort-down']"
|
||||||
</small>
|
v-if="this.currentSort.key === sv"></i>{{s}}
|
||||||
</a>
|
</small>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex align-items-center ms-md-auto">
|
<div class="d-flex align-items-center ms-md-auto">
|
||||||
<label for="configurationSearch" class="text-muted">
|
<label for="configurationSearch" class="text-muted">
|
||||||
|
@ -15,7 +15,9 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
{{ this.getLocaleText }}
|
<span>
|
||||||
|
{{ this.getLocaleText }}
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user