Mini Shell
import{_ as k,g as D,h as F,j as x,a as I,i as r,c as o,b as e,t as u,k as _,l as f,n as p,d as T,v as M,F as b,r as w,e as m,o as l,p as O,f as P}from"./index-BoT3h7K-.js";import{r as C,m as S,c as R,e as A,a as g,b as v,d as E,f as U}from"./cornerstoneWADOImageLoader.bundle.min-EU_ZCHA5.js";const L="/assets/1acce291-f809-41b2-b665-8ce57b31efb8-DO4KjI-M.jpg",N="/assets/edema-C0l58YIh.jpeg",G="/assets/Untitled-66-0zKtI6-Q.jpeg",H={data(){return{img2:D,img1:F,moment:x,radiology:C,microscopy:S,cardiology:R,endoscopy:A,edema:N,pneumonia:G,brain_tumor_mri_image:L,selectedFile:null,filesData:null,showFileTableLoader:!1,userData:null,modelResultReady:!1,areImagesPrefetched:!1,element:null,selectedExtension:null}},mounted(){this.$root.loadScripts(),this.getFiles(),this.getUserData(),this.$nextTick(()=>{this.element=this.$refs.dicomImage||document.getElementById("dicomImage")||document.querySelector(".dimg"),console.log("eemmem",document.querySelector("#dicomImage")),console.log("eemmemhome",document.querySelector(".home"))})},methods:{redirectTo(a){this.$router.push(a)},isURLDicomImage(a){return a.split("?")[0].split("#")[0].toLowerCase().endsWith(".dcm")?(this.selectedExtension="dcm",!0):(this.selectedExtension=null,!1)},loadAndDisplayImage(a){g.loadAndCacheImage(a).then(t=>{g.displayImage(this.element,t)}).catch(t=>{console.error(`Error loading image: ${t}`)})},loadFromUrl(){if(this.isURLDicomImage(this.selectedFile.getFileURL))if(this.element=this.element||this.$refs.dicomImage,console.log("stuff",this.element),this.element){g.enable(this.element),v.external.cornerstone=E,v.external.dicomParser=U,v.configure({beforeSend:function(t){}}),g.registerImageLoader("wadouri",v.wadouri.loadImage);const a=`wadouri:${this.selectedFile.getFileURL}`;this.loadAndDisplayImage(a)}else console.error("Failed to find the DICOM image element.")},async refreshToken(a){try{const t=await this.$http.post("api/token/refresh",{refresh:this.$store.state.refresh});t.data.access?(this.$store.commit("setAccess",t.data.access),I.defaults.headers.common.Authorization=`Bearer ${t.data.access}`,await a()):this.$router.push("/login")}catch(t){console.error("Failed to refresh token",t),this.$router.push("/login")}},async getUserData(){this.$root.isLoading=!0;try{const a=await this.$http.get("accounts/userdata");this.userData=a.data,this.$root.profileInfo={name:this.userData.first_name,image:this.userData.profile_image_url},this.$root.isLoading=!1}catch(a){if(this.$root.isLoading=!1,a.response){const t=a.response.status;t===401?await this.refreshToken(this.getUserData):(console.error(`Error ${t}: ${a.response.data.message}`),r.error(`Error ${t}: ${a.response.data.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}else a.request?(console.error("No response received:",a.request),r.error("No response received. Please try again later.",{autoClose:3e3,position:r.POSITION.TOP_RIGHT})):(console.error("Error",a),r.error(`Error: ${a.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}},async useModel(a){if(!this.selectedFile){alert("Please select a file to use the model");return}const t={fileUUID:this.selectedFile.uuid,model_name:a};try{await I.post("api/v1/model",t).then(n=>{console.log("Model used successfully",n.data),r.info("AI Model request is Processing",{autoClose:3e3,position:r.POSITION.TOP_RIGHT}),this.modelResultReady=!0,this.modelResult=n.data.data})}catch(n){if(this.$root.isLoading=!1,n.response){const d=n.response.status;d===401?await this.refreshToken(this.useModel):(console.error(`Error ${d}: ${n.response.data.message}`),r.error(`Error ${d}: ${n.response.data.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}else n.request?(console.error("No response received:",n.request),r.error("No response received. Please try again later.",{autoClose:3e3,position:r.POSITION.TOP_RIGHT})):(console.error("Error",n),r.error(`Error: ${n.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}},async prefetchAllImages(){if(!this.areImagesPrefetched){this.areImagesPrefetched=!0;for(let a=0;a<this.filesData.data.length;a++){let t=this.filesData.data[a];this.$root.preloadImage(t.getFileURL)}}},async getFiles(a=null,t=null){this.showFileTableLoader=!0;let n={};try{a&&(n.page=a),t&&(n.search=t),console.log("herte",a),await this.$http.get("api/v1/files",{params:n}).then(d=>{const s=d.data;s.status&&(this.filesData=s,this.showFileTableLoader=!1)}),this.prefetchAllImages()}catch(d){if(this.showFileTableLoader=!1,d.response){const s=d.response.status;s===401?await this.refreshToken(this.getFiles):(console.error(`Error ${s}: ${d.response.data.message}`),r.error(`Error ${s}: ${d.response.data.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}else d.request?(console.error("No response received:",d.request),r.error("No response received. Please try again later.",{autoClose:3e3,position:r.POSITION.TOP_RIGHT})):(console.error("Error",d),r.error(`Error: ${d.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}}}},c=a=>(O("data-v-165321a0"),a=a(),P(),a),q={class:"home"},B={class:"container"},V={key:0},z=c(()=>e("div",{class:"heading flex1"},[e("h3",null," AI Models"),e("p",null,"Dashboard / Models")],-1)),j={class:"content flex"},Y={class:"content_left"},W={class:"top"},K={class:"wlecome flex1"},Q=c(()=>e("div",{class:"text"},[e("h3",null,"Welcome Back !"),e("label",null,"Ukubona Dashboard")],-1)),X={class:"img"},J=["src"],Z={key:0,class:"profile flex1"},$={class:"box"},ee={class:"image"},se=["src"],te={class:"text"},ae={key:0,class:"box"},oe=c(()=>e("label",null,"Saved FIles",-1)),le=c(()=>e("br",null,null,-1)),ie=c(()=>e("button",null,[f(" View Profile "),e("i",{class:"fas fa-chevron-down"})],-1)),re={class:"content_right"},ne={class:"right_top grid"},ce={class:"rbox flex1"},de={class:"text"},_e=c(()=>e("h4",null,"total AI Results",-1)),he={key:0},ue={key:1},me=c(()=>e("div",{class:"icon"},[e("span",{class:"material-icons"}," folder_copy ")],-1)),pe={class:"rbox flex1"},ge={class:"text"},ve=c(()=>e("h4",null,"Available AI models",-1)),fe=c(()=>e("div",{class:"icon"},[e("span",{class:"material-icons"}," file_download ")],-1)),ye={class:"home",style:{"margin-top":"3rem"}},Ie={class:"container"},be={key:0,class:"img-container"},we={style:{color:"var(--dark)"}},ke={style:{color:"var(--primary)"}},De={class:"imgbox"},Fe=["src"],xe={key:1,class:"model-view-button",style:{width:"100%","text-align":"center"}},Te={class:"heading flex1"},Me=c(()=>e("h3",{style:{"font-size":"22px","font-weight":"600"}},"Available Models",-1)),Oe={key:0,style:{color:"#e32"}},Pe={class:"cards"},Ce={class:"card"},Se=["src"],Re={class:"card__overlay"},Ae=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Cardiomegaly Model (Gradcam)</h3></div></div><p class="card__description" data-v-165321a0>AI model to detect region of cardiomegaly using gradcam.</p><p class="card__description" data-v-165321a0>Model Accuracy: 98%</p>',3),Ee={class:"card"},Ue=["src"],Le={class:"card__overlay"},Ne=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Disease Detection (Bounding Box)</h3></div></div><p class="card__description" data-v-165321a0>AI model to detect various diseases in X-Ray Image</p><p class="card__description" data-v-165321a0>Model Accuracy: 98%</p>',3),Ge={class:"card"},He=c(()=>e("img",{src:"https://images.pexels.com/photos/9891863/pexels-photo-9891863.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",class:"card__image",alt:""},null,-1)),qe={class:"card__overlay"},Be=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Malaria Parasite Detection (Torch)</h3></div></div><p class="card__description" data-v-165321a0>AI model to classify between parasite or uninfected</p><p class="card__description" data-v-165321a0>Model Accuracy: 98%</p>',3),Ve={class:"card"},ze=["src"],je={class:"card__overlay"},Ye=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Brain Tumor Detection (Segmentation)</h3></div></div><p class="card__description" data-v-165321a0>AI model to segment brain Tumor sections</p><p class="card__description" data-v-165321a0>Model Accuracy: 98%</p>',3),We={class:"card"},Ke=["src"],Qe={class:"card__overlay"},Xe=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Pulmonary Edema (Gradcam)</h3></div></div><p class="card__description" data-v-165321a0>AI model to detect pulmonary edema</p><p class="card__description" data-v-165321a0>Model Accuracy: 70%</p>',3),Je={class:"card"},Ze=["src"],$e={class:"card__overlay"},es=m('<div class="card__header" data-v-165321a0><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-165321a0><path data-v-165321a0></path></svg><div class="card__header-text" data-v-165321a0><h3 class="card__title" data-v-165321a0>Pneumonia (Gradcam)</h3></div></div><p class="card__description" data-v-165321a0>AI model to detect Pneumonia</p><p class="card__description" data-v-165321a0>Model Accuracy: 70%</p>',3),ss=c(()=>e("section",{class:"models"},null,-1)),ts={class:"table"},as={class:"container"},os={class:"top-level"},ls={class:"left"},is=c(()=>e("h3",null,"Uploaded Files",-1)),rs={class:"search-button"},ns=c(()=>e("thead",null,[e("tr",null,[e("th",null,"File Name"),e("th",null,"File Size"),e("th",null,"Uploaded"),e("th",null,"File Description"),e("th")])],-1)),cs={key:0,style:{position:"relative !important"}},ds=["onClick"],_s=c(()=>e("td",null,null,-1)),hs={key:0,class:"loading-table"},us=c(()=>e("div",{class:"spinner"},null,-1)),ms=[us],ps={key:1},gs={key:0,class:"pagination"},vs=["onClick"];function fs(a,t,n,d,s,h){return l(),o("main",null,[e("section",q,[e("div",B,[s.userData?(l(),o("h3",V,u(s.userData.hospital.name),1)):_("",!0),z,e("div",j,[e("div",Y,[e("div",W,[e("div",K,[Q,e("div",X,[e("img",{src:s.img2,alt:""},null,8,J)])]),s.userData?(l(),o("div",Z,[e("div",$,[e("div",ee,[e("img",{src:s.userData.profile_image_url,alt:""},null,8,se)]),e("div",te,[e("p",null,u(s.userData.last_name)+" "+u(s.userData.first_name),1),e("label",null,u(s.userData.role),1)])]),s.userData?(l(),o("div",ae,[e("p",null,u(s.userData.saved_files),1),oe,f(),le,ie])):_("",!0)])):_("",!0)])]),e("div",re,[e("div",ne,[e("div",ce,[e("div",de,[_e,s.userData?(l(),o("h2",he,u(s.userData.total_scans),1)):(l(),o("h2",ue,"..."))]),me]),e("div",pe,[e("div",ge,[ve,e("h2",null,u(a.$store.state.total_models),1)]),fe])])])])])]),e("section",ye,[e("div",Ie,[s.selectedFile?(l(),o("div",be,[e("h3",we,[f("Selected File:"),e("span",ke,u(s.selectedFile.fileName),1)]),e("div",De,[h.isURLDicomImage(s.selectedFile.getFileURL)?_("",!0):(l(),o("img",{key:0,src:s.selectedFile.getFileURL,alt:"",style:{background:"var(--light)"}},null,8,Fe))])])):_("",!0),e("div",{id:"dicomImage",ref:"dicomImage",class:p(["img dimg",{disable:!s.selectedFile||s.selectedExtension!="dcm"}]),style:{}},null,2),s.modelResultReady?(l(),o("div",xe,[e("button",{type:"button",style:{"font-size":"14px","font-weight":"400px",cursor:"pointer !important"},onClick:t[0]||(t[0]=i=>h.redirectTo("/results"))},"View Model Results")])):_("",!0),e("div",Te,[Me,s.selectedFile?_("",!0):(l(),o("h3",Oe,"SELECT A FILE BEFORE CHOOSING A MODEL"))])]),e("ul",Pe,[e("li",null,[e("span",Ce,[e("img",{src:s.radiology,class:"card__image",alt:""},null,8,Se),e("div",Re,[Ae,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[1]||(t[1]=i=>h.useModel("cardimegaly_mobilenet"))},"Use Model")):_("",!0)])])]),e("li",null,[e("span",Ee,[e("img",{src:s.cardiology,class:"card__image",alt:""},null,8,Ue),e("div",Le,[Ne,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[2]||(t[2]=i=>h.useModel("bboxv1"))},"Use Model")):_("",!0)])])]),e("li",null,[e("span",Ge,[He,e("div",qe,[Be,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[3]||(t[3]=i=>h.useModel("malaria"))},"Use Model")):_("",!0)])])]),e("li",null,[e("span",Ve,[e("img",{src:s.brain_tumor_mri_image,class:"card__image",alt:""},null,8,ze),e("div",je,[Ye,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[4]||(t[4]=i=>h.useModel("brain_tumor"))},"Use Model")):_("",!0)])])]),e("li",null,[e("span",We,[e("img",{src:s.edema,class:"card__image",alt:""},null,8,Ke),e("div",Qe,[Xe,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[5]||(t[5]=i=>h.useModel("pulmonary_edema"))},"Use Model")):_("",!0)])])]),e("li",null,[e("span",Je,[e("img",{src:s.pneumonia,class:"card__image",alt:""},null,8,Ze),e("div",$e,[es,s.selectedFile?(l(),o("button",{key:0,type:"button",class:"model-button",onClick:t[6]||(t[6]=i=>h.useModel("pneumonia"))},"Use Model")):_("",!0)])])])])]),ss,e("section",ts,[e("div",as,[e("div",os,[e("div",ls,[is,T(e("input",{type:"search",name:"",id:"",placeholder:"search files","onUpdate:modelValue":t[7]||(t[7]=i=>a.searchText=i)},null,512),[[M,a.searchText]]),e("span",rs,[e("i",{class:"fa-solid fa-magnifying-glass",onClick:t[8]||(t[8]=i=>h.getFiles(null,a.searchText))})])])]),e("table",null,[ns,s.filesData?(l(),o("tbody",cs,[(l(!0),o(b,null,w(s.filesData.data,i=>(l(),o("tr",{key:i},[e("td",null,u(i.fileName),1),e("td",null,u(i.fileSize),1),e("td",null,u(s.moment(`${i.dateUploaded}`).format("DD MMM, YYYY . HH:MM:SS")),1),e("td",null,u(i.fileDescription.slice(0,15))+"...",1),e("td",null,[s.selectedFile&&s.selectedFile.uuid==i.uuid?(l(),o("button",{key:0,onClick:t[9]||(t[9]=y=>{s.selectedFile=null,s.selectedExtension=null}),style:{"background-color":"var(--success)"}},"Selected")):(l(),o("button",{key:1,onClick:y=>{s.selectedFile=i,h.loadFromUrl()}},"Select File",8,ds))]),_s]))),128)),s.showFileTableLoader?(l(),o("div",hs,ms)):_("",!0)])):(l(),o("tbody",ps))]),s.filesData?(l(),o("div",gs,[e("ul",null,[e("li",null,[e("i",{class:p(["fas fa-chevron-left",{disabled:s.filesData.pagination.current_page<=1}]),onClick:t[10]||(t[10]=i=>h.getFiles(s.filesData.pagination.current_page-1))},null,2)]),(l(!0),o(b,null,w(s.filesData.pagination.total_pages,(i,y)=>(l(),o("li",{key:i,class:p({active:s.filesData.pagination.current_page==i}),onClick:ys=>h.getFiles(i)},[e("span",null,u(i),1)],10,vs))),128)),e("li",null,[e("i",{class:p(["fas fa-chevron-right",{disabled:s.filesData.pagination.current_page>=s.filesData.pagination.total_pages}]),onClick:t[11]||(t[11]=i=>h.getFiles(s.filesData.pagination.current_page+1))},null,2)])])])):_("",!0)])])])}const ws=k(H,[["render",fs],["__scopeId","data-v-165321a0"]]);export{ws as default};