UNPKG

@mobileaction/ui-modules

Version:

Mobile Action common modules for Vue projects

2 lines (1 loc) 7.27 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("ant-design-vue");const n={day:86400,hour:3600,min:60,sec:1},o={name:"ma-countdown",props:{secs:{type:Number,required:!0},showSeconds:{type:Boolean,default:!1}},data:()=>({nowMs:Date.now()}),computed:{endTimeMs(){return(new Date).getTime()+1e3*this.secs},remainingSecs(){const e=(this.endTimeMs-this.nowMs)/1e3|0;return e<=0?0:e},remainingTimeVals(){let e=this.remainingSecs;const t=[{unit:"day",val:0},{unit:"hour",val:0},{unit:"min",val:0},{unit:"sec",val:0}];return e<=0?t:(t.forEach((t=>{t.val=e/n[t.unit]|0,e-=t.val*n[t.unit],t.timeValue=this.paddedTimeValue(t),t.timeUnit=this.suffixedTimeUnit(t)})),t[0].val>0?t.slice(0,3):t.slice(1,4))}},methods:{paddedTimeValue:e=>e.val>9?e.val:"0"+e.val,suffixedTimeUnit:e=>e.val>1?e.unit+"s":e.unit},mounted(){setInterval((()=>{this.nowMs=Date.now()}),500)},watch:{remainingSecs(e,t){t!==e&&(this.$emit("update:remainingSecs",e),e<=0&&this.$emit("time-up"))}}},i={class:"ma-countdown"},s={key:0,class:"ma-countdown-seconds"},a={key:1,class:"ma-countdown-inner"},r={key:0,class:"time-sep"},l={class:"time"},c={class:"time-value"},d={class:"time-unit"};function m(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&o.firstChild?o.insertBefore(i,o.firstChild):o.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}m("\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-weight: 700;\n src: local('Roboto Mono Bold'), local('RobotoMono-Bold'), url(https://fonts.gstatic.com/s/robotomono/v5/L0xkDF4xlVMF-BfR8bXMIjDwjmqxf7-pAVU_.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n.ma-countdown[data-v-0219af88] {\n font-family: 'Roboto Mono', monospace;\n text-align: center;\n width: 100%;\n}\n.ma-countdown-inner[data-v-0219af88] {\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: space-evenly;\n -ms-flex-pack: space-evenly;\n justify-content: space-evenly;\n}\n.time-value[data-v-0219af88], .time-sep[data-v-0219af88], .ma-countdown-seconds[data-v-0219af88] {\n font-size: 1em; /* using em for inheritable sizes */\n}\n.time-unit[data-v-0219af88] {\n font-size: 0.4em; /* using em for inheritable sizes */\n overflow: visible;\n}\n"),o.render=function(t,n,o,m,h,p){return e.openBlock(),e.createElementBlock("div",i,[e.renderSlot(t.$slots,"default"),t.showSeconds?(e.openBlock(),e.createElementBlock("span",s,e.toDisplayString(t.remainingSecs)+"s",1)):(e.openBlock(),e.createElementBlock("div",a,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.remainingTimeVals,((t,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sep"+n},[n?(e.openBlock(),e.createElementBlock("div",r," : ")):e.createCommentVNode("v-if",!0),e.createElementVNode("div",l,[e.createElementVNode("div",c,e.toDisplayString(t.timeValue),1),e.createElementVNode("div",d,e.toDisplayString(t.timeUnit),1)])],64)))),128))]))])},o.__scopeId="data-v-0219af88",o.__file="src/ui-modules/components/MaCountdown.vue";const h={name:"ma-version-checker",emits:["time-up"],components:{MaCountdown:o,Modal:t.Modal},props:{breakingLevel:{type:Number,default:2},checkInterval:{type:Number,default:60},cached:{type:Boolean,default:!1},checker:{type:Function,default:()=>new Promise((e=>setTimeout((()=>e({version:"0.0.0"})))))},showPopup:{type:Boolean,default:!0},showCountdown:{type:Boolean,default:!0}},data:()=>({remainingSecs:0,checkFuncId:null,modalVisible:!1}),methods:{showForcedVersionPopup(){this.modalVisible=!0},async showOptionalVersionPopup(){t.Modal.confirm({class:"ma-info-box ma-version-checker optional ma-message-box hide-icon",title:"New Version is Available!",content:"New version of Mobile Action Dashboard is available. Please refresh to get changes!",okText:"Refresh Now",onOk:()=>this.refreshPage(),cancelText:"I will refresh later"})},refreshPage(){window.location.reload(!0)},startVersionChecker(){null===this.checkFuncId&&(this.checkFuncId=setInterval(this.checkNewAppVersion,1e3*this.checkInterval),this.checkNewAppVersion())},stopVersionChecker(){null===this.checkFuncId&&(clearInterval(this.checkFuncId),this.checkFuncId=null)},async checkNewAppVersion(){const e=this.checker();e&&e.then&&e.catch?e.then((e=>{if(this.$log.debug("Received version data:",e),!e||!e.version)return void this.$log.warn("Failed to get version with data: ",e);const{version:t}=e,n=this.$maSessionStorage.appVersion;if(this.$maSessionStorage.appVersion=t,"0.0.0"===n)return;const o=n.split("."),i=t.split(".");for(let e=0;e<3;++e)if(o[e]!==i[e]){this.showNewVersion(e<this.breakingLevel);break}})).catch(((...e)=>{const{errors:t}=e.length&&e[0]||{};t&&-1===(t||[]).indexOf("FETCH_ERROR")&&this.$log.error("Failed to get ma app version: "+JSON.stringify(e)),this.$log.error("Failed to get version:",...e)})):this.$log.error("Invalid checker function provided, it must return a promise: "+typeof e)},async showNewVersion(e=!1){this.stopVersionChecker(),!this.showPopup||this.newlyCreated()?this.refreshPage():e?this.showForcedVersionPopup():this.showOptionalVersionPopup()},newlyCreated(){return Date.now()-this.$maSessionStorage.appVersionInitTime<1e4},onTimeUp(){this.$emit("time-up"),this.refreshPage()}},beforeUnmount(){this.stopVersionChecker()},mounted(){this.$maSessionStorage.appVersionInitTime||(this.$maSessionStorage.appVersionInitTime=Date.now()),this.startVersionChecker()}},p={class:"ma-version-checker"},u={style:{display:"flex","align-items":"center"}},f=(t=>(e.pushScopeId("data-v-3b8493c2"),t=t(),e.popScopeId(),t))((()=>e.createElementVNode("div",{style:{width:"400px"}}," Page will refresh to upgrade in: ",-1))),v={style:{display:"flex","justify-content":"flex-end","margin-top":"20px"}};m("\n[data-v-3b8493c2] .ma-countdown {\n text-align: left;\n}\n"),h.render=function(t,n,o,i,s,a){const r=e.resolveComponent("ma-countdown"),l=e.resolveComponent("a-button"),c=e.resolveComponent("a-modal");return e.withDirectives((e.openBlock(),e.createElementBlock("div",p,[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.remainingSecs)+"s",1)])),e.createVNode(c,{visible:t.modalVisible,"onUpdate:visible":n[0]||(n[0]=e=>t.modalVisible=e),title:"An important update is released",footer:!1,closable:!1,"mask-closable":!1},{default:e.withCtx((()=>[e.createElementVNode("div",u,[f,e.createVNode(r,{secs:60,"show-seconds":!0,onTimeUp:t.onTimeUp},null,8,["onTimeUp"])]),e.createElementVNode("div",v,[e.createVNode(l,{type:"primary",onClick:t.refreshPage},{default:e.withCtx((()=>[e.createTextVNode(" Refresh Now ")])),_:1},8,["onClick"])])])),_:1},8,["visible"])],512)),[[e.vShow,t.remainingSecs>0&&t.showCountdown]])},h.__scopeId="data-v-3b8493c2",h.__file="src/ui-modules/components/MaVersionChecker.vue",exports.MaCountdown=o,exports.MaVersionChecker=h;