PageSourceSearch

https://mylineapp.com/assets/editNews-QAA72V9P.js

js mylineapp.com collected 2026-10-02 16:11:15 UTC 12,655 bytes, 1 lines download raw bytes

1import{_ as c,c as H,o as x,l as d,h as t,m as s,C as f,D as p,b as D,t as m,aJ as b,X as T,aK as y,E as k,I as F,q as g,s as I,J as E,K as j,G as q,H as A,x as z,B as L}from"./index-2HS44D-R.js";import{n as R}from"./cleanHtml-B-Ur2lwN.js";import{V as w,a as o}from"./VRow-Bigst0Is.js";import{b as U,V as v,a as B,c as C}from"./VCard-C69KL1aB.js";import{V as u}from"./VTextField-CUK9tzk2.js";import{d as M,c as $}from"./VSelect-QoJq87jU.js";import{V as S}from"./VDialog-Dk7wi4Lu.js";import{V as N}from"./VContainer-D0HNwyFj.js";import{V as K}from"./VTextarea-DpnpQWoJ.js";import{V as O}from"./VDatePicker-C4jalEmS.js";import{V as P}from"./VDataTable-6Kb5JHBh.js";const J={name:"EditNews",data:()=>({dialog:!1,dialogDelete:!1,search:"",loading:!1,uploadedMenu:!1,validUntilMenu:!1,typeFilter:null,typeOptions:[{title:"Alert",value:"alert"},{title:"Info",value:"info"},{title:"Tip",value:"tip"}],headers:[{title:"News ID",value:"newsId",sortable:!0},{title:"Type",value:"type",sortable:!0},{title:"Message",value:"message",sortable:!1},{title:"Link",value:"link",sortable:!1},{title:"Uploaded",value:"uploaded",sortable:!0},{title:"Valid Until",value:"validUntil",sortable:!0},{title:"Min Build",value:"minBuild",sortable:!0},{title:"Max Build",value:"maxBuild",sortable:!0},{title:"Actions",value:"actions",sortable:!1,align:"end"}],news:[],editedIndex:-1,editedItem:{newsId:"",type:"info",message:"",link:"",uploaded:null,validUntil:null,minBuild:null,maxBuild:null},defaultItem:{newsId:"",type:"info",message:"",link:"",uploaded:null,validUntil:null,minBuild:null,maxBuild:null},uploadedDate:null,uploadedTime:null,validUntilDate:null,validUntilTime:null}),computed:{filteredNews(){return this.news.filter(e=>!(this.typeFilter!==null&&e.type!==this.typeFilter))},formTitle(){return this.editedIndex===-1?"New News Item":"Edit News Item"}},watch:{dialog(e){e||this.close()},dialogDelete(e){e||this.closeDelete()}},async created(){const e=await z();if(!e){this.$router.push("/admin/login");return}if((await L(e)).claims.role!=="admin"){this.$router.push("/admin");return}await this.initialize()},methods:{async initialize(){this.loading=!0;try{console.log("Fetching news from Firestore...");const e=await q(A(I,"news"));console.log("Query snapshot:",e),this.news=e.docs.map(l=>{const a=l.data();console.log("Document ID:",l.id),console.log("Document data:",a);const h={newsId:l.id,type:a.type||"info",message:R(a.message)||"",link:a.link||"",uploaded:a.uploaded||null,validUntil:a.validUntil||null,minBuild:a.minBuild||null,maxBuild:a.maxBuild||null};return console.log("Processed news item:",h),h}),console.log("All processed news items:",this.news)}catch(e){console.error("Error fetching news:",e)}finally{this.loading=!1}},editItem(e){if(this.editedIndex=this.news.indexOf(e),this.editedItem=Object.assign({},e),e.uploaded){const l=new Date(e.uploaded);this.uploadedDate=l.toISOString().split("T")[0],this.uploadedTime=`${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}`}else this.uploadedDate=null,this.uploadedTime=null;if(e.validUntil){const l=new Date(e.validUntil);this.validUntilDate=l.toISOString().split("T")[0],this.validUntilTime=`${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}`}else this.validUntilDate=null,this.validUntilTime=null;this.dialog=!0},deleteItem(e){this.editedIndex=this.news.indexOf(e),this.editedItem=Object.assign({},e),this.dialogDelete=!0},async deleteItemConfirm(){try{await j(g(I,"news",this.editedItem.newsId)),this.news.splice(this.editedIndex,1)}catch(e){console.error("Error deleting news item:",e)}this.closeDelete()},close(){this.dialog=!1,this.$nextTick(()=>{this.editedItem=Object.assign({},this.defaultItem),this.editedIndex=-1,this.uploadedDate=null,this.uploadedTime=null,this.validUntilDate=null,this.validUntilTime=null})},closeDelete(){this.dialogDelete=!1,this.$nextTick(()=>{this.editedItem=Object.assign({},this.defaultItem),this.editedIndex=-1})},updateUploadedTimestamp(){if(this.uploadedDate&&this.uploadedTime){const[e,l]=this.uploadedTime.split(":").map(Number),a=new Date(this.uploadedDate);a.setHours(e,l,0,0),this.editedItem.uploaded=a.getTime()}}
1,updateValidUntilTimestamp(){if(this.validUntilDate&&this.validUntilTime){const[e,l]=this.validUntilTime.split(":").map(Number),a=new Date(this.validUntilDate);a.setHours(e,l,0,0),this.editedItem.validUntil=a.getTime()}else this.validUntilDate||(this.editedItem.validUntil=null)},async save(){try{this.uploadedDate&&this.uploadedTime?this.updateUploadedTimestamp():this.editedItem.uploaded||(this.editedItem.uploaded=Date.now()),this.validUntilDate&&this.validUntilTime&&this.updateValidUntilTimestamp();const e={type:this.editedItem.type,message:this.editedItem.message,link:this.editedItem.link||"",uploaded:this.editedItem.uploaded};if(this.editedItem.validUntil&&(e.validUntil=this.editedItem.validUntil),this.editedItem.minBuild!==null&&this.editedItem.minBuild!==""&&(e.minBuild=Number(this.editedItem.minBuild)),this.editedItem.maxBuild!==null&&this.editedItem.maxBuild!==""&&(e.maxBuild=Number(this.editedItem.maxBuild)),this.editedIndex>-1)await F(g(I,"news",this.editedItem.newsId),e),Object.assign(this.news[this.editedIndex],this.editedItem);else{if(!this.editedItem.newsId){alert("News ID is required");return}const l=g(I,"news",this.editedItem.newsId);await E(l,e),this.news.push({...this.editedItem,newsId:this.editedItem.newsId})}}catch(e){console.error("Error saving news item:",e),alert("Error saving news item: "+e.message)}this.close(),await this.initialize()},openNewItem(){this.editedItem=Object.assign({},this.defaultItem),this.editedItem.uploaded=Date.now();const e=new Date;this.uploadedDate=e.toISOString().split("T")[0],this.uploadedTime=`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`,this.validUntilDate=null,this.validUntilTime=null,this.editedIndex=-1,this.dialog=!0},formatTimestamp(e){return e?new Date(e).toLocaleString():"Never"},getTypeColor(e){switch(e){case"alert":return"red";case"info":return"blue";case"tip":return"orange";default:return"grey"}}}},G={class:"text-h5"},Q={class:"text-truncate",style:{"max-width":"300px",display:"inline-block"}};function X(e,l,a,h,W,n){return x(),H(N,null,{default:d(()=>[t(w,null,{default:d(()=>[t(o,{cols:"12"},{default:d(()=>[t(U,null,{default:d(()=>[t(v,null,{default:d(()=>[l[20]||(l[20]=s(" News Management ")),t(f),t(u,{modelValue:e.search,"onUpdate:modelValue":l[0]||(l[0]=i=>e.search=i),"append-icon":"mdi-magnify",label:"Search","single-line":"","hide-details":""},null,8,["modelValue"])]),_:1,__:[20]}),t(B,null,{default:d(()=>[t(w,null,{default:d(()=>[t(o,{cols:"12",sm:"4"},{default:d(()=>[t(M,{modelValue:e.typeFilter,"onUpdate:modelValue":l[1]||(l[1]=i=>e.typeFilter=i),items:e.typeOptions,label:"Type",clearable:""},null,8,["modelValue","items"])]),_:1}),t(o,{cols:"12",sm:"8"},{default:d(()=>[t(p,{color:"primary",dark:"",class:"mb-2",onClick:n.openNewItem},{default:d(()=>l[21]||(l[21]=[s(" New News Item ")])),_:1,__:[21]},8,["onClick"]),t(S,{modelValue:e.dialog,"onUpdate:modelValue":l[18]||(l[18]=i=>e.dialog=i),"max-width":"600px"},{default:d(()=>[t(U,null,{default:d(()=>[t(v,null,{default:d(()=>[D("span",G,m(n.formTitle),1)]),_:1}),t(B,null,{default:d(()=>[t(N,null,{default:d(()=>[t(w,null,{default:d(()=>[t(o,{cols:"12"},{default:d(()=>[t(u,{modelValue:e.editedItem.newsId,"onUpdate:modelValue":l[2]||(l[2]=i=>e.editedItem.newsId=i),label:"News ID",disabled:e.editedIndex>-1,hint:"Document ID in Firestore"},null,8,["modelValue","disabled"])]),_:1}),t(o,{cols:"12"},{default:d(()=>[t(M,{modelValue:e.editedItem.type,"onUpdate:modelValue":l[3]||(l[3]=i=>e.editedItem.type=i),items:e.typeOptions,label:"Type",required:""},null,8,["modelValue","items"])]),_:1}),t(o,{cols:"12"},{default:d(()=>[t(K,{modelValue:e.editedItem.message,"onUpdate:modelValue":l[4]||(l[4]=i=>e.editedItem.message=i),label:"Message",rows:"4",required:"",hint:"Text content of the news item"},null,8,["modelValue"])]),_:1}),t(o,{cols:"12"},{default:d(()=>[t(u,{modelValue:e.editedItem.link,"onUpdate:modelValue":l[5]||(l[5]=i=>e.editedItem.link=i),label:"Link (Optional)",hint:"URL for 'More info' button"},null,8,["modelValue"])]),_:1}),t(o,{cols:"12",sm:"6"},{default:d(()=>[t(b,{ref:"uploadedMenu",modelValue:e.uploadedMenu,"onUpdate:modelValue":l[9]||(l[9]=i=>e.uploadedMenu=i),"close-on-content-click":!1,transition:"scale-transition","offset-y":"","min-width":"auto"},{activator:d(({on:i,attrs:r})=>[t(u,T({modelValue:e.uploadedDate,"onUpdate:modelValue":l[6]||(l[6]=V=>e.uploadedDate=V),label:"Uploaded Date","prepend-icon":"mdi-calendar",readonly:""},r,y(i)),null,16,["modelValue"])]),default:d(()=>
1[t(O,{modelValue:e.uploadedDate,"onUpdate:modelValue":l[7]||(l[7]=i=>e.uploadedDate=i),onInput:l[8]||(l[8]=i=>e.uploadedMenu=!1)},null,8,["modelValue"])]),_:1},8,["modelValue"]),t(u,{modelValue:e.uploadedTime,"onUpdate:modelValue":l[10]||(l[10]=i=>e.uploadedTime=i),label:"Uploaded Time (HH:MM)",hint:"24-hour format",onInput:n.updateUploadedTimestamp},null,8,["modelValue","onInput"])]),_:1}),t(o,{cols:"12",sm:"6"},{default:d(()=>[t(b,{ref:"validUntilMenu",modelValue:e.validUntilMenu,"onUpdate:modelValue":l[14]||(l[14]=i=>e.validUntilMenu=i),"close-on-content-click":!1,transition:"scale-transition","offset-y":"","min-width":"auto"},{activator:d(({on:i,attrs:r})=>[t(u,T({modelValue:e.validUntilDate,"onUpdate:modelValue":l[11]||(l[11]=V=>e.validUntilDate=V),label:"Valid Until Date (Optional)","prepend-icon":"mdi-calendar",readonly:""},r,y(i)),null,16,["modelValue"])]),default:d(()=>[t(O,{modelValue:e.validUntilDate,"onUpdate:modelValue":l[12]||(l[12]=i=>e.validUntilDate=i),onInput:l[13]||(l[13]=i=>e.validUntilMenu=!1)},null,8,["modelValue"])]),_:1},8,["modelValue"]),t(u,{modelValue:e.validUntilTime,"onUpdate:modelValue":l[15]||(l[15]=i=>e.validUntilTime=i),label:"Valid Until Time (HH:MM)",hint:"24-hour format",onInput:n.updateValidUntilTimestamp},null,8,["modelValue","onInput"])]),_:1}),t(o,{cols:"12",sm:"6"},{default:d(()=>[t(u,{modelValue:e.editedItem.minBuild,"onUpdate:modelValue":l[16]||(l[16]=i=>e.editedItem.minBuild=i),modelModifiers:{number:!0},label:"Min Build (Optional)",type:"number",hint:"Minimum app build number to show this news"},null,8,["modelValue"])]),_:1}),t(o,{cols:"12",sm:"6"},{default:d(()=>[t(u,{modelValue:e.editedItem.maxBuild,"onUpdate:modelValue":l[17]||(l[17]=i=>e.editedItem.maxBuild=i),modelModifiers:{number:!0},label:"Max Build (Optional)",type:"number",hint:"Maximum app build number to show this news"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1}),t(C,null,{default:d(()=>[t(f),t(p,{color:"blue darken-1",text:"",onClick:n.close},{default:d(()=>l[22]||(l[22]=[s(" Cancel ")])),_:1,__:[22]},8,["onClick"]),t(p,{color:"blue darken-1",text:"",onClick:n.save},{default:d(()=>l[23]||(l[23]=[s(" Save ")])),_:1,__:[23]},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(S,{modelValue:e.dialogDelete,"onUpdate:modelValue":l[19]||(l[19]=i=>e.dialogDelete=i),"max-width":"500px"},{default:d(()=>[t(U,null,{default:d(()=>[t(v,{class:"text-h5"},{default:d(()=>l[24]||(l[24]=[s(" Are you sure you want to delete this news item? ")])),_:1,__:[24]}),t(C,null,{default:d(()=>[t(f),t(p,{color:"blue darken-1",text:"",onClick:n.closeDelete},{default:d(()=>l[25]||(l[25]=[s(" Cancel ")])),_:1,__:[25]},8,["onClick"]),t(p,{color:"blue darken-1",text:"",onClick:n.deleteItemConfirm},{default:d(()=>l[26]||(l[26]=[s(" OK ")])),_:1,__:[26]},8,["onClick"]),t(f)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(P,{headers:e.headers,items:n.filteredNews,search:e.search,loading:e.loading,class:"elevation-1","items-per-page":10,"sort-by":["uploaded"],"sort-desc":[!0]},{"item.type":d(({item:i})=>[t($,{color:n.getTypeColor(i.type),dark:"",small:""},{default:d(()=>[s(m(i.type),1)]),_:2},1032,["color"])]),"item.message":d(({item:i})=>[D("span",Q,m(i.message),1)]),"item.uploaded":d(({item:i})=>[s(m(n.formatTimestamp(i.uploaded)),1)]),"item.validUntil":d(({item:i})=>[s(m(i.validUntil?n.formatTimestamp(i.validUntil):"Never"),1)]),"item.minBuild":d(({item:i})=>[s(m(i.minBuild||"-"),1)]),"item.maxBuild":d(({item:i})=>[s(m(i.maxBuild||"-"),1)]),"item.actions":d(({item:i})=>[t(k,{small:"",class:"mr-2",onClick:r=>n.editItem(i)},{default:d(()=>l[27]||(l[27]=[s(" mdi-pencil ")])),_:2,__:[27]},1032,["onClick"]),t(k,{small:"",onClick:r=>n.deleteItem(i)},{default:d(()=>l[28]||(l[28]=[s(" mdi-delete ")])),_:2,__:[28]},1032,["onClick"])]),_:1},8,["headers","items","search","loading"])]),_:1})]),_:1})]),_:1})]),_:1})}const oe=c(J,[["render",X],["__scopeId","data-v-d6cddb75"]]);export{oe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.