Mini Shell

Direktori : /home/ukubnwwt/viewer.ukubona.cloud/assets/
Upload File :
Current File : /home/ukubnwwt/viewer.ukubona.cloud/assets/ModelView-CfQIblOy.js

import{_ as w,g as D,h as x,j as F,a as y,i as r,c as a,b as e,t as u,k as _,l as f,n as p,d as T,v as M,F as I,r as k,e as m,o as l,p as O,f as P}from"./index-Ddu6STty.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:x,moment:F,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(o){this.$router.push(o)},isURLDicomImage(o){return o.split("?")[0].split("#")[0].toLowerCase().endsWith(".dcm")?(this.selectedExtension="dcm",!0):(this.selectedExtension=null,!1)},loadAndDisplayImage(o){g.loadAndCacheImage(o).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 o=`wadouri:${this.selectedFile.getFileURL}`;this.loadAndDisplayImage(o)}else console.error("Failed to find the DICOM image element.")},async refreshToken(o){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),y.defaults.headers.common.Authorization=`Bearer ${t.data.access}`,await o()):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 o=await this.$http.get("accounts/userdata");this.userData=o.data,this.$root.profileInfo={name:this.userData.first_name,image:this.userData.profile_image_url},this.$root.isLoading=!1}catch(o){if(this.$root.isLoading=!1,o.response){const t=o.response.status;t===401?await this.refreshToken(this.getUserData):(console.error(`Error ${t}: ${o.response.data.message}`),r.error(`Error ${t}: ${o.response.data.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}else o.request?(console.error("No response received:",o.request),r.error("No response received. Please try again later.",{autoClose:3e3,position:r.POSITION.TOP_RIGHT})):(console.error("Error",o),r.error(`Error: ${o.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}},async useModel(o){if(!this.selectedFile){alert("Please select a file to use the model");return}const t={fileUUID:this.selectedFile.uuid,model_name:o};try{await y.post("api/v1/model",t).then(c=>{console.log("Model used successfully",c.data),r.info("AI Model request is Processing",{autoClose:3e3,position:r.POSITION.TOP_RIGHT}),this.modelResultReady=!0,this.modelResult=c.data.data})}catch(c){if(this.$root.isLoading=!1,c.response){const n=c.response.status;n===401?await this.refreshToken(this.useModel):(console.error(`Error ${n}: ${c.response.data.message}`),r.error(`Error ${n}: ${c.response.data.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}else c.request?(console.error("No response received:",c.request),r.error("No response received. Please try again later.",{autoClose:3e3,position:r.POSITION.TOP_RIGHT})):(console.error("Error",c),r.error(`Error: ${c.message}`,{autoClose:3e3,position:r.POSITION.TOP_RIGHT}))}},async prefetchAllImages(){if(!this.areImagesPrefetched){this.areImagesPrefetched=!0;for(let o=0;o<this.filesData.data.length;o++){let t=this.filesData.data[o];this.$root.preloadImage(t.getFileURL)}}},async getFiles(o=null,t=null){this.showFileTableLoader=!0;let c={};try{o&&(c.page=o),t&&(c.search=t),console.log("herte",o),await this.$http.get("api/v1/files",{params:c}).then(n=>{const s=n.data;s.status&&(this.filesData=s,this.showFileTableLoader=!1)}),this.prefetchAllImages()}catch(n){if(this.showFileTableLoader=!1,n.response){const s=n.response.status;s===401?await this.refreshToken(this.getFiles):(console.error(`Error ${s}: ${n.response.data.message}`),r.error(`Error ${s}: ${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}))}}}},d=o=>(O("data-v-433bd2c9"),o=o(),P(),o),q={class:"home"},B={class:"container"},V={key:0},z=d(()=>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=d(()=>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"},oe={key:0,class:"box"},ae=d(()=>e("label",null,"Saved FIles",-1)),le=d(()=>e("br",null,null,-1)),ie=d(()=>e("button",null,[f(" View Profile "),e("i",{class:"fas fa-chevron-down"})],-1)),re={class:"content_right"},ce={class:"right_top grid"},de={class:"rbox flex1"},ne={class:"text"},_e=d(()=>e("h4",null,"total AI Results",-1)),he={key:0},ue={key:1},me=d(()=>e("div",{class:"icon"},[e("span",{class:"material-icons"}," folder_copy ")],-1)),pe={class:"rbox flex1"},ge={class:"text"},ve=d(()=>e("h4",null,"Available AI models",-1)),fe=d(()=>e("div",{class:"icon"},[e("span",{class:"material-icons"}," file_download ")],-1)),be={class:"home",style:{"margin-top":"3rem"}},ye={class:"container"},Ie={key:0,class:"img-container"},ke={style:{color:"var(--dark)"}},we={style:{color:"var(--primary)"}},De={class:"imgbox"},xe=["src"],Fe={key:1,class:"model-view-button",style:{width:"100%","text-align":"center"}},Te={class:"heading flex1"},Me=d(()=>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-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Cardiomegaly Model (Gradcam)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to detect region of cardiomegaly using gradcam.</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 98%</p>',3),Ee={class:"card"},Ue=["src"],Le={class:"card__overlay"},Ne=m('<div class="card__header" data-v-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Disease Detection (Bounding Box)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to detect various diseases in X-Ray Image</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 98%</p>',3),Ge={class:"card"},He=d(()=>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-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Malaria Parasite Detection (Torch)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to classify between parasite or uninfected</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 98%</p>',3),Ve={class:"card"},ze=["src"],je={class:"card__overlay"},Ye=m('<div class="card__header" data-v-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Brain Tumor Detection (Segmentation)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to segment brain Tumor sections</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 98%</p>',3),We={class:"card"},Ke=["src"],Qe={class:"card__overlay"},Xe=m('<div class="card__header" data-v-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Pulmonary Edema (Gradcam)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to detect pulmonary edema</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 70%</p>',3),Je={class:"card"},Ze=["src"],$e={class:"card__overlay"},es=m('<div class="card__header" data-v-433bd2c9><svg class="card__arc" xmlns="http://www.w3.org/2000/svg" data-v-433bd2c9><path data-v-433bd2c9></path></svg><div class="card__header-text" data-v-433bd2c9><h3 class="card__title" data-v-433bd2c9>Pneumonia (Gradcam)</h3></div></div><p class="card__description" data-v-433bd2c9>AI model to detect Pneumonia</p><p class="card__description" data-v-433bd2c9>Model Accuracy: 70%</p>',3),ss=d(()=>e("section",{class:"models"},null,-1)),ts={class:"table"},os={class:"container"},as={class:"top-level"},ls={class:"left"},is=d(()=>e("h3",null,"Uploaded Files",-1)),rs={class:"search-button"},cs=d(()=>e("thead",null,[e("tr",null,[e("th",null,[e("input",{type:"checkbox"})]),e("th",null,"File Name"),e("th",null,"File Size"),e("th",null,"Uploaded"),e("th",null,"File Description"),e("th")])],-1)),ds={key:0,style:{position:"relative !important"}},ns=["onClick"],_s=d(()=>e("td",null,null,-1)),hs={key:0,class:"loading-table"},us=d(()=>e("div",{class:"spinner"},null,-1)),ms=[us],ps={key:1},gs={key:0,class:"pagination"},vs=["onClick"];function fs(o,t,c,n,s,h){return l(),a("main",null,[e("section",q,[e("div",B,[s.userData?(l(),a("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(),a("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(),a("div",oe,[e("p",null,u(s.userData.saved_files),1),ae,f(),le,ie])):_("",!0)])):_("",!0)])]),e("div",re,[e("div",ce,[e("div",de,[e("div",ne,[_e,s.userData?(l(),a("h2",he,u(s.userData.total_scans),1)):(l(),a("h2",ue,"..."))]),me]),e("div",pe,[e("div",ge,[ve,e("h2",null,u(o.$store.state.total_models),1)]),fe])])])])])]),e("section",be,[e("div",ye,[s.selectedFile?(l(),a("div",Ie,[e("h3",ke,[f("Selected File:"),e("span",we,u(s.selectedFile.fileName),1)]),e("div",De,[h.isURLDicomImage(s.selectedFile.getFileURL)?_("",!0):(l(),a("img",{key:0,src:s.selectedFile.getFileURL,alt:"",style:{background:"var(--light)"}},null,8,xe))])])):_("",!0),e("div",{id:"dicomImage",ref:"dicomImage",class:p(["img dimg",{disable:!s.selectedFile||s.selectedExtension!="dcm"}]),style:{}},null,2),s.modelResultReady?(l(),a("div",Fe,[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(),a("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(),a("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(),a("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(),a("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(),a("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(),a("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(),a("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",os,[e("div",as,[e("div",ls,[is,T(e("input",{type:"search",name:"",id:"",placeholder:"search files","onUpdate:modelValue":t[7]||(t[7]=i=>o.searchText=i)},null,512),[[M,o.searchText]]),e("span",rs,[e("i",{class:"fa-solid fa-magnifying-glass",onClick:t[8]||(t[8]=i=>h.getFiles(null,o.searchText))})])])]),e("table",null,[cs,s.filesData?(l(),a("tbody",ds,[(l(!0),a(I,null,k(s.filesData.data,i=>(l(),a("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(),a("button",{key:0,onClick:t[9]||(t[9]=b=>{s.selectedFile=null,s.selectedExtension=null}),style:{"background-color":"var(--success)"}},"Selected")):(l(),a("button",{key:1,onClick:b=>{s.selectedFile=i,h.loadFromUrl()}},"Select File",8,ns))]),_s]))),128)),s.showFileTableLoader?(l(),a("div",hs,ms)):_("",!0)])):(l(),a("tbody",ps))]),s.filesData?(l(),a("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),a(I,null,k(s.filesData.pagination.total_pages,(i,b)=>(l(),a("li",{key:i,class:p({active:s.filesData.pagination.current_page==i}),onClick:bs=>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 ks=w(H,[["render",fs],["__scopeId","data-v-433bd2c9"]]);export{ks as default};