1
0
Fork 0
forked from Simnation/Main
Main/resources/[tools]/unlimited-spectre/html/assets/Stash.70f72a04.js
2025-06-07 08:51:21 +02:00

1 line
14 KiB
JavaScript

import{Q as I}from"./QTooltip.9d840032.js";import{_ as Y,P as x,R as A,o as n,X as h,a7 as p,a as l,w as r,a6 as S,T as E,r as M,a5 as b,U as f,c as g,W as q,V as y,ab as C,ao as T,Y as v,Z as k,S as D,a9 as j,L as O,aO as w,bC as L,aF as P}from"./app-014d9ed9.js";import{F as G,I as R,E as Q,A as X,Q as H,a as B}from"./EditGameItem.ca08f00f.js";import{B as N}from"./BasicDialog.9dd9de92.js";import{d as z}from"./utils.9ce591f3.js";import"./position-engine.65ebcb34.js";import"./selection.2a17b691.js";import"./externalHosting.js";import"./QImg.91aecb73.js";import"./QItemLabel.b6dd3adb.js";import"./QSelect.d7ce3d4c.js";import"./rtl.b51694b1.js";import"./QMarkupTable.ba6854cc.js";import"./QForm.8d79ab03.js";const F={name:"GameStorage",components:{FakeItem:G,Item:R},data(){return{ACTION:x,RESOURCE:A,loading:!1,amount:0,supportStashSlots:250,storageSlots:0,storage:[],supStash:[],dragging:!1,dragAndDrop:{shiftX:null,shiftY:null,clonedElement:null,itemIndex:null,selectedElement:null}}},computed:{isMobile(){return this.$q.platform.is.mobile}},methods:{can:z,isNumeric(t){return/^-?\d+$/.test(t)},async loadStorage(){await this.$axios.post("/api/stashes/get",{identifier:this.$route.params.stashId,type:this.$route.query.type}).then(t=>{const e=t.data.resCode,s=t.data.storage,c=t.data.storageSlots,o=t.data.stash;if(!e||!s||!c||!o){this.$q.notify({message:"Error",position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.stashes.msg.error.${t.data.resMsg}`)}),setTimeout(this.$router.back(),1500);return}this.updateStorage(s,c),this.updateSupporterStash(o)}).catch(()=>{this.$q.notify({message:"Error",position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t("components.stashes.msg.error.failedLoad")}),this.$router.back()})},updateStorage(t,e){const s=Object.keys(t).length>e?Object.keys(t).length:e,c=new Array(s).fill(null);for(const[o,a]of Object.entries(t)){const m=a.slot;c[m-1]=a}this.storageSlots=e,this.storage=c},updateSupporterStash(t){const e=Object.keys(t).length>this.supportStashSlots?Object.keys(t).length:this.supportStashSlots,s=new Array(e).fill(null);for(const[c,o]of Object.entries(t)){const a=o.slot;s[a-1]=o}this.supStash=s},getTarget(t){const e=t.changedTouches?t.changedTouches[0]:!1;let s=t.target;return e&&(s=document.elementFromPoint(e.clientX,e.clientY)),s},selectItem(t){if(!this.can(x.GAME.STASHES.MODIFY,A.GAME)||this.dragging)return;this.dragging=!0;const e=document.getElementById(t.target.id);if(!e){this.dragging=!1;return}const s=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,c=(s||t).clientX,o=(s||t).clientY;this.dragAndDrop.shiftX=c-e.getBoundingClientRect().left,this.dragAndDrop.shiftY=o-e.getBoundingClientRect().top,this.dragAndDrop.selectedElement={style:e.style,classList:e.classList.toString()},this.dragAndDrop.itemIndex=t.target.id;const a=e.cloneNode(!0);a.id=`cloned-${e.id}`,document.getElementById("app").append(a),this.clonedElement=document.getElementById(`cloned-${e.id}`),this.clonedElement.style.left=`${c-this.dragAndDrop.shiftX}px`,this.clonedElement.style.top=`${o-this.dragAndDrop.shiftY}px`,this.clonedElement.classList.add("item-clone"),this.clonedElement.style.position="absolute",e.style.pointerEvents="none",e.style.setProperty("opacity","0.2","important"),document.addEventListener("mouseup",this.dropItem),document.addEventListener("touchend",this.dropItem),document.addEventListener("touchmove",this.updatePosition,{passive:!1}),document.addEventListener("mousemove",this.updatePosition)},updatePosition(t){const e=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,s=(e||t).clientX,c=(e||t).clientY;this.clonedElement.style.left=`${s-this.dragAndDrop.shiftX}px`,this.clonedElement.style.top=`${c-this.dragAndDrop.shiftY}px`,this.mouseOver(t),t.preventDefault()},mouseOver(t){const e=this.getTarget(t);if(this.lastHoverID){const s=document.getElementById(this.lastHoverID);s.style.setProperty("border","2px solid transparent"),s.children[0].classList.remove("text-negative"),this.lastHoverID=null}if(!(!t||!e||!e.id||e.id==="")){if(!this.lastHoverID&&e.id==="delete:0"){const s=document.getElementById(e.id);s.style.setProperty("border","2px dashed var(--q-negative)","important"),s.children[0].classList.add("text-negative"),this.lastHoverID=e.id}if(!this.lastHoverID&&e.id==="edit:0"){const s=document.getElementById(e.id);s.style.setProperty("border","2px dashed var(--q-primary)","important"),s.children[0].classList.add("text-primary"),this.lastHoverID=e.id}}},async dropItem(t){this.dragging=!1;const e=this.getTarget(t);if(this.lastHoverID){const i=document.getElementById(this.lastHoverID);i.style.setProperty("border","2px solid transparent"),i.children[0].classList.remove("text-negative"),i.children[0].classList.remove("text-primary"),this.lastHoverID=null}document.removeEventListener("mouseup",this.dropItem),document.removeEventListener("touchend",this.dropItem),document.removeEventListener("touchmove",this.updatePosition),document.removeEventListener("mousemove",this.updatePosition),this.clonedElement.remove();const s=document.getElementById(this.dragAndDrop.itemIndex);if(s.style.pointerEvents="all",s.style.setProperty("opacity","1.0","important"),!t||!e||!e.id||e.id==="")return;const[c,o]=e.id.split(":");if(!c||!this.isNumeric(o))return;const[a,m]=this.dragAndDrop.itemIndex.split(":");if(!(!a||!this.isNumeric(m)||m===o&&a===c)){if(this.loading=!0,e.id==="delete:0"){this.$q.dialog({component:N,componentProps:{title:this.$i18n.t("components.stashes.deleteHeader"),message:this.$i18n.t("components.stashes.deleteMsg")},cancel:!0,persistent:!0}).onOk(()=>{this.$axios.post("/api/stashes/delete",{identifier:this.$route.params.stashId,type:this.$route.query.type,fromStorage:a,fromSlot:parseInt(m)+1,amount:this.amount}).then(i=>{const d=i.data.resCode;if(this.loading=!1,!d){const u=i.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.stashes.msg.error.${u}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.deleted")})}).catch(i=>{console.error(i),this.loading=!1})}).onCancel(()=>{this.loading=!1});return}if(e.id==="edit:0"){this.$q.dialog({component:Q,componentProps:{title:this.$i18n.t("components.item.edit"),item:this.getItem(a,m)},cancel:!0,persistent:!0}).onOk(i=>{i.item.amount<=0&&(i.item.amount=1),this.$axios.post("/api/stashes/edit",{identifier:this.$route.params.stashId,type:this.$route.query.type,fromStorage:a,fromSlot:parseInt(m)+1,item:i.item}).then(d=>{const u=d.data.resCode;if(this.loading=!1,!u){const $=d.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.stashes.msg.error.${$}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.saved")})}).catch(d=>{console.error(d),this.loading=!1})}).onCancel(()=>{this.loading=!1});return}await this.$axios.post("/api/stashes/move",{identifier:this.$route.params.stashId,type:this.$route.query.type,fromStorage:a,toStorage:c,fromSlot:parseInt(m)+1,toSlot:parseInt(o)+1,amount:this.amount}).then(i=>{const d=i.data.resCode;if(this.loading=!1,!d){const u=i.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.item.msg.error.${u}`)}),u==="moved"&&this.loadInventory()}})}},addItem(t){this.$q.dialog({component:X,componentProps:{title:this.$i18n.t("components.stashes.addItemHeader")},cancel:!0,persistent:!0}).onOk(e=>{if(!e.item.name){this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t("components.stashes.msg.error.noItemName")});return}this.loading=!0,e.item.amount||(e.item.amount=1),this.$axios.post("/api/stashes/add",{identifier:this.$route.params.stashId,type:this.$route.query.type,storage:t,item:e.item}).then(s=>{const c=s.data.resCode;if(this.loading=!1,!c){const o=s.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.stashes.msg.error.${o}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.added")})}).catch(s=>{console.error(s),this.loading=!1})}).onCancel(()=>{this.loading=!1})},clearStorage(){this.$q.dialog({component:N,componentProps:{title:this.$i18n.t("components.stashes.clearStorageHeader"),message:this.$i18n.t("components.stashes.clearStorageMsg")},cancel:!0,persistent:!0}).onOk(()=>{this.loading=!0,this.$axios.post("/api/stashes/clear",{identifier:this.$route.params.stashId,type:this.$route.query.type}).then(t=>{const e=t.data.resCode;if(this.loading=!1,!e){const s=t.data.resMsg;this.$q.notify({message:this.$i18n.t("general.error"),position:"top",color:"red",icon:"fas fa-exclamation-triangle",caption:this.$i18n.t(`components.stashes.msg.error.${s}`)});return}this.$q.notify({message:this.$i18n.t("general.success"),position:"top",color:"green",icon:"fas fa-check",caption:this.$i18n.t("general.cleared")})}).catch(t=>{console.error(t),this.loading=!1})}).onCancel(()=>{this.loading=!1})},getItem(t,e){return(t==="c"?this.storage:this.supStash)[e]}},async mounted(){await this.loadStorage(),this.sockets.subscribe(`storage:${this.$route.query.type}:${this.$route.params.stashId}`,t=>{this.updateStorage(t.items,this.storageSlots)}),this.sockets.subscribe("supstash::update",t=>{this.updateSupporterStash(t.stash)}),this.$socket.emit("room::join",`storage:${this.$route.query.type}:${this.$route.params.stashId}`),this.$socket.emit("room::join","supstash")},beforeUnmount(){this.sockets.unsubscribe(`storage:${this.$route.query.type}:${this.$route.params.stashId}`),this.sockets.unsubscribe("supstash::update"),this.$socket.emit("room::leave",`storage:${this.$route.query.type}:${this.$route.params.stashId}`),this.$socket.emit("room::leave","supstash")}},U={class:"row justify-between"},V={class:"row"},W={class:"text-h6"},Z=["id"],J={class:"extra-dropzone row justify-center items-center text-main"},K={class:"extra-dropzone row justify-center items-center text-main"},tt={class:"row"},et={class:"text-h6"},st=["id"];function ot(t,e,s,c,o,a){const m=M("item"),_=M("fake-item");return n(),h("div",U,[p("div",{class:E(["q-pa-sm",{"full-width":a.isMobile}])},[l(S,{class:"bg-secondary"},{default:r(()=>[l(b,{class:"col-12"},{default:r(()=>[p("div",V,[p("div",W,f(t.$t("components.stashes.stashStorage")),1),a.can(o.ACTION.GAME.STASHES.MODIFY,o.RESOURCE.GAME)?(n(),g(C,{key:0,color:"primary",icon:"add",class:"q-ml-auto",onClick:e[0]||(e[0]=i=>a.addItem("c"))},{default:r(()=>[o.dragging?y("",!0):(n(),g(I,{key:0},{default:r(()=>[q(f(t.$t("components.stashes.addItemTip")),1)]),_:1}))]),_:1})):y("",!0),a.can(o.ACTION.GAME.STASHES.MODIFY,o.RESOURCE.GAME)?(n(),g(C,{key:1,color:"primary",icon:"clear",class:"q-ml-sm",onClick:a.clearStorage},{default:r(()=>[o.dragging?y("",!0):(n(),g(I,{key:0},{default:r(()=>[q(f(t.$t("components.stashes.clearStorageTip")),1)]),_:1}))]),_:1},8,["onClick"])):y("",!0)])]),_:1}),l(b,{class:"col-12 stash-wrapper q-pa-none"},{default:r(()=>[l(T,{appear:"","enter-active-class":"animated fadeIn","leave-active-class":"animated fadeOut"},{default:r(()=>[p("div",{class:E(a.isMobile?"stash-container-mobile":"stash-container")},[(n(!0),h(v,null,k(o.storage,(i,d)=>O((n(),h("div",w({key:`c-${d}`,class:"item-slot",id:`c:${d}`},L(i?{mousedown:a.selectItem,touchstart:a.selectItem}:{},!0)),[i?(n(),h(v,{key:0},[l(m,{item:i,isPlayer:!0},null,8,["item"]),i.info&&Object.keys(i.info).length!==0&&!o.dragging?(n(),g(I,{key:0,offset:[0,8]},{default:r(()=>[(n(!0),h(v,null,k(i.info,(u,$)=>(n(),h("div",{key:`c-${d}-${$}`},f($)+": "+f(u),1))),128))]),_:2},1024)):y("",!0)],64)):(n(),g(_,{key:1,slotNumber:d+1},null,8,["slotNumber"]))],16,Z)),[[P,!o.loading]])),128))],2)]),_:1})]),_:1}),l(H,{dark:"",showing:o.loading},{default:r(()=>[l(B,{color:"primary",size:"2em"})]),_:1},8,["showing"])]),_:1})],2),p("div",{class:E(["q-pa-sm self-center actions",{"full-width":a.isMobile}])},[l(S,{class:"bg-secondary q-mb-md",id:"edit:0",style:{border:"2px solid transparent"}},{default:r(()=>[p("div",J,[l(D,{name:"edit",size:"5vh"})])]),_:1}),l(S,{class:"bg-secondary"},{default:r(()=>[l(j,{"label-color":"primary","input-style":{color:"var(--q-main)"},filled:"",type:"number",modelValue:o.amount,"onUpdate:modelValue":e[1]||(e[1]=i=>o.amount=i),modelModifiers:{number:!0},label:t.$t("components.stashes.amount")},null,8,["input-style","modelValue","label"])]),_:1}),l(S,{class:"bg-secondary q-mt-md",id:"delete:0",style:{border:"2px solid transparent"}},{default:r(()=>[p("div",K,[l(D,{name:"delete",size:"5vh"})])]),_:1})],2),p("div",{class:E(["q-pa-sm",{"full-width":a.isMobile}])},[l(S,{class:"bg-secondary"},{default:r(()=>[l(b,{class:"col-12"},{default:r(()=>[p("div",tt,[p("div",et,f(t.$t("components.stashes.supporterStash")),1),a.can(o.ACTION.GAME.STASHES.MODIFY,o.RESOURCE.GAME)?(n(),g(C,{key:0,color:"primary",icon:"add",class:"q-ml-auto",onClick:e[2]||(e[2]=i=>a.addItem("s"))},{default:r(()=>[o.dragging?y("",!0):(n(),g(I,{key:0},{default:r(()=>[q(f(t.$t("components.stashes.addItemTip")),1)]),_:1}))]),_:1})):y("",!0)])]),_:1}),l(b,{class:"col-12 stash-wrapper q-pa-none"},{default:r(()=>[l(T,{appear:"","enter-active-class":"animated fadeIn","leave-active-class":"animated fadeOut"},{default:r(()=>[p("div",{class:E(a.isMobile?"stash-container-mobile":"stash-container")},[(n(!0),h(v,null,k(o.supStash,(i,d)=>O((n(),h("div",w({key:`s-${d}`,class:"item-slot",id:`s:${d}`},L(i?{mousedown:a.selectItem,touchstart:a.selectItem}:{},!0)),[i?(n(),h(v,{key:0},[l(m,{item:i},null,8,["item"]),i.info&&Object.keys(i.info).length!==0&&!o.dragging?(n(),g(I,{key:0,offset:[0,8]},{default:r(()=>[(n(!0),h(v,null,k(i.info,(u,$)=>(n(),h("div",{key:`c-${d}-${$}`},f($)+": "+f(u),1))),128))]),_:2},1024)):y("",!0)],64)):(n(),g(_,{key:1}))],16,st)),[[P,!o.loading]])),128))],2)]),_:1})]),_:1}),l(H,{dark:"",showing:o.loading},{default:r(()=>[l(B,{color:"primary",size:"2em"})]),_:1},8,["showing"])]),_:1})],2)])}const $t=Y(F,[["render",ot]]);export{$t as default};