File: //usr/syno/synoman/mobile/ui/mobile.js
/* Copyright (c) 2025 Synology Inc. All rights reserved. */
(function(){function a(){var b=arguments;return this.replace(/{(\d+)}/g,function(c,d){return typeof b[d]!="undefined"?b[d]:c})}String.prototype.format=a;String.format=Ext.String.format})();Ext.createDelegate=Ext.bind;Ext.form.VTypes={};RegExp.prototype.match=RegExp.prototype.test;Array.prototype.remove=function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this};if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}Array.prototype.each=Array.prototype.forEach;(function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[c[a]+"CancelAnimationFrame"]||window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());Ext.define("Override.util.PaintMonitor",{override:"Ext.util.PaintMonitor",constructor:function(a){return new Ext.util.paintmonitor.CssAnimation(a)}});Ext.define("Override.util.SizeMonitor",{override:"Ext.util.SizeMonitor",constructor:function(a){var b=Ext.util.sizemonitor;if(Ext.browser.is.Firefox){return new b.OverflowChange(a)}else{if(Ext.browser.is.WebKit||Ext.browser.is.IE11){return new b.Scroll(a)}else{return new b.Default(a)}}}});Ext.define("Override.SYNO.removeInnerItem",{override:"Ext.layout.Default",removeInnerItem:function(a){if(a.element){a.element.detach()}else{console.warn("detach failed")}}});Ext.define("Override.SYNO.CssTransition",{override:"Ext.fx.runner.CssTransition",run:function(q){var G=this,h=this.lengthProperties,y={},F={},H={},d,t,z,e,v,J,w,r,s,a,n,B,A,p,C,l,u,g,D,I,k,f,x,o,c,E,b,m;if(!this.listenersAttached){this.attachListeners()}q=Ext.Array.from(q);for(B=0,p=q.length;B<p;B++){C=q[B];C=Ext.factory(C,Ext.fx.Animation);d=C.getElement();Ext.AnimationQueue.start(Ext.emptyFn,C);g=window.getComputedStyle(d.dom);t=d.getId();H=Ext.merge({},C.getData());if(C.onBeforeStart){C.onBeforeStart.call(C.scope||this,d)}C.fireEvent("animationstart",C);this.fireEvent("animationstart",this,C);H[t]=H;v=H.before;z=H.from;e=H.to;H.fromPropertyNames=J=[];H.toPropertyNames=w=[];for(I in e){if(e.hasOwnProperty(I)){e[I]=k=this.formatValue(e[I],I);D=this.formatName(I);o=h.hasOwnProperty(I);if(!o){k=this.getCssStyleValue(D,k)}if(z.hasOwnProperty(I)){z[I]=x=this.formatValue(z[I],I);if(!o){x=this.getCssStyleValue(D,x)}if(k!==x){J.push(D);w.push(D)}}else{f=g.getPropertyValue(D);if(k!==f){w.push(D)}}}}l=w.length;if(l===0){this.onAnimationEnd(d,H,C);continue}a=this.getRunningData(t);b=a.sessions;if(b.length>0){this.refreshRunningAnimationsData(d,Ext.Array.merge(J,w),true,H.replacePrevious)}c=a.nameMap;E=a.nameList;u={};for(A=0;A<l;A++){I=w[A];u[I]=true;if(!c.hasOwnProperty(I)){c[I]=1;E.push(I)}else{c[I]++}}m={element:d,map:u,list:w.slice(),length:l,data:H,animation:C};b.push(m);C.on("stop","onAnimationStop",this);n=Ext.apply({},v);Ext.apply(n,z);if(E.length>0){J=Ext.Array.difference(E,J);w=Ext.Array.merge(J,w);n["transition-property"]=J}y[t]=n;F[t]=Ext.apply({},e);F[t]["transition-property"]=w;F[t]["transition-duration"]=H.duration;F[t]["transition-timing-function"]=H.easing;F[t]["transition-delay"]=H.delay;C.startTime=Date.now()}s=this.$className;this.applyStyles(y);r=function(i){if(i.data===s&&i.source===window){window.removeEventListener("message",r,false);G.applyStyles(F)}};window.requestAnimationFrame(function(){window.addEventListener("message",r,false);window.postMessage(s,"*")})},refreshRunningAnimationsData:function(d,k,t,p){var g=d.getId(),q=this.runningAnimationsData,a=q[g];if(!a){return}var m=a.nameMap,s=a.nameList,b=a.sessions,f,h,e,u,l,c,r,o,n=false;t=Boolean(t);p=Boolean(p);if(!b){return this}f=b.length;if(f===0){return this}if(p){a.nameMap={};s.length=0;for(l=0;l<f;l++){c=b[l];this.onAnimationEnd(d,c.data,c.animation,t,p)}b.length=0}else{for(l=0;l<f;l++){c=b[l];r=c.map;o=c.list;for(h=0,e=k.length;h<e;h++){u=this.formatName(k[h]);if(r[u]){delete r[u];Ext.Array.remove(o,u);c.length--;if(--m[u]===0){delete m[u];Ext.Array.remove(s,u)}}}if(c.length===0){b.splice(l,1);l--;f--;n=true;this.onAnimationEnd(d,c.data,c.animation,t)}}}if(!p&&!t&&b.length===0&&n){this.onAllAnimationsEnd(d)}}});if(JSON&&JSON.parse){Ext.decode=JSON.parse}Ext.ns("SYNO.DSMMobile.Global");Ext.define("SYNO.DSMMobile.lib.EventHub",{extend:"Ext.Component",xtype:"MobileEventHub",config:{},on:function(b,e,d,c,a){if(this.enableLog){this.recordOn(b,e,d,c,a)}this.callParent(arguments)},recordOn:function(a,b){if(this.outputLog){console.info("[HubOn]",a,b)}this.event.on.push({name:a,fn:b})},fireEvent:function(a,b){if(this.enableLog){this.recordFireEvent(a,b)}this.callParent(arguments)},recordFireEvent:function(a,b){if(this.outputLog){console.info("[HubFire]",a,b)}this.event.fire.push({name:a,args:b})},debug:function(){console.log("=== on ===");Ext.each(this.event.on,function(a){console.log(a.name,a.fn)});console.log("=== fire ===");Ext.each(this.event.fire,function(a){console.log(a.name,a.args)})},initialize:function(){if(SYNO.DSMMobile.Global.isDebugMode){this.enableLog=true;this.outputLog=false;this.event={};this.event.on=[];this.event.fire=[];window.hub=this}this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.app.hub",{extend:"SYNO.DSMMobile.lib.EventHub",singleton:true});Ext.define("SYNO.DSMMobile.mixin.EventHub",{hubOn:function(b,g,f,d,a){var e=SYNO.DSMMobile.app.hub,c;if(Ext.isString(b)){e.on.call(e,b,g,f||this,d,a)}else{c=b;Ext.iterate(c,function(h,i){if(["scope","options","order"].indexOf(h)!==-1){return}this.hubOn(h,i,c.scope||f||this,c.options||d,c.order||a)},this)}},hubFire:function(a){var b=SYNO.DSMMobile.app.hub;b.fireEvent.apply(b,arguments)}});Ext.override(Ext.Component,{sendWebAPI:function(a){SYNO.DSMMobile.webapi.sendWebAPI(a)},sendAjax:function(a){console.log("sendAjax",a);SYNO.DSMMobile.lib.AjaxRequest.send(a)},addManagedComponent:function(a){this.components=this.components||[];this.components.push(a);return a},removeManagedComponent:function(a){this.components=this.components||[];this.components.remove(a);return a},onBeforeDestroy:function(){var a;if(this.taskRunner){this.taskRunner=null}this.components=this.components||[];for(a=0;a<this.components.length;++a){try{this.components[a].destroy()}catch(b){if(Ext.isDefined(SYNO.SDS.JSDebug)){SYNO.Debug.error(this.id,"sub-components["+a+"] destroy failed.",this.components[a]);throw b}}}delete this.components},initialize:function(){this.onBefore({destroy:this.onBeforeDestroy,scope:this});this.callParent(arguments)},hubOn:SYNO.DSMMobile.mixin.EventHub.prototype.hubOn,hubFire:SYNO.DSMMobile.mixin.EventHub.prototype.hubFire});(function(){function a(d,b){var e=d.isElement?d.dom:d,c=0;Ext.each(e.childNodes,function(f){c+=f[b]},this);return c}Ext.override(Ext.dom.Element,{getDomWidth:function(){return a(this,"offsetWidth")},getDomHeight:function(){return a(this,"offsetHeight")}})})();Ext.Ajax.on("beforerequest",function(b,a){if(Ext.isEmpty(a.skipSynoToken)&&!Ext.isEmpty(_S("SynoToken"))){if(Ext.isEmpty(a.headers)){a.headers={}}a.headers["X-SYNO-TOKEN"]=_S("SynoToken")}});(function(){var a=Ext.String.urlAppend;Ext.urlAppend=function(d,e,c){var b=Ext.urlDecode(e);c=typeof c!=="undefined"?c:true;if(c&&d.indexOf("SynoToken")===-1&&!Ext.isEmpty(_S("SynoToken"))){b.SynoToken=decodeURIComponent(_S("SynoToken"))}return a(d,Ext.urlEncode(b))}})();(function(){var b=/<\/?[^>]+>/gi,a=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig;Ext.apply(Ext.util.Format,{stripTags:function(c){return !c?c:String(c).replace(b,"")},stripScripts:function(c){return !c?c:String(c).replace(a,"")}})})();Ext.override(Ext.slider.Slider,{elementWidth:22,thumbWidth:22,initialize:function(){var b=this.element;this.callParent();b.on({scope:this,tap:"onTap",resize:"onResize"});this.on({scope:this,delegate:"> thumb",tap:"onTap",dragstart:"onThumbDragStart",drag:"onThumbDrag",dragend:"onThumbDragEnd"});var a=this.getThumb(0);if(a){a.on("resize","onThumbResize",this);a.hide()}}});(function(){var a=Ext.MessageBox;a.OK.text=_T("common","ok");a.CANCEL.text=_T("common","cancel");a.YES.text=_T("common","yes");a.NO.text=_T("common","no");a.OKCANCEL[0].text=_T("common","cancel");a.OKCANCEL[1].text=_T("common","ok");a.YESNOCANCEL[0].text=_T("common","cancel");a.YESNOCANCEL[1].text=_T("common","no");a.YESNOCANCEL[2].text=_T("common","yes");a.YESNO[0].text=_T("common","no");a.YESNO[1].text=_T("common","yes")})();Ext.ns("SYNO.DSMMobile.Global");Ext.ns("SYNO.SDS.Session");window._S=function(a){return SYNO.SDS.Session[a]};if(typeof window._TT==="undefined"){window._TT=function(c,b,a){SYNO.Debug.warn("DSM mobile has no _TT yet",c,b,a);return""}}Ext.define("SYNO.DSMMobile.util.Env",{singleton:true,isTablet:undefined,isPhone:undefined,isSmallDevice:undefined,constructor:function(){var b,a;this.callParent(arguments);this.isPhone=Ext.os.is.Phone;this.isTablet=!this.isPhone;b=screen.width;a=screen.height;this.isSmallDevice=(b<=320&&a<=480)||(b<=480&&a<=320)}});Ext.define("SYNO.DSMMobile.Init",{extend:"Ext.Component",constructor:function(){this.callParent(arguments);this.loginWebAPI=new SYNO.DSMMobile.LoginWebAPI()},initAPIManager:function(b,a){SYNO.API.currentManager=new SYNO.API.Manager();SYNO.API.currentManager.queryAPI("all",function(){b.call(a||window)},this,false)},getLoginInfo:function(a,b,c){this.loginWebAPI.refreshSynoToken(function(d,e){if(_S("isLogined")){a.call(c||window)}else{b.call(c||window)}},this)},initApplication:function(){Ext.onReady(function(){var a=Ext.getBody();a.addCls("syno-mobile-app")},this)},initLoginPanel:function(){Ext.onReady(function(){var a=Ext.getBody();a.addCls("syno-mobile-login")},this)},initCommom:function(){SYNO.SDS.InitUtils.initHDPack();SYNO.SDS.InitUtils.handleServerError();SYNO.SDS.InitUtils.initSSO()},checkAppPriv:function(){if(_S("isLogined")&&!_S("hasDesktopAppPriv")){SYNO.SDS.Utils.Logout.action(true,_JSLIBSTR("uicommon","error_noprivilege"),true)}},beforeInit:function(){this.checkAppPriv();Ext.onReady(function(){var a=Ext.getBody();if(SYNO.DSMMobile.util.Env.isPhone){a.addCls("syno-mobile-phone")}else{a.addCls("syno-mobile-tablet")}},this)},main:function(d,c){function b(){this.initCommom();this.initApplication();d.call(c||window,{needLogin:false})}function a(){this.initCommom();this.initLoginPanel();d.call(c||window,{needLogin:true})}this.beforeInit();this.initAPIManager(function(){this.getLoginInfo(b,a,this)},this)}});Ext.define("SYNO.DSMMobile.LoginWebAPI",{extend:"Ext.Component",constructor:function(){this.callParent(arguments)},sendLoginRequest:function(c,d,b){var a="/webapi/entry.cgi";c=Object.assign(c,{api:"SYNO.API.Auth",version:6,method:"login"});if(_S("enable_syno_token")==="yes"){a+="&enable_syno_token=yes"}this.sendAPIRequest(a,c,d,b)},sendResumeRequest:function(c,d,b){var a="/webapi/entry.cgi";c=Object.assign(c,{api:"SYNO.API.Auth",version:6,method:"token"});this.sendAPIRequest(a,c,d,b)},sendAPIRequest:function(a,c,d,b){Ext.Ajax.request({url:a,method:"POST",params:c,callback:function(g,f,e){var i;try{i=Ext.decode(e.responseText)}catch(h){SYNO.Debug("Decode Error");f=false}if(Ext.isFunction(d)){d.call(b||window,f,i,c,g)}},scope:this})},getEncryptionInfo:function(c,b){function a(d,f,e){SYNO.Encryption.CipherKey=f.cipherkey;SYNO.Encryption.RSAModulus=f.public_key;SYNO.Encryption.CipherToken=f.ciphertoken;SYNO.Encryption.TimeBias=f.server_time-Math.floor(+new Date()/1000);if(Ext.isFunction(c)){c.call(b||window,d,f,e)}}SYNO.API.currentManager.requestAPI("SYNO.API.Encryption","getinfo",1,{format:"module"},a,this)},refreshSynoToken:function(b,a){this.sendResumeRequest.call(this,{},function(c,e){var d=!!(c&&e.data&&e.data.synotoken);if(d){SYNO.SDS.Session.SynoToken=e.data.synotoken}if(Ext.isFunction(b)){b.call(a||window,d,e)}},this)},login:function(c,d,b){function a(e,i,h,g){var f=!!(e&&i.success);if(f){SYNO.SDS.Session.SynoToken=i.data.synotoken}if(Ext.isFunction(d)){d.call(b||window,f,i)}}this.getEncryptionInfo(function(){this.sendLoginRequest(SYNO.Encryption.EncryptParam(c),a,this)},this)}});Ext.define("SYNO.DSMMobile.lib.Login",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:["SYNO.DSMMobile.LoginWebAPI"],constructor:function(){this.callParent(arguments);this.init()},onRequestLogin:function(a,d,b){var c=Ext.apply({client_time:Math.floor(+new Date()/1000)},a);SYNO.DSMMobile.utils.mask(_T("login","waiting"));this.loginTool.login(c,function(e,h){SYNO.DSMMobile.utils.unmask();var g=String.format(_T("error","error_mobile_unexpected_login"),'<a href="https://www.synology.com/company/contact_us" target="_blank">',"</a>"),f=false;if(h){if(h.success===true){location.reload();return}if(h.error&&h.error.code){switch(h.error.code){case 400:g=_T("login","error_cantlogin");break;case 401:g=_T("login","error_expired");break;case 402:g=_T("login","error_noprivilege");break;case 403:f=true;g=undefined;break;case 404:g=_T("login","error_otp_failed");break;case 406:g=_T("mobile","error_otpwizard");break;case 407:g=_T("login","error_max_tries");break;case 408:g=_T("login","error_expired");break;case 409:g=_T("login","error_pwd_expired");break;case 410:g=_T("mobile","change_passwd_warning");break;case 499:g=_T("login","error_system_not_ready");break;case 498:g=_T("login","error_upgrading");break;default:break}}}if(Ext.isFunction(d)){d.call(b||window,g,f)}})},init:function(){this.loginTool=Ext.create("SYNO.DSMMobile.LoginWebAPI");this.hubOn("requestLogin",this.onRequestLogin)}});Ext.define("SYNO.DSMMobile.lib.LoginPageWebAPI",{extend:"Ext.util.Observable",constructor:function(){this.callParent(arguments);this.init()},sendRequest:function(b,c,a){Ext.Ajax.request({url:this.url,method:"POST",params:b,callback:function(f,e,d){var h;try{h=Ext.decode(d.responseText)}catch(g){SYNO.Debug("Decode Error");e=false}if(Ext.isFunction(c)){c.call(a||window,e,h,b,f)}},scope:this})},request:function(b,c,a){this.sendRequest(SYNO.Encryption.EncryptParam(b),c,a)}});Ext.define("SYNO.DSMMobile.lib.ForgetPassword",{extend:"SYNO.DSMMobile.lib.LoginPageWebAPI",mixins:["SYNO.DSMMobile.mixin.EventHub"],request:function(b,d,a){function c(e,i,g,f){var h="Error happened";if(e){switch(i.msg){case 1:h=_T("login","forget_pass_msg_user_not_allowed");break;case 2:h=_T("login","forget_pass_msg_ask_admin");break;case 3:h=_T("login","forget_pass_msg_check_mail");break;case 4:h=_T("login","forget_pass_msg_no_user");break;case 5:h=_T("login","forget_pass_msg_forbidden");break}}if(d){d.call(a||window,e,h)}}this.sendRequest(SYNO.Encryption.EncryptParam(b),c,this)},onRequestForgetPW:function(b,c,a){SYNO.DSMMobile.utils.mask(_T("common","msg_waiting"));this.request(b,function(d,e){SYNO.DSMMobile.utils.unmask();if(Ext.isFunction(c)){c.call(a||window,e)}})},init:function(){this.url="/webman/forget_passwd.cgi";this.hubOn("requestForgetPW",this.onRequestForgetPW)}});Ext.define("SYNO.DSMMobile.lib.LostPhone",{extend:"SYNO.DSMMobile.lib.LoginPageWebAPI",mixins:["SYNO.DSMMobile.mixin.EventHub"],request:function(c,d,b){var a=function(e,j,i,f){var h,g;if(!e||!j){h=_T("login","unknown_otp_err")}else{if(j.success===true){g=_T("login","otp_mail_success")}else{h=_T("login",j.err)||_T("login","unknown_otp_err")}}if(Ext.isFunction(d)){d.call(b||window,e,h,g)}};SYNO.DSMMobile.webapi.SendOTPMail(c,a,this)},onRequestLostPhone:function(b,c,a){SYNO.DSMMobile.utils.mask(_T("common","msg_waiting"));this.request(b,function(d,f,e){SYNO.DSMMobile.utils.unmask();if(Ext.isFunction(c)){c.call(a||window,f,e)}})},init:function(){this.hubOn("requestLostPhone",this.onRequestLostPhone)}});if(!Ext.isDefined(window._T)){console.warn("[WARN] _T is not defined");window._T=function(){return"_T is not defined"}}Ext.ns("SYNO.SDS.Utils");SYNO.SDS.Utils.IsAllowRelay=function(){return false};Ext.ns("SYNO.ux.Utils");SYNO.ux.Utils.checkApiObjValid=function(){return true};SYNO.Debug=function(){console.log.apply(console,arguments)};(function(){var d=["bytes","KB","MB","GB","TB","PB","EB","ZB","YB"];var b,a=[1],c=[1];for(b=1;b<d.length;b++){a.push(a[b-1]*1024);c.push(c[b-1]*1000)}Ext.define("Ext.overrides.extend.fileSize",{override:"Ext.util.Format",fileSize:function(f,i){var e,h=0,g;if(i){e=1000;g=c}else{e=1024;g=a}while(f>g[h+1]){++h}if(h<=2){return Math.round((f*10)/g[h])/10+" "+d[h]}else{return Math.round((f*100)/g[h])/100+" "+d[h]}}})})();Ext.namespace("Ext.util");Ext.define("Ext.util.Cookies",{statics:{set:function(c,e){var a=arguments;var h=arguments.length;var b=(h>2)?a[2]:null;var g=(h>3)?a[3]:"/";var d=(h>4)?a[4]:null;var f=(h>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((g===null)?"":("; path="+g))+((d===null)?"":("; domain="+d))+((f===true)?"; secure":"")},get:function(d){var b=d+"=";var f=b.length;var a=document.cookie.length;var e=0;var c=0;while(e<a){c=e+f;if(document.cookie.substring(e,c)==b){return Ext.util.Cookies.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a){if(Ext.util.Cookies.get(a)){document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}}});Ext.define("SYNO.SDS.InitUtils",{singleton:true,checkTargetSelectable:function(c){if(c.getTarget(".selectabletext")){return true}if(c.getTarget("textarea")){return true}var b=c.getTarget("input"),a=(b&&b.type)?b.type.toLowerCase():"";if("text"!==a&&"textarea"!==a&&"password"!==a){return false}if(b.readOnly){return false}return true},checkTargetTextFiledorTextArea:function(c){var b=c.getTarget("input"),a=(b&&b.type)?b.type.toLowerCase():"";if(c.getTarget("textarea")){return true}if("text"!==a&&"password"!==a){return false}return true},hideForms:function(){var b=Ext.get("sds-login-dialog-form");var a=Ext.get("sds-apply-preview-form");if(b){b.setStyle("display","none")}if(a){a.setStyle("display","none")}return this},initQuickTips:function(){Ext.QuickTips.init();if(!Ext.isIE9m||Ext.isIE9){Ext.QuickTips.getQuickTip().getEl().disableShadow()}return this},initDragDrop:function(){Ext.dd.DragDropMgr.stopPropagation=false;Ext.dd.DragDropMgr.clickTimeThresh=-1;Ext.WindowMgr.zseed=12000;return this},disableIESelect:function(){if(Ext.isIE){Ext.getDoc().on("selectstart",function(a){if(!this.checkTargetSelectable(a)){a.stopEvent()}},this)}return this},disableSelectAllKeyboard:function(){Ext.getDoc().on("keydown",function(a){if(a.ctrlKey&&a.A===a.getKey()&&!this.checkTargetSelectable(a)){a.stopEvent()}if(a.BACKSPACE===a.getKey()&&!this.checkTargetTextFiledorTextArea(a)){a.preventDefault()}if(Ext.isIE&&a.ESC===a.getKey()&&this.checkTargetTextFiledorTextArea(a)){a.preventDefault()}},this);return this},disableRightClick:function(){Ext.getBody().on("contextmenu",function(a){if(!this.checkTargetSelectable(a)&&!a.getTarget(".allowDefCtxMenu")){a.stopEvent()}},this);return this},handleServerError:function(){Ext.Ajax.on("requestcomplete",function(b,d,a){try{if(SYNO.SDS.Utils.CheckServerError(d)){b.clearListeners();delete a.success;delete a.failure;delete a.callback}}catch(c){if(!Ext.isIE8){throw c}}});return this},initHTML5Upload:function(){if(SYNO.SDS.HTML5Utils.isSupportHTML5Upload()){Ext.getBody().on("dragover",function(a){if(SYNO.SDS.HTML5Utils.isDragFile(a.browserEvent)){a.preventDefault();a.browserEvent.dataTransfer.dropEffect="none"}})}return this},IEUpgradeAlert:function(){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){var a=Ext.util.Cookies.get("skip_upgrade_ie_alert");if(!a){var b=new SYNO.SDS.IEUpgradeAlert();b.show()}}return this},defaultCSSSelectors:function(){if(_S("diskless")){Ext.getBody().addClass("syno-diskless")}if(Ext.isIE10Touch){Ext.getBody().addClass("syno-ie10-touch")}var a=Ext.urlDecode(location.search.substr(1)),b=a.accessible;if(Ext.isDefined(b)){Ext.getBody().addClass("accessible")}return this},initAPIManager:function(){if(!SYNO.API.currentManager){SYNO.API.currentManager=new SYNO.API.Manager()}SYNO.API.currentManager.queryAPI("all");return this},initSSO:function(){SYNO.SDS.SSOUtils.init();return this},initHDPack:function(){SYNO.SDS.UIFeatures.IconSizeManager.addHDClsAndCSS();return this},initLoginDialog:function(){var b,a;if(typeof(SYNO.SDS.ForgotPass)!=="undefined"){b=new SYNO.SDS.ChangePassPage({})}else{if(_S("isLogined")){if(_S("preview")){if(_S("preview_modified")){b=new SYNO.SDS.LoginApplyPreviewForm({})}a=new SYNO.SDS.LoginDialog({preview:true})}else{if(_S("enable_syno_token")){SYNO.SDS.UpdateSynoToken(this.readyToInitData)}else{this.readyToInitData()}}}else{loginLang=_S("lang");a=new SYNO.SDS.LoginDialog({})}}return this},readyToInitData:function(){SYNO.SDS.initData();return this}});Ext.namespace("SYNO.SDS.TaskRunner");SYNO.SDS._TaskMgr=function(n){var e=n||10,h=[],a=[],d=0,i=false,l=false,j=function(o,q){var p;while(q!==0){p=o%q;o=q;q=p}return o},g=function(){var p,o,q=h[0].interval;for(p=1;(o=h[p]);p++){q=j(q,o.interval)}return Math.max(q,n)},f=function(){var o=g();if(o!==e){e=o;return true}return false},c=function(){i=false;clearTimeout(d);d=0},k=function(){if(!i){i=true;f();d=setTimeout(m,0)}},b=function(o){a.push(o);if(o.onStop){o.onStop.apply(o.scope||o)}},m=function(){var u,s,r,o,p,w=false,q=new Date().getTime();for(u=0;(s=a[u]);u++){h.remove(s);w=true}a=[];if(!h.length){c();return}for(u=0;(s=h[u]);++u){s=h[u];if(l&&s.preventHalt!==true){b(s);continue}o=q-s.taskRunTime;if(s.interval<=o){try{p=s.run.apply(s.scope||s,s.args||[++s.taskRunCount])}catch(v){if(!Ext.isIE){SYNO.Debug.error("TaskRunner: task "+s.id+" exception: ",v);if(Ext.isDefined(SYNO.SDS.JSDebug)){s.taskRunTime=q;throw v}}}s.taskRunTime=q;r=s.interval;s.interval=s.adaptiveInterval();if(r!==s.interval){w=true}if(p===false||s.taskRunCount===s.repeat){b(s);return}}if(s.duration&&s.duration<=(q-s.taskStartTime)){b(s)}}if(w){f()}d=setTimeout(m,e)};this.start=function(p,o){var q=new Date().getTime();h.push(p);p.taskStartTime=q;p.taskRunTime=(false===o)?q:0;p.taskRunCount=0;if(!i){k()}else{f();clearTimeout(d);d=setTimeout(m,0)}return p};this.stop=function(o){b(o);return o};this.stopAll=function(){var p,o;c();for(p=0;(o=h[p]);p++){if(o.onStop){o.onStop()}}h=[];a=[]};this.setHalt=function(o){l=o}};SYNO.SDS.TaskMgr=new SYNO.SDS._TaskMgr(100);SYNO.SDS.TaskRunner=Ext.extend(Ext.util.Observable,{tasks:null,constructor:function(){SYNO.SDS.TaskRunner.superclass.constructor.apply(this,arguments);this.addEvents("add","remove","beforestart");this.tasks={}},destroy:function(){this.stopAll();this.tasks={};this.isDestroyed=true},start:function(b,a){if(this.isDestroyed){return}if(!b.running){this.fireEvent("beforestart",b);SYNO.SDS.TaskMgr.start(b,a)}b.running=true;return b},stop:function(a){if(a.running){SYNO.SDS.TaskMgr.stop(a)}a.running=false;return a},stopAll:function(){for(var a in this.tasks){if(this.tasks.hasOwnProperty(a)){if(!this.tasks[a].running){continue}SYNO.SDS.TaskMgr.stop(this.tasks[a])}}},addTask:function(a){a.id=a.id||Ext.id();this.tasks[a.id]=a;this.fireEvent("add",a);return a},createTask:function(b){b.id=b.id||Ext.id();var a=this.tasks[b.id];if(a){a.apply(b)}else{a=new SYNO.SDS.TaskRunner.Task(b,this);this.addTask(a)}return a},createAjaxTask:function(b){b.id=b.id||Ext.id();var a=this.tasks[b.id];if(a){a.apply(b)}else{a=new SYNO.SDS.TaskRunner.AjaxTask(b,this);this.addTask(a)}return a},createWebAPITask:function(b){b.id=b.id||Ext.id();var a=this.tasks[b.id];if(a){a.apply(b)}else{a=new SYNO.SDS.TaskRunner.WebAPITask(b,this);this.addTask(a)}return a},removeTask:function(b){var a=this.tasks[b];if(a){this.fireEvent("remove",a);delete this.tasks[b]}},getTask:function(a){return this.tasks[a]||null}});SYNO.SDS.TaskRunner.Task=Ext.extend(Ext.util.Observable,{INTERVAL_DEFAULT:60000,INTERVAL_FALLBACK:60000,manager:null,running:false,removed:false,taskFirstRunTime:0,constructor:function(a,b){SYNO.SDS.TaskRunner.Task.superclass.constructor.apply(this,arguments);this.manager=b;this.apply(a)},apply:function(a){this.applyInterval(a.interval);delete a.interval;this.applyConfig(a)},applyConfig:function(a){Ext.apply(this,a)},applyInterval:function(a){this.intervalData=a;if(!Ext.isFunction(this.intervalData)&&!Ext.isArray(this.intervalData)&&!Ext.isNumber(this.intervalData)){this.intervalData=this.INTERVAL_DEFAULT}this.interval=this.adaptiveInterval()},adaptiveInterval:function(){var c,b=0,d=this.intervalData,a=null;if(this.taskFirstRunTime){b=new Date().getTime()-this.taskFirstRunTime}if(Ext.isNumber(d)){a=d}else{if(Ext.isFunction(d)){a=d.call(this.scope||this,b)}else{if(Ext.isArray(d)){for(c=0;c<d.length;++c){if(d[c].time>b){break}a=d[c].interval}}}}if(!Ext.isNumber(a)){SYNO.Debug.debug("TaskRunner: Task "+this.id+" interval fallback to "+this.INTERVAL_FALLBACK);a=this.INTERVAL_FALLBACK}return a},start:function(a){var b=new Date().getTime();if(this.removed){return}if(!this.taskFirstRunTime){this.taskFirstRunTime=(false===a)?b+this.interval:b}return this.manager.start(this,a)},stop:function(){if(this.removed){return}return this.manager.stop(this)},restart:function(a){this.stop();this.start(a)},remove:function(){this.stop();this.manager.removeTask(this.id);this.removed=true}});SYNO.SDS.TaskRunner.AjaxTask=Ext.extend(SYNO.SDS.TaskRunner.Task,{constructor:function(a,b){this.reqId=null;this.reqConfig=null;this.cbHandler=null;this.autoJsonDecode=false;this.single=false;SYNO.SDS.TaskRunner.AjaxTask.superclass.constructor.call(this,a,b)},applyConfig:function(a){Ext.apply(this,{run:this.run,scope:this});this.autoJsonDecode=(true===a.autoJsonDecode);this.single=(true===a.single);this.preventHalt=(true===a.preventHalt);this.cbHandler={};this.reqConfig={};Ext.copyTo(this.cbHandler,a,["scope","callback","success","failure"]);Ext.apply(this.reqConfig,a);Ext.apply(this.reqConfig,{success:null,failure:null,callback:this.onCallback,scope:this});Ext.applyIf(this.reqConfig,{method:"GET"});delete this.reqConfig.id;delete this.reqConfig.autoJsonDecode;delete this.reqConfig.single},stop:function(){if(this.reqId){Ext.Ajax.abort(this.reqId);this.reqId=null}SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.apply(this,arguments)},run:function(){if(!this.reqConfig.url){this.remove();return}SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.call(this);this.reqId=Ext.Ajax.request(this.reqConfig)},onCallback:function(d,g,b){var a=b,c=Ext.apply({},d);Ext.apply(c,{scope:this.cbHandler.scope,callback:this.cbHandler.callback,success:this.cbHandler.success,failure:this.cbHandler.failure});if(g&&this.autoJsonDecode){try{a=Ext.util.JSON.decode(b.responseText)}catch(f){a={success:false};g=false}}if(g&&c.success){c.success.call(c.scope,a,d)}else{if(!g&&c.failure){c.failure.call(c.scope,a,d)}}if(c.callback){c.callback.call(c.scope,d,g,a)}this.fireEvent("callback",d,g,a);if(g&&this.single){this.reqId=null;this.remove()}else{if(this.reqId){this.reqId=null;this.start(false)}}}});SYNO.SDS.TaskRunner.WebAPITask=Ext.extend(SYNO.SDS.TaskRunner.AjaxTask,{constructor:function(a,b){SYNO.SDS.TaskRunner.WebAPITask.superclass.constructor.call(this,a,b)},applyConfig:function(a){Ext.apply(this,{run:this.run,scope:this});this.single=(true===a.single);this.preventHalt=(true===a.preventHalt);this.cbHandler={};this.reqConfig={};Ext.copyTo(this.cbHandler,a,["callback","scope"]);Ext.apply(this.reqConfig,a);Ext.apply(this.reqConfig,{callback:this.onCallback,scope:this});delete this.reqConfig.id;delete this.reqConfig.single},run:function(){SYNO.SDS.TaskRunner.AjaxTask.superclass.stop.call(this);this.reqId=SYNO.API.Request(this.reqConfig)},onCallback:function(e,c,d,b){var a=Ext.apply({},b);Ext.apply(a,{scope:this.cbHandler.scope,callback:this.cbHandler.callback});if(a.callback){a.callback.call(a.scope,e,c,d,a)}this.fireEvent("callback",e,c,d,a);if(this.single){this.reqId=null;this.remove()}else{if(this.reqId){this.reqId=null;this.start(false)}}}});Ext.namespace("SYNO.SDS.Utils.ExternalDevices");SYNO.SDS.Utils.ExternalDevices.getFilesystem=function(a){switch(a){case"vfat":return _T("usb","usb_fs_fat");case"ntfs":return _T("usb","usb_fs_ntfs");case"ext3":return _T("volume","volume_ext3");case"ext4":return _T("volume","volume_ext4");case"hfsplus":return _T("volume","volume_hfsplus");default:return _T("usb","usb_fs_other")}};SYNO.SDS.Utils.ExternalDevices.getStatus=function(a){switch(a){case"normal":return'<font color="green">'+_T("usb","usb_st_normal")+"</font>";case"format_fail":return'<font color="#FF0000">'+_T("usb","usb_st_formatfail")+"</font>";case"hddfail":return'<font color="#FF0000">'+_T("usb","usb_st_fail")+"</font>";case"corrupt":return'<font color="#FF0000">'+_T("usb","usb_st_needfsck")+"</font>";case"fsck":return'<font color="#FF0000">'+_T("usb","usb_st_fsck")+"</font>";case"formating":return'<font color="#FF0000">'+_T("usb","usb_st_format")+"</font>";case"init":return'<font color="#FF0000">'+_T("usb","usb_st_init")+"</font>";case"usbcopy":return'<font color="#FF0000">'+_T("usb","usb_st_usbcopy")+"</font>";case"usbbackup":return'<font color="#FF0000">'+_T("usb","usb_st_backingup")+"</font>"}return a};SYNO.SDS.Utils.ExternalDevices.getStatusForESata=function(a,b){switch(a){case"hddfail":return'<font color="#FF0000">'+_T("sata","sata_handlefail")+"</font>";case"format_fail":return'<font color="#FF0000">'+_T("sata","sata_format_err")+"</font>";case"corrupt":return'<font color="#FF0000">'+_T("sata","sata_needfsck")+"</font>";case"fsck":return'<font color="#FF0000">'+_T("sata","sata_fsck")+"</font>";case"formating":return'<font color="#FF0000">'+_T("usb","usb_st_format")+"</font>";case"init":return'<font color="#FF0000">'+_T("sata","sata_init")+"</font>";case"usbbackup":return'<font color="#FF0000">'+_T("sata","sata_backingup")+"</font>";default:if(b==_T("usb","usb_inactive_disk")){return'<font color="#FF0000">'+_T("usbbackup","usbbkp_cfrm_inactive")+"</font>"}return'<font color="green">'+_T("usb","usb_st_normal")+"</font>"}};Ext.namespace("SYNO.SDS.Utils.Network");SYNO.SDS.Utils.Network={MacIPAnd:function(d,a){var c;var b=[];var g,f,e;for(e=0;e<32;e++){g=d%2;f=a%2;if((g==1)&&(f==1)){b[e]=1}else{b[e]=0}d=(d-g)/2;a=(a-f)/2}c=0;for(e=31;e>=0;e--){c=c*2+b[e]}return c},GetIPValue:function(d){var a=d.split(".");var c=0;if(4!==a.length){return false}for(var b=0;b<=3;b++){c*=256;c+=parseInt(a[b],10)}return c},GetIPStr:function(b){var c=[];for(var a=0;a<=3;a++){c.push(Math.floor(b%256));b=Math.floor(b/256)}return String.format("{0}.{1}.{2}.{3}",c[3],c[2],c[1],c[0])},GatewayMatchIP:function(h,b,i){var g=true;var d=SYNO.SDS.Utils.Network.GetIPValue(h);var a=SYNO.SDS.Utils.Network.GetIPValue(i);var c=SYNO.SDS.Utils.Network.GetIPValue(b);var f=SYNO.SDS.Utils.Network.MacIPAnd(d,a);var e=SYNO.SDS.Utils.Network.MacIPAnd(c,a);if(f===0){g=false}else{g=(f==e)}return g},idToString:function(h,f){var e="";var b="";var c={eth:"lan",br:"bridge",ovs_eth:"ovseth",ovs_bond:"ovsbond",wlan:"wificlient",gwlan:"wifiguest",bond:"bond",ppp:"pppoe",lbr:"local_bridge",gbr:"guest_bridge",ap:"wifiap",usbmodem:"usbmodem"};var a={lan:_T("tcpip","tcpip_lan_port"),wan:_T("network","if_internet"),ovseth:_T("tcpip","tcpip_lan_port"),ovsbond:_T("network","if_bond"),wificlient:_T("network","if_wireless"),wifiguest:_T("wireless_ap","ap_guest_network"),bond:_T("network","if_bond"),pppoe:_T("tree","leaf_pppoe"),bridge:_T("tcpip","tcpip_lan_port"),local_bridge:_T("network","if_wireless_lan"),guest_bridge:_T("wireless_ap","ap_guest_network"),wifiap:_T("network","if_hotspot"),usbmodem:_T("network","usbmodem_name"),vpn:_T("vpnc","app_name"),docker:_TT("SYNO.SDS.Docker.Application","app","displayname")};if("tun0"===h){return a.vpn}if("docker0"===h){return a.docker}if(0===h.indexOf("ddsm")){return a.docker}var d=new RegExp(/^ppp[2-3][0-9]{2}$/);if(d.match(h)){return a.vpn}var g=new RegExp(/^ppp1[0-9]{2}$/);if(g.match(h)){return a.usbmodem}if("pppoe"===h){return a[h]}if(0===h.indexOf("6in4-")){return SYNO.SDS.Utils.Network.idToString.apply(this,[h.substring(5)])+"("+_T("tree","leaf_tunnel")+")"}e=h.replace(/\.\d+$/,"").replace(/\d+$/,"");b=h.replace(/\D+/,"").replace(/\.\d+$/,"");if(!f&&(e in c)){f=c[e]}if(f in a){if(!SYNO.SDS.Utils.Network.isMultiLan.apply(this)){switch(f){case"lan":case"wan":return a[f];default:break}}switch(f){case"pppoe":case"bridge":case"local_bridge":case"guest_bridge":case"usbmodem":return a[f];default:b=parseInt(b,10)+1;return a[f]+" "+b}}else{return"(unknown) "+h}},isPPPoE:function(a){return"ppp0"===a},isMultiLan:function(){var a="";if(SYNO.SDS.Utils.Network===this){a=_D("maxlanport","1")}else{a=this._D("maxlanport","1")}return 1<parseInt(a,10)},checkExternalIP:function(c){if(!c){return false}var a,b;c=c.toLowerCase();if(!Ext.form.VTypes.looseip(c)){return true}if(c.indexOf(".")<0&&c.indexOf("fc00:")===0){return false}if(c.indexOf(".")<0){return false}b=c.split(".");for(a in b){if(b.hasOwnProperty(a)){b[a]=parseInt(b[a],10)}}if(b[0]==10){return false}else{if(b[0]==172&&(b[1]>=16&&b[1]<=31)){return false}else{if(b[0]==192&&b[1]==168){return false}}}return true},getExternalHostName:function(b){var a;if(_S("external_host_ip")&&_S("external_host_ip")!==""){a=_S("external_host_ip")}else{if(_S("ddns_hostname")&&_S("ddns_hostname")!==""){a=_S("ddns_hostname")}else{if(b&&_S("external_ip")&&_S("external_ip")!==""){a=_S("external_ip")}else{a=window.location.hostname}}}return a},getURLprefix:function(d){var c,b,a;c=SYNO.SDS.Utils.Network.getExternalHostName(d);a=window.location.protocol+"//"+c;b=window.location.port;if(!_S("rewrite_mode")){if(window.location.protocol==="https:"){b=(_S("external_port_dsm_https")&&_S("external_port_dsm_https")!=="")?_S("external_port_dsm_https"):window.location.port}else{b=(_S("external_port_dsm_http")&&_S("external_port_dsm_http")!=="")?_S("external_port_dsm_http"):window.location.port}}if(b){a+=":"+b}return a},isSupportTopology:function(){var a=null;if(SYNO.SDS.Utils.Network===this){a=_S("support_net_topology")}else{a=this._S("support_net_topology")}return"yes"===a}};Ext.namespace("SYNO.SDS.Utils.StorageUtils");SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB=1024*1024*1024;SYNO.SDS.Utils.StorageUtils.ISCSIVAAILUN_EP_SIZE=function(c){var g=1048576;var a=4096;var d=63;var e=512;var b;var f;b=((c/a+(d-1))/d);b=Math.floor(b);f=((b*e)+g);return f};SYNO.SDS.Utils.StorageUtils.SpaceIDParser=function(e){var b=e.split("_");var c="";var a="";var d="";if("hotspare"===e){return{type:"hotspare",num:"",str:_T("volume","volume_hot_spare")}}if(2!=b.length){return""}c=b[0];a=b[1];switch(c){case"pool":case"reuse":d=String.format("{0} {1}",_T("volume","volume_storage_pool"),a);break;case"volume":d=String.format("{0} {1}",_T("volume","volume"),a);break;case"iscsilun":c="iscsi";d=String.format("{0} ({1})",_T("volume","volume_iscsitrg_lun"),a);break;case"virtual":d=String.format("{0} {1}",_T("volume","volume_virtual_space"),a);break;case"volumeX":c="volume";d=String.format("{0} {1} ({2})",_T("volume","volume"),a,_T("volume","volume_expansion"));break;case"ssd":d=String.format("{0} {1}",_T("volume","ssd_cache"),a);break}return{type:c,num:a,str:d}};SYNO.SDS.Utils.StorageUtils.GetSizeGB=function(b,f){var e=Ext.isNumber(f);var c=Math.pow(10,(e)?f:2);var d=b/SYNO.SDS.Utils.StorageUtils.ISCSITRG_UNIT_GB;var a=d;if(c>1){a=Math.round(d*c)/c}else{if(c==1){a=d.floor()}}return a};SYNO.SDS.Utils.StorageUtils.UiRenderHelperInitializer=function(){var m="blue-status",g="red-status",p="green-status",f={normal:{text:_T("volume","volume_status_normal"),color:p},degrade:{text:_T("volume","volume_status_degrade"),color:g},crashed:{text:_T("volume","volume_status_crashed"),color:g},danger:{text:_T("volume","volume_danger"),color:g},moving:{text:_T("iscsitrg","iscsitrg_status_moving"),color:m},creating:{text:_T("volume","volume_status_create"),color:m},repairing:{text:_T("volume","volume_status_repair"),color:m},expanding:{text:_T("volume","volume_status_expand"),color:m},migrating:{text:_T("volume","volume_status_upgrade"),color:m},adding_disk:{text:_T("volume","volume_status_add_disk"),color:m},deleting:{text:_T("volume","volume_status_delete"),color:m},raid_syncing:{text:_T("volume","volume_status_resync"),color:m},raid_reshaping:{text:_T("volume","volume_adddisk_progress_reshape"),color:m},raid_parity_checking:{text:_T("volume","volume_status_paritycount"),color:m},background:{text:_T("volume","volume_status_background"),color:m,warningText:_T("volume","performance_degraded"),warningColor:g},processing:{text:_T("volume","volume_status_delayed"),color:m},offline:{text:_T("iscsitrg","iscsitrg_status_offline"),color:g},online:{text:_T("iscsitrg","iscsitrg_status_online"),color:p},connected:{text:_T("iscsitrg","iscsitrg_status_connected"),color:m},waiting:{text:_T("volume","volume_status_waiting"),color:m},mount_ssd:{text:_T("volume","volume_ssd_mounting"),color:m},umount_ssd:{text:_T("volume","volume_ssd_unmounting"),color:m},mounting_cache:{text:_T("volume","volume_mounting_cache"),color:m},unmounting_cache:{text:_T("volume","volume_unmounting_cache"),color:m},unavailabling:{text:_T("iscsilun","iscsilun_vaai_lun_bad"),color:g},Healthy:{text:_T("iscsilun","healthy"),color:p},Unhealthy:{text:_T("iscsilun","unhealthy"),color:g},restoring:{text:_T("iscsilun","restoring"),color:m},cloning:{text:_T("iscsilun","cloning"),color:m},be_cloning:{text:_T("iscsilun","using"),color:m},using:{text:_T("iscsilun","using"),color:m},snapshotting:{text:_T("iscsilun","using"),color:m},snapshot_deleting:{text:_T("iscsilun","snapshot_deleting"),color:m},expand_unfinished_shr:{text:_T("volume","volume_status_expand"),color:m},disk_check:{text:_T("volume","volume_status_check_disk"),color:m},data_scrubbing:{text:_T("volume","do_data_scrubbing"),color:m},fs_scrubbing:{text:_T("volume","do_fs_scrubbing"),color:m,warningText:_T("volume","performance_may_degraded"),warningColor:g},defrag:{text:_T("volume","do_fs_defrag"),color:m,warningText:_T("volume","performance_may_degraded"),warningColor:g},ssd_trimming:{text:_T("volume","volume_ssd_trimming"),color:m,warningText:_T("volume","volume_ssd_trimming_warn"),warningColor:m},space_missing:{text:_T("volume","space_missing"),color:g},cache_missing:{text:_T("volume","cache_missing"),color:g}},h={mk_filesystem:_T("volume","volume_status_create_fs"),resize_filesystem:_T("volume","volume_status_expand_fs"),initializing_inode_table:_T("volume","initializing_inode_table"),disk_initialize:_T("volume","volume_status_init_disk"),raid_syncing:_T("volume","volume_status_resync"),data_scrubbing:_T("volume","do_data_scrubbing"),fs_scrubbing:_T("volume","do_fs_scrubbing"),defrag:_T("volume","do_fs_defrag"),raid_reshaping:_T("volume","volume_adddisk_progress_reshape"),raid_parity_checking:_T("volume","volume_status_paritycount"),finalize:_T("volume","volume_status_finalize_vol"),stop_services:_T("volume","volume_status_stop_services"),start_services:_T("volume","volume_status_start_services"),disk_check:_T("volume","volume_status_check_disk"),umount_volume:_T("volume","volume_unmount_volume"),mount_volume:_T("volume","volume_mount_volume"),stop_iscsi:_T("iscsilun","iscsilun_stop_iscsi_service"),start_iscsi:_T("iscsilun","iscsilun_start_iscsi_service"),stop_pool:_T("volume","volume_stop_raid"),start_pool:_T("volume","volume_start_raid"),allocate_space:_T("volume","volume_allocate_space"),waiting:_T("volume","volume_status_waiting"),flushing:_T("volume","ssd_cache_flushing"),none:""},d=function(s){var t={};var u=1;var w=_T("common","size_byte");if(s>=1099511627776){u=1099511627776;w=_T("common","size_tb")}else{if(s>=1073741824){u=1073741824;w=_T("common","size_gb")}else{if(s>=1048576){u=1048576;w=_T("common","size_mb")}else{if(s>=1024){u=1024;w=_T("common","size_kb")}else{u=1;w=_T("common","size_byte")}}}}t.unit=u;t.strUnit=w;return t},k={media:_T("tree","leaf_mediaservice"),itunes:_T("tree","leaf_itunes"),audio:_T("tree","leaf_audio"),photo:_T("tree","leaf_photo"),netbkp:_T("tree","leaf_netbkp"),web:_T("tree","leaf_web"),download:_T("tree","node_download"),mysql:_T("tree","leaf_mysql"),surveillance:_T("tree","leaf_surveillance"),userhome:_T("user","user_home")},o={media:undefined,audio:"SYNO.SDS.AudioStation.Application",itunes:undefined,photo:"SYNO.SDS.PhotoStation",web:"SYNO.SDS.WebStation",netbkp:undefined,download:"SYNO.SDS.DownloadStation",mysql:undefined,surveillance:"SYNO.SDS.SurveillanceStation",userhome:undefined,weblocal:undefined},i=String.format("({0})",_T("volume","volume_add_tip_dataprotection")),n=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_1_disk")),e=String.format("({0})",_T("volume","volume_add_tip_dataprotection_by_2_disks")),q=String.format("({0})",_T("volume","volume_add_tip_nodataprotection")),a={shr_without_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:q},shr_with_1_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:n},shr_with_2_disk_protect:{text:_T("volume","volume_type_raid_shr"),tip:e},basic:{text:_T("volume","volume_generalhd"),tip:q},raid_linear:{text:_T("volume","volume_type_linear"),tip:q},raid_0:{text:_T("volume","volume_type_raid_0"),tip:q},raid_1:{text:_T("volume","volume_type_raid_1"),tip:i},raid_5:{text:_T("volume","volume_type_raid_5"),tip:i},"raid_5+spare":{text:_T("volume","volume_type_raid_5")+"+Spare",tip:i},raid_6:{text:_T("volume","volume_type_raid_6"),tip:i},raid_10:{text:_T("volume","volume_type_raid_10"),tip:i},raid_f1:{text:_T("volume","volume_type_raid_f1"),tip:i}},j={sys_partition_normal:{text:_T("volume","volume_disksysuse"),color:"green-status"},not_use:{text:_T("volume","volume_disknotuse"),color:"green-status"},normal:{text:_T("volume","volume_diskinuse"),color:"green-status"},crashed:{text:_T("volume","volume_diskfailed"),color:"red-status"},system_crashed:{text:_T("volume","volume_diskfailedsys"),color:"red-status"},hotspare:{text:_T("volume","volume_hot_spare"),color:"green-status"},unc_warning:{text:_T("disk_info","disk_bad_sector_thr_warn"),color:"orange-status"},life_warning:{text:_T("disk_info","disk_remain_life_thr_warn"),color:"orange-status"},perf_testing:{text:_T("disk_info","disk_perf_is_testing"),color:"blue-status"}},c={normal:{text:_T("disk_info","disk_smart_status_normal"),fullText:_T("disk_info","disk_smart_status_normal"),color:"green-status"},degraded:{text:_T("disk_info","disk_smart_status_degraded"),fullText:_T("disk_info","disk_smart_status_degraded"),color:"orange-status"},warning:{text:_T("disk_info","disk_status_warning"),fullText:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),fullText:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_smart_status_failing"),fullText:_T("disk_info","disk_smart_status_failing"),color:"red-status"},unknown:{text:_T("common","not_support"),fullText:_T("disk_info","disk_smart_status_normal"),color:""}},l={normal:{text:_T("disk_info","disk_status_normal"),color:"green-status"},warning:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_status_failing"),color:"red-status"},not_support:{text:"-",color:""},not_test:{text:_T("disk_info","disk_adv_status_not_test"),color:""},unknown:{text:_T("common","not_support"),color:""}},r={completed:{text:_T("volume","volume_status_normal"),color:"green-status"},none:{text:_T("smart","smart_test_log_nodata"),color:""},progress:{text:_T("smart","smart_test_log_nodata"),color:""},damage:{text:_T("disk_info","disk_smart_status_failing"),color:"red-status"},aborted:{text:_T("smart","smart_status_aborted"),color:""},interrupted:{text:_T("smart","smart_status_interrupted"),color:"orange-status"},unknown:{text:_T("smart","smart_status_unknow"),color:"red-status"}},b={normal:{text:_T("disk_info","disk_status_normal"),color:"green-status"},unc:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},warning:{text:_T("disk_info","disk_status_warning"),color:"orange-status"},critical:{text:_T("disk_info","disk_status_critical"),color:"red-status"},failing:{text:_T("disk_info","disk_status_failing"),color:"red-status"},unknown:{text:_T("common","not_support"),color:""}};return{SizeRenderWithFloor:function(t,z){var y=Ext.isNumber(z);var u=Math.pow(10,(y)?z:2);var x=0;var s=0;var w={unit:1,strUnit:""};w=d(t);x=t/w.unit;if(u>1){s=Math.floor(x*u)/u}else{s=Math.floor(x)}if((s-Math.floor(s))>0){s=s.toFixed(2)}return String.format("{0} {1}",s,w.strUnit)},GetSizeUnitWithFloor:function(t,z){var y=Ext.isNumber(z);var u=Math.pow(10,(y)?z:2);var x=0;var s=0;var w={unit:1,strUnit:""};w=d(t);x=t/w.unit;if(u>1){s=Math.floor(x*u)/u}else{s=Math.floor(x)}if((s-Math.floor(s))>0){s=s.toFixed(2)}return{size:s,unit:w.strUnit}},SizeRender:function(t,z){var y=Ext.isNumber(z);var u=Math.pow(10,(y)?z:2);var x=0;var s=0;var w={unit:1,strUnit:""};w=d(t);x=t/w.unit;if(u>1){s=Math.round(x*u)/u}else{s=x}if((s-Math.floor(s))>0){s=s.toFixed(2)}return String.format("{0} {1}",s,w.strUnit)},GetSizeUnit:function(t,z){var y=Ext.isNumber(z);var u=Math.pow(10,(y)?z:2);var x=0;var s=0;var w={unit:1,strUnit:""};w=d(t);x=t/w.unit;if(u>1){s=Math.round(x*u)/u}else{s=x}if((s-Math.floor(s))>0){s=s.toFixed(1)}return{size:s,unit:w.strUnit}},StatusRender:function(s,t){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(s)+" "+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ProgressRender(t)},LunStatusRender:function(s,t){if(0===t.percent){return String.format("{0}<span class='blue-status' style='white-space:nowrap'>({1})</span>",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(s),f.waiting.text)}return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(s)+" "+SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ProgressRender(t)},StatusNameRender:function(s){var t;if(s in f){t=f[s]}else{return""}return String.format('<span class="{0}">{1}</span>',t.color,t.text)},ProgressRender:function(s){var t="";if(!s||!s.step||!s.percent){return""}else{if("none"===s.step&&"-1"===s.percent){return""}else{if("none"!==s.step&&"-1"===s.percent){return String.format("({0})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(s.step))}else{if("none"===s.step&&"-1"!==s.percent){return String.format("({0})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(s.percent))}else{if("waiting"===s.step){if("-1"!==s.percent){return String.format("{0}",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(s.percent))}else{return""}}else{if("initializing_inode_table"===s.step){return String.format("({0} {1})<br><span class='blue-status'>{2}</span>",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(s.step),SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(s.percent),_T("volume","initializing_inode_table_help"))}else{if("fs_scrubbing"===s.step){return String.format("({0})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(s.percent))}else{if("defrag"===s.step){t=String.format(_T("volume","fs_defrag_progress"),s.defragged_files,s.analyzed_files);return String.format("({0})",String.format('<span class="blue-status">{0}</span>',t))}else{return String.format("({0} {1})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StepNameRender(s.step),SYNO.SDS.Utils.StorageUtils.UiRenderHelper.PercentRender(s.percent))}}}}}}}}},WarningTextRender:function(t,s){var u;if(t in f){u=f[t]}else{return""}if(u.warningText){var v=String.format('<br /><span class="{0}">{1}</span><br />',u.warningColor,u.warningText);return String.format(v,s)}else{return""}},StepNameRender:function(s){if(s in h){return String.format('<span class="blue-status">{0}</span>',h[s])}else{return""}},PercentRender:function(s){var t="";if("-1"==s){t=""}else{t=String.format('<span class="blue-status">{0}%</span>',s)}return t},RaidLevelRender:function(s){if(-1<s.indexOf("shr")){return"SHR"}if(s in a){return a[s].text}return""},SpaceTypeRender:function(v,u){var s="",w="";var t=null;if(v in a){s=a[v].text;w=a[v].tip}else{if(0===v.indexOf("expansion")){s=_T("volume","volume_type_expansion");t=v.split(":");w=String.format("({0} + {1})",SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DeviceTypeRender(t[1]),SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DeviceTypeRender(t[2]))}else{SYNO.Debug.warn("unknown space type: ",v)}}switch(v){case"shr_without_disk_protect":case"basic":case"raid_linear":case"raid_0":if(u!==false){return String.format('{0} <font class="red-status">{1}</font>',s,w)}break}return String.format("{0} {1}",s,w)},DeviceTypeRender:function(s){if(s in a){return a[s].text}else{return"unknown"}},ParseID:function(t){var s={id:0,location:""};if(!isNaN(t)){s.id=t;s.location="internal"}else{if("X"==t.charAt(0)){s.id=t.substring(1);s.location="ebox"}else{s.id=t;s.location="internal"}}return s},DiskIDRender:function(t){var s="";var u=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.ParseID(t);if("ebox"==u.location){s=String.format("{0} {1} ({2})",_T("volume","volume_disk"),u.id,_T("volume","volume_expansion"))}else{s=String.format("{0} {1}",_T("volume","volume_disk"),u.id)}return s},DiskStatusRender:function(s){var t=j[s];if(t){return String.format('<span class="{0}">{1}</span>',t.color,t.text)}else{if(null!==s.match("%")){return String.format('<span class="blue-status">{0}</span>',_T("disk_info","disk_secure_erasing")+": "+s)}else{return""}}},DiskSwapStatusRender:function(s){switch(s){case"normal":return'<span class="green-status">'+_T("volume","volume_diskinuse")+"</span>";case"failed":case"crashed":return'<span class="red-status">'+_T("volume","volume_diskfailed")+"</span>";case"rebuild":return'<span class="blue-status">'+_T("volume","volume_disk_rebuild")+"</span>";case"spare":return'<span class="blue-status">'+_T("volume","volume_status_waiting")+"</span>";case"deleting":return'<span class="blue-status">'+_T("volume","swap_device_removing")+"</span>";case"none":return"-"}},smartStatusRender:function(s,u){var t=c[s];if("-1"===u){return String.format('<span class="blue-status">{0}</span>',_T("background_task","task_processing"))}else{if(null!==u.match("%")){return String.format('<span class="blue-status">{0}</span>',_T("smart","smart_test_remain")+": "+u)}else{if(t){return String.format('<span class="{0}">{1}</span>',t.color,t.text)}else{return String.format('<span class="green-status">{0}</span>',_T("common","loading"))}}}},smartStatusWithProgressRender:function(s){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.smartStatusRender(s.status,s.progress)},DiskSummaryStatusRender:function(x,y,u){var t=j[x],w=c[y],z="",s="",v="";if("crashed"===x||"system_crashed"===x||"failing"===y){s="red-status"}else{if("unc_warning"===x||"life_warning"===x||"degraded"===y){s="orange-status"}else{s="green-status"}}if("perf_testing"===x){s="blue-status"}if(!t){if(null!==x.match("%")){s="blue-status";v=_T("disk_info","disk_secure_erasing")+": "+x}else{v=""}}else{v=t.text}if(!y){return String.format('<span class="{0}">{1}</span>',s,v)}if("-1"===u){z=_T("background_task","task_processing")}else{if(null!==u.match("%")){z=_T("smart","smart_test_remain")+": "+u}else{if(w){z=w.fullText}}}if("normal"===x){return String.format('<span class="{0}">{1}</span>',s,z)}if(("normal"===y||"unknown"===y)&&(""===u)){return String.format('<span class="{0}">{1}</span>',s,v)}else{return String.format('<span class="{0}">{1}, {2}</span>',s,v,z)}},DiskTypeRender:function(s,t){var u;if(t){u=String.format("{0} / {1}",s.get("diskType"),(s.get("isSsd"))?"SSD":"HDD")}else{if("NVMe"===s.get("diskType")){u=String.format("NVMe / {0}",(s.get("isSsd"))?"SSD":"HDD")}else{u=(s.get("isSsd"))?"SSD":"HDD"}}return u},AddDiskTypeRender:function(s){switch(s){case"repair":return _T("volume","volume_adddisk2_type_repair");case"data_scrubbing":return _T("volume","volume_scrubbing_type_raid");case"repair_sys_partition":return _T("volume","volume_repair_syspart");case"expand_by_disk":return _T("volume","volume_adddisk2_type_expand_disk");case"expand_with_unalloc_size":return _T("volume","volume_adddisk2_type_expand_size");case"migrate":return _T("volume","volume_adddisk2_type_migrate");case"expand_unfinished_shr":return _T("volume","continue_unfinished_shr");case"convert_shr_to_pool":return _T("volume","volume_convert_shr_raidgroup_to_pool")}},MigrateTypeRender:function(s){switch(s){case"add_mirror":return _T("volume","volume_migrate_add_mirror");case"to_raid1":return _T("volume","volume_migrate_to_raid1");case"to_raid5":return _T("volume","volume_migrate_to_raid5");case"to_raid5+spare":return _T("volume","volume_migrate_to_raid5_spare");case"to_raid6":return _T("volume","volume_migrate_to_raid6");case"to_shr2":return _T("volume","volume_migrate_to_shr2")}},TargetStatusRender:function(v,w){var s="";var u=false;var t;switch(v){case"processing":case"creating":case"deleting":u=true;break}if(v in f){t=f[v]}else{return""}s=String.format('<span class="{0}">{1}</span>',t.color,t.text);if(0===w&&u){s=String.format("{0}<span class='{1}' style='white-space:nowrap'>({2})</span>",s,f.waiting.color,f.waiting.text)}return s},SpareStatusRender:function(s,u,t){if("none"===s){return String.format('<span class="red-status">{0}</span>',_T("volume","volume_status_deverr"))}else{if("repairing"==s){if(u&&t){return String.format('<span class="blue-status">{0} {1}, {2} {3}</span>',_T("volume","volume_status_repair"),u,_T("volume","volume_raid_subgroup"),t)}else{if(u){return String.format('<span class="blue-status">{0} ({1})</span>',_T("volume","volume_status_repair"),u)}else{return String.format('<span class="blue-status">{0}</span>',_T("volume","volume_status_repair"))}}}else{if("standby"==s){return String.format('<span class="green-status">{0}</span>',_T("volume","volume_hot_spare"))}else{return" "}}}},SnapShotStatusRender:function(s){return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusRender(s.type,s.progress)},getErrorMsg:function(s){var t=_T("common","commfail");if(s.errinfo&&s.errinfo.sec&&s.errinfo.key){t=_T(s.errinfo.sec,s.errinfo.key);if(Ext.isArray(s.errinfo.params)){s.errinfo.params.unshift(t);t=String.format.apply(String,s.errinfo.params)}else{if(Ext.isString(s.errinfo.params)){t=String.format(t,s.errinfo.params)}}}return t},decodeResponse:function(w,s){var u=null;var t={success:false,text:_T("common","commfail")};if(!w||!s){SYNO.Debug.error("response fail");return t}try{u=Ext.util.JSON.decode(s.responseText)}catch(v){t.text="json decode error: "+v;return t}if(!u){t.text="json decode error";return t}if(!u.success){u.text=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.getErrorMsg(u)}return u},htmlEncoder:function(s){s=s.replace(/</g,"<");s=s.replace(/>/g,">");return s},htmlDecoder:function(s){if(!s){return""}s=s.replace(/</g,"<");s=s.replace(/>/g,">");return s},getServiceNames:function(s){var u=[];var t=[];Ext.each(s,function(v){if(v in k){u.push(k[v])}else{if(-1!=v.lastIndexOf(":")){t=v.split(":");u.push(_T(t[0],t[1]))}else{u.push(v)}}});return u.join(", ")},getVolumeNames:function(u){var s=this,t=[];Ext.each(u,function(v){if(Ext.isString(v)){t.push(s.SpaceIDParser(v).str)}else{if(v.name){t.push(s.SpaceIDParser(v.name).str)}else{if(v.id){t.push(s.SpaceIDParser(v.id).str)}}}});return t.join(", ")},getNamesString:function(t){var s=[];Ext.each(t,function(u){s.push(u.name)});return s.join(", ")},disableServices:function(s){Ext.each(s,function(t){if(Ext.isString(o[t])){SYNO.SDS.StatusNotifier.setServiceDisabled(o[t],true)}})},DiskTemperatureRender:function(s){if(-1===s){return"-"}return String.format("{0} {1} / {2} {3}",s,_T("status","celsius"),(s*9/5+32).toFixed(0),_T("status","fahrenheit"))},DiskNameRenderer:function(v){var t=v.match(/(\d+)( \((.*)\))*/),w,u,s;if(!t||4!=t.length){return v}w=t[1];if(undefined===t[2]||""===t[2]||undefined===t[3]||""===t[3]){return String.format("{0} {1}",_T("volume","volume_disk"),w)}s=t[3];if(0<=s.indexOf("DX")||0<=s.indexOf("RX")){return String.format("{0} {1} ({2})",_T("volume","volume_disk"),w,s)}if(-1===s.indexOf("-")){if("no"===_D("supportsas","no")){return String.format("{0} {1} ({2})",_T("volume","volume_disk"),w,_T("volume","volume_expansion"))}else{return String.format("{0} {1} ({2})",_T("volume","volume_disk"),w,_T("volume","volume_unknown_expansion"))}}u=s.split("-");return String.format("{0} {1} ({2} {3})",_T("volume","volume_disk"),w,_T("volume","volume_expansion"),u[1])},RemainLifeRender:function(s,t){if(-1===s){return"-"}else{if(t){return String.format('<span class="red-status">{0} %</span>',s)}else{return String.format('<span class="green-status">{0} %</span>',s)}}},BadSecCtRender:function(s){if(-1===s){return"-"}else{return s}},advStatusRender:function(s,u){var t=l[s];if("-1"===u){return String.format('<span class="blue-status">{0}</span>',_T("background_task","task_processing"))}else{if(null!==u.match("%")){return String.format('<span class="blue-status">{0}</span>',_T("smart","smart_test_remain")+": "+u)}else{if(t){return String.format('<span class="{0}">{1}</span>',t.color,t.text)}else{return String.format('<span class="green-status">{0}</span>',_T("common","loading"))}}}},smartTestStatusRender:function(s){var t=r[s];if(t){return String.format('<span class="{0}">{1}</span>',t.color,t.text)}else{return String.format('<span class="green-status">{0}</span>',_T("common","loading"))}},advTestStatusRender:function(s,u){var t=l[s];if(t){return String.format('<span class="{0}">{1}. {2}</span>',t.color,u,t.text)}else{return String.format('<span class="green-status">{0}</span>',_T("common","loading"))}},textAnimate:function(u,t,s){switch(s){case 1:u.innerHTML=String.format('<span class="blue-status">{0}.</span>',t);break;case 2:u.innerHTML=String.format('<span class="blue-status">{0}..</span>',t);break;case 3:u.innerHTML=String.format('<span class="blue-status">{0}...</span>',t);break;default:u.innerHTML=String.format('<span class="blue-status">{0}</span>',t);break}this.taskAnimTask.delay(500,null,null,[u,t,(s+1)%4])},setUpdateTimeAnimate:function(s,t,u){this.taskAnimTask=this.taskAnimTask||new Ext.util.DelayedTask(this.textAnimate);if(!s){t.setValue(u);this.taskAnimTask.cancel();return}this.taskAnimTask.delay(0,null,this,[t.el.dom,u,0])},DiskSummaryStatusRenderV2:function(x,s){var u=j[x],w=b[s],t="",v="";if("crashed"===x||"system_crashed"===x||"critical"===s||"failing"===s){t="red-status"}else{if("unc_warning"===x||"life_warning"===x||"warning"===s||"unc"===s){t="orange-status"}else{t="green-status"}}if("perf_testing"===x){t="blue-status"}if(!u){if(null!==x.match("%")){t="blue-status";v=_T("disk_info","disk_secure_erasing")+": "+x}else{v=""}}else{v=u.text}if(!w){return String.format('<span class="{0}">{1}</span>',t,v)}if("normal"===x){return String.format('<span class="{0}">{1}</span>',t,w.text)}if(v!==w.text){return String.format('<span class="{0}">{1}, {2}</span>',t,v,w.text)}else{return String.format('<span class="{0}">{1}</span>',t,v)}},WarningTitleStringGet:function(s,t){var u="";switch(s){case"smart":u=String.format("{0} #{1}",_T("smart","smart_name"),t);break;case"unc":u=_T("disk_info","disk_bad_sector_ct");break;case"life":u=_T("disk_info","disk_remain_life");break;case"adv":u=_T("disk_info","disk_ironwolf_health");break;default:SYNO.Debug.error("no such value",s);return}return u},DiskOverviewStatusRender:function(s){var u=b[s];var t="green-status";if(!u){return String.format('<span class="{0}">{1}</span>',t,s)}return String.format('<span class="{0}">{1}</span>',u.color,u.text)}}};SYNO.SDS.Utils.StorageUtils.UiRenderHelper=SYNO.SDS.Utils.StorageUtils.UiRenderHelperInitializer();SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer=function(b){var d=/volume\D*(\d+)/,c,a;if(!Ext.isString(b)){if("internal"!==b.location){return b.display_name||""}if(!Ext.isString(b.volume_path)){return""}c=b.volume_path}else{c=b}a=c.match(d);if(!a||2!==a.length){return""}return String.format("{0} {1}",_T("volume","volume"),a[1])};SYNO.SDS.Utils.StorageUtils.VolumeNameSizeRenderer=function(c){var a,b;a=SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(c);b=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.SizeRender(c.size_free_byte,10);return String.format("{0} ({1}{2} {3})",a,_T("volume","volume_freesize"),_T("common","colon"),b)};Ext.namespace("SYNO.API");SYNO.API.getErrorString=function(c){var b=100,a,d;if(Ext.isNumber(c)){b=c}else{if(Ext.isObject(c)){a=SYNO.API.Util.GetFirstError(c);b=Ext.isNumber(a.code)?a.code:100}}if(b<=118){return SYNO.API.Errors.common[b]}d=Ext.isString(SYNO.API.Errors.core[b])?SYNO.API.Errors.core[b]:_T("common","error_system");return d};SYNO.API.CheckSpecialError=function(a,d,b){var c;if("SYNO.DSM.Share"===b.api){if("delete"===b.method&&404===d.code){c=_T("error","delete_default_share")}else{if("edit"===b.method&&406===d.code){c=_T("error","share_mounted_rename")}}}return c};SYNO.API.CheckResponse=function(a,h,d,g){var b,f;if(a){return true}if(Ext.isEmpty(h)||0===h.status){return false}try{b=Ext.isDefined(h.status)?0:(h.code||100);if(b<SYNO.API.Errors.minCustomeError){f=SYNO.API.Errors.common[b]}else{f=SYNO.API.CheckSpecialError(a,h,d)||SYNO.API.Errors.core[b]}}catch(c){}finally{if(!f){b=100;f=SYNO.API.Errors.common[b]}}if(b>=105&&b<=107&&(!g||Ext.isEmpty(g.getResponseHeader("X-SYNO-SOURCE-ID")))){SYNO.SDS.Utils.Logout.action(true,f,true)}return f};SYNO.API.CheckRelayResponse=function(h,d,g,c,f){var b,a=false,e=Ext.getClassByName("SYNO.SDS.AppWindow");if(Ext.isEmpty(d)||(Ext.isObject(f)&&0===f.status)){return a}if(!SYNO.SDS.Utils.IsAllowRelay(c.appWindow)||Ext.isEmpty(e)){return a}b=c.appWindow.findAppWindow();if(!(b instanceof e)||Ext.isEmpty(b.appInstance)){return a}if(!Ext.isObject(c.params)){return a}if(c.params.api==="SYNO.API.Info"){a=true}else{if(c.params.api!=='"SYNO.CMS.DS"'||c.params.method!=='"relay"'){return a}}if(true===a){}else{if(Ext.isObject(f)&&Ext.isEmpty(f.getResponseHeader("X-SYNO-SOURCE-ID"))){if(Ext.isNumber(d.code)&&(414===d.code||406===d.code||401===d.code||423===d.code)){a=true}else{if(Ext.isObject(f)&&f.status>=400&&f.status<600){a=true}}}else{if(Ext.isObject(c.userInfo.params)&&Ext.isArray(c.userInfo.params.compound)){d.result.each(function(i){if(Ext.isObject(i.error)&&i.error.code>=105&&i.error.code<=107){a=true;return false}},this)}else{if(Ext.isNumber(d.code)){if(d.code>=105&&d.code<=107){a=true}}else{if(Ext.isObject(f)&&f.status>=400&&f.status<600){a=true}}}}}if(true===a){b.getMsgBox().alert(_T("error","error_error"),_T("cms","relaunch_app"),function(){b.close()})}return a};SYNO.API.Manager=Ext.extend(Ext.util.Observable,{baseURL:"/webapi",constructor:function(){SYNO.API.Manager.superclass.constructor.apply(this,arguments);this.jsDebug=Ext.urlDecode(location.search.substr(1)).mobile2;this.knownAPI={"SYNO.API.Info":{path:"query.cgi",minVersion:1,maxVersion:1}}},queryAPI:function(c,a,e,d){var b=[];if(!Ext.isArray(c)){c=[c]}Ext.each(c,function(f){if(!this.knownAPI.hasOwnProperty(f)){b.push(f)}},this);this.requestAjaxAPI("SYNO.API.Info","query",1,{async:Ext.isBoolean(d)?d:true},{query:b.join(",")},Ext.createDelegate(this.onQueryAPI,this,[a,e],true))},onQueryAPI:function(b,f,e,d,a,c){if(b){if(Ext.isObject(e)&&"all"===e.query){this.knownAPI=Ext.apply({},f)}else{Ext.apply(this.knownAPI,f)}}if(a){a.call(c,b,f,e,d)}},getKnownAPI:function(b,e){var d=this.knownAPI[b],c,a;if(!Ext.isDefined(this.jsDebug)||!Ext.isObject(d)){return d}c=d.path+"/";if("SYNO.Entry.Request"===b&&Ext.isObject(e)&&Ext.isArray(e.compound)){a=[];e.compound.each(function(f){if(Ext.isString(f.api)){a.push(f.api)}});c+=a.join()}else{c+=b}return Ext.apply({},{path:c},d)},getBaseURL:function(j,a,l,k,b){var f,h,e,c;if(Ext.isObject(j)){h=j;k=a;b=l;if(h.webapi){h=h.webapi}if(Ext.isObject(h.compound)){if(!Ext.isArray(h.compound.params)){SYNO.Debug.error("params must be array",h.compound.params);return}j="SYNO.Entry.Request";a="request";l=1;var d=h.compound.params||[],m=[];for(var g=0;g<d.length;g++){m.push(Ext.apply({api:d[g].api,method:d[g].method,version:d[g].version},d[g].params))}e={stop_when_error:Ext.isBoolean(h.compound.stopwhenerror)?h.compound.stopwhenerror:false,mode:Ext.isString(h.compound.mode)?h.compound.mode:"sequential",compound:m}}else{j=h.api;a=h.method;l=h.version;e=h.params}}f=this.getKnownAPI(j,e);if(!f){SYNO.Debug.error("No Such API: "+j);return}c=this.baseURL+"/"+f.path;if(Ext.isString(b)&&!Ext.isEmpty(b)){c+="/"+window.encodeURIComponent(b)}if(!a||!l){return c}h={api:j,method:a,version:l};if(e){Ext.apply(h,("JSON"===f.requestFormat)?SYNO.API.EncodeParams(e):e)}return Ext.urlAppend(c,Ext.urlEncode(h),k)},requestAjaxAPI:function(l,d,e,b,g,o,c){var h,v=SYNO.Util.copy(g),k,w,m=null,t;var n,s;if(Ext.isObject(l)){k=l;if(k.webapi){k=k.webapi}b={};Ext.apply(b,k);delete b.api;delete b.method;delete b.version;delete b.scope;delete b.callback;o=k.callback||l.callback;c=k.scope||l.scope;b.appWindow=l.appWindow;if(Ext.isObject(k.compound)){t=k.compound}else{l=k.api;d=k.method;e=k.version;v=k.params}}if(b&&b.compound){t=b.compound}if(t){if(!Ext.isArray(t.params)){SYNO.Debug.error("params must be array",t.params);return}l="SYNO.Entry.Request";d="request";e=1;var u=t.params||[],a=[];for(var r=0;r<u.length;r++){a.push(Ext.apply({api:u[r].api,method:u[r].method,version:u[r].version},u[r].params))}v={stop_when_error:Ext.isBoolean(t.stopwhenerror)?t.stopwhenerror:false,mode:Ext.isString(t.mode)?t.mode:"sequential",compound:a}}if(Ext.isObject(b.appWindow)&&l!=="SYNO.API.Info"){h=SYNO.API.Info.GetKnownAPI(b.appWindow,l,v)}else{h=this.getKnownAPI(l,v)}if(!h){s=Ext.isObject(b.appWindow)&&b.appWindow.IsAllowRelay();SYNO.Debug.error("No Such API: "+l);n={error:{code:101}};if(s){SYNO.API.CheckRelayResponse(false,n,v,b)}if(Ext.isFunction(o)){o.call(c||window,false,n,v,b)}return}if(e<h.minVersion||h.maxVersion<e){SYNO.Debug.warn(String.format("WARN: API({0}) version ({1}) is higher then server ({2})",l,e,h.version))}if(!Ext.isObject(v)&&!Ext.isEmpty(v)){SYNO.Debug.error("params must be object, ",v);return}if(!Ext.isSecure&&Ext.isArray(b.encryption)){m=Ext.apply([],b.encryption)}delete b.encryption;var q={api:l,method:d,version:e};var f=this.baseURL+"/"+h.path,j;if(b&&b.url){var p=b.url;j=Ext.urlDecode(p.substr(p.indexOf("?")+1));if(j&&j.api&&j.method&&j.version){delete j.api;delete j.method;delete j.version;delete j.SynoToken;q=j;f=b.url}}if(b&&Ext.isElement(b.form)&&(/multipart\/form-data/i.test(b.form.enctype))){f=SYNO.API.GetBaseURL(q);q={}}else{if(Ext.isObject(b)&&true===b.html5upload){f=SYNO.API.GetBaseURL(Ext.apply({params:v},q));q={};b.method="POST"}}w=Ext.apply((b||{}),{url:f,params:Ext.apply({},q,("JSON"===h.requestFormat)?SYNO.API.EncodeParams(v):v),callback:this.onRequestAPI,userInfo:{params:v,cb:o,scope:c}});if(!Ext.isEmpty(m)){return this.requestAjaxAPI("SYNO.API.Encryption","getinfo",1,{appWindow:w.appWindow||undefined,reqObj:w,reqEnc:m},{format:"module"},this.onEncryptRequestAPI,this)}return this.sendRequest(w)},onEncryptRequestAPI:function(n,k,f,a){var d,h,g,c=a.reqObj,b=a.reqEnc,m=function(j){for(var i in j){if(j.hasOwnProperty(i)){return false}}return true};if(!n){return Ext.Ajax.request(c)}SYNO.Encryption.CipherKey=k.cipherkey;SYNO.Encryption.RSAModulus=k.public_key;SYNO.Encryption.CipherToken=k.ciphertoken;SYNO.Encryption.TimeBias=k.server_time-Math.floor(+new Date()/1000);if(Ext.isEmpty(c.params.compound)){d=SYNO.Encryption.EncryptParam(Ext.copyTo({},c.params,b));for(h=0;h<b.length;h++){delete c.params[b[h]]}c.params=Ext.apply(c.params,d);return this.sendRequest(c)}else{var o=Ext.apply({},c.userInfo.params);var l=this,e=5;if(Ext.isIE6||Ext.isIE7||Ext.isIE8){e=1}h=0;var p=function(){for(;h<o.compound.length;h++){var j=Ext.apply({},o.compound[h],o.compound[h].params);var i={};d={};i=SYNO.API.EncodeParams(Ext.copyTo({},j,b));if(!m(i)){d=SYNO.Encryption.EncryptParam(i)}for(g=0;g<b.length;g++){delete j[b[g]]}o.compound[h]=Ext.apply(j,d);if(h+1===o.compound.length){Ext.apply(c.params,SYNO.API.EncodeParams(o));l.sendRequest(c);return}else{if(h%e===0){h++;window.setTimeout(p,80);return}}}};p()}},sendRequest:function(d){var c=d.appWindow,a,f,e=this.getKnownAPI("SYNO.CMS.DS"),b;if(Ext.isObject(c)){c=c.findAppWindow()}if(!Ext.isEmpty(e)&&SYNO.SDS.Utils.IsAllowRelay(c)&&c.hasOpenConfig("cms_id")){f=c.getOpenConfig("cms_timeout")||120;b={api:"SYNO.CMS.DS",version:1,method:"relay",id:c.getOpenConfig("cms_id"),timeout:f};if(Ext.isElement(d.form)&&(/multipart\/form-data/i.test(d.form.enctype))){a=Ext.urlDecode(d.url.substr(d.url.indexOf("?")+1));b.webapi=Ext.encode(Ext.copyTo({},a,"api,version,method"));if(a.SynoToken){b.SynoToken=a.SynoToken}d.url=this.baseURL+"/"+e.path+"?"+Ext.urlEncode(b)}else{d.url=this.baseURL+"/"+e.path;b.webapi=Ext.apply({api:d.params.api,version:d.params.version,method:d.params.method},d.userInfo.params);d.params=SYNO.API.EncodeParams(b)}d.timeout=d.timeout||(f+10)*1000}return Ext.Ajax.request(d)},requestAPI:function(d,f,b,e,a,c){return this.requestAjaxAPI(d,f,b,{},e,a,c)},onRequestAPI:function(b,a,g){var h=false,d=g,f;if(a){try{f=Ext.decode(g.responseText)}catch(c){}if(Ext.isObject(f)){if(f.success){h=true;d=f.data}else{h=false;d=f.error}}}SYNO.API.CheckResponse(h,d,b.userInfo.params,g);if(SYNO.SDS.Utils.IsAllowRelay(b.appWindow)&&SYNO.API.CheckRelayResponse(h,d,undefined,b,g)){return}if(b.userInfo.cb){b.userInfo.cb.call(b.userInfo.scope,h,d,b.userInfo.params,b)}}});SYNO.API.Store=Ext.extend(Ext.data.Store,{defaultParamNames:{start:"offset",limit:"limit",sort:"sort_by",dir:"sort_direction"},constructor:function(a){if((a.api&&a.method&&a.version)&&!a.proxy){if(!Ext.isObject(a.appWindow)&&false!==a.appWindow){SYNO.Debug.error("No appWindow!");SYNO.Debug.debug("SYNO.API.Store and SYNO.API.JsonStore require appWindow in config.");SYNO.Debug.debug("appWindow can be found by Ext.Component.findAppWindow");SYNO.Debug.debug("ex: this.findAppWindow() or config.module.appWin.findAppWindow()");return}this.proxy=new SYNO.API.Proxy({api:a.api,method:a.method,version:a.version,appWindow:a.appWindow,encryption:a.encryption})}SYNO.API.Store.superclass.constructor.apply(this,arguments)}});Ext.define("SYNO.API.CompoundReader",{extend:"Ext.data.JsonReader",constructor:function(){this.callParent(arguments)},readRecords:function(d){var e,c=[],b=this.meta.roots,a={success:false,records:[],totalRecords:0};this.compoundData=d;if(!Ext.isObject(d)){return a}d.result.each(function(h,g,f){if(Ext.isArray(b)){this.getRoot=this.createAccessor(b[g])}if(true===h.success){e=this.superclass().readRecords.call(this,h.data)}else{c.push({response:h,index:g,total:f})}if(Ext.isFunction(this.meta.onCompoundResponse)){e=this.meta.onCompoundResponse(h,e)}a.records=a.records.concat(e.records);a.totalRecords+=e.totalRecords},this);a.success=!d.has_fail;if(false===a.success){throw c}return a}});SYNO.API.CompoundStore=Ext.extend(SYNO.API.Store,{constructor:function(a){Ext.apply(a,{api:"SYNO.Entry.Request",version:1,method:"request"});SYNO.API.JsonStore.superclass.constructor.call(this,Ext.apply(a,{reader:new SYNO.API.CompoundReader(a)}))}});SYNO.API.JsonStore=Ext.extend(SYNO.API.Store,{constructor:function(a){SYNO.API.JsonStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.JsonReader(a)}))}});SYNO.API.Proxy=Ext.extend(Ext.util.Observable,{constructor:function(c){c=c||{};Ext.apply(this,c);this.addEvents("exception","beforeload","loadexception");SYNO.API.Proxy.superclass.constructor.call(this);var b=Ext.data.Api.actions;this.activeRequest={};for(var a in b){if(b.hasOwnProperty(a)){this.activeRequest[b[a]]=undefined}}},request:function(e,b,f,a,g,d,c){if(false!==this.fireEvent("beforeload",this,f)){this.doRequest.apply(this,arguments)}else{g.call(d||this,null,c,false)}},doRequest:function(f,b,g,a,h,e,c){var d={appWindow:this.appWindow};if(!c.timeout&&this.timeout){Ext.apply(d,{timeout:this.timeout})}if(this.encryption){Ext.apply(d,{encryption:this.encryption})}if(Ext.isObject(a.meta.compound)&&Ext.isArray(a.meta.compound.params)){d.compound=Ext.apply({},a.meta.compound);if(Ext.isObject(g)){d.compound.params.each(function(i){i.params=Ext.apply(i.params||{},g)},this)}g={}}this.activeRequest[f]=SYNO.API.currentManager.requestAjaxAPI(this.api,this.method,this.version,d,g,Ext.createDelegate(this.onRequestAPI,this,[a,h,e,c,f],true));if(Ext.isEmpty(this.activeRequest[f])){this.onRequestAPI(false,undefined,g,c,a,h,e,c,f)}},onRequestAPI:function(i,f,c,a,g,j,k,m,d){this.activeRequest[d]=undefined;var l=null,b=null;if(i){try{l=g.readRecords(f)}catch(h){b=h;SYNO.Debug.error("Failed to read data, ",h)}}if(!i||b){this.fireEvent("loadexception",this,m,f,b);this.fireEvent("exception",this,"response",Ext.data.Api.actions.read,m,f,b)}else{this.fireEvent("load",this,f,m)}j.call(k||this,l,m,i)}});SYNO.API.Form={};SYNO.API.Form.Traverse=function(g,a){if(!g){return}var f=g.elements||(document.forms[g]||Ext.getDom(g)).elements,b=false,c,e,d,h;Ext.each(f,function(i){c=i.name;e=i.type;if(!(h=Ext.getCmp(i.id))){return}if(Ext.isEmpty(c)&&Ext.isFunction(h.getName)){c=h.getName()}if(!i.disabled&&c){if(/select-(one|multiple)/i.test(e)){Ext.each(i.options,function(j){if(j.selected){d=j.hasAttribute?j.hasAttribute("value"):j.getAttributeNode("value").specified;a(h,c,d?j.value:j.text,e)}})}else{if(!(/file|undefined|reset|button/i.test(e))){if(/radio/i.test(e)||h instanceof SYNO.ux.Radio){if(h.getValue()){a(h,c,h.getInputValue()||"",e)}}else{if(/checkbox/i.test(e)||h instanceof SYNO.ux.Checkbox){a(h,c,h.getValue()?true:false)}else{if(!(e=="submit"&&b)){if(Ext.isFunction(h.getValue)){a(h,c,h.getValue(),e)}else{a(h,c,i.value,e)}b=/submit/i.test(e)}}}}}}});return};SYNO.API.Form.Serialize=function(a,c){var b={};b=SYNO.API.Form.Retrieve(a,false,c);b=SYNO.API.DecodeFlatParams(b);b=SYNO.API.EncodeParams(b);return Ext.urlEncode(b)};SYNO.API.Form.Retrieve=function(b,e,d){var a,f,c={};SYNO.API.Form.Traverse(b,function(h,g,i){if(d){a=SYNO.ux.Utils.getFormFieldApi(h);if(!SYNO.ux.Utils.checkApiObjValid(a)){return}if(d==="get"||d==="load"){f=a.method||a.methods.get}else{f=a.method||a.methods.set}g=a.api+"|"+f+"|"+a.version+"|"+g}c[g]=i});if(e){c=SYNO.API.EncodeParams(c)}return c};SYNO.API.EncodeFlatParams=function(d){var e={};if(!d){return e}var a=function(k,h,i){for(var j in k){if(k.hasOwnProperty(j)){var g=k[j],f=h?(h+"|"+j):j;if(Ext.isFunction(g)){}else{if(Ext.isObject(g)){a(k[j],f,i)}else{i[f]=g}}}}};if(!Ext.isArray(d)){a(d,undefined,e);return e}var c;for(var b=0;b<c.length;b++){if(c[b].api&&c[b].method){a(c[b],c[b].api+"|"+c[b].method,e)}else{a(d,undefined,e)}}return e};SYNO.API.DecodeFlatParams=function(b){var d={};var c=function(f,i,h){var g=f.indexOf("|"),e;if(0<g){e=f.substring(0,g);if(!Ext.isObject(h[e])){h[e]={}}c(f.substring(g+1),i,h[e])}else{h[f]=i}};for(var a in b){if(!Ext.isObject(b[a])){c(a,b[a],d)}else{d[a]=b[a]}}return d};SYNO.API.EscapeStr=function(a){if(!a){return""}return a.replace(/[\\]/g,"\\\\").replace(/[,]/g,"\\,")};SYNO.API.EncodeParams=function(d){var b={};for(var a in d){if(d.hasOwnProperty(a)){b[a]=Ext.encode(d[a])}}return b};SYNO.API.DecodeParams=function(f){var d={};for(var a in f){if(f.hasOwnProperty(a)){try{d[a]=Ext.decode(f[a])}catch(b){d[a]=SYNO.Util.copy(f[a])}}}return d};SYNO.API.Request=function(b){if(!SYNO.API.currentManager){var a;SYNO.API.currentManager=new SYNO.API.Manager();SYNO.API.currentManager.queryAPI("all",function(){a=SYNO.API.currentManager.requestAjaxAPI(b)},this,false);return a}return SYNO.API.currentManager.requestAjaxAPI(b)};SYNO.API.GetBaseURL=function(e,a,b){var d=e.appWindow,f=function(){if(SYNO.ux.Utils.checkApiObjValid(e)&&SYNO.SDS.Utils.IsAllowRelay(d)&&d.hasOpenConfig("cms_id")){return SYNO.API.currentManager.getBaseURL({api:"SYNO.CMS.DS",version:1,method:"relay",params:{id:d.getOpenConfig("cms_id"),timeout:d.getOpenConfig("cms_timeout")||120,webapi:Ext.apply({api:e.api,version:e.version,method:e.method},e.params)}},a,b)}else{return SYNO.API.currentManager.getBaseURL(e,a,b)}};if(!SYNO.API.currentManager){var c;SYNO.API.currentManager=new SYNO.API.Manager();SYNO.API.currentManager.queryAPI("all",function(){c=f()},this,false);return c}return f()};SYNO.API.EncodeURL=function(a){a=SYNO.API.EncodeParams(a);return Ext.urlEncode.apply(this,arguments)};SYNO.API.GetKnownAPI=function(a,b){if(!SYNO.API.currentManager){SYNO.API.currentManager=new SYNO.API.Manager();SYNO.API.currentManager.queryAPI("all",Ext.emptyFn,this,false)}return SYNO.API.currentManager.getKnownAPI(a,b)};SYNO.API.Util={};SYNO.API.Util.GetReqByAPI=function(e,d,h,b){var c,g,f;if(!Ext.isObject(e)){return}c=e.compound;if(Ext.isObject(c)){if(!Ext.isArray(c.params)){return}g=c.params;for(var a=0;a<g.length;a++){f=g[a];if(d===f.api&&h===f.method){if(b){return Ext.isObject(f.params)?(Ext.isDefined(f.params[b])?f.params[b]:f[b]):f[b]}return f}}}else{if(Ext.isObject(e.params)){if(b){return e.params[b]}return e.params}}return};SYNO.API.Util.GetReqByIndex=function(d,a,b){var c,e;if(!Ext.isObject(d)){return}c=d.compound;if(Ext.isObject(c)){if(!Ext.isArray(c.params)){return}e=c.params;if(!Ext.isObject(e[a])){return}e=e[a];if(b){return Ext.isObject(e.params)?(Ext.isDefined(e.params[b])?e.params[b]:e[b]):e[b]}return e}else{if(Ext.isObject(d.params)){if(b){return d.params[b]}return d.params}}return};SYNO.API.Util.GetValByAPI=function(f,d,g,c){if(Ext.isObject(f)){if(Ext.isArray(f.result)){var a=f.result;for(var b=0;b<a.length;b++){if(d===a[b].api&&g===a[b].method){var e=a[b].data||a[b].error;if(!e){return}if(c){return e[c]}return e}}return}else{if(c){return f[c]}else{return f}}}return};SYNO.API.Util.GetValByIndex=function(e,b,c){var a;if(!Ext.isObject(e)){return}a=e.result;if(Ext.isArray(a)){if(!Ext.isObject(a[b])){return}var d=a[b].data||a[b].error;if(!d){return}if(c){return d[c]}return d}else{if(c){return e[c]}else{return e}}};SYNO.API.Util.GetFirstError=function(c){var a;if(!Ext.isObject(c)){return}if(Ext.isBoolean(c.has_fail)){if(c.has_fail&&Ext.isArray(c.result)){a=c.result;for(var b=0;b<a.length;b++){if(Ext.isObject(a[b])&&!a[b].success){return a[b].error}}}}return c};SYNO.API.Util.GetFirstErrorIndex=function(c){var a;if(!Ext.isObject(c)){return}if(Ext.isBoolean(c.has_fail)){if(c.has_fail&&Ext.isArray(c.result)){a=c.result;for(var b=0;b<a.length;b++){if(Ext.isObject(a[b])&&!a[b].success){return b}}}}return 0};Ext.define("SYNO.API.Info",{extend:"Ext.util.Observable",local:"info_local",constructor:function(){this.callParent(arguments);this._session={};this._define={};this._knownAPI={}},check:function(b){var a;if(!Ext.isObject(b)){throw"Error! appwindow is incorrect!"}if(!Ext.isFunction(b.findAppWindow)){return}a=b.findAppWindow();if(!Ext.isObject(a)||!Ext.isObject(a.openConfig)||!Ext.isFunction(a.hasOpenConfig)||!Ext.isFunction(a.getOpenConfig)||!Ext.isFunction(a.setOpenConfig)){return}return a},getInstName:function(c){var b=this.local,a=this.check(c);if(Ext.isObject(a)&&SYNO.SDS.Utils.IsAllowRelay(a)){if(a.hasOpenConfig("cms_id")){b="cms_ds_"+a.getOpenConfig("cms_id")}}return b},getInstNameById:function(b){var a=this.local;if(Ext.isNumber(b)&&0<=b){a="cms_ds_"+b}return a},checkInst:function(d,a,b,c,e){if(d===this.local){return false}if(Ext.isObject(c)&&Ext.isObject(b)){this.handleResponse(a,b,c,e);return false}if(d in this._define&&d in this._session&&b!==true){this.handleResponse({cms_id:0},undefined,undefined,e);return false}return true},updateInstById:function(b,a,e){var d,c,f;if(Ext.isObject(b)){c=b;b=c.cms_id;d=this.getInstNameById(c.cms_id);f=Ext.copyTo({},c,"callback,args,scope")}if(false===this.checkInst(d,{cms_id:b},a,e,f)){return}SYNO.API.Request({api:"SYNO.CMS.DS",version:1,method:"relay",timeout:30000,params:{id:b,timeout:30,webapi:{api:"SYNO.API.Info",version:1,method:"query"}},appOpt:f,cms_id:b,callback:function(j,h,i,g){if(true!==j){this._knownAPI[d]=undefined}else{this._knownAPI[d]=h}},scope:this});SYNO.API.Request({api:"SYNO.CMS.DS",version:1,method:"relay",timeout:30000,params:{id:b,timeout:30,webapi:{api:"SYNO.Entry.Request",version:1,method:"request",compound:[{api:"SYNO.Core.System",version:1,method:"info",type:"define"},{api:"SYNO.Core.System",version:1,method:"info",type:"session"}]}},appOpt:f,cms_id:b,callback:this.onUpdateInst,scope:this})},updateInst:function(b,c,e){var a=this.check(b),d=this.getInstName(b);if(false===this.checkInst(d,{appWindow:b},c,e)){return}a.sendWebAPI({api:"SYNO.API.Info",version:1,method:"query",callback:function(i,g,h,f){if(true!==i){this._knownAPI[d]=undefined}else{this._knownAPI[d]=g}},scope:this});if(this._knownAPI.hasOwnProperty(d)&&Ext.isEmpty(this._knownAPI[d])){return}a.sendWebAPI({compound:{stopwhenerror:false,params:[{api:"SYNO.Core.System",version:1,method:"info",params:{type:"define"}},{api:"SYNO.Core.System",version:1,method:"info",params:{type:"session"}}]},callback:this.onUpdateInst,scope:this})},checkUpdateResponse:function(e,c,d,a){var b;if(Ext.isNumber(a.cms_id)){b=this.getInstNameById(a.cms_id)}else{b=this.getInstName(a.appWindow)}if(!e){SYNO.Debug.error("Update session and define fail");return false}if(b===this.local){return false}if(c.result.length!==2){SYNO.Debug.error("Incorrect response:"+Ext.encode(c.result));return false}if(c.result[0].success===false||c.result[1].success===false){delete this._session[b];delete this._define[b];return false}return true},onUpdateInst:function(d,b,c,a){if(this.checkUpdateResponse(d,b,c,a)){this.handleResponse(a,b.result[0].data,b.result[1].data,a.appOpt)}else{this.handleResponse({cms_id:0},undefined,undefined,a.appOpt)}},handleResponse:function(b,a,d,e){var c;if(Ext.isNumber(b.cms_id)){c=this.getInstNameById(b.cms_id)}else{c=this.getInstName(b.appWindow)}if(c!==this.local){this._define[c]=Ext.apply({},a);this._session[c]=Ext.apply({},d)}if(Ext.isObject(e)&&Ext.isFunction(e.callback)){if(c in this._knownAPI){e.callback.apply(e.scope||this,e.args)}else{e.callback.defer(1000,e.scope||this,e.args)}}},removeById:function(a){var b=this.getInstNameById(a);if(b===this.local){return}delete this._define[b];delete this._session[b];delete this._knownAPI[b]},getDefine:function(a,b,c){var d=this.getInstName(a);if(d===this.local){return _D(b,c)}if(Ext.isEmpty(this._session[d])){this.updateInst(a);SYNO.Debug.error("Please update first");return}if(b in this._define[d]){return this._define[d][b]}return Ext.isString(c)?c:""},getSession:function(a,b){var c=this.getInstName(a);if(c===this.local){return _S(b)}switch(b){case"lang":case"isMobile":case"demo_mode":case"SynoToken":return _S(b);default:if(Ext.isEmpty(this._session[c])){this.updateInst(a);SYNO.Debug.error("[Info]Please update first");return}else{return this._session[c][b]}}},getKnownAPI:function(a,b,d){var c=this.getInstName(a);if(c===this.local){return SYNO.API.GetKnownAPI(b,d)}if(Ext.isEmpty(this._knownAPI[c])||Ext.isEmpty(this._knownAPI[c][b])){this.updateInst(a);SYNO.Debug.error("[Info]Please update first");return}return this._knownAPI[c][b]}});SYNO.API.Info.InitInstance=function(a){if(!a){a={}}if(Ext.isEmpty(a._Instance)){a._Instance=new SYNO.API.Info()}return a._Instance};SYNO.API.Info.Instance=SYNO.API.Info.InitInstance(SYNO.API.Info.Instance);SYNO.API.Info.GetSession=function(a,b){return SYNO.API.Info.Instance.getSession(a,b)};SYNO.API.Info.GetDefine=function(a,b,c){return SYNO.API.Info.Instance.getDefine(a,b,c)};SYNO.API.Info.GetKnownAPI=function(a,b,c){return SYNO.API.Info.Instance.getKnownAPI(a,b,c)};SYNO.API.Info.Update=function(a,b,c){return SYNO.API.Info.Instance.updateInst(a,b,c)};SYNO.API.Info.UpdateById=function(a){return SYNO.API.Info.Instance.updateInstById(a)};SYNO.API.Info.RemoveById=function(a){return SYNO.API.Info.Instance.removeById(a)};SYNO.SDS.UIFeatures=function(){var b={previewBox:(!Ext.isIE||Ext.isModernIE),expandMenuHideAll:true,windowGhost:!Ext.isIE||Ext.isModernIE,disableWindowShadow:Ext.isIE&&!Ext.isModernIE,exposeWindow:(!Ext.isIE||Ext.isIE10p),msPointerEnabled:window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>0,isTouch:("ontouchstart" in window)||(window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>0),isRetina:function(){var d=false;var c="(-webkit-min-device-pixel-ratio: 1.5),(min--moz-device-pixel-ratio: 1.5),(-o-min-device-pixel-ratio: 3/2),(min-resolution: 1.5dppx)";if(window.devicePixelRatio>=1.5){d=true}if(window.matchMedia&&window.matchMedia(c).matches){d=true}return d}(),isSupportFullScreen:document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled};var a=Ext.urlDecode(location.search.substr(1));Ext.iterate(a,function(c){var d=a[c];if(Ext.isDefined(b[c])){b[c]=(d==="false")?false:true}});return{test:function(c){return !!b[c]},listAll:function(){var c="== Feature List ==\n";Ext.iterate(b,function(d){c+=String.format("{0}: {1}\n",d,b[d])})},isFullScreenMode:function(){return !!(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement)}}}();Ext.define("SYNO.SDS.UIFeatures.IconSizeManager",{statics:{PortalIcon:96,GroupView:24,Taskbar:32,GroupViewHover:48,Desktop:64,ClassicalDesktop:48,AppView:72,AppViewClassic:48,Header:24,HeaderV4:16,TreeIcon:16,StandaloneHeader:24,FavHeader:16,isEnableHDPack:false,cls:"synohdpack",debugCls:"synohdpackdebug",getIconPath:function(g,h,a){var k,c,f="/webman/",d="/synohdpack/images/dsm/";var i=this.isRetinaMode();var e=function(m,o,n,l){return m.replace(o,(o==="48")?"128":o*2)};var b=function(m,o,n,l){return m.replace(o,(o==="48")?"128":o*2)};if(0===g.indexOf("3rdparty/")){var j=String.format("/webman/synohdpack.cgi?method={0}&res={1}&retina={2}&path={3}","getHDIcon",this.getRes(h),i,"webman/")+g;return j}if(-1===g.indexOf("{1}")){if(i){a=a||false;if(a){c=g}else{if(0===g.indexOf(f)){c=d+g.substr(f.length)}else{c=d+g}}}else{c=g}}else{c=g.replace("{1}",i?"2x":"1x")}switch(h){case"Taskbar":k=String.format(c,i?this.Taskbar*2:this.Taskbar);break;case"Desktop":if(-1!=c.indexOf("files_ext_48")){c=c.replace("files_ext_48","files_ext_64")}c=(i)?c.replace(d,""):c;if(-1!=c.indexOf("files_ext_")){k=i?c.replace(/.*\/files_ext_(\d+)\/.*/,e):c}else{if(-1!=c.indexOf("shortcut_icons")){k=i?c.replace(/.*\/.*_(\d+)\.png$/,b):c}else{k=String.format(c,i?256:this.Desktop)}}break;case"ClassicalDesktop":if(-1!=c.indexOf("files_ext_")){k=i?c.replace(/.*\/files_ext_(\d+)\/.*/,e):c}else{if(-1!=c.indexOf("shortcut_icons")){k=i?c.replace(/.*\/.*_(\d+)\.png$/,b):c}else{k=String.format(c,i?256:this.ClassicalDesktop)}}break;case"AppView":k=String.format(c,i?256:this.AppView);break;case"AppViewClassic":k=String.format(c,i?256:this.AppViewClassic);break;case"Header":k=String.format(c,i?this.Header*2:this.Header);break;case"HeaderV4":k=String.format(c,i?this.HeaderV4*2:this.HeaderV4);break;case"StandaloneHeader":k=String.format(c,i?this.StandaloneHeader*2:this.StandaloneHeader);break;case"FavHeader":k=String.format(c,i?this.FavHeader*2:this.FavHeader);break;case"FileType":k=(i)?c.replace(/.*\/files_ext_(\d+)\/.*/,e):c;break;case"PortalIcon":k=String.format(c,i?this.PortalIcon*2:this.PortalIcon);break;case"TreeIcon":k=String.format(c,i?this.TreeIcon*3:this.TreeIcon);break;default:k=c;break}if(-1==k.indexOf(String.format("?v={0}",_S("fullversion")))&&".png"===k.substr(k.length-4)){k+="?v="+_S("fullversion")}k=encodeURI(k);return k},isRetinaMode:function(){return SYNO.SDS.UIFeatures.test("isRetina")&&this.isEnableHDPack},getRetinaAndSynohdpackStatus:function(){SYNO.Debug("SYNO.SDS.UIFeatures.IconSizeManager.getRetinaAndSynohdpackStatus() was renamed, please call SYNO.SDS.UIFeatures.IconSizeManager.isRetinaMode() instead.");return this.isRetinaMode()},addHDClsAndCSS:function(){var a=false;if(SYNO.SDS.UIFeatures.test("isRetina")){Ext.getDoc().addCls(this.cls);a=true}SYNO.SDS.UIFeatures.IconSizeManager.isEnableHDPack=a},enableRetinaDisplay:function(){Ext.getDoc().removeCls(this.debugCls);Ext.getDoc().addCls(this.cls);SYNO.SDS.UIFeatures.IconSizeManager.isEnableHDPack=true},enableRetinaDebugMode:function(){Ext.getDoc().removeCls(this.cls);Ext.getDoc().addCls(this.debugCls);SYNO.SDS.UIFeatures.IconSizeManager.isEnableHDPack=true},disableRetinaDisplay:function(){Ext.getDoc().removeCls(this.cls);Ext.getDoc().removeCls(this.debugCls);SYNO.SDS.UIFeatures.IconSizeManager.isEnableHDPack=false},getRes:function(b){switch(b){case"Taskbar":return this.Taskbar;case"Desktop":return this.Desktop;case"ClassicalDesktop":return this.ClassicalDesktop;case"AppView":var a=SYNO.SDS.UserSettings.getProperty("Desktop","appMenuStyle");if(a==="classical"){return this.AppViewClassic}return this.AppView;case"Header":return this.Header;case"HeaderV4":return this.HeaderV4;case"StandaloneHeader":return this.StandaloneHeader;case"FileType":return this.FileType;case"PortalIcon":return this.PortalIcon;case"TreeIcon":return this.TreeIcon;case"FavHeader":return this.FavHeader;default:return -1}}}});try{Ext.form.VTypes.emailText=_JSLIBSTR("vtype","bad_email");Ext.form.VTypes.emailMask=/[a-zA-Z0-9!#$%&'*+\-\/=?^_`{|}~\."\\,()<>@]/;Ext.form.VTypes.emailVal=/^[a-zA-Z0-9!#$%&'*+\-\/=?^_`{|}~\."\\,()<>]+@([a-zA-Z0-9_&%!#+\-\.]+)$/;Ext.form.VTypes.email=function(a){return Ext.form.VTypes.emailVal.test(a)};Ext.form.VTypes.hostnameText=_JSLIBSTR("vtype","bad_hostname");Ext.form.VTypes.hostnameMask=/[\-.a-zA-Z0-9]/;Ext.form.VTypes.hostnameVal1=/^[a-zA-Z0-9][\-.a-zA-Z0-9]{0,254}$/;Ext.form.VTypes.hostnameVal2=/^[a-zA-Z0-9]([\-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}([.][a-zA-Z0-9]([\-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}){0,}$/;Ext.form.VTypes.hostname=function(a){if(!Ext.form.VTypes.hostnameVal1.test(a)){return false}return Ext.form.VTypes.hostnameVal2.test(a)};Ext.form.VTypes.shorthostnameText=_JSLIBSTR("vtype","bad_host");Ext.form.VTypes.shorthostnameMask=/[\-a-zA-Z0-9]/;Ext.form.VTypes.shorthostnameVal=/^[a-zA-Z0-9][\-a-zA-Z0-9]{0,254}$/;Ext.form.VTypes.shorthostname=function(a){if(!Ext.form.VTypes.shorthostnameVal.test(a)){return false}return true};Ext.form.VTypes.netbiosNameText=_JSLIBSTR("vtype","bad_host");Ext.form.VTypes.netbiosNameMask=/[\-_a-zA-Z0-9]/;Ext.form.VTypes.netbiosNameVal=/^[a-zA-Z][\-_a-zA-Z0-9]{0,254}$/;Ext.form.VTypes.netbiosName=function(a){if(!Ext.form.VTypes.netbiosNameVal.test(a)){return false}return true};Ext.form.VTypes.workgroupText=_JSLIBSTR("vtype","bad_networkgroupname");Ext.form.VTypes.workgroupMask=/[^\[\];\:"<>\*\+\\\/\|\?\,]/;Ext.form.VTypes.workgroupVal=/^[^\[\];\:"<>\*\+\\\/\|\?\,]{0,15}$/;Ext.form.VTypes.workgroup=function(a){if(!Ext.form.VTypes.workgroupVal.test(a)){return false}if(a!==a.trim()||"."===a[0]){return false}return true};Ext.form.VTypes.loosev4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.loosev4ipMask=/[.0-9]/;Ext.form.VTypes.loosev4ipVal=/^([0-9]{1,3}\.){3}[0-9]{1,3}$/;Ext.form.VTypes.loosev4ip=function(a){var b=0;var d=undefined;if(!Ext.form.VTypes.loosev4ipVal.test(a)){return false}d=a.split(".");for(var c=0;c<d.length;c++){if(("0"===d[c][0]&&d[c].length>1)){return false}b=parseInt(d[c],10);switch(c){case 0:if(b<1||b>223||127==b){return false}break;case 1:case 2:if(b<0||b>255){return false}break;case 3:if(b<0||b>254){return false}break}}return true};Ext.form.VTypes.fwLoosev4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.fwLoosev4ipMask=/[.0-9]/;Ext.form.VTypes.fwLoosev4ipVal=/^([0-9]{1,3}\.){3}[0-9]{1,3}$/;Ext.form.VTypes.fwLoosev4ip=function(a){var b=0;var d=undefined;if(!Ext.form.VTypes.fwLoosev4ipVal.test(a)){return false}d=a.split(".");for(var c=0;c<d.length;c++){if(("0"===d[c][0]&&d[c].length>1)){return false}b=parseInt(d[c],10);switch(c){case 0:if(b<1||b>223||127==b){return false}break;case 1:case 2:case 3:if(b<0||b>255){return false}break}}return true};Ext.form.VTypes.loosev6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.loosev6ipMask=/[:0-9A-Fa-f]/;Ext.form.VTypes.loosev6ipVal=/^((([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,5}:([0-9a-fA-F]{1,4}:){0,1}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,4}:([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,3}:([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,2}:([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})|([0-9a-fA-F]{1,4}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})|(::([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}))$/;Ext.form.VTypes.loosev6ip=function(a){var f=0;var e=0;var b=0;var d;if(!Ext.form.VTypes.loosev6ipVal.test(a)){return false}if(a[0]==":"){a="0"+a}for(var c=0;c<a.length;c++){if(a[c]==":"){f=f+1}}for(var c=0;c<a.length-1;c++){if(a[c]==":"&&a[c+1]==":"){if(f<7){a=a.substr(0,c+1)+"0:"+a.substr(c+1);f=f+1}else{a=a.substr(0,c+1)+"0"+a.substr(c+1)}}}if(a[a.length-1]==":"){a=a+"0"}d=a.split(":");for(var c=0;c<d.length-1;c++){b=parseInt(d[c],16);if(0==b){e=e+1}}if(7==e){b=parseInt(d[7],16);if(b==1){return false}}return true};Ext.form.VTypes.fwLoosev6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.fwLoosev6ipMask=/[:0-9A-Fa-f]/;Ext.form.VTypes.fwLoosev6ipVal=/^((([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,5}:([0-9a-fA-F]{1,4}:){0,1}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,4}:([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,3}:([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,2}:([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})|([0-9a-fA-F]{1,4}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})|(::([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}))$/;Ext.form.VTypes.fwLoosev6ip=function(a){var f=0;var e=0;var b=0;var d;if(!Ext.form.VTypes.fwLoosev6ipVal.test(a)){return false}if(a[0]==":"){a="0"+a}for(var c=0;c<a.length;c++){if(a[c]==":"){f=f+1}}for(var c=0;c<a.length-1;c++){if(a[c]==":"&&a[c+1]==":"){if(f<7){a=a.substr(0,c+1)+"0:"+a.substr(c+1);f=f+1}else{a=a.substr(0,c+1)+"0"+a.substr(c+1)}}}if(a[a.length-1]==":"){a=a+"0"}d=a.split(":");for(var c=0;c<d.length-1;c++){b=parseInt(d[c],16);if(0==b){e=e+1}}if(7==e){b=parseInt(d[7],16);if(b==1){return false}}return true};Ext.form.VTypes.looseipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.looseipMask=/[.:0-9A-Fa-f]/;Ext.form.VTypes.looseip=function(a){if(!Ext.form.VTypes.loosev4ip(a)&&!Ext.form.VTypes.loosev6ip(a)){return false}return true};Ext.form.VTypes.fwLooseipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.fwLooseipMask=/[.:0-9A-Fa-f]/;Ext.form.VTypes.fwLooseip=function(a){if(!Ext.form.VTypes.fwLoosev4ip(a)&&!Ext.form.VTypes.fwLoosev6ip(a)){return false}return true};Ext.form.VTypes.v4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.v4ipMask=/[.0-9]/;Ext.form.VTypes.v4ipVal=/^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;Ext.form.VTypes.v4ip=function(a){return Ext.form.VTypes.v4ipVal.test(a)};Ext.form.VTypes.v6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.v6ipMask=/[:0-9A-Fa-f]/;Ext.form.VTypes.v6ipVal=/^((([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,5}:([0-9a-fA-F]{1,4}:){0,1}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,4}:([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,3}:([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})|(([0-9a-fA-F]{1,4}:){1,2}:([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})|([0-9a-fA-F]{1,4}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})|(::([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}))$/;Ext.form.VTypes.v6ip=function(a){return Ext.form.VTypes.v6ipVal.test(a)};Ext.form.VTypes.v6prefixLengText=_JSLIBSTR("vtype","bad_ipv6prefixLeng");Ext.form.VTypes.v6prefixLengMask=/[0-9]/;Ext.form.VTypes.v6prefixLeng=function(a){return(a>=0&&a<=128)};Ext.form.VTypes.ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.ipMask=/[.:0-9A-Fa-f]/;Ext.form.VTypes.ip=function(a){if(!Ext.form.VTypes.v4ip(a)&&!Ext.form.VTypes.v6ip(a)){return false}return true};Ext.form.VTypes.winDomainNameText=_JSLIBSTR("vtype","bad_domain_name");Ext.form.VTypes.winDomainNameMask=/[a-zA-Z0-9-._]/;Ext.form.VTypes.winDomainNameVal=/^[a-zA-Z0-9-._]*$/;Ext.form.VTypes.winDomainName=function(a){if(!Ext.form.VTypes.winDomainNameVal.test(a)){return false}if(!Ext.form.VTypes.v4ip(a)&&!Ext.form.VTypes.v6ip(a)){return true}return false};Ext.form.VTypes.netmaskText=_JSLIBSTR("vtype","bad_mask");Ext.form.VTypes.netmaskMask=/[.0-9]/;Ext.form.VTypes.netmaskVal=/(^(128|192|224|24[08]|25[245])\.0\.0\.0$)|(^255\.(0|128|192|224|24[08]|25[245])\.0\.0$)|(^255\.255\.(0|128|192|224|24[08]|25[245])\.0$)|(^255\.255\.255\.(0|128|192|224|24[08]|25[245])$)/;Ext.form.VTypes.netmask=function(a){return Ext.form.VTypes.netmaskVal.test(a)};Ext.form.VTypes.iporhostnameText=_JSLIBSTR("vtype","noiporhostname");Ext.form.VTypes.iporhostnameMask=/[\-.:a-zA-Z0-9]/;Ext.form.VTypes.iporhostname=function(a){if(!Ext.form.VTypes.ip(a)&&!Ext.form.VTypes.hostname(a)){return false}return true};Ext.form.VTypes.portText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.portMask=/[0-9]/;Ext.form.VTypes.portVal=/^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;Ext.form.VTypes.port=function(a){return Ext.form.VTypes.portVal.test(a)};Ext.form.VTypes.beepdurationText=_JSLIBSTR("vtype","bad_beepduration");Ext.form.VTypes.beepdurationMask=/[0-9]/;Ext.form.VTypes.beepdurationVal=/^([1-9]|[1-9][0-9]|[1-5][0-9][0-9]|600)$/;Ext.form.VTypes.beepduration=function(a){return Ext.form.VTypes.beepdurationVal.test(a)};Ext.form.VTypes.usernameText=_JSLIBSTR("vtype","bad_username");Ext.form.VTypes.usernameMask=/[^\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.usernameNotValid=/[\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.usernameVal=/^[^\-\s\.]/;Ext.form.VTypes.usernameEnd=/\S$/;Ext.form.VTypes.username=function(a){return(a.search(Ext.form.VTypes.usernameNotValid)==-1)&&Ext.form.VTypes.usernameVal.test(a)&&Ext.form.VTypes.usernameEnd.test(a)};Ext.form.VTypes.username_extText=_JSLIBSTR("vtype","bad_username");Ext.form.VTypes.username_extMask=/[^\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>`~]/;Ext.form.VTypes.username_extNotValid=/[\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>`~]/;Ext.form.VTypes.username_extVal=/^[^\-\s]/;Ext.form.VTypes.username_extEnd=/\S$/;Ext.form.VTypes.username_ext=function(a){return(a.search(Ext.form.VTypes.username_extNotValid)==-1)&&Ext.form.VTypes.username_extVal.test(a)&&Ext.form.VTypes.username_extEnd.test(a)};Ext.form.VTypes.groupnameText=_JSLIBSTR("vtype","bad_name");Ext.form.VTypes.groupnameMask=/[^\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.groupnameNotValid=/[\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.groupnameVal=/^[^\-\s]/;Ext.form.VTypes.groupnameEnd=/\S$/;Ext.form.VTypes.groupname=function(a){return(a.search(Ext.form.VTypes.groupnameNotValid)==-1)&&Ext.form.VTypes.groupnameVal.test(a)&&Ext.form.VTypes.groupnameEnd.test(a)};Ext.form.VTypes.fwportsText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.fwportsMask=/[\,0-9]/;Ext.form.VTypes.fwportsStart=/^[^0]/;Ext.form.VTypes.fwports=function(a){var c=a.split(",");for(var b=0;b<c.length;b++){if(!Ext.form.VTypes.number(c[b])){return false}if(c[b]<=0||c[b]>65535){return false}}return true};Ext.form.VTypes.iscsitrgnameText=_JSLIBSTR("vtype","bad_iscsi_targetname");Ext.form.VTypes.iscsitrgnameMask=/[\:\.0-9A-Za-z\-]/;Ext.form.VTypes.iscsitrgnameValue=/[^\:\.0-9A-Za-z\-]/;Ext.form.VTypes.iscsitrgname=function(a){if(a.length<=0||a.length>128||Ext.form.VTypes.iscsitrgnameValue.test(a)){return false}return true};Ext.form.VTypes.iscsilunnameText=_JSLIBSTR("vtype","bad_iscsi_lunname");Ext.form.VTypes.iscsilunnameMask=/[\:\.0-9A-Za-z\-]/;Ext.form.VTypes.iscsilunnameValue=/^[0-9A-Za-z][\:\.0-9A-Za-z\-]*$/;Ext.form.VTypes.iscsilunname=function(a){if(a.length>128||!Ext.form.VTypes.iscsilunnameValue.test(a)){return false}return true};Ext.form.VTypes.iscsitrgiqnText=_JSLIBSTR("vtype","bad_iscsi_targetiqn");Ext.form.VTypes.iscsitrgiqnMask=/[\:\.0-9A-Za-z\-]/;Ext.form.VTypes.iscsitrgiqnValue=/[^\:\.0-9A-Za-z\-]/;Ext.form.VTypes.iscsitrgiqn=function(a){if(a.length<=0||a.length>128||Ext.form.VTypes.iscsitrgiqnValue.test(a)){return false}return true};Ext.form.VTypes.iscsitrg_usernameText=_JSLIBSTR("vtype","bad_iscsi_username");Ext.form.VTypes.iscsitrg_usernameMask=/[0-9A-Za-z]/;Ext.form.VTypes.iscsitrg_usernameValue=/[^0-9A-Za-z]/;Ext.form.VTypes.iscsitrg_username=function(a){if(a.length<=0||a.length>12||Ext.form.VTypes.iscsitrg_usernameValue.test(a)){return false}return true};Ext.form.VTypes.iscsitrg_passwordText=_JSLIBSTR("vtype","bad_iscsi_password");Ext.form.VTypes.iscsitrg_passwordMask=/[0-9A-Za-z]/;Ext.form.VTypes.iscsitrg_passwordValue=/[^0-9A-Za-z]/;Ext.form.VTypes.iscsitrg_password=function(a){if(a.length<12||a.length>16||Ext.form.VTypes.iscsitrg_passwordValue.test(a)){return false}return true};Ext.form.VTypes.nonenegativeintegerText=_JSLIBSTR("vtype","bad_number");Ext.form.VTypes.nonenegativeintegerMask=/[0-9]/;Ext.form.VTypes.nonenegativeintegerVal=/[^0-9]/;Ext.form.VTypes.nonenegativeinteger=function(a){if(a<0||Ext.form.VTypes.numberVal.test(a)){return false}return true};Ext.form.VTypes.numberText=_JSLIBSTR("vtype","bad_number");Ext.form.VTypes.numberMask=/[0-9]/;Ext.form.VTypes.numberStart=/^[^0]/;Ext.form.VTypes.numberVal=/[^0-9]/;Ext.form.VTypes.number=function(a){if(a<=0||!Ext.form.VTypes.numberStart.test(a)||Ext.form.VTypes.numberVal.test(a)){return false}return true};Ext.form.VTypes.digitText=_JSLIBSTR("vtype","bad_field");Ext.form.VTypes.digitMask=/[0-9]/;Ext.form.VTypes.digitVal=/^([0-9]{1,30})$/;Ext.form.VTypes.digit=function(a){return Ext.form.VTypes.digitVal.test(a)};Ext.form.VTypes.sharenameText=_JSLIBSTR("vtype","bad_sharename");Ext.form.VTypes.sharenameMask=/[^\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.sharenameNotValid=/[\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.sharenameStart=/^[^\-\s]/;Ext.form.VTypes.sharenameEnd=/\S$/;Ext.form.VTypes.sharenameVal=function(b){var a=b.endsWith("$")?b.slice(0,-1):b;if(a.search(Ext.form.VTypes.sharenameNotValid)!=-1||""==a){return false}var d=b.toLowerCase();var c=(!(d=="global")&&!(d=="home")&&!(d=="homes")&&!(d=="printers")&&!(d==".")&&!(d=="..")&&!(d=="usbbackup")&&!(d=="satabackup")&&!(0===d.indexOf("satashare")));return c};Ext.form.VTypes.tasknameText=_JSLIBSTR("vtype","bad_taskname");Ext.form.VTypes.tasknameMask=/[^\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.tasknameNotValid=/[\\\{\}\|\^\[\]\?\=\:\+\/\*\(\)\$\!"#%&',;<>@`~]/;Ext.form.VTypes.tasknameVal=/^[^\-\s]/;Ext.form.VTypes.tasknameEnd=/\S$/;Ext.form.VTypes.taskname=function(a){return(a.search(Ext.form.VTypes.tasknameNotValid)==-1)&&Ext.form.VTypes.tasknameVal.test(a)&&Ext.form.VTypes.tasknameEnd.test(a)};Ext.form.VTypes.bucketnameText=_JSLIBSTR("vtype","bad_field");Ext.form.VTypes.bucketnameMask=/[0-9a-zA-Z\.\-]/;Ext.form.VTypes.bucketnameNotValid=/[^0-9a-zA-Z\.\-]/;Ext.form.VTypes.bucketnameRegex=/^[0-9a-zA-Z][0-9a-zA-Z\.\-]*[0-9a-zA-Z\.]$/;Ext.form.VTypes.bucketnameForbidPattern=/(\.\.|\.\-|\-\.)/;Ext.form.VTypes.bucketname=function(a){if(!Ext.form.VTypes.bucketnameNotValid.test(a)&&Ext.form.VTypes.bucketnameRegex.test(a)&&(-1==a.search(Ext.form.VTypes.bucketnameForbidPattern))&&!Ext.form.VTypes.v4ipVal.test(a)&&!Ext.form.VTypes.v6ipVal.test(a)){return true}return false};Ext.form.VTypes.plsnameMask=/[^"\\]/;Ext.form.VTypes.plsnameVal=/^[^\-\s]/;Ext.form.VTypes.plsname=function(a){return Ext.form.VTypes.plsnameVal.test(a)};Ext.form.VTypes.sharename=function(a){return Ext.form.VTypes.sharenameVal(a)&&Ext.form.VTypes.sharenameStart.test(a)&&Ext.form.VTypes.sharenameEnd.test(a)};Ext.form.VTypes.moduleText=_JSLIBSTR("vtype","bad_netbkp_module");Ext.form.VTypes.moduleMask=/[^\:\\\[\]"#<>]/;Ext.form.VTypes.moduleNotValid=/[\:\\\[\]"#<>]/;Ext.form.VTypes.moduleVal=/^[^\-\s]/;Ext.form.VTypes.moduleEnd=/\S$/;Ext.form.VTypes.module=function(a){return(a.search(Ext.form.VTypes.moduleNotValid)==-1)&&Ext.form.VTypes.moduleVal.test(a)&&Ext.form.VTypes.moduleEnd.test(a)};Ext.form.VTypes.smsurlText=_JSLIBSTR("vtype","bad_url");Ext.form.VTypes.smsurlVal=/(http|https):\/\/([A-Za-z0-9\.-]+)(:\d+)?[^\?]*(\?(\w*)=([^&]*)(&.*)?)/;Ext.form.VTypes.smsurl=function(a){if(0==a.length){return false}return Ext.form.VTypes.smsurlVal.test(a)};Ext.form.VTypes.noipPasswordText=_JSLIBSTR("vtype","bad_ddns_noip_password");Ext.form.VTypes.noipPasswordMask=/[^+?%&]/;Ext.form.VTypes.noipPasswordNotVal=/[+?%&]/;Ext.form.VTypes.noipPassword=function(a){return !Ext.form.VTypes.noipPasswordNotVal.test(a)};Ext.form.VTypes.noipAlphanumspaceText=_JSLIBSTR("vtype","bad_ddns_noip_alphanumspace");Ext.form.VTypes.noipAlphanumspaceMask=/[A-Za-z0-9 ]/;Ext.form.VTypes.noipAlphanumspaceNotVal=/[^A-Za-z0-9 ]/;Ext.form.VTypes.noipAlphanumspace=function(a){return !Ext.form.VTypes.noipAlphanumspaceNotVal.test(a)};Ext.form.VTypes.portfwdText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.portfwdMask=/[\s\,\-0-9]/;Ext.form.VTypes.portfwdVal=/^[1-9]\d*(-[1-9]\d*)?(\s*,\s*[1-9]\d*(-[1-9]\d*)?)*$/;Ext.form.VTypes.portfwdStart=/^[^0]/;Ext.form.VTypes.portfwd=function(a){return Ext.form.VTypes.portfwdVal.test(a)};Ext.form.VTypes.nationcodeMask=/[\-0-9]/;Ext.form.VTypes.nationcodeVal=/^([0-9]+(\-[0-9]+)?)$/;Ext.form.VTypes.nationcode=function(a){if(0==a.length){return false}return Ext.form.VTypes.nationcodeVal.test(a)};Ext.form.VTypes.aliasnameText=_JSLIBSTR("vtype","bad_alias");Ext.form.VTypes.aliasnameMask=/[\-_a-zA-Z0-9]/;Ext.form.VTypes.aliasnameVal=/^[a-zA-Z0-9][\-_a-zA-Z0-9]{0,18}[a-zA-Z0-9]$/;Ext.form.VTypes.aliasname=function(a){if(!Ext.form.VTypes.aliasnameVal.test(a)){return false}return true};Ext.form.VTypes.relayaliasnameText=_JSLIBSTR("vtype","bad_relay_alias_name");Ext.form.VTypes.relayaliasnameMask=/[\-_a-zA-Z0-9]/;Ext.form.VTypes.relayaliasnameVal=/^[a-zA-Z][\-_a-zA-Z0-9]{0,63}$/;Ext.form.VTypes.relayaliasname=function(a){return Ext.form.VTypes.relayaliasnameVal.test(a)};Ext.form.VTypes.darProfileText=_JSLIBSTR("vtype","bad_dar_profile_name");Ext.form.VTypes.darProfileMask=/^[A-Za-z0-9 ]/;Ext.form.VTypes.darProfileVal=/^([A-Za-z0-9][A-Za-z0-9 ]{0,127}[A-Za-z0-9]|[A-Za-z0-9])$/;Ext.form.VTypes.darProfile=function(a){if(!Ext.form.VTypes.darProfileVal.test(a)){return false}var c=a.toLowerCase();var b=(!(c=="global")&&!(c=="template")&&!(c=="lang")&&!(c==""));return b};Ext.form.VTypes.reloadVtypeStr=function(){Ext.form.VTypes.emailText=_JSLIBSTR("vtype","bad_email");Ext.form.VTypes.hostnameText=_JSLIBSTR("vtype","bad_hostname");Ext.form.VTypes.shorthostnameText=_JSLIBSTR("vtype","bad_host");Ext.form.VTypes.netbiosNameText=_JSLIBSTR("vtype","bad_host");Ext.form.VTypes.workgroupText=_JSLIBSTR("vtype","bad_networkgroupname");Ext.form.VTypes.loosev4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.fwLoosev4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.loosev6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.fwLoosev6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.looseipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.fwLooseipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.v4ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.v6ipText=_JSLIBSTR("vtype","bad_v6ip");Ext.form.VTypes.v6prefixLengText=_JSLIBSTR("vtype","bad_ipv6prefixLeng");Ext.form.VTypes.ipText=_JSLIBSTR("vtype","bad_ip");Ext.form.VTypes.winDomainNameText=_JSLIBSTR("vtype","bad_domain_name");Ext.form.VTypes.netmaskText=_JSLIBSTR("vtype","bad_mask");Ext.form.VTypes.iporhostnameText=_JSLIBSTR("vtype","noiporhostname");Ext.form.VTypes.portText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.beepdurationText=_JSLIBSTR("vtype","bad_beepduration");Ext.form.VTypes.usernameText=_JSLIBSTR("vtype","bad_username");Ext.form.VTypes.username_extText=_JSLIBSTR("vtype","bad_username");Ext.form.VTypes.groupnameText=_JSLIBSTR("vtype","bad_name");Ext.form.VTypes.fwportsText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.iscsitrgnameText=_JSLIBSTR("vtype","bad_iscsi_targetname");Ext.form.VTypes.iscsilunnameText=_JSLIBSTR("vtype","bad_iscsi_lunname");Ext.form.VTypes.iscsitrgiqnText=_JSLIBSTR("vtype","bad_iscsi_targetiqn");Ext.form.VTypes.iscsitrg_usernameText=_JSLIBSTR("vtype","bad_iscsi_username");Ext.form.VTypes.iscsitrg_passwordText=_JSLIBSTR("vtype","bad_iscsi_password");Ext.form.VTypes.numberText=_JSLIBSTR("vtype","bad_number");Ext.form.VTypes.digitText=_JSLIBSTR("vtype","bad_field");Ext.form.VTypes.sharenameText=_JSLIBSTR("vtype","bad_sharename");Ext.form.VTypes.bucketnameText=_JSLIBSTR("vtype","bad_field");Ext.form.VTypes.moduleText=_JSLIBSTR("vtype","bad_netbkp_module");Ext.form.VTypes.smsurlText=_JSLIBSTR("vtype","bad_url");Ext.form.VTypes.noipPasswordText=_JSLIBSTR("vtype","bad_ddns_noip_password");Ext.form.VTypes.noipAlphanumspaceText=_JSLIBSTR("vtype","bad_ddns_noip_alphanumspace");Ext.form.VTypes.portfwdText=_JSLIBSTR("vtype","bad_port");Ext.form.VTypes.aliasnameText=_JSLIBSTR("vtype","bad_alias");Ext.form.VTypes.relayaliasnameText=_JSLIBSTR("vtype","bad_relay_alias_name");Ext.form.VTypes.darProfileText=_JSLIBSTR("vtype","bad_dar_profile_name")}}catch(err){}Ext.namespace("SYNO");SYNO.Debug=function(){var a=Ext.urlDecode(location.search.substr(1)).mobile2,d=window.console&&window.console.log&&true,c=window.console||Ext.emptyFn;var e=function(h){h=h.split(",");function f(j){if(!a||!d){return Ext.emptyFn}var i=Ext.isFunction(window.console[j])?window.console[j]:Ext.emptyFn;return i.bind(c)}var g={};Ext.each(h,function(i){g[i]=f(i)});return g}("debug,trace,log,info,warn,error,group,groupEnd,profile,profileEnd,table,time,timeEnd,timeStamp");var b=e.log;Ext.apply(b,e);return b}();SYNO.Assert=function assert(a,b){if(!a){throw b}};Ext.define("SYNO.SDS.Utils.Logout",{statics:{logoutTriggered:false,action:function(b,c,a){if(this.logoutTriggered){return}if(Ext.isSafari&&Ext.isMac){this.logout.defer(10,this,[b,c])}else{this.logout(b,c)}},logout:function(a,b){if(Ext.isDefined(b)){window.alert(b)}if(a===true){window.onbeforeunload=null}this.logoutTriggered=true;window.location.href="webman/logout.cgi"}}});SYNO.SDS.SSOUtils=function(){return{callbackFn:{fn:Ext.emptyFn,scope:this},isSupport:function(){return(_S("sso_support")&&_S("sso_server")&&_S("sso_appid")&&"SYNOSSO" in window&&Ext.isFunction(SYNOSSO.init))},init:function(){if(this.isSupport()){try{SYNOSSO.init({oauthserver_url:_S("sso_server"),app_id:_S("sso_appid"),redirect_uri:document.URL,callback:this.callback.bind(this)})}catch(a){}}return},callback:function(a){if(false!==Ext.isDefined(SYNOSSO.status)){SYNOSSO.status=a.status;this.callbackFn.fn.call(this.callbackFn.scope,a)}else{SYNOSSO.status=a.status}},login:function(b,a){this.callbackFn.fn=b;if(Ext.isDefined(a)){this.callbackFn.scope=a}SYNOSSO.login()},logout:function(b,a){if(a){b.createDelegate(a)}if("sso"===Ext.util.Cookies.get("login_type")){SYNOSSO.logout(b)}}}}();Ext.define("SYNO.SDS.Utils.HiDPI",{statics:{getRatio:function(b){var a,d,c,e=((window.matchMedia&&(window.matchMedia("(-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)").matches))?1.5:1);a=window.devicePixelRatio||e;d=b.webkitBackingStorePixelRatio||b.mozBackingStorePixelRatio||b.msBackingStorePixelRatio||b.oBackingStorePixelRatio||b.backingStorePixelRatio||1;c=a/d;return c}}});SYNO.SDS.Utils.CheckServerError=function(e){var a,d,c;if(!e||!e.getResponseHeader){return false}try{a=e.getResponseHeader("x-request-error")||e.getResponseHeader("X-Request-Error")}catch(b){a=e.getResponseHeader["x-request-error"]||e.getResponseHeader["X-Request-Error"]}try{c=e.getResponseHeader("X-SYNO-SOURCE-ID")}catch(b){c=undefined}if(a&&Ext.isEmpty(c)){a=Ext.util.Format.trim(a);switch(a){case"timeout":d=_JSLIBSTR("uicommon","error_timeout");break;case"unauth":d=_JSLIBSTR("uicommon","error_unauth");break;case"noprivilege":d=_JSLIBSTR("uicommon","error_noprivilege");break;case"relogin":d=_JSLIBSTR("uicommon","error_relogin");break;default:d=_JSLIBSTR("uicommon","error_system")}SYNO.SDS.Utils.Logout.action(true,d,true);return true}return false};SYNO.SDS.Utils.CheckStrongPassword=Ext.extend(Object,{passwordPolicy:null,isFakePasswd:function(a,b){if(a==="12345678"&&b==="87654321"){return true}},getForm:null,getUserAcc:null,getUserDesc:null,getPasswd:null,getPasswdConfirm:null,getStartValidate:null,initPasswordChecker:function(a){Ext.each(["getForm","getUserAcc","getUserDesc","getPasswd","getPasswdConfirm","getStartValidate"],function(b){this[b]=a[b]},this)},setValue:function(a,b){this.getForm().findField(this[a]).setValue(b)},getInfo:function(a){if(Ext.isFunction(this[a])){return this[a].call(this.scope||this)}else{if(Ext.isString(this[a])){if(Ext.isFunction(this.getForm)){return this.getForm().findField(this[a]).getValue()}else{return this[a]}}}},isStrongValidator:function(){var c=this.getInfo("getUserAcc");var b=this.getInfo("getUserDesc");var a=this.getInfo("getPasswd");var d=this.getInfo("getPasswdConfirm");var e="";if(false===this.getStartValidate()){return true}if(true===this.isFakePasswd(a,d)){return true}e=this.isPasswordValid(a,c,b);return e},isPasswordValid:function(p,n,b){var j="abcdefghijklmnopqrstuvwxyz";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var h="~`!@#$%^&*()-_+={[}]|\\:;\"'<,>.?/ ";var m="1234567890";var e=false;var l=false;var a={mixed_case:false,included_special_char:false,included_numeric_char:false,exclude_username:false,min_length_enable:false};var d=[];var g=0;var k="";var f=p.toLowerCase();var q=n.toLowerCase();var c=b.toLowerCase();if(this.passwordPolicy.strong_password_enable===false){return true}if((q===""||f.indexOf(q)===-1)&&(c===""||f.indexOf(c)===-1)){a.exclude_username=true}for(g=0;g<p.length;g++){k=p.charAt(g);if(j.indexOf(k)!==-1){e=true}else{if(o.indexOf(k)!==-1){l=true}else{if(h.indexOf(k)!==-1){a.included_special_char=true}else{if(m.indexOf(k)!==-1){a.included_numeric_char=true}}}}}if(e===true&&l===true){a.mixed_case=true}if(p.length>=this.passwordPolicy.min_length){a.min_length_enable=true}for(g in a){if(true===this.passwordPolicy[g]&&false===a[g]){if(g==="min_length_enable"){d.push(_T("passwd",g)+" "+this.passwordPolicy.min_length)}else{d.push(_T("passwd",g))}}}if(0!==d.length){return _T("passwd","passwd_strength_warn")+d.join(", ")+_T("common","period")}return true}});SYNO.SDS.Utils.GetLocalizedString=function(b,d){if(!b){return""}var e,a,c=b.split(":",3);if(2<c.length){return b}e=c[0];a=c[1];var f;if(d&&typeof _TT!=="undefined"){if(!Ext.isArray(d)){d=[d]}Ext.each(d,function(g){f=_TT(g,e,a);if(!Ext.isEmpty(f)){return false}})}return f||_T(e,a)||c[2]||b};SYNO.SDS.Utils.GetFeasibilityCheckMsg=function(i){var e="",g,b=i,d=[],f,a,h=true;function c(j){if(j===""){return false}j=j.replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");j=j.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g,"]");j=j.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(j)}if(c(i)){g=Ext.util.JSON.decode(i);if(g.task_i18n){b=g.task_i18n}else{b=g.task;h=false}if(!b){return""}if(g.args){d=g.args}}if(h){f=b.split(":");if(1===f.length){e=b}else{if(2===f.length){e=(0===_T(f[0],f[1]).length)?_JSLIBSTR(f[0],f[1]):_T(f[0],f[1])}else{if(3===f.length){e=_TT(f[0],f[1],f[2])}else{e=b}}}}else{e=b}if((!Ext.isDefined(e)||0===e.length)&&Ext.isObject(g)){e=g.task}if(0<d.length){d.unshift(e);a=String.format.apply(String,d)}else{a=e}return a};SYNO.SDS.Utils.GetFeasibilityCheckMsgJoin=function(a,c){var b=[];c=c||"<br> ";Ext.each(a,function(d){b.push(SYNO.SDS.Utils.GetFeasibilityCheckMsg(d))},this);return b.join(c)};Ext.namespace("SYNO.Util");SYNO.Util.copy=function(d){var a=[],b=[];return(function(j){var f,e=a.indexOf(j);if(-1!==e){return b[e]}if(Ext.isObject(j)){f={};a.push(j);b.push(f);for(var h in j){if(j.hasOwnProperty(h)){f[h]=arguments.callee(j[h])}}}else{if(Ext.isArray(j)){f=[];a.push(j);b.push(f);for(var g=0;g<j.length;++g){f[g]=arguments.callee(j[g])}}else{f=j}}return f})(d)};SYNO.Util.copyApply=function(d,e,b){if(b){SYNO.Util.copyApply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){if(e.hasOwnProperty(a)){d[a]=SYNO.Util.copy(e[a])}}}return d};(function(d){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var a=function(h){h=h.replace(/\r\n/g,"\n");var g="";for(var j=0;j<h.length;j++){var i=h.charCodeAt(j);if(i<128){g+=String.fromCharCode(i)}else{if((i>127)&&(i<2048)){g+=String.fromCharCode((i>>6)|192);g+=String.fromCharCode((i&63)|128)}else{g+=String.fromCharCode((i>>12)|224);g+=String.fromCharCode(((i>>6)&63)|128);g+=String.fromCharCode((i&63)|128)}}}return g};var c=function(g){var j="";var l=0;var m=0,k=m,h;while(l<g.length){m=g.charCodeAt(l);if(m<128){j+=String.fromCharCode(m);l++}else{if((m>191)&&(m<224)){k=g.charCodeAt(l+1);j+=String.fromCharCode(((m&31)<<6)|(k&63));l+=2}else{k=g.charCodeAt(l+1);h=g.charCodeAt(l+2);j+=String.fromCharCode(((m&15)<<12)|((k&63)<<6)|(h&63));l+=3}}}return j};var e=function(j){var g="";var q,o,m,p,n,l,k;var h=0;j=a(j);while(h<j.length){q=j.charCodeAt(h++);o=j.charCodeAt(h++);m=j.charCodeAt(h++);p=q>>2;n=((q&3)<<4)|(o>>4);l=((o&15)<<2)|(m>>6);k=m&63;if(isNaN(o)){l=k=64}else{if(isNaN(m)){k=64}}g=g+b.charAt(p)+b.charAt(n)+b.charAt(l)+b.charAt(k)}return g};var f=function(j){var g="";var q,o,m;var p,n,l,k;var h=0;j=j.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(h<j.length){p=b.indexOf(j.charAt(h++));n=b.indexOf(j.charAt(h++));l=b.indexOf(j.charAt(h++));k=b.indexOf(j.charAt(h++));q=(p<<2)|(n>>4);o=((n&15)<<4)|(l>>2);m=((l&3)<<6)|k;g=g+String.fromCharCode(q);if(l!=64){g=g+String.fromCharCode(o)}if(k!=64){g=g+String.fromCharCode(m)}}g=c(g);return g};d.Base64={encode:e,decode:f}})(SYNO.Util);SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.AES=(function(){var b=function(x,t){var q={},r=q.lib={},d=function(){},w=r.Base={extend:function(c){d.prototype=this;var e=new d;c&&e.mixIn(c);e.hasOwnProperty("init")||(e.init=function(){e.$super.init.apply(this,arguments)});e.init.prototype=e;e.$super=this;return e},create:function(){var c=this.extend();c.init.apply(c,arguments);return c},init:function(){},mixIn:function(c){for(var e in c){c.hasOwnProperty(e)&&(this[e]=c[e])}c.hasOwnProperty("toString")&&(this.toString=c.toString)},clone:function(){return this.init.prototype.extend(this)}},v=r.WordArray=w.extend({init:function(c,e){c=this.words=c||[];this.sigBytes=e!=t?e:4*c.length},toString:function(c){return(c||a).stringify(this)},concat:function(c){var f=this.words,h=c.words,e=this.sigBytes;c=c.sigBytes;this.clamp();if(e%4){for(var g=0;g<c;g++){f[e+g>>>2]|=(h[g>>>2]>>>24-8*(g%4)&255)<<24-8*((e+g)%4)}}else{if(65535<h.length){for(g=0;g<c;g+=4){f[e+g>>>2]=h[g>>>2]}}else{f.push.apply(f,h)}}this.sigBytes+=c;return this},clamp:function(){var c=this.words,e=this.sigBytes;c[e>>>2]&=4294967295<<32-8*(e%4);c.length=x.ceil(e/4)},clone:function(){var c=w.clone.call(this);c.words=this.words.slice(0);return c},random:function(c){for(var e=[],f=0;f<c;f+=4){e.push(4294967296*x.random()|0)}return new v.init(e,c)}}),l=q.enc={},a=l.Hex={stringify:function(c){var f=c.words;c=c.sigBytes;for(var h=[],e=0;e<c;e++){var g=f[e>>>2]>>>24-8*(e%4)&255;h.push((g>>>4).toString(16));h.push((g&15).toString(16))}return h.join("")},parse:function(c){for(var g=c.length,e=[],f=0;f<g;f+=2){e[f>>>3]|=parseInt(c.substr(f,2),16)<<24-4*(f%8)}return new v.init(e,g/2)}},p=l.Latin1={stringify:function(c){var g=c.words;c=c.sigBytes;for(var e=[],f=0;f<c;f++){e.push(String.fromCharCode(g[f>>>2]>>>24-8*(f%4)&255))}return e.join("")},parse:function(c){for(var g=c.length,e=[],f=0;f<g;f++){e[f>>>2]|=(c.charCodeAt(f)&255)<<24-8*(f%4)}return new v.init(e,g)}},n=l.Utf8={stringify:function(c){try{return decodeURIComponent(escape(p.stringify(c)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(c){return p.parse(unescape(encodeURIComponent(c)))}},u=r.BufferedBlockAlgorithm=w.extend({reset:function(){this._data=new v.init;this._nDataBytes=0},_append:function(c){"string"==typeof c&&(c=n.parse(c));this._data.concat(c);this._nDataBytes+=c.sigBytes},_process:function(c){var e=this._data,f=e.words,h=e.sigBytes,j=this.blockSize,i=h/(4*j),i=c?x.ceil(i):x.max((i|0)-this._minBufferSize,0);c=i*j;h=x.min(4*c,h);if(c){for(var g=0;g<c;g+=j){this._doProcessBlock(f,g)}g=f.splice(0,c);e.sigBytes-=h}return new v.init(g,h)},clone:function(){var c=w.clone.call(this);c._data=this._data.clone();return c},_minBufferSize:0});r.Hasher=u.extend({cfg:w.extend(),init:function(c){this.cfg=this.cfg.extend(c);this.reset()},reset:function(){u.reset.call(this);this._doReset()},update:function(c){this._append(c);this._process();return this},finalize:function(c){c&&this._append(c);return this._doFinalize()},blockSize:16,_createHelper:function(c){return function(f,e){return(new c.init(e)).finalize(f)}},_createHmacHelper:function(c){return function(f,e){return(new s.HMAC.init(c,e)).finalize(f)}}});var s=q.algo={};return q}(Math);(function(){var a=b,d=a.lib.WordArray;a.enc.Base64={stringify:function(c){var p=c.words,l=c.sigBytes,n=this._map;c.clamp();c=[];for(var m=0;m<l;m+=3){for(var q=(p[m>>>2]>>>24-8*(m%4)&255)<<16|(p[m+1>>>2]>>>24-8*((m+1)%4)&255)<<8|p[m+2>>>2]>>>24-8*((m+2)%4)&255,o=0;4>o&&m+0.75*o<l;o++){c.push(n.charAt(q>>>6*(3-o)&63))}}if(p=n.charAt(64)){for(;c.length%4;){c.push(p)}}return c.join("")},parse:function(c){var q=c.length,n=this._map,o=n.charAt(64);o&&(o=c.indexOf(o),-1!=o&&(q=o));for(var o=[],l=0,r=0;r<q;r++){if(r%4){var p=n.indexOf(c.charAt(r-1))<<2*(r%4),s=n.indexOf(c.charAt(r))>>>6-2*(r%4);o[l>>>2]|=(p|s)<<24-8*(l%4);l++}}return d.create(o,l)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();(function(l){function v(j,e,c,f,g,h,i){j=j+(e&c|~e&f)+g+i;return(j<<h|j>>>32-h)+e}function t(j,e,c,f,g,h,i){j=j+(e&f|c&~f)+g+i;return(j<<h|j>>>32-h)+e}function u(j,e,c,f,g,h,i){j=j+(e^c^f)+g+i;return(j<<h|j>>>32-h)+e}function a(j,e,c,f,g,h,i){j=j+(c^(e|~f))+g+i;return(j<<h|j>>>32-h)+e}for(var d=b,w=d.lib,q=w.WordArray,p=w.Hasher,w=d.algo,s=[],r=0;64>r;r++){s[r]=4294967296*l.abs(l.sin(r+1))|0}w=w.MD5=p.extend({_doReset:function(){this._hash=new q.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(x,n){for(var c=0;16>c;c++){var e=n+c,f=x[e];x[e]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,e=x[n+0],f=x[n+1],j=x[n+2],k=x[n+3],aa=x[n+4],B=x[n+5],E=x[n+6],Y=x[n+7],X=x[n+8],o=x[n+9],A=x[n+10],C=x[n+11],W=x[n+12],D=x[n+13],z=x[n+14],Z=x[n+15],g=c[0],m=c[1],h=c[2],i=c[3],g=v(g,m,h,i,e,7,s[0]),i=v(i,g,m,h,f,12,s[1]),h=v(h,i,g,m,j,17,s[2]),m=v(m,h,i,g,k,22,s[3]),g=v(g,m,h,i,aa,7,s[4]),i=v(i,g,m,h,B,12,s[5]),h=v(h,i,g,m,E,17,s[6]),m=v(m,h,i,g,Y,22,s[7]),g=v(g,m,h,i,X,7,s[8]),i=v(i,g,m,h,o,12,s[9]),h=v(h,i,g,m,A,17,s[10]),m=v(m,h,i,g,C,22,s[11]),g=v(g,m,h,i,W,7,s[12]),i=v(i,g,m,h,D,12,s[13]),h=v(h,i,g,m,z,17,s[14]),m=v(m,h,i,g,Z,22,s[15]),g=t(g,m,h,i,f,5,s[16]),i=t(i,g,m,h,E,9,s[17]),h=t(h,i,g,m,C,14,s[18]),m=t(m,h,i,g,e,20,s[19]),g=t(g,m,h,i,B,5,s[20]),i=t(i,g,m,h,A,9,s[21]),h=t(h,i,g,m,Z,14,s[22]),m=t(m,h,i,g,aa,20,s[23]),g=t(g,m,h,i,o,5,s[24]),i=t(i,g,m,h,z,9,s[25]),h=t(h,i,g,m,k,14,s[26]),m=t(m,h,i,g,X,20,s[27]),g=t(g,m,h,i,D,5,s[28]),i=t(i,g,m,h,j,9,s[29]),h=t(h,i,g,m,Y,14,s[30]),m=t(m,h,i,g,W,20,s[31]),g=u(g,m,h,i,B,4,s[32]),i=u(i,g,m,h,X,11,s[33]),h=u(h,i,g,m,C,16,s[34]),m=u(m,h,i,g,z,23,s[35]),g=u(g,m,h,i,f,4,s[36]),i=u(i,g,m,h,aa,11,s[37]),h=u(h,i,g,m,Y,16,s[38]),m=u(m,h,i,g,A,23,s[39]),g=u(g,m,h,i,D,4,s[40]),i=u(i,g,m,h,e,11,s[41]),h=u(h,i,g,m,k,16,s[42]),m=u(m,h,i,g,E,23,s[43]),g=u(g,m,h,i,o,4,s[44]),i=u(i,g,m,h,W,11,s[45]),h=u(h,i,g,m,Z,16,s[46]),m=u(m,h,i,g,j,23,s[47]),g=a(g,m,h,i,e,6,s[48]),i=a(i,g,m,h,Y,10,s[49]),h=a(h,i,g,m,z,15,s[50]),m=a(m,h,i,g,B,21,s[51]),g=a(g,m,h,i,W,6,s[52]),i=a(i,g,m,h,k,10,s[53]),h=a(h,i,g,m,A,15,s[54]),m=a(m,h,i,g,f,21,s[55]),g=a(g,m,h,i,X,6,s[56]),i=a(i,g,m,h,Z,10,s[57]),h=a(h,i,g,m,E,15,s[58]),m=a(m,h,i,g,D,21,s[59]),g=a(g,m,h,i,aa,6,s[60]),i=a(i,g,m,h,C,10,s[61]),h=a(h,i,g,m,j,15,s[62]),m=a(m,h,i,g,o,21,s[63]);c[0]=c[0]+g|0;c[1]=c[1]+m|0;c[2]=c[2]+h|0;c[3]=c[3]+i|0},_doFinalize:function(){var h=this._data,e=h.words,c=8*this._nDataBytes,f=8*h.sigBytes;e[f>>>5]|=128<<24-f%32;var g=l.floor(c/4294967296);e[(f+64>>>9<<4)+15]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;e[(f+64>>>9<<4)+14]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;h.sigBytes=4*(e.length+1);this._process();h=this._hash;e=h.words;for(c=0;4>c;c++){f=e[c],e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}return h},clone:function(){var c=p.clone.call(this);c._hash=this._hash.clone();return c}});d.MD5=p._createHelper(w);d.HmacMD5=p._createHmacHelper(w)})(Math);(function(){var j=b,h=j.lib,d=h.Base,a=h.WordArray,h=j.algo,i=h.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:h.MD5,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(f,q){for(var n=this.cfg,r=n.hasher.create(),e=a.create(),s=e.words,p=n.keySize,n=n.iterations;s.length<p;){g&&r.update(g);var g=r.update(f).finalize(q);r.reset();for(var c=1;c<n;c++){g=r.finalize(g),r.reset()}e.concat(g)}e.sigBytes=4*p;return e}});j.EvpKDF=function(c,f,e){return i.create(e).compute(c,f)}})();b.lib.Cipher||function(d){var u=b,r=u.lib,s=r.Base,a=r.WordArray,c=r.BufferedBlockAlgorithm,w=u.enc.Base64,x=u.algo.EvpKDF,n=r.Cipher=c.extend({cfg:s.extend(),createEncryptor:function(f,e){return this.create(this._ENC_XFORM_MODE,f,e)},createDecryptor:function(f,e){return this.create(this._DEC_XFORM_MODE,f,e)},init:function(e,f,g){this.cfg=this.cfg.extend(g);this._xformMode=e;this._key=f;this.reset()},reset:function(){c.reset.call(this);this._doReset()},process:function(e){this._append(e);return this._process()},finalize:function(e){e&&this._append(e);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(e){return{encrypt:function(h,f,g){return("string"==typeof f?q:l).encrypt(e,h,f,g)},decrypt:function(h,f,g){return("string"==typeof f?q:l).decrypt(e,h,f,g)}}}});r.StreamCipher=n.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var p=u.mode={},E=function(h,i,e){var f=this._iv;f?this._iv=d:f=this._prevBlock;for(var g=0;g<e;g++){h[i+g]^=f[g]}},v=(r.BlockCipherMode=s.extend({createEncryptor:function(f,e){return this.Encryptor.create(f,e)},createDecryptor:function(f,e){return this.Decryptor.create(f,e)},init:function(f,e){this._cipher=f;this._iv=e}})).extend();v.Encryptor=v.extend({processBlock:function(h,e){var g=this._cipher,f=g.blockSize;E.call(this,h,e,f);g.encryptBlock(h,e);this._prevBlock=h.slice(e,e+f)}});v.Decryptor=v.extend({processBlock:function(h,i){var e=this._cipher,f=e.blockSize,g=h.slice(i,i+f);e.decryptBlock(h,i);E.call(this,h,i,f);this._prevBlock=g}});p=p.CBC=v;v=(u.pad={}).Pkcs7={pad:function(h,j){for(var e=4*j,e=e-h.sigBytes%e,g=e<<24|e<<16|e<<8|e,i=[],f=0;f<e;f+=4){i.push(g)}e=a.create(i,e);h.concat(e)},unpad:function(e){e.sigBytes-=e.words[e.sigBytes-1>>>2]&255}};r.BlockCipher=n.extend({cfg:n.cfg.extend({mode:p,padding:v}),reset:function(){n.reset.call(this);var e=this.cfg,f=e.iv,e=e.mode;if(this._xformMode==this._ENC_XFORM_MODE){var g=e.createEncryptor}else{g=e.createDecryptor,this._minBufferSize=1}this._mode=g.call(e,this,f&&f.words)},_doProcessBlock:function(e,f){this._mode.processBlock(e,f)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var f=this._process(!0)}else{f=this._process(!0),e.unpad(f)}return f},blockSize:4});var t=r.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),p=(u.format={}).OpenSSL={stringify:function(e){var f=e.ciphertext;e=e.salt;return(e?a.create([1398893684,1701076831]).concat(e).concat(f):f).toString(w)},parse:function(e){e=w.parse(e);var f=e.words;if(1398893684==f[0]&&1701076831==f[1]){var g=a.create(f.slice(2,4));f.splice(0,4);e.sigBytes-=16}return t.create({ciphertext:e,salt:g})}},l=r.SerializableCipher=s.extend({cfg:s.extend({format:p}),encrypt:function(g,i,e,f){f=this.cfg.extend(f);var h=g.createEncryptor(e,f);i=h.finalize(i);h=h.cfg;return t.create({ciphertext:i,key:e,iv:h.iv,algorithm:g,mode:h.mode,padding:h.padding,blockSize:g.blockSize,formatter:f.format})},decrypt:function(h,e,f,g){g=this.cfg.extend(g);e=this._parse(e,g.format);return h.createDecryptor(f,g).finalize(e.ciphertext)},_parse:function(e,f){return"string"==typeof e?f.parse(e,this):e}}),u=(u.kdf={}).OpenSSL={execute:function(h,e,f,g){g||(g=a.random(8));h=x.create({keySize:e+f}).compute(h,g);f=a.create(h.words.slice(e),4*f);h.sigBytes=4*e;return t.create({key:h,iv:f,salt:g})}},q=r.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:u}),encrypt:function(h,e,f,g){g=this.cfg.extend(g);f=g.kdf.execute(f,h.keySize,h.ivSize);g.iv=f.iv;h=l.encrypt.call(this,h,e,f.key,g);h.mixIn(f);return h},decrypt:function(h,e,f,g){g=this.cfg.extend(g);e=this._parse(e,g.format);f=g.kdf.execute(f,h.keySize,h.ivSize,e.salt);g.iv=f.iv;return l.decrypt.call(this,h,e,f.key,g)}})}();(function(){for(var v=b,q=v.lib.BlockCipher,e=v.algo,n=[],t=[],u=[],s=[],z=[],x=[],c=[],G=[],r=[],p=[],a=[],d=0;256>d;d++){a[d]=128>d?d<<1:d<<1^283}for(var j=0,k=0,d=0;256>d;d++){var l=k^k<<1^k<<2^k<<3^k<<4,l=l>>>8^l&255^99;n[j]=l;t[l]=j;var U=a[j],w=a[U],y=a[w],H=257*a[l]^16843008*l;u[j]=H<<24|H>>>8;s[j]=H<<16|H>>>16;z[j]=H<<8|H>>>24;x[j]=H;H=16843009*y^65537*w^257*U^16843008*j;c[l]=H<<24|H>>>8;G[l]=H<<16|H>>>16;r[l]=H<<8|H>>>24;p[l]=H;j?(j=U^a[a[a[y^U]]],k^=a[a[k]]):j=k=1}var F=[0,1,2,4,8,16,32,64,128,27,54],e=e.AES=q.extend({_doReset:function(){for(var f=this._key,h=f.words,i=f.sigBytes/4,f=4*((this._nRounds=i+6)+1),m=this._keySchedule=[],o=0;o<f;o++){if(o<i){m[o]=h[o]}else{var g=m[o-1];o%i?6<i&&4==o%i&&(g=n[g>>>24]<<24|n[g>>>16&255]<<16|n[g>>>8&255]<<8|n[g&255]):(g=g<<8|g>>>24,g=n[g>>>24]<<24|n[g>>>16&255]<<16|n[g>>>8&255]<<8|n[g&255],g^=F[o/i|0]<<24);m[o]=m[o-i]^g}}h=this._invKeySchedule=[];for(i=0;i<f;i++){o=f-i,g=i%4?m[o]:m[o-4],h[i]=4>i||4>=o?g:c[n[g>>>24]]^G[n[g>>>16&255]]^r[n[g>>>8&255]]^p[n[g&255]]}},encryptBlock:function(f,g){this._doCryptBlock(f,g,this._keySchedule,u,s,z,x,n)},decryptBlock:function(f,g){var h=f[g+1];f[g+1]=f[g+3];f[g+3]=h;this._doCryptBlock(f,g,this._invKeySchedule,c,G,r,p,t);h=f[g+1];f[g+1]=f[g+3];f[g+3]=h},_doCryptBlock:function(M,N,O,f,g,o,I,h){for(var L=this._nRounds,i=M[N]^O[0],m=M[N+1]^O[1],D=M[N+2]^O[2],A=M[N+3]^O[3],B=4,E=1;E<L;E++){var C=f[i>>>24]^g[m>>>16&255]^o[D>>>8&255]^I[A&255]^O[B++],J=f[m>>>24]^g[D>>>16&255]^o[A>>>8&255]^I[i&255]^O[B++],K=f[D>>>24]^g[A>>>16&255]^o[i>>>8&255]^I[m&255]^O[B++],A=f[A>>>24]^g[i>>>16&255]^o[m>>>8&255]^I[D&255]^O[B++],i=C,m=J,D=K}C=(h[i>>>24]<<24|h[m>>>16&255]<<16|h[D>>>8&255]<<8|h[A&255])^O[B++];J=(h[m>>>24]<<24|h[D>>>16&255]<<16|h[A>>>8&255]<<8|h[i&255])^O[B++];K=(h[D>>>24]<<24|h[A>>>16&255]<<16|h[i>>>8&255]<<8|h[m&255])^O[B++];A=(h[A>>>24]<<24|h[i>>>16&255]<<16|h[m>>>8&255]<<8|h[D&255])^O[B++];M[N]=C;M[N+1]=J;M[N+2]=K;M[N+3]=A},keySize:8});v.AES=q._createHelper(e)})();return b.AES})();SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.Base64=(function(){var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var d="=";return{hex2b64:function(b){var h;var a;var i="";for(h=0;h+3<=b.length;h+=3){a=parseInt(b.substring(h,h+3),16);i+=c.charAt(a>>6)+c.charAt(a&63)}if(h+1==b.length){a=parseInt(b.substring(h,h+1),16);i+=c.charAt(a<<2)}else{if(h+2==b.length){a=parseInt(b.substring(h,h+2),16);i+=c.charAt(a>>2)+c.charAt((a&3)<<4)}}while((i.length&3)>0){i+=d}return i},b64tohex:function(a){var i="";var b;var k=0;var j;for(b=0;b<a.length;++b){if(a.charAt(b)==d){break}var l=c.indexOf(a.charAt(b));if(l<0){continue}if(k===0){i+=int2char(l>>2);j=l&3;k=1}else{if(k==1){i+=int2char((j<<2)|(l>>4));j=l&15;k=2}else{if(k==2){i+=int2char(j);i+=int2char(l>>2);j=l&3;k=3}else{i+=int2char((j<<2)|(l>>4));i+=int2char(l&15);k=0}}}}if(k==1){i+=int2char(j<<2)}return i},b64toBA:function(a){var b=this.b64tohex(a);var g;var h=[];for(g=0;2*g<b.length;++g){h[g]=parseInt(b.substring(2*g,2*g+2),16)}return h}}})();SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.BigInteger=(function(){var ar;var Z=244837814094590;var aT=((Z&16777215)==15715070);function aV(c,b,a){if(!Ext.isEmpty(c)){if("number"==typeof c){this.fromNumber(c,b,a)}else{if(Ext.isEmpty(b)&&"string"!=typeof c){this.fromString(c,256)}else{this.fromString(c,b)}}}}function aN(){return new aV(null)}function an(c,g,f,d,a,b){while(--b>=0){var e=g*this[c++]+f[d]+a;a=Math.floor(e/67108864);f[d++]=e&67108863}return a}function ao(i,d,c,j,f,b){var g=d&32767,e=d>>15;while(--b>=0){var k=this[i]&32767;var h=this[i++]>>15;var a=e*k+h*g;k=g*k+((a&32767)<<15)+c[j]+(f&1073741823);f=(k>>>30)+(a>>>15)+e*h+(f>>>30);c[j++]=k&1073741823}return f}function ap(i,d,c,j,f,b){var g=d&16383,e=d>>14;while(--b>=0){var k=this[i]&16383;var h=this[i++]>>14;var a=e*k+h*g;k=g*k+((a&16383)<<14)+c[j]+f;f=(k>>28)+(a>>14)+e*h;c[j++]=k&268435455}return f}if(aT&&(navigator.appName=="Microsoft Internet Explorer")){aV.prototype.am=ao;ar=30}else{if(aT&&(navigator.appName!="Netscape")){aV.prototype.am=an;ar=26}else{aV.prototype.am=ap;ar=28}}aV.prototype.DB=ar;aV.prototype.DM=((1<<ar)-1);aV.prototype.DV=(1<<ar);var aM=52;aV.prototype.FV=Math.pow(2,aM);aV.prototype.F1=aM-ar;aV.prototype.F2=2*ar-aM;var aF="0123456789abcdefghijklmnopqrstuvwxyz";var aB=[];var av,aK;av="0".charCodeAt(0);for(aK=0;aK<=9;++aK){aB[av++]=aK}av="a".charCodeAt(0);for(aK=10;aK<36;++aK){aB[av++]=aK}av="A".charCodeAt(0);for(aK=10;aK<36;++aK){aB[av++]=aK}function aC(a){return aF.charAt(a)}function ax(c,b){var a=aB[c.charCodeAt(b)];return(Ext.isEmpty(a))?-1:a}function aL(b){for(var a=this.t-1;a>=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function ah(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+DV}else{this.t=0}}}function aX(b){var a=aN();a.fromInt(b);return a}function am(a,g){var d;if(g==16){d=4}else{if(g==8){d=3}else{if(g==256){d=8}else{if(g==2){d=1}else{if(g==32){d=5}else{if(g==4){d=2}else{this.fromRadix(a,g);return}}}}}}this.t=0;this.s=0;var b=a.length,e=false,c=0;while(--b>=0){var f=(d==8)?a[b]&255:ax(a,b);if(f<0){if(a.charAt(b)=="-"){e=true}continue}e=false;if(c===0){this[this.t++]=f}else{if(c+d>this.DB){this[this.t-1]|=(f&((1<<(this.DB-c))-1))<<c;this[this.t++]=(f>>(this.DB-c))}else{this[this.t-1]|=f<<c}}c+=d;if(c>=this.DB){c-=this.DB}}if(d==8&&(a[0]&128)!==0){this.s=-1;if(c>0){this[this.t-1]|=((1<<(this.DB-c))-1)<<c}}this.clamp();if(e){aV.ZERO.subTo(this,this)}}function aj(){var a=this.s&this.DM;while(this.t>0&&this[this.t-1]==a){--this.t}}function af(h){if(this.s<0){return"-"+this.negate().toString(h)}var f;if(h==16){f=4}else{if(h==8){f=3}else{if(h==2){f=1}else{if(h==32){f=5}else{if(h==4){f=2}else{return this.toRadix(h)}}}}}var d=(1<<f)-1,a,g=false,c="",e=this.t;var b=this.DB-(e*this.DB)%f;if(e-->0){if(b<this.DB&&(a=this[e]>>b)>0){g=true;c=aC(a)}while(e>=0){if(b<f){a=(this[e]&((1<<b)-1))<<(f-b);a|=this[--e]>>(b+=this.DB-f)}else{a=(this[e]>>(b-=f))&d;if(b<=0){b+=this.DB;--e}}if(a>0){g=true}if(g){c+=aC(a)}}}return g?c:"0"}function al(){var a=aN();aV.ZERO.subTo(this,a);return a}function at(){return(this.s<0)?this.negate():this}function ad(c){var a=this.s-c.s;if(a!==0){return a}var b=this.t;a=b-c.t;if(a!==0){return a}while(--b>=0){if((a=this[b]-c[b])!==0){return a}}return 0}function ae(c){var a=1,b;if((b=c>>>16)!==0){c=b;a+=16}if((b=c>>8)!==0){c=b;a+=8}if((b=c>>4)!==0){c=b;a+=4}if((b=c>>2)!==0){c=b;a+=2}if((b=c>>1)!==0){c=b;a+=1}return a}function aS(){if(this.t<=0){return 0}return this.DB*(this.t-1)+ae(this[this.t-1]^(this.s&this.DM))}function aY(a,c){var b;for(b=this.t-1;b>=0;--b){c[b+a]=this[b]}for(b=a-1;b>=0;--b){c[b]=0}c.t=this.t+a;c.s=this.s}function aA(a,c){for(var b=a;b<this.t;++b){c[b-a]=this[b]}c.t=Math.max(this.t-a,0);c.s=this.s}function aG(a,e){var h=a%this.DB;var g=this.DB-h;var c=(1<<g)-1;var d=Math.floor(a/this.DB),b=(this.s<<h)&this.DM,f;for(f=this.t-1;f>=0;--f){e[f+d+1]=(this[f]>>g)|b;b=(this[f]&c)<<h}for(f=d-1;f>=0;--f){e[f]=0}e[d]=b;e.t=this.t+d+1;e.s=this.s;e.clamp()}function ai(a,d){d.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t){d.t=0;return}var g=a%this.DB;var f=this.DB-g;var b=(1<<g)-1;d[0]=this[c]>>g;for(var e=c+1;e<this.t;++e){d[e-c-1]|=(this[e]&b)<<f;d[e-c]=this[e]>>g}if(g>0){d[this.t-c-1]|=(this.s&b)<<f}d.t=this.t-c;d.clamp()}function aR(e,b){var c=0,a=0,d=Math.min(e.t,this.t);while(c<d){a+=this[c]-e[c];b[c++]=a&this.DM;a>>=this.DB}if(e.t<this.t){a-=e.s;while(c<this.t){a+=this[c];b[c++]=a&this.DM;a>>=this.DB}a+=this.s}else{a+=this.s;while(c<e.t){a-=e[c];b[c++]=a&this.DM;a>>=this.DB}a-=e.s}b.s=(a<0)?-1:0;if(a<-1){b[c++]=this.DV+a}else{if(a>0){b[c++]=a}}b.t=c;b.clamp()}function ak(e,b){var d=this.abs(),a=e.abs();var c=d.t;b.t=c+a.t;while(--c>=0){b[c]=0}for(c=0;c<a.t;++c){b[c+d.t]=d.am(0,a[c],b,c,0,d.t)}b.s=0;b.clamp();if(this.s!=e.s){aV.ZERO.subTo(b,b)}}function az(b){var d,c=this.abs();d=b.t=2*c.t;while(--d>=0){b[d]=0}for(d=0;d<c.t-1;++d){var a=c.am(d,c[d],b,2*d,0,1);if((b[d+c.t]+=c.am(d+1,2*c[d],b,2*d+1,a,c.t-d-1))>=c.DV){b[d+c.t]-=c.DV;b[d+c.t+1]=1}}if(b.t>0){b[b.t-1]+=c.am(d,c[d],b,2*d,0,1)}b.s=0;b.clamp()}function aq(k,n,o){var e=k.abs();if(e.t<=0){return}var m=this.abs();if(m.t<e.t){if(!Ext.isEmpty(n)){n.fromInt(0)}if(!Ext.isEmpty(o)){this.copyTo(o)}return}if(Ext.isEmpty(o)){o=aN()}var q=aN(),a=this.s,l=k.s;var f=this.DB-ae(e[e.t-1]);if(f>0){e.lShiftTo(f,q);m.lShiftTo(f,o)}else{e.copyTo(q);m.copyTo(o)}var i=q.t;var s=q[i-1];if(s===0){return}var j=s*(1<<this.F1)+((i>1)?q[i-2]>>this.F2:0);var b=this.FV/j,c=(1<<this.F1)/j,d=1<<this.F2;var g=o.t,h=g-i,p=(Ext.isEmpty(n))?aN():n;q.dlShiftTo(h,p);if(o.compareTo(p)>=0){o[o.t++]=1;o.subTo(p,o)}aV.ONE.dlShiftTo(i,p);p.subTo(q,q);while(q.t<i){q[q.t++]=0}while(--h>=0){var r=(o[--g]==s)?this.DM:Math.floor(o[g]*b+(o[g-1]+d)*c);if((o[g]+=q.am(0,r,o,h,0,i))<r){q.dlShiftTo(h,p);o.subTo(p,o);while(o[g]<--r){o.subTo(p,o)}}}if(!Ext.isEmpty(n)){o.drShiftTo(i,n);if(a!=l){aV.ZERO.subTo(n,n)}}o.t=i;o.clamp();if(f>0){o.rShiftTo(f,o)}if(a<0){aV.ZERO.subTo(o,o)}}function aP(b){var a=aN();this.abs().divRemTo(b,null,a);if(this.s<0&&a.compareTo(aV.ZERO)>0){b.subTo(a,a)}return a}function ac(a){this.m=a}function aD(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function aJ(a){return a}function aW(a){a.divRemTo(this.m,null,a)}function ab(c,a,b){c.multiplyTo(a,b);this.reduce(b)}function aa(b,a){b.squareTo(a);this.reduce(a)}ac.prototype.convert=aD;ac.prototype.revert=aJ;ac.prototype.reduce=aW;ac.prototype.mulTo=ab;ac.prototype.sqrTo=aa;function aH(){if(this.t<1){return 0}var b=this[0];if((b&1)===0){return 0}var a=b&3;a=(a*(2-(b&15)*a))&15;a=(a*(2-(b&255)*a))&255;a=(a*(2-(((b&65535)*a)&65535)))&65535;a=(a*(2-b*a%this.DV))%this.DV;return(a>0)?this.DV-a:-a}function ay(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function aI(b){var a=aN();b.abs().dlShiftTo(this.m.t,a);a.divRemTo(this.m,null,a);if(b.s<0&&a.compareTo(aV.ZERO)>0){this.m.subTo(a,a)}return a}function ag(b){var a=aN();b.copyTo(a);this.reduce(a);return a}function au(d){while(d.t<=this.mt2){d[d.t++]=0}for(var b=0;b<this.m.t;++b){var c=d[b]&32767;var a=(c*this.mpl+(((c*this.mph+(d[b]>>15)*this.mpl)&this.um)<<15))&d.DM;c=b+this.m.t;d[c]+=this.m.am(0,a,d,b,0,this.m.t);while(d[c]>=d.DV){d[c]-=d.DV;d[++c]++}}d.clamp();d.drShiftTo(this.m.t,d);if(d.compareTo(this.m)>=0){d.subTo(this.m,d)}}function aO(b,a){b.squareTo(a);this.reduce(a)}function aQ(c,a,b){c.multiplyTo(a,b);this.reduce(b)}ay.prototype.convert=aI;ay.prototype.revert=ag;ay.prototype.reduce=au;ay.prototype.mulTo=aQ;ay.prototype.sqrTo=aO;function aE(){return 0===((this.t>0)?(this[0]&1):this.s)}function aU(b,a){if(b>4294967295||b<1){return aV.ONE}var c=aN(),g=aN(),d=a.convert(this),e=ae(b)-1;d.copyTo(c);while(--e>=0){a.sqrTo(c,g);if((b&(1<<e))>0){a.mulTo(g,d,c)}else{var f=c;c=g;g=f}}return a.revert(c)}function aw(c,b){var a;if(c<256||b.isEven()){a=new ac(b)}else{a=new ay(b)}return this.exp(c,a)}aV.prototype.copyTo=aL;aV.prototype.fromInt=ah;aV.prototype.fromString=am;aV.prototype.clamp=aj;aV.prototype.dlShiftTo=aY;aV.prototype.drShiftTo=aA;aV.prototype.lShiftTo=aG;aV.prototype.rShiftTo=ai;aV.prototype.subTo=aR;aV.prototype.multiplyTo=ak;aV.prototype.squareTo=az;aV.prototype.divRemTo=aq;aV.prototype.invDigit=aH;aV.prototype.isEven=aE;aV.prototype.exp=aU;aV.prototype.toString=af;aV.prototype.negate=al;aV.prototype.abs=at;aV.prototype.compareTo=ad;aV.prototype.bitLength=aS;aV.prototype.mod=aP;aV.prototype.modPowInt=aw;aV.ZERO=aX(0);aV.ONE=aX(1);return aV})();SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.SecureRandom=(function(){function x(){this.i=0;this.j=0;this.S=[]}function s(a){var b,d,c;for(b=0;b<256;++b){this.S[b]=b}d=0;for(b=0;b<256;++b){d=(d+this.S[b]+a[b%a.length])&255;c=this.S[b];this.S[b]=this.S[d];this.S[d]=c}this.i=0;this.j=0}function A(){var a;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[(a+this.S[this.i])&255]}x.prototype.init=s;x.prototype.next=A;function u(){return new x()}var r=256;var t;var C;var y;function w(a){C[y++]^=a&255;C[y++]^=(a>>8)&255;C[y++]^=(a>>16)&255;C[y++]^=(a>>24)&255;if(y>=r){y-=r}}function p(){w(new Date().getTime())}if(Ext.isEmpty(C)){C=[];y=0;var q;if(navigator.appName=="Netscape"&&navigator.appVersion<"5"&&window.crypto){var v=window.crypto.random(32);for(q=0;q<v.length;++q){C[y++]=v.charCodeAt(q)&255}}while(y<r){q=Math.floor(65536*Math.random());C[y++]=q>>>8;C[y++]=q&255}y=0;p()}function B(){if(Ext.isEmpty(t)){p();t=u();t.init(C);for(y=0;y<C.length;++y){C[y]=0}y=0}return t.next()}function z(a){var b;for(b=0;b<a.length;++b){a[b]=B()}}function D(){}D.prototype.nextBytes=z;D.rng_seed_time=p;return D})();SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.RSA=(function(){function g(a,b){return new SYNO.Encryption.BigInteger(a,b)}function h(c,n){if(n<c.length+11){return null}var a=[];var d=c.length-1;while(d>=0&&n>0){var b=c.charCodeAt(d--);if(b<128){a[--n]=b}else{if((b>127)&&(b<2048)){a[--n]=(b&63)|128;a[--n]=(b>>6)|192}else{a[--n]=(b&63)|128;a[--n]=((b>>6)&63)|128;a[--n]=(b>>12)|224}}}a[--n]=0;var e=new SYNO.Encryption.SecureRandom();var f=[];while(n>2){f[0]=0;while(f[0]===0){e.nextBytes(f)}a[--n]=f[0]}a[--n]=2;a[--n]=0;return new SYNO.Encryption.BigInteger(a)}function k(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function j(a,b){if(!Ext.isEmpty(a)&&!Ext.isEmpty(b)&&a.length>0&&b.length>0){this.n=g(a,16);this.e=parseInt(b,16)}else{}}function i(a){return a.modPowInt(this.e,this.n)}function l(b){var d=h(b,(this.n.bitLength()+7)>>3);if(Ext.isEmpty(d)){return null}var a=this.doPublic(d);if(Ext.isEmpty(a)){return null}var c=a.toString(16);if((c.length&1)===0){return c}else{return"0"+c}}k.prototype.doPublic=i;k.prototype.setPublic=j;k.prototype.encrypt=l;return k})();SYNO=window.SYNO||{};SYNO.Encryption=SYNO.Encryption||{};SYNO.Encryption.CipherKey="";SYNO.Encryption.RSAModulus="";SYNO.Encryption.CipherToken="";SYNO.Encryption.TimeBias=0;SYNO.Encryption.GenRandomKey=function(){var b="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+-/".split("");return function(a){var d=[];while(a>0){d.push(b[Math.floor(Math.random()*(b.length+1))]);a--}return d.join("")}}();SYNO.Encryption.EncryptParam=function(j){var l,n,h,m={},i={},k=SYNO.Encryption.GenRandomKey(501);if(!SYNO.Encryption.CipherKey||!SYNO.Encryption.RSAModulus||!SYNO.Encryption.CipherToken){return j}l=new SYNO.Encryption.RSA();l.setPublic(SYNO.Encryption.RSAModulus,"10001");m[SYNO.Encryption.CipherToken]=Math.floor(+new Date()/1000)+SYNO.Encryption.TimeBias;n=l.encrypt(k);if(!n){return j}Ext.apply(m,j);h=SYNO.Encryption.AES.encrypt(Ext.urlEncode(m),k).toString();if(!h){return j}i[SYNO.Encryption.CipherKey]=JSON.stringify({rsa:SYNO.Encryption.Base64.hex2b64(n),aes:h});return i};Ext.define("SYNO.DSMMobile.base.Panel",{extend:"Ext.Panel",xtype:"syno_panel",config:{}});Ext.define("SYNO.DSMMobile.base.Title",{extend:"Ext.Container",xtype:"syno_title",config:{title:"",activeTab:0,tabBar:null,items:[{xtype:"title",itemId:"title"},{xtype:"syno_title_tabbar",itemId:"tabbar",hidden:true}]},getTabBarCmp:function(){var a=this.down("#tabbar");return a.getTabBarCmp()},updateTabBar:function(a){var c=this.down("#tabbar"),b=this.down("#title");if(a){c.setTabBarItems(a);c.show();b.hide()}else{c.hide();b.show()}},updateTitle:function(b){var a=this.down("#title");if(a){a.setHtml(b)}},updateActiveTab:function(a){var b=this.down("#tabbar");b.setActiveTab(a)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.TitleTabBar",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno_title_tabbar",config:{width:SYNO.DSMMobile.util.Env.isTablet?300:250,activeTab:null,tabBarItems:[],items:[{defaults:{xtype:"tab"},xtype:"tabbar",docked:"top"}]},getTabBarCmp:function(){return this.down("tabbar")},updateTabBarItems:function(b){var a=this.down("tabbar");a.setItems(b)},updateActiveTab:function(b){var a=this.down("tabbar");a.setActiveTab(b)},initialize:function(){this.addCls("syno-title-tabbar");this.on("painted",function(){this.updateActiveTab(this.getActiveTab())},this,{single:true});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.BaseTitleBar",{extend:"Ext.TitleBar",requires:["SYNO.DSMMobile.base.Title"],xtype:"syno_basetitlebar",config:{docked:"top",title:"syno_basetitlebar default title"},applyInitialItems:function(a){var c=this,b=c.getTitleAlign(),d=c.getDefaults()||{};c.initialItems=a;c.leftBox=c.add({xtype:"container",style:"position: relative",layout:{type:"hbox",align:"center"},listeners:{resize:"refreshTitlePosition",scope:c}});c.spacer=c.add({xtype:"component",style:"position: relative",flex:1,listeners:{resize:"refreshTitlePosition",scope:c}});c.rightBox=c.add({xtype:"container",style:"position: relative",layout:{type:"hbox",align:"center"},listeners:{resize:"refreshTitlePosition",scope:c}});switch(b){case"left":c.titleComponent=c.leftBox.add({xtype:"syno_title",cls:Ext.baseCSSPrefix+"title-align-left",hidden:d.hidden});c.refreshTitlePosition=Ext.emptyFn;break;case"right":c.titleComponent=c.rightBox.add({xtype:"syno_title",cls:Ext.baseCSSPrefix+"title-align-right",hidden:d.hidden});c.refreshTitlePosition=Ext.emptyFn;break;default:c.titleComponent=c.add({xtype:"syno_title",hidden:d.hidden,centered:true});break}c.doAdd=c.doBoxAdd;c.remove=c.doBoxRemove;c.doInsert=c.doBoxInsert},getTabBarCmp:function(){return this.titleComponent.getTabBarCmp()},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.Dialog",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno_dialog",config:{layout:"fit",cls:"syno-mobile-dialog",autoHideNavBar:true,floating:true,centered:true,modal:true,hideOnMaskTap:true,width:550,height:620,title:"dialog default title",leftBtn:null,rightBtn:null,titleBar:{docked:"top",xtype:"titlebar",title:"titleBar in dialog"},showBy:null,items:[]},createTitleBar:function(){var e=this;var d=[];var g=this.getLeftBtn(),a=this.getRightBtn(),c=this.getTitleBar(),f=this.getTitle();function b(h){var i=h.handler||Ext.emptyFn;h.handler=function(){var j=i.call(this,this,e);if(j){return}e.closeDialog()};return Ext.factory(h)}if(g){g=Ext.apply({xtype:"syno_button",align:"left",text:"left",btnStyle:"darkblue"},g);g=b(g);this.setLeftBtn(g);d.push(g)}if(a){a=Ext.apply({xtype:"syno_button",align:"right",text:"right",btnStyle:"darkblue",cls:"bold"},a);a=b(a);this.setRightBtn(a);d.push(a)}if(c){c=Ext.apply({docked:"top",xtype:"titlebar",items:d},c);if(f){c.title=f}c=Ext.factory(c);this.setTitleBar(c);this.add(c)}},setTitle:function(b){var a=this.getTitleBar();this._title=b;if(a&&Ext.isFunction(a.setTitle)){a.setTitle(b)}},closeDialog:function(){this.destroy()},initialize:function(){var a=this.getShowBy();if(a){this.setTop(-10000);this.setLeft(-10000);Ext.defer(function(){this.showBy.apply(this,a)},50,this)}this.createTitleBar();Ext.Viewport.add(this);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.NavigationViewBarImpl",{extend:"SYNO.DSMMobile.base.BaseTitleBar",requires:["Ext.Button","Ext.Spacer"],isToolbar:true,config:{baseCls:Ext.baseCSSPrefix+"toolbar",cls:Ext.baseCSSPrefix+"navigation-bar",ui:"dark",title:null,defaultType:"button",layout:{type:"hbox"},defaultBackButtonText:"Back",animation:{duration:300},useTitleForBackButtonText:null,view:null,android2Transforms:false,backButton:{align:"left",ui:"back",hidden:true}},platformConfig:[{theme:["Blackberry"],animation:false}],constructor:function(a){a=a||{};if(!a.items){a.items=[]}this.backButtonStack=[];this.activeAnimations=[];this.callParent([a])},applyBackButton:function(a){return Ext.factory(a,Ext.Button,this.getBackButton())},updateBackButton:function(a,b){if(b){this.remove(b)}if(a){this.add(a);a.on({scope:this,tap:this.onBackButtonTap})}},onBackButtonTap:function(){this.fireEvent("back",this)},updateView:function(b){var d=this,j=d.getBackButton(),a,c,f,g,e,h;d.getItems();if(b){a=b.getInnerItems();for(c=0;c<a.length;c++){g=a[c];e=(g.getTitle)?g.getTitle():g.config.title;d.backButtonStack.push(e||" ")}h=d.getTitleText();if(h===undefined){h=""}d.setTitle(h);f=d.getBackButtonText();if(f){j.setText(f);j.show()}}},onViewAdd:function(c,e){var d=this,b=d.backButtonStack,a,f;d.endAnimation();f=(e.getTitle)?e.getTitle():e.config.title;b.push(f||" ");a=b.length>1;d.doChangeView(c,a,false)},onViewRemove:function(c){var d=this,b=d.backButtonStack,a;d.endAnimation();b.pop();a=b.length>1;d.doChangeView(c,a,true)},doChangeView:function(k,c,g){var r=this,o=r.leftBox,e=o.element,f=r.titleComponent,m=f.element,n=r.getBackButton(),l=r.getTitleText(),h=r.getBackButtonText(),q=r.getAnimation()&&k.getLayout().getAnimation(),p=q&&q.isAnimation&&k.isPainted(),d,i,a,j,b;if(p){i=r.createProxy(o.element);e.setStyle("opacity","0");n.setText(h);n[c?"show":"hide"]();a=r.createProxy(f.element.getParent());m.setStyle("opacity","0");r.setTitle(l);d=r.measureView(i,a,g);j=d.left;b=d.title;r.isAnimating=true;r.animate(e,j.element);r.animate(m,b.element,function(){m.setLeft(d.titleLeft);r.isAnimating=false;r.refreshTitlePosition()});if(Ext.browser.is.AndroidStock2&&!this.getAndroid2Transforms()){i.ghost.destroy();a.ghost.destroy()}else{r.animate(i.ghost,j.ghost);r.animate(a.ghost,b.ghost,function(){i.ghost.destroy();a.ghost.destroy()})}}else{if(c){n.setText(h);n.show()}else{n.hide()}r.setTitle(l)}},measureView:function(e,u,k){var w=this,j=w.element,v=w.leftBox.element,p=w.titleComponent.element,l=Math.min(j.getWidth()/3,200),q=v.getWidth(),c=j.getX(),m=j.getWidth(),n=p.getX(),d=p.getLeft(),s=p.getWidth(),r=e.x,t=e.width,a=e.left,h=Ext.browser.is.AndroidStock2&&!this.getAndroid2Transforms(),i,b,f,x,o,g;g=c-r-t;if(k){i=g;b=Math.min(n-t,l)}else{b=g;i=Math.min(n-c,l)}if(h){f={element:{from:{left:i,opacity:1},to:{left:0,opacity:1}}}}else{f={element:{from:{transform:{translateX:i},opacity:0},to:{transform:{translateX:0},opacity:1}},ghost:{to:{transform:{translateX:b},opacity:0}}}}g=c-n+q;if((a+s)>n){o=c-n-s}if(k){p.setLeft(0);b=c+m-n-s;if(o!==undefined){i=o}else{i=g}}else{i=c+m-n-s;if(o!==undefined){b=o}else{b=g}i=Math.max(d,i)}if(h){x={element:{from:{left:i,opacity:1},to:{left:d,opacity:1}}}}else{x={element:{from:{transform:{translateX:i},opacity:0},to:{transform:{translateX:d},opacity:1}},ghost:{to:{transform:{translateX:b},opacity:0}}}}return{left:f,title:x,titleLeft:d}},animate:function(b,a,e){var c=this,d;b.setLeft(0);a=Ext.apply(a,{element:b,easing:"ease-in-out",duration:c.getAnimation().duration||250,preserveEndState:true});d=new Ext.fx.Animation(a);d.on("animationend",function(){if(e){e.call(c)}},c);Ext.Animator.run(d);c.activeAnimations.push(d)},endAnimation:function(){var a=this.activeAnimations,d,b,c;if(a){c=a.length;for(b=0;b<c;b++){d=a[b];if(d.isAnimating){d.stopAnimation()}else{d.destroy()}}this.activeAnimations=[]}},refreshTitlePosition:function(){if(!this.isAnimating){this.callParent()}},getBackButtonText:function(){var b=this.backButtonStack[this.backButtonStack.length-2],a=this.getUseTitleForBackButtonText();if(!a){if(b){b=this.getDefaultBackButtonText()}}return b},getTitleText:function(){return this.backButtonStack[this.backButtonStack.length-1]},beforePop:function(b){b--;for(var a=0;a<b;a++){this.backButtonStack.pop()}},doSetHidden:function(a){if(!a){this.element.setStyle({position:"relative",top:"auto",left:"auto",width:"auto"})}else{this.element.setStyle({position:"absolute",top:"-1000px",left:"-1000px",width:this.element.getWidth()+"px"})}},createProxy:function(b){var e,a,f,d,c;e=b.dom.cloneNode(true);e.id=b.id+"-proxy";b.getParent().dom.appendChild(e);e=Ext.get(e);a=b.getX();f=b.getY();d=b.getLeft();c=b.getWidth();e.setStyle("position","absolute");e.setX(a);e.setY(f);e.setHeight(b.getHeight());e.setWidth(c);return{x:a,y:f,left:d,width:c,ghost:e}}});Ext.define("SYNO.DSMMobile.base.NavigationViewBar",{extend:"SYNO.DSMMobile.base.NavigationViewBarImpl",xtype:"syno_navigationviewbar",config:{activeTab:null,tabBar:null},doSetHidden:function(a){if(!this.element){return}if(!a){this.element.setStyle({position:"relative",top:"auto",left:"auto",width:"auto"})}else{this.element.setStyle({position:"absolute",top:"-1000px",left:"-1000px",width:this.element.getWidth()+"px"})}},updateTabBar:function(a){this.titleComponent.setTabBar(a)},updateActiveTab:function(a){this.titleComponent.setActiveTab(a)}});Ext.define("SYNO.DSMMobile.base.NavigationView",{extend:"Ext.navigation.View",requires:["SYNO.DSMMobile.base.NavigationViewBar"],xtype:"syno_navigationview",config:{layout:{animation:null,type:"card"},autoHideNavBar:false,autoHideNavBarFn:function(a){return a<=1},topLevelBtnFn:null,topLevelBtnText:null,extraBtn:null,autoHideExtraBtn:false,autoHideExtraBtnFn:function(a){return a>1},beforePopFn:null,confirmBeforeClose:false,defaultBackButtonText:_T("mobile","common_back")},applyNavigationBar:function(a){var b=this;if(!a){a={hidden:true,docked:"top"}}if(a.title){delete a.title;Ext.Logger.warn("Ext.navigation.View: The 'navigationBar' configuration does not accept a 'title' property. You set the title of the navigationBar by giving this navigation view's children a 'title' property.")}a.view=this;a.useTitleForBackButtonText=this.getUseTitleForBackButtonText();if(a.splitNavigation){this.$titleContainer=this.add({docked:"top",xtype:"titlebar",ui:"light",title:this.$currentTitle||""});var c=(a.splitNavigation===true)?{}:a.splitNavigation;this.$backButtonContainer=this.add({xtype:"toolbar",docked:"bottom",hidden:true});this.$backButtonContainer.on({scope:b,add:b.onBackButtonContainerAdd,remove:b.onBackButtonContainerRemove});this.$backButton=this.$backButtonContainer.add({xtype:"button",text:_T("mobile","common_back"),hidden:true,ui:"back"});if(a.items){this.$backButtonContainer.add(a.items)}if(c.items){this.$titleContainer.add(c.items)}this.$backButton.on({scope:this,tap:this.onBackButtonTap});a={hidden:true,docked:"top"}}return Ext.factory(a,"SYNO.DSMMobile.base.NavigationViewBar",this.getNavigationBar())},onBackButtonTap:function(){var a=this.getTopLevelBtnFn(),b=this.getInnerItemsLength();if(b<=1&&Ext.isFunction(a)){a.call(this)}this.callParent(arguments)},getInnerItemsLength:function(){return this.getInnerItems().length},monitorConfirmClose:function(){var a=this.getModal();this.on("beforeTapCancel",function(){this.confirmClose();return false},this);if(a){a.on("tap",function(){this.confirmClose()},this)}},confirmClose:function(){var a=this.getAt(1),b=false;if(a.isDirty()){b=true}else{if(a.isExtraDirty&&a.isExtraDirty()){b=true}}if(!b){this.fireEvent("closeDetail")}else{Ext.Msg.confirm("",_T("common","confirm_lostchange"),function(c){if(c==="yes"){this.fireEvent("closeDetail")}},this)}},initialize:function(){var b=this.getNavigationBar(),a=this.getAutoHideNavBar(),d=this.getBeforePopFn(),f=this.getExtraBtn(),e=this.getTopLevelBtnText(),c=this.getAutoHideExtraBtn(),g=this.getConfirmBeforeClose();if(Ext.isString(d)&&Ext.isFunction(this[d])){d=this[d];this.setBeforePopFn(d)}this.callParent(arguments);if(f){f=Ext.factory(Ext.apply({xtype:"syno_button",text:_JSLIBSTR("wizard","btnfinish"),cls:"bold",btnStyle:"darkblue",align:"right"},f));b.add(f);this.setExtraBtn(f)}if(b&&a){this.refreshNavBar();this.on({push:this.refreshNavBar,pop:this.refreshNavBar})}if(e){this.checkTopLevelBtn();this.on({push:this.checkTopLevelBtn,pop:this.checkTopLevelBtn})}if(c){this.checkExtraBtn();this.on({push:this.checkExtraBtn,pop:this.checkExtraBtn})}if(g){this.monitorConfirmClose()}},checkExtraBtn:function(){var d=this.getExtraBtn(),c=this.getAutoHideExtraBtnFn(),b=this.getInnerItemsLength(),a;if(!d){return}a=c(b);if(a){d.hide()}else{d.show()}},checkTopLevelBtn:function(){var a=this.getNavigationBar(),b=this.getInnerItemsLength(),d=this.getTopLevelBtnText(),c=a.getBackButton();if(!c){return}if(b<=1){if(d){c.setText(d);c.show()}else{c.hide()}}},refreshNavBar:function(){var b=this.getNavigationBar(),c=this.getInnerItemsLength(),d=this.getAutoHideNavBarFn(),a;a=d(c);if(a){b.hide()}else{b.show()}},push:function(a){this.fireEvent("beforePush",a);return this.callParent(arguments)},pop:function(b){var a=this.getBeforePopFn();this.fireEvent("beforePop",this.getActiveItem());if(Ext.isFunction(a)){if(a.call(this)===false){return this.getActiveItem()}}if(this.beforePop(b)){return this.doPop()}},doPop:function(){var a=this.callParent(arguments);this.checkTopLevelBtn();return a}});Ext.define("SYNO.DSMMobile.base.AdvDialog",{extend:"SYNO.DSMMobile.base.NavigationView",xtype:"syno_advdialog",config:{layout:"card",cls:"syno-mobile-dialog",autoHideNavBar:true,floating:true,centered:true,modal:true,hideOnMaskTap:true,destroyOnMaskTap:true,width:550,height:620,title:"adv_dialog default title",leftBtn:null,rightBtn:null,titleBar:{},showBy:null,items:[]},createBtnConfig:function(a,b){var d=this;if(!Ext.isObject(a)){return a}function c(e){if(!e){e=Ext.emptyFn}return function(){var f=e.call(this,this,d);if(f===false){return}d.closeDialog()}}Ext.apply(b,a);b.handler=c(a.handler);return b},applyLeftBtn:function(a){return this.createBtnConfig(a,{xtype:"syno_button",align:"left",text:"left",btnStyle:"darkblue"})},applyRightBtn:function(a){return this.createBtnConfig(a,{xtype:"syno_button",align:"right",text:"right",btnStyle:"darkblue",cls:"bold"})},createTitleBar:function(){var d=this.getLeftBtn(),a=this.getRightBtn(),b=this.getTitleBar(),c=this.getTitle();if(b){b=Ext.apply({docked:"top",xtype:"syno_titlebar",leftBtn:d,rightBtn:a,title:c},b);b=Ext.factory(b);this.setTitleBar(b);this.add(b)}},setTitle:function(b){var a=this.getTitleBar();this._title=b;if(a&&Ext.isFunction(a.setTitle)){a.setTitle(b)}},updateDestroyOnMaskTap:function(d){var a=this.getModal(),c=this;function b(){c.destroy()}if(a){a[d?"on":"un"].call(a,"tap",b,this)}},closeDialog:function(){this.destroy()},initialize:function(){var b=this.getNavigationBar(),a=this.getAutoHideNavBar(),c=this.getShowBy();this.createTitleBar();Ext.Viewport.add(this);if(c){Ext.defer(function(){this.showBy.apply(this,c)},50,this)}this.callParent(arguments);if(b&&a){this.on({push:this.refreshTitleBar,pop:this.refreshTitleBar})}},refreshTitleBar:function(){var b=this.getInnerItems(),a=this.getTitleBar();if(b.length<=1){a.show()}else{a.hide()}}});Ext.define("SYNO.DSMMobile.mixin.DetailMixin",{onTriggerTapCancel:function(c,b){var a=this.fireEvent("beforeTapCancel",c,b);if(a!==false){this.fireEvent("tapCancel",c,b);this.fireEvent("closeDetail")}},onTriggerTapDone:function(c,b){var a=this.fireEvent("beforeTapDone",c,b);if(a!==false){this.fireEvent("tapDone",c,b);this.fireEvent("closeDetail")}},onCloseDetail:function(){if(this instanceof SYNO.DSMMobile.base.PhoneDetail){this.doTopPop()}if(this instanceof SYNO.DSMMobile.base.TabletDetail){this.closeDialog()}},onTapCancel:function(c,b){var a=this.getModule();if(a){a.fireEvent("tapCancel",c,b)}},onTapDone:function(c,b){var a=this.getModule();if(a){a.fireEvent("tapDone",c,b)}},monitorBtnEvent:function(){this.on({triggerTapCancel:this.onTriggerTapCancel,triggerTapDone:this.onTriggerTapDone,tapCancel:this.onTapCancel,tapDone:this.onTapDone,closeDetail:this.onCloseDetail})},getTitleFromItems:function(){var b=null,a=this.getItems();a.each(function(c){if(Ext.isFunction(c.getTitle)){b=c.getTitle();return false}});return b},handleTabPanelContent:function(e){var d=e.down("tabbar"),b=SYNO.DSMMobile.util.Env.isTablet?this.getTitleBar():this.getNavigationBar(),a=[],c;d.hide();d.getItems().each(function(f){a.push({title:f.getTitle()})},this);b.setTabBar(a);c=b.getTabBarCmp();c.on({activetabchange:function(g,h,i){var f=g.indexOf(h);e.setActiveItem(f)}})},handleInitializeContent:function(){var a=this.getActiveItem();if(a instanceof SYNO.DSMMobile.base.TabPanel){this.handleTabPanelContent(a)}}});Ext.define("SYNO.DSMMobile.base.PhoneDetail",{extend:"SYNO.DSMMobile.base.NavigationView",xtype:"syno-dsmmobile-base-phonedetail",requires:["SYNO.DSMMobile.mixin.DetailMixin"],mixins:["SYNO.DSMMobile.mixin.DetailMixin"],config:{cls:"syno-mobile-phonedetail",module:null,autoHideExtraBtn:true,navigationBar:{cls:"phonedetail-navigationbar"},leftBtn:{text:"Back",handler:function(b){var a;if(this instanceof SYNO.DSMMobile.base.PhoneDetail){a=this}else{a=this.up("syno-dsmmobile-base-phonedetail")}a.fireEvent("triggerTapCancel",b,undefined)}},rightBtn:{text:_JSLIBSTR("wizard","btnfinish"),handler:function(b){var a=this.up("syno-dsmmobile-base-phonedetail");a.fireEvent("triggerTapDone",b,undefined)}}},updateLeftBtn:function(a){if(!a){this.setTopLevelBtnText("")}else{this.setTopLevelBtnText(a.text);this.setTopLevelBtnFn(a.handler)}},updateRightBtn:function(a){this.setExtraBtn(a)},doTopPop:function(){this.hubFire("showNavBar");this.hubFire("popContent")},initialize:function(){this.monitorBtnEvent();this.callParent(arguments);this.handleInitializeContent()}});Ext.define("SYNO.DSMMobile.base.TabletDetail",{extend:"SYNO.DSMMobile.base.AdvDialog",requires:["SYNO.DSMMobile.mixin.DetailMixin"],mixins:["SYNO.DSMMobile.mixin.DetailMixin"],config:{module:null,width:550,height:620,leftBtn:{text:_JSLIBSTR("wizard","btncancel"),handler:function(b,a){this.parent.parent.parent.fireEvent("triggerTapCancel",b,a);return false}},rightBtn:{text:_JSLIBSTR("wizard","btnfinish"),handler:function(b,a){this.parent.parent.parent.fireEvent("triggerTapDone",b,a);return false}},listeners:{}},initialize:function(){this.monitorBtnEvent();this.callParent(arguments);this.setTitle(this.getTitleFromItems());this.handleInitializeContent()}});Ext.define("SYNO.DSMMobile.base.TitleBar",{extend:"SYNO.DSMMobile.base.BaseTitleBar",requires:["SYNO.DSMMobile.base.Title"],xtype:"syno_titlebar",config:{docked:"top",title:"syno_titlebar default title",activeTab:null,tabBar:null,leftBtn:{text:"leftBtn",handler:function(){console.log("click left")}},rightBtn:{text:"rightBtn",handler:function(){console.log("click right")}}},updateTabBar:function(a){this.titleComponent.setTabBar(a)},updateActiveTab:function(a){this.titleComponent.setActiveTab(a)},initialize:function(){var b=this.getLeftBtn(),a=this.getRightBtn();if(b){b=Ext.apply({xtype:"syno_button",align:"left",text:"left"},b);b=Ext.factory(b);this.setLeftBtn(b);this.add(b)}if(a){a=Ext.apply({xtype:"syno_button",align:"right",text:"right"},a);a=Ext.factory(a);this.setRightBtn(a);this.add(a)}this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.Proxy",{extend:"Ext.data.ServerProxy",alias:"proxy.syno",config:{apiType:"",pageParam:null,filterParam:"filter",startParam:"offset",limitParam:"limit",params:{},extraParams:{},defaultParams:{},agent:null,agentInfo:null,agentScope:null,memory:null,memoryProcessor:function(b){var a=this.getApiType();if(!Ext.isObject(b)||!Ext.isArray(b.api_type)){return b}else{return b[a].resp}},processor:function(c){var b=this.getApiType(),a=this.getDefaultCompoundProcessor();if(!Ext.isArray(b)){return c}else{return a.call(this,c)}},defaultCompoundProcessor:function(c){var d=[],b=this.getReader(),a=b.getRootProperty();Ext.each(c,function(f,e){Ext.each(f.resp[a],function(g){d.push(Ext.apply({compound_webapi_api_type:c.api_type[e]},g))},this)},this);return d}},buildParams:function(l){var u=this,t={},q=l.getGrouper(),a=l.getSorters(),i=l.getFilters(),g=l.getPage(),f=l.getStart(),s=l.getLimit(),h=u.getSimpleSortMode(),p=u.getPageParam(),d=u.getStartParam(),b=u.getLimitParam(),c=u.getGroupParam(),e=u.getSortParam(),o=u.getFilterParam(),j=u.getDirectionParam();var n=this.getDefaultParams(),r=this.getExtraParams(),k=this.getParams(),m=l.getParams();Ext.apply(t,n);Ext.apply(t,r);Ext.apply(t,k);Ext.apply(t,m);if(u.getEnablePagingParams()){if(p&&g!==null){t[p]=g}if(d&&f!==null){t[d]=f}if(b&&s!==null){t[b]=s}}if(c&&q){t[c]=u.encodeSorters([q])}if(e&&a&&a.length>0){if(h){t[e]=a[0].getProperty();t[j]=a[0].getDirection()}else{t[e]=u.encodeSorters(a)}}if(o&&i&&i.length>0){t[o]=u.encodeFilters(i)}return t},updateMemory:function(a){this.fireEvent("updateMemory",a)},doRequest:function(a,f,d){var b=this.getApiType(),c=this.getAgent(),e=this.getMemory();if(c){this.doAgentRequest.apply(this,arguments)}else{if(e){this.doMemoryRequest.apply(this,arguments)}else{if(Ext.isArray(b)){this.doCompoundRequest.apply(this,arguments)}else{this.doNormalRequest.apply(this,arguments)}}}},doNormalRequest:function(b,f,d){var e=this.buildParams(b),c=this.getApiType(),a=SYNO.DSMMobile.webapi;a[c](e,Ext.bind(this.processResponse,this,[b,f,d],true))},doCompoundRequest:function(b,g,d){var f=this.buildParams(b),c=this.getApiType(),a=SYNO.DSMMobile.webapi,e=[];Ext.each(c,function(h){h.params=this.buildParams(b);e.push(h)},this);a.sendCompoundWebAPI(e,f,Ext.bind(this.processCompoundResponse,this,[b,g,d],true))},doAgentRequest:function(a,h,e){var g=this,d=this.getAgent(),c=this.getAgentInfo(),b=this.getAgentScope();function f(k,j,i){g.processResponseCore.call(g,k,j,i,a);if(Ext.isFunction(h)){h.call(e||window,a)}}d.call(b||window,c,f)},doMemoryRequest:function(b,f,c){var d=this,e=this.getMemory(),a=this.getMemoryProcessor();if(Ext.isFunction(e)){e=e()}else{if(!Ext.isObject(e)||Ext.Object.equals(e,{})){this.on("updateMemory",Ext.bind(this.doMemoryRequest,this,[b,f,c]),this,{single:true});return}}e=a.call(this,e);d.processResponseCore.call(d,e,{},{},b);if(Ext.isFunction(f)){f.call(c||window,b)}},processCompoundResponse:function(e,g,f,a,c,d,h,i){var b=this.getParams();if(!e||g.has_fail){this.processResponseError(c,b,a,d)}else{this.processResponseCore(g,b,a,d)}if(Ext.isFunction(h)){h.call(i||window,d)}},processResponseCore:function(d,e,a,g){var f=g.getAction(),b=this.getProcessor(),h=this.getReader(),i;d=b.call(this,d);try{i=h.process(d)}catch(c){g.setException(c.message);this.fireEvent("exception",this,d,g);return}if(!g.getModel()){g.setModel(this.getModel())}if(g.process(f,i,e,a)===false){this.setException(g,d);this.fireEvent("exception",this,d,g)}},processResponseError:function(d,c,b,a){this.setException(a,d);this.fireEvent("exception",this,d,a)},processResponse:function(a,f,e,d,b,g,c){if(!a){this.processResponseError(f,e,d,b)}else{this.processResponseCore(f,e,d,b)}if(Ext.isFunction(g)){g.call(c||window,b)}}});Ext.define("SYNO.DSMMobile.base.Store",{extend:"Ext.data.Store",xtype:"syno_store",config:{enableErrorMsg:true,proxyExceptionHandler:function(b,c,a){this.defaultProxyExceptionHandler(b,c,a)},pageSize:16000,restoreSrc:null,storeSrc:null,memory:null},defaultProxyExceptionHandler:function(c,d,a){var b=this.getEnableErrorMsg();if(b){Ext.Msg.alert("",SYNO.API.getErrorString(d.code))}},updateMemory:function(b){var a=this.getProxy();if(a){a.setMemory(b)}},updateProxy:function(a){a.on("exception",this.onProxyException,this);this.callParent(arguments)},onProxyException:function(b,c,a){var d=this.getProxyExceptionHandler();d.apply(this,arguments);this.fireEvent("exception",this,b,c,a)},loadFromStore:function(a){a.each(function(b){this.add(b)},this)},load:function(){var b=this.getRestoreSrc(),a=this.getStoreSrc();if(b){this.loadFromStore(b);this.setRestoreSrc(null);return}if(a){this.loadFromStore(a);return}this.callParent(arguments)},getModifiedRecords:function(){return this.data.filterBy(function(a){return a.dirty===true&&a.isValid()}).items}});Ext.define("SYNO.DSMMobile.data.MainMenuList",{extend:"Ext.data.Model",config:{fields:[{name:"title",type:"string"},{name:"iconCls",type:"string"},{name:"type",type:"string"},{name:"xclass",type:"string"},{name:"order",type:"int"},{name:"badge",type:"string"},{name:"badgeName",type:"string"},{name:"options",type:"auto"},{name:"schema",type:"string"},{name:"grouper_index",type:"int"},{name:"ha_safemode",type:"boolean"}],proxy:{type:"memory",reader:{type:"json"}}}});Ext.define("SYNO.DSMMobile.data.Service",{extend:"Ext.data.Model",config:{fields:[{name:"service_id",type:"string"},{name:"display_name",type:"string"},{name:"enable",type:"boolean",mapping:"enable_status",convert:function(a){switch(a){case"enabled":return true;case"disabled":return false;case"static":return null;default:return false}}},{name:"additional",type:"auto"}],proxy:{type:"syno",apiType:"GetService",reader:{type:"json",rootProperty:"service"}}}});Ext.define("SYNO.DSMMobile.data.User",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"description",type:"string"},{name:"email",type:"string"},{name:"expired",type:"string"}],proxy:{type:"syno",apiType:"ListUser",reader:{type:"json",rootProperty:"users"}}}});Ext.define("SYNO.DSMMobile.data.UserGroup",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"description",type:"string"},{name:"gid",type:"int"},{name:"is_member",type:"boolean",defaultValue:false}],proxy:{type:"syno",apiType:"ListGroup",reader:{type:"json",rootProperty:"groups"}}}});Ext.define("SYNO.DSMMobile.data.Permission",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"share_path",type:"string"},{name:"is_aclmode",type:"boolean"},{name:"is_admin",type:"boolean"},{name:"is_custom",type:"boolean"},{name:"is_deny",type:"boolean"},{name:"is_readonly",type:"boolean"},{name:"is_mask",type:"boolean"},{name:"is_sync_share",type:"boolean"},{name:"is_unite_permission",type:"boolean"},{name:"is_writable",type:"boolean"}]}});Ext.define("SYNO.DSMMobile.data.UserPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{fields:[{name:"inherit",type:"string"}],proxy:{type:"syno",apiType:"ListUserSharePermission",reader:{type:"json",rootProperty:"shares"}}}});Ext.define("SYNO.DSMMobile.data.GroupPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListGroupSharePermission",reader:{type:"json",rootProperty:"shares"}}}});Ext.define("SYNO.DSMMobile.data.CreatingUserPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListGroupSharePermission",reader:{type:"json",rootProperty:"shares"}}}});Ext.define("SYNO.DSMMobile.data.CreatingGroupPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListGroupSharePermission",defaultParams:{name:""},reader:{type:"json",rootProperty:"shares"}}}});Ext.define("SYNO.DSMMobile.data.SharedFolderPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListSharePermission",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.data.SharedFolderUserPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListSharePermission",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.data.SharedFolderGroupPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListSharePermission",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.data.CreatingSharedFolderUserPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListUser",defaultParams:{additional:[]},reader:{type:"json",rootProperty:"users"}}}});Ext.define("SYNO.DSMMobile.data.CreatingSharedFolderGroupPermission",{extend:"SYNO.DSMMobile.data.Permission",config:{proxy:{type:"syno",apiType:"ListGroup",defaultParams:{additional:[]},reader:{type:"json",rootProperty:"groups"}}}});Ext.define("SYNO.DSMMobile.data.Application",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"app_id",type:"string"},{name:"grant_type",type:"auto"},{name:"supportIP",type:"boolean"}],proxy:{type:"syno",apiType:"ListAppPrivApp",reader:{type:"json",rootProperty:"applications"}}}});Ext.define("SYNO.DSMMobile.data.ApplicationPrivilege",{extend:"Ext.data.Model",config:{fields:[{name:"app_id",type:"string"},{name:"app_name",type:"string"},{name:"entity_type",type:"string"},{name:"entity_name",type:"string"},{name:"allow",type:"boolean"},{name:"deny",type:"boolean"},{name:"custom",type:"boolean"},{name:"privilege",type:"string"}],proxy:{type:"syno",agent:function(d,c){var a=SYNO.DSMMobile.webapi,b;b=[{apiType:"ListAppPrivApp"}];if(d){b.push({apiType:"GetAppPrivRule",params:{entity_type:d.entity_type,entity_name:d.entity_name}})}a.sendCompoundWebAPI(b,true,function(e,j,g){var h,i=[],f=j.ListAppPrivApp.resp.applications;if(j.GetAppPrivRule){i=j.GetAppPrivRule.resp.rules}h=SYNO.DSMMobile.util.Application.buildProxyResp(d,f,i);c(h,b,g)},this)},agentInfo:null,processor:function(a){return a},reader:{type:"json",rootProperty:"rules"}}}});Ext.define("SYNO.DSMMobile.data.PreviewApplicationPrivilegePreview",{extend:"Ext.data.Model",config:{fields:[{name:"app_id",type:"string"},{name:"privilege",type:"string",mapping:"privilelge"}],proxy:{type:"syno",apiType:"PreviewUserAppPrivApp",reader:{type:"json",rootProperty:"applications"}}}});Ext.define("SYNO.DSMMobile.data.SharedFolder",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"desc",type:"string"},{name:"vol_path",type:"string"},{name:"external_dev_type",type:"string"},{name:"encryption",type:"int"},{name:"enc_auto_mount",type:"boolean"},{name:"enable_fileindex",type:"boolean"},{name:"enable_recycle_bin",type:"boolean"},{name:"recycle_bin_admin_only",type:"boolean"},{name:"support_fileindex",type:"boolean"},{name:"hidden",type:"boolean"},{name:"is_aclmode",type:"boolean"},{name:"is_support_acl",type:"boolean"},{name:"is_sync_share",type:"boolean"},{name:"is_usb_share",type:"boolean"},{name:"migrate",type:"boolean"},{name:"unite_permission",type:"boolean"}],proxy:{type:"syno",apiType:"ListSharedFolder",reader:{type:"json",rootProperty:"shares"}}}});Ext.define("SYNO.DSMMobile.data.PackageList.Additional",{extend:"Ext.data.Model",config:{fields:[{name:"description",type:"string"},{name:"description_enu",type:"string"},{name:"distributor",type:"string"},{name:"distributor_url",type:"string"},{name:"dsm_apps",type:"string"},{name:"help_url",type:"string"},{name:"install_type",type:"string"},{name:"installed_info",type:"auto"},{name:"maintainer",type:"string"},{name:"maintainer_url",type:"string"},{name:"report_beta_url",type:"string"},{name:"status",type:"string"},{name:"support_url",type:"string"},{name:"autoupdate",type:"boolean"},{name:"beta",type:"boolean"},{name:"is_uninstall_pages",type:"boolean"},{name:"silent_upgrade",type:"boolean"},{name:"startable",type:"boolean"},{name:"support_center",type:"boolean"}]}});Ext.define("SYNO.DSMMobile.data.PackageList",{extend:"Ext.data.Model",config:{fields:[{name:"id",type:"string"},{name:"name",type:"string"},{name:"dname",type:"string",mapping:"name"},{name:"version",type:"string"},{name:"additional",type:"auto"},{name:"desc",type:"string",mapping:"additional.description"},{name:"description_enu",type:"string",mapping:"additional.description"},{name:"status",type:"string",mapping:"additional.status"},{name:"progress",type:"string",mapping:"additional.installing_progress"},{name:"maintainer",type:"string",mapping:"additional.maintainer"},{name:"maintainer_url",type:"string",mapping:"additional.maintainer_url"},{name:"distributor",type:"string",mapping:"additional.distributor"},{name:"distributor_url",type:"string",mapping:"additional.distributor_url"},{name:"pkghelpurl",type:"string",mapping:"additional.help_url"},{name:"pkgadminporturl",type:"string",convert:function(b,a){var e,c="",d;if(a.data&&a.data.additional){e=a.data.additional.url}if(!e){return""}for(d=0;d<e.length;d++){c+=String.format("<a href='{0}' target='_blank'>{0}</a>",e[0]);if(d>0){c+=";"}}return c}},{name:"pkgstartable",type:"boolean",mapping:"additional.startable"},{name:"pkgisuninstui",type:"boolean",mapping:"additional.is_uninstall_pages"},{name:"icon",type:"string"},{name:"pkgreporturl",type:"string",mapping:"additional.report_beta_url"},{name:"support_center",type:"string",mapping:"additional.support_center"},{name:"beta",type:"boolean",mapping:"additional.beta"},{name:"support_url",type:"string",mapping:"additional.support_url"},{name:"dsm_apps",type:"string",mapping:"additional.dsm_apps"},{name:"pkgtarget",type:"auto",mapping:"additional.installed_info"},{name:"install_type",type:"string",mapping:"additional.install_type"},{name:"inst_type",type:"string"},{name:"blupgrade",type:"boolean"},{name:"autoupdate",type:"boolean",mapping:"additional.autoupdate"},{name:"silent_upgrade",type:"boolean",mapping:"additional.silent_upgrade"},{name:"_display_status",type:"string"},{name:"_lock_ui",type:"boolean",defaultValue:false},{name:"installing",type:"boolean",defaultValue:false}],proxy:{type:"syno",apiType:"ListPackageFull",reader:{type:"json",rootProperty:"packages"}}}});Ext.define("SYNO.DSMMobile.data.SystemInfo",{extend:"Ext.data.Model",config:{fields:[{name:"cpu_cores",type:"string"},{name:"cpu_family",type:"string"},{name:"cpu_series",type:"string"},{name:"cpu_vendor",type:"string"},{name:"firmware_date",type:"string"},{name:"firmware_ver",type:"string"},{name:"model",type:"string"},{name:"ntp_server",type:"string"},{name:"serial",type:"string"},{name:"time",type:"string"},{name:"time_zone",type:"string"},{name:"time_zone_desc",type:"string"},{name:"up_time",type:"string"},{name:"enabled_ntp",type:"boolean"},{name:"sys_tempwarn",type:"boolean"},{name:"cpu_clock_speed",type:"int"},{name:"ram_size",type:"int"},{name:"sata_dev",type:"auto"},{name:"sd_dev",type:"auto"},{name:"usb_dev",type:"auto"}],proxy:{type:"syno",apiType:"SystemInfo",reader:{type:"json"}}}});Ext.define("SYNO.DSMMobile.data.IPBlock",{extend:"Ext.data.Model",config:{fields:[{name:"compound_webapi_api_type",type:"string"},{name:"ip",type:"string"},{name:"expire_date",type:"int"},{name:"record_date",type:"int"}],proxy:{type:"syno",apiType:"ListAutoBlockRules",reader:{type:"json",rootProperty:"ip_info"}}}});Ext.define("SYNO.DSMMobile.data.IPBlockAll",{extend:"SYNO.DSMMobile.data.IPBlock",config:{proxy:{type:"syno",apiType:[{apiType:"ListAutoBlockAllowedRules"},{apiType:"ListAutoBlockDeniedRules"}],reader:{type:"json",rootProperty:"ip_info"}}}});Ext.define("SYNO.DSMMobile.data.ProcessInfo",{extend:"Ext.data.Model",config:{fields:[{name:"command",type:"string"},{name:"cpu",type:"int"},{name:"mem",type:"int"},{name:"pid",type:"int"},{name:"status",type:"string"},{name:"type",type:"string",defaultValue:_T("rsrcmonitor","process")}],proxy:{type:"syno",apiType:"ListProcess",reader:{type:"json",rootProperty:"process"}}}});Ext.define("SYNO.DSMMobile.data.Connection",{extend:"Ext.data.Model",config:{fields:[{name:"who",type:"string"},{name:"type",type:"string"},{name:"from",type:"string"},{name:"time",type:"string"},{name:"descr",type:"string"},{name:"pid",type:"int"},{name:"can_be_kicked",type:"boolean"},{name:"user_can_be_disabled",type:"boolean"}],proxy:{type:"syno",apiType:"ListCurrentConnection",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.data.LatestLog",{extend:"Ext.data.Model",config:{fields:[{name:"fac",type:"string"},{name:"host",type:"string"},{name:"ldate",type:"string"},{name:"llevel",type:"string"},{name:"ltime",type:"string"},{name:"prio",type:"string"},{name:"prog",type:"string"},{name:"utcsec",type:"string"},{name:"msg",type:"string"}],proxy:{type:"syno",apiType:"ListLatestLog",reader:{type:"json",rootProperty:"logs"}}}});Ext.define("SYNO.DSMMobile.data.GeneralLog",{extend:"Ext.data.Model",config:{fields:[{name:"descr",type:"string"},{name:"level",type:"string"},{name:"logtype",type:"string"},{name:"orginalLogType",type:"string"},{name:"time",type:"string"},{name:"who",type:"string"}],proxy:{type:"syno",apiType:"ListSyslogClientLog",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.data.XferLog",{extend:"Ext.data.Model",config:{fields:[{name:"cmd",type:"string"},{name:"descr",type:"string"},{name:"filesize",type:"string"},{name:"ip",type:"string"},{name:"logtype",type:"string"},{name:"orginalLogType",type:"string"},{name:"time",type:"string"},{name:"username",type:"string"}],proxy:{type:"syno",apiType:"ListSyslogClientLog",reader:{type:"json",rootProperty:"items"}}}});Ext.define("SYNO.DSMMobile.base.List",{extend:"Ext.dataview.List",xtype:"syno_list",config:{itemHeight:52,itemMap:{minimumHeight:0},trTpl:'<div class="syno-mobile-listitem-tr {{trCls}}" style="{{trStyle}}">{{innerItems}}</div>',leftTpl:null,centerTpl:null,rightTpl:null,appendItemTpl:null,isItemList:true,enablePadding:false,enableIconTapEvent:false,enableInfiniteScroll:null,monitorRefreshEvent:false,emptyText:_T("mobile","common_empty_list"),loadingText:_T("common","loading"),iconTpl:" ",trCls:"",leftCls:"",centerCls:"",rightCls:"",iconCls:"",trStyle:"",leftStyle:"",centerStyle:"",rightStyle:"",iconStyle:"",trWrapperTpl:'<div class="syno-mobile-listitem-table">{{trTpl}}</div>',leftWrapperTpl:'<div class="syno-mobile-listitem-left {{leftCls}}" style="{{leftStyle}}">{{leftTpl}}</div>',centerWrapperTpl:'<div class="syno-mobile-listitem-center {{centerCls}}" style="{{centerStyle}}">{{centerTpl}}</div>',rightWrapperTpl:'<div class="syno-mobile-listitem-right {{rightCls}}" style="{{rightStyle}}">{{rightTpl}}</div>',iconWrapperTpl:'<div class="syno-mobile-listitem-icon {{iconCls}}" style="{{iconStyle}}">{{iconTpl}}</div>',innerItemsTpl:"{0}{1}{2}{3}"},constructor:function(){this.callParent(arguments)},fillItemTpl:function(){function i(s){return s.charAt(0).toUpperCase()+s.slice(1)}function g(s,u){var t=[];Ext.each(s,function(v){if(u(v)){t.push(v)}},this);return t}function c(s){if(Ext.isString(s)){return s}return g(s,Ext.isString).join("")}function a(s){return g(s,Ext.isObject)}function o(u,t,s){var v=new RegExp("{{"+t+"}}","g");return u.replace(v,s)}function d(u,t){var s=t;Ext.each(u,function(v){var w=this["get"+i(v)]();s=o(s,v,w)},p);return s}function n(u,t){var s=[];Ext.each(u,function(v){Ext.each(t,function(w){s.push(v+w)})});return s}var p=this;var q=["left","center","right","icon","tr"];var r={},k={},h={},b,l;var f,m=this.getInnerItemsTpl();var e=a(this.getInitialConfig("itemTpl"));var j=a(this.getAppendItemTpl());Ext.each(q,function(u){var t=u+"Tpl",s=i(u)+"Tpl";var w=u+"WrapperTpl",v=i(u)+"WrapperTpl";r[t]=this["get"+s]();r[w]=this["get"+v]();if(!r[t]){h[t]=""}else{k[t]=c(r[t]);h[t]=o(r[w],t,k[t])}},this);f=m.format(h.leftTpl,h.centerTpl,h.rightTpl,h.iconTpl);b=h.trTpl.replace(/{{innerItems}}/,f);b=d(n(q,["Cls","Style"]),b);if(e.length===0&&j.length===0){this.setItemTpl(b)}else{l=e.concat(j);this.setItemTpl([b].concat(l))}},monitorIconTapEvent:function(){this.on("itemtap",function(c,e,h,b,f,d){var a=h.element.down(".syno-mobile-listitem-icon"),g=f.browserEvent.target;if(!a){return}if(a.dom===g){this.fireEvent("iconTap",c,e,h,b,f,d)}},this)},onBeforeLoad:function(){var a=this.getLoadingText();if(a&&this.isPainted()){this.setMasked({xtype:"syno-mask",message:a})}this.hideEmptyText()},updateEmptyText:function(c,d){var b=this,a;if(d&&b.emptyTextCmp){b.remove(b.emptyTextCmp,true);delete b.emptyTextCmp}if(c){b.emptyTextCmp=b.add({xtype:"container",layout:{type:"vbox",pack:"center",align:"middle"},cls:b.getBaseCls()+"-emptytext-ct",items:[{xclass:"SYNO.DSMMobile.view.NoDataPanel"},{xtype:"component",html:'<span class="emptytext">'+c+"</span>"}],hidden:true});a=b.getStore();if(a&&b.hasLoadedStore&&!a.getCount()){this.showEmptyText()}}},getListItemConfig:function(){var c=this,a=c.getItemMap().getMinimumHeight(),b={xtype:c.getDefaultType(),itemConfig:c.getItemConfig(),tpl:c.getItemTpl(),minHeight:a,cls:c.getItemCls()};if(c.getInfinite()){b.translatable={translationMethod:this.translationMethod};b.width="100%";b.cls+=" syno-mobile-infinite-simplelistitem"}if(!c.getVariableHeights()){b.height=a}return b},refreshList:function(){var a=this.getStore();a.load()},monitorRefreshEvent:function(){var a;this.on("painted",function(){a=this.up("syno_module");if(a){a.on("refreshList",this.refreshList,this)}else{console.warn("can't find module")}},this,{single:true})},initCls:function(){var d=this.getCls(),e=this.getIsItemList(),a=this.getEnablePadding(),c=this.getUseComponents(),b=Ext.clone(d)||[];b.push("syno-mobile-list");if(e){b.push("syno-mobile-item-list")}if(a){b.push("list-with-padding")}if(c){b.push("dataitem-list")}else{b.push("simpleitem-list")}this.setCls(b)},initialize:function(){var d=this.getCenterTpl(),e=this.getEnableIconTapEvent(),a=this.getEnableInfiniteScroll(),c=this.getMonitorRefreshEvent(),b=this.getPlugins();if(d){this.fillItemTpl()}if(e){this.monitorIconTapEvent()}if(a){if(!b){b=[]}b.push({xclass:"Ext.plugin.ListPaging",autoPaging:true,loadMoreText:_T("common","loading"),noMoreRecordsText:""});this.setPlugins(b)}if(c){this.monitorRefreshEvent()}this.initCls();this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.data.Volume",{extend:"Ext.data.Model",config:{fields:[{name:"container",type:"string"},{name:"description",type:"string"},{name:"display_name",type:"string"},{name:"fs_type",type:"string"},{name:"location",type:"string"},{name:"pool_path",type:"string"},{name:"raid_type",type:"string"},{name:"volume_path",type:"string"},{name:"size_free_byte",type:"int"},{name:"size_total_byte",type:"int"},{name:"readonly",type:"boolean"},{name:"single_volume",type:"boolean"}],proxy:{type:"syno",apiType:"GetStorageVolume",reader:{type:"json",rootProperty:"volumes"}}}});Ext.define("SYNO.DSMMobile.data.ServerPackage",{extend:"Ext.data.Model",config:{fields:[{name:"id",type:"string"},{name:"version",type:"string"},{name:"link",type:"string"},{name:"beta",type:"boolean"},{name:"blupgrade",type:"boolean"},{name:"category",type:"int"},{name:"changelog",type:"string"},{name:"conflictpkgs",type:"auto"},{name:"deppkgs",type:"auto"},{name:"depsers",type:"string"},{name:"desc",type:"string"},{name:"desc_enu",type:"string"},{name:"dname",type:"string"},{name:"dname_enu",type:"string"},{name:"download_count",type:"int"},{name:"maintainer",type:"string"},{name:"md5",type:"string"},{name:"name_ver",type:"string"},{name:"package",type:"string"},{name:"pkg_name",type:"string"},{name:"price",type:"int"},{name:"qinst",type:"boolean"},{name:"qstart",type:"boolean"},{name:"qupgrade",type:"boolean"},{name:"recent_download_count",type:"boolean"},{name:"silent_install",type:"boolean"},{name:"silent_uninstall",type:"boolean"},{name:"silent_upgrade",type:"boolean"},{name:"auto_upgrade_from",type:"string"},{name:"size",type:"int"},{name:"snapshot",type:"auto"},{name:"source",type:"string"},{name:"start",type:"boolean"},{name:"subcategory",type:"int"},{name:"thumbnail",type:"auto"},{name:"thumbnail_retina",type:"auto"},{name:"type",type:"int"},{name:"progress",type:"float"},{name:"info",type:"auto"},{name:"_display_status",type:"string",defaultValue:""},{name:"_lock_ui",type:"boolean",defaultValue:false},{name:"installing",type:"boolean",defaultValue:false}],proxy:{type:"syno",apiType:"ListServerPackage",reader:{type:"json",rootProperty:"data"}}}});Ext.define("SYNO.DSMMobile.ux.Mask",{extend:"Ext.LoadMask",xtype:"syno-mask",config:{cls:Ext.baseCSSPrefix+"loading-mask syno-mask",messageCls:Ext.baseCSSPrefix+"mask-message syno-mask-message",indicator:false},getTemplate:function(){var a="syno-";return[{reference:"ctElement",cls:a+"mask-ct",children:[{reference:"innerElement",cls:a+"mask-inner",children:[{reference:"iconElement",cls:a+"loading-icon"},{reference:"messageElement",cls:a+"message"}]}]}]},updateIndicator:function(){}});Ext.define("SYNO.DSMMobile.ux.ActionSheet",{extend:"Ext.ActionSheet",xtype:"syno_actionsheet",config:{cancelBtn:true,options:null,showAnimation:"slideIn"},applyItems:function(a){var c=this.getCancelBtn(),b;if(!Ext.isArray(a)){a=[a]}b=[{xtype:"syno_panel",cls:"actionsheet-option-panel",items:a}];if(c){b.push({xtype:"syno_button",cls:"actionsheet-cancel-btn",text:_JSLIBSTR("wizard","btncancel"),handler:function(d){this.parent.fireEvent("tapCancel")}})}return this.callParent([b])},onTapCancel:function(){this.close()},close:function(){this.hide();Ext.defer(function(){this.destroy()},1000,this)},initialize:function(){var b=this.getOptions(),a=[],d=this;function c(f,e){return function(){d.close();if(Ext.isFunction(f)){f.apply(e||window,arguments)}}}if(b){Ext.each(b,function(f){var e={xtype:"syno_button",btnStyle:null,text:f.display};if(f.handler){e.handler=c(f.handler,f.scope);e.scope=f.scope}a.push(e)},this);this.setItems(a)}this.on({tapCancel:this.onTapCancel});Ext.defer(function(){Ext.Viewport.add(this);this.show()},50,this);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.Button",{extend:"Ext.Button",xtype:"syno_button",config:{ui:"normal",btnStyle:"blue"},updateBtnStyle:function(b,a){if(a){this.removeCls("syno-ux-button-"+a)}if(b){this.addCls("syno-ux-button-"+b)}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.Field",{extend:"Ext.form.Field",xtype:"syno_field",config:{labelWidth:"50%"}});Ext.define("SYNO.DSMMobile.ux.DatePicker",{extend:"Ext.picker.Date",xtype:"syno_datepicker",config:{modal:false},setValue:function(c,f,a,d){var b,e;if(Ext.isObject(c)){return this.callParent(arguments)}else{if(c instanceof Date){d=f;e=c;return this.callParent([{year:e.getYear()+1900,month:e.getMonth()+1,day:e.getDate()},d])}else{if(Ext.isString(c)){d=f;b=c.split(/[^\d]+/);return this.callParent([{year:parseInt(b[0],10),month:parseInt(b[1],10),day:parseInt(b[2],10)},d])}else{return this.callParent([{year:c,month:f,day:a},d])}}}},updateValue:function(){this.callParent(arguments)},initialize:function(){this.callParent(arguments);this.getToolbar().hide();this.addCls("syno-datepicker")}});Ext.define("SYNO.DSMMobile.ux.TextField",{extend:"Ext.field.Text",xtype:"syno_textfield",config:{allowBlank:true,blankText:null,vtype:null,pattern:null,patternText:null,validator:null,enableValidation:true,inputType:null,inputPattern:null,labelWidth:"50%"},isValid:function(){var b=this.getDisabled(),a=this.getEnableValidation();if(b||!a){return true}return this.validateField()},validateField:function(){var c=this.getAllowBlank(),h=this.getVtype(),g=this.getPattern(),e=this.getValidator(),f=this.getValue(),b,d,a;if(f===""){if(c===true){return true}else{if(c===false){b=this.getBlankText();return b||false}}}if(h&&!Ext.form.VTypes[h](f)){return Ext.form.VTypes[h+"Text"]||false}if(g&&!g.test(f)){d=this.getPatternText();return d||false}if(Ext.isFunction(e)){a=e.call(this,f);if(a!==true){return a}}return true},initialize:function(){var c=this.getInputType(),a=this.getInputPattern(),b;if(c||a){b={xtype:"input"};if(c){b.type=c}if(a){b.pattern=a}this.setComponent(b)}this.callParent(arguments);this.on("blur",function(){this.hubFire("fixIOSChromeKeyboardBug")},this)}});Ext.define("SYNO.DSMMobile.ux.Search",{extend:"Ext.field.Input",xtype:"search",getTemplate:function(){var a=[{reference:"searchIcon",cls:"x-search-icon"},{reference:"input",tag:this.tag},{reference:"mask",classList:[this.config.maskCls]},{reference:"clearIcon",cls:"x-clear-icon"}];return a}});Ext.define("SYNO.DSMMobile.ux.SearchField",{extend:"Ext.field.Search",xtype:"syno_searchfield",config:{placeHolder:_T("connections","search_connections"),labelWidth:"50%",component:{xtype:"search",type:"search",fastFocus:true}},initialize:function(){this.callParent(arguments);this.on("blur",function(){this.hubFire("fixIOSChromeKeyboardBug")},this)}});Ext.define("SYNO.DSMMobile.ux.PasswordFieldImpl",{extend:"SYNO.DSMMobile.ux.TextField",config:{autoCapitalize:false,revealable:false,revealed:false,component:{type:"password"}},platformConfig:[{theme:["Blackberry"],revealable:true}],isPassword:true,initialize:function(){this.callParent(arguments);this.addCls(Ext.baseCSSPrefix+"field-password")},updateRevealable:function(b,a){if(b===a){return}if(this.$revealIcon){this.getComponent().element.removeChild(this.$revealIcon);this.$revealIcon=null}if(b===true){this.$revealIcon=new Ext.Element(Ext.Element.create({cls:"x-reveal-icon"},true));this.$revealIcon.on({tap:"onRevealIconTap",touchstart:"onRevealIconPress",touchend:"onRevealIconRelease",scope:this});this.getComponent().element.appendChild(this.$revealIcon)}},updateRevealed:function(c,b){var a=this.getComponent();if(c){this.element.addCls(Ext.baseCSSPrefix+"revealed");a.setType("text")}else{this.element.removeCls(Ext.baseCSSPrefix+"revealed");a.setType("password")}},updateValue:function(c){var b=this.getComponent(),a=c!==undefined&&c!==null&&c!=="";if(b){b.setValue(c)}this[a&&this.isDirty()?"showClearIcon":"hideClearIcon"]();this.syncEmptyCls();this[a?"showRevealIcon":"hideRevealIcon"]()},doKeyUp:function(b,d){var c=b.getValue(),a=c!==undefined&&c!==null&&c!=="";this[a?"showClearIcon":"hideClearIcon"]();if(d.browserEvent.keyCode===13){b.fireAction("action",[b,d],"doAction")}this[a?"showRevealIcon":"hideRevealIcon"]()},showRevealIcon:function(){var b=this,c=b.getValue(),a=c!==undefined&&c!==null&&c!=="";if(b.getRevealable()&&!b.getDisabled()&&a){b.element.addCls(Ext.baseCSSPrefix+"field-revealable")}return b},hideRevealIcon:function(){if(this.getRevealable()){this.element.removeCls(Ext.baseCSSPrefix+"field-revealable")}},onRevealIconTap:function(a){this.fireAction("revealicontap",[this,a],"doRevealIconTap")},doRevealIconTap:function(a,b){if(this.getRevealed()){this.setRevealed(false)}else{this.setRevealed(true)}},onRevealIconPress:function(){this.$revealIcon.addCls(Ext.baseCSSPrefix+"pressing")},onRevealIconRelease:function(){this.$revealIcon.removeCls(Ext.baseCSSPrefix+"pressing")}});Ext.define("SYNO.DSMMobile.ux.PasswordField",{extend:"SYNO.DSMMobile.ux.PasswordFieldImpl",xtype:"syno_passwordfield",config:{labelWidth:"50%",confirmFor:null},isValid:function(){var a=this.getConfirmFor(),b,c;if(a){b=this.up("syno_formpanel");c=b.getFields(a);if((this.isDirty()||c.isDirty())&&this.getValue()!==c.getValue()){return _T("user","error_repswd")}}return this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.Checkbox",{extend:"Ext.field.Checkbox",xtype:"syno_checkboxfield",config:{labelWidth:"100%",inputCls:"syno-ux-checkbox-icon",labelAlign:"right"}});Ext.define("SYNO.DSMMobile.ux.ToggleField",{extend:"Ext.field.Toggle",xtype:"syno_togglefield",config:{labelWidth:"80%"},setValue:function(c,b){if(c===true){c=1}var a=this.getValue();if(a!=c){this.getComponent().setValue(c);if(!b){this.fireEvent("change",this,c,a)}}return this},initialize:function(){this.on("painted",function(){Ext.defer(function(){var b=this.getComponent();var a=b.down("thumb");a.show()},50,this)},this);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.SelectField",{extend:"Ext.field.Select",xtype:"syno_selectfield",config:{autoInsert:false,unit:null,labelWidth:"50%",mobileLabelWidth:null},getElementConfig:function(){var a=this.callParent(arguments);a.children.push({cls:"syno-mobile-selectfield-icon",reference:"selectFieldIcon"});return a},isDirty:function(){if(this.isDisabled()){return false}return this.getValue()!==this.originalValue},isValueInOptions:function(c){var b=this.getOptions(),a=false;Ext.each(b,function(d){if(c===d.value){a=true;return false}},this);return a},setValue:function(c){var e=this.getAutoInsert(),b,a,d;if(e&&!this.isValueInOptions(c)&&!Ext.isObject(c)){a=this.getOptions();b=this.getUnit();d=b?c+" "+b:c+"";a.push({text:d,value:c});this.setOptions(a);this.updateOptions(a)}this.callParent(arguments)},getTabletPickerListPanelConfig:function(a){var b=this.getStore(),d=b.getCount();var c={left:0,top:0,modal:true,cls:Ext.baseCSSPrefix+"select-overlay syno-mobile-select-dialog",layout:"fit",hideOnMaskTap:true,width:Ext.os.is.Phone?"14em":"18em",items:{xtype:"syno_list",cls:"syno-mobile-select-field-list",store:b,isItemList:false,itemHeight:44,itemTpl:'<span class="x-list-label">{'+this.getDisplayField()+":htmlEncode}</span>",listeners:{select:this.onListSelect,itemtap:this.onListTap,scope:this}}};Ext.apply(c,a);if(!c.height){c.height=c.items.itemHeight*d}return c},getTabletPicker:function(){var a=this.getDefaultTabletPickerConfig();if(!this.listPanel){this.listPanel=Ext.create("Ext.Panel",this.getTabletPickerListPanelConfig(a))}return this.listPanel},initialize:function(){var a=this.getComponent();if(SYNO.DSMMobile.util.Env.isPhone){this.setLabelWidth(this.getMobileLabelWidth()||this.getLabelWidth())}a.relayEvents(this.selectFieldIcon,{tap:"masktap"});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.RadioField",{extend:"Ext.field.Radio",xtype:"syno_radiofield",config:{labelWidth:"100%",labelAlign:"right"}});Ext.define("SYNO.DSMMobile.ux.SelectDialog",{extend:"SYNO.DSMMobile.base.Dialog",xtype:"syno_selectdialog",config:{xtype:"syno_dialog",cls:"syno-mobile-select-dialog",width:"10em",itemHeight:44,height:null,leftBtn:null,rightBtn:null,titleBar:null,showBy:null,options:null,value:null,displayField:"display",valueField:"value",store:{fields:["display","value","handler","scope"]}},initList:function(){var c={},b=this.getOptions(),a=this.getStore();if(b){a.data=b}Ext.apply(c,{xtype:"syno_list",cls:"syno-mobile-select-dialog-list",scrollable:false,store:a,itemTpl:'<span class="x-list-label">{'+this.getDisplayField()+":htmlEncode}</span>",listeners:{select:this.onListSelect,itemtap:this.onListTap,scope:this}});c=Ext.factory(c);this.list=c;this.add(c)},onListSelect:function(d,a){var c,b;if(a){this.setValue(a);c=a.get("handler");if(c&&Ext.isFunction(c)){b=a.get("scope");c.call(b||window,d,a)}}this.fireEvent("itemtap",d,a)},onListTap:function(){this.hide({type:"fade",out:true,scope:this})},initialize:function(){var c=this.getShowBy(),a=this.getHeight(),b=this.getOptions(),d=this.getItemHeight();if(c){if(c instanceof Ext.Element){this.setShowBy([c,"r-l"])}this.setTop(-10000);this.setLeft(-10000)}if(!a){this.setHeight(b.length*(d+1))}this.initList();this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.FieldSet",{extend:"Ext.form.FieldSet",xtype:"syno_fieldset",config:{labelWidth:"50%",bottomPadding:false,monitorFieldHide:true},isDirty:function(){var a=this.getItems(),b=false;a.each(function(c){if(Ext.isFunction(c.isDirty)){if(c.isDirty()){b=true;return false}}},this);return b},isValid:function(){var b=this.getItems(),c=true,a;b.each(function(d){if(Ext.isFunction(d.isValid)){a=d.isValid();if(a!==true){c=a;return false}}},this);return c},checkIsField:function(a){return a instanceof Ext.form.Field||a instanceof SYNO.DSMMobile.ux.Button},refreshFieldHide:function(){var a=this.getItems().items,c="last-visible-field",b;for(b=0;b<a.length;++b){a[b].removeCls(c)}for(b=a.length-1;b>=0;--b){if(!this.checkIsField(a[b])||a[b].getHidden()){continue}else{a[b].addCls(c);break}}},refreshDom:function(){var a=this.getMonitorFieldHide();if(a){this.refreshFieldHide()}},monitorFieldHideCore:function(a){if(!this.checkIsField(a)){return}a.on("hide",function(){this.refreshDom()},this);a.on("show",function(){this.refreshDom()},this)},initCls:function(){var a=this.getBottomPadding();if(a){this.addCls("bottom-padding")}},initialize:function(){var b=this.getItems(),a=this.getMonitorFieldHide();if(a){b.each(function(c){this.monitorFieldHideCore(c)},this);this.on("add",function(c,f,d,e){this.monitorFieldHideCore(f);this.refreshDom()},this);this.on("remove",function(c,f,d,e){this.refreshDom()},this)}this.initCls();this.refreshDom();this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.DisplayFieldComponent",{extend:"Ext.Component",xtype:"syno_displayfield_component",config:{cls:"x-field-input",value:"",htmlEncode:true},updateValue:function(a){this.textDiv.setHtml(this.encodeValue(a))},encodeValue:function(a){var b=this.getHtmlEncode();if(b){return Ext.util.Format.htmlEncode(a)}else{return a}},getTemplate:function(){return[{reference:"textDiv",cls:"text-main",tag:"div"}]},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.DisplayField",{extend:"Ext.field.Field",xtype:"syno_displayfield",config:{baseCls:"x-field syno-mobile-displayfield",labelWidth:"50%",mobileLabelWidth:null,disablePhoneMultiLine:null,htmlEncode:true,value:"",textColor:"",renderer:function(a){return a},component:{xtype:"syno_displayfield_component",cls:"syno-mobile-displayfield-text",value:""}},updateValue:function(d){var b=this.getComponent(),c=this.getRenderer(),a=c.call(this,d);b.setValue(a);b.updateValue(a)},updateHtmlEncode:function(c){var a=this.getComponent(),b=this.getValue();a.setHtmlEncode(c);this.updateValue(b)},updateTextColor:function(c,a){var b=this.getComponent();if(!b||b.isDestroyed){return}if(["green","blue","orange","red"].indexOf(a)!==-1){b.removeCls("text-color-"+a)}if(["green","blue","orange","red"].indexOf(c)!==-1){b.addCls("text-color-"+c)}},initialize:function(){var a=this.getDisablePhoneMultiLine();if(a){this.addCls("disable-phone-multi-line")}if(SYNO.DSMMobile.util.Env.isPhone&&!a){this.setLabelWidth(this.getMobileLabelWidth()||"100%")}this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.ButtonFieldComponent",{extend:"SYNO.DSMMobile.ux.DisplayFieldComponent",xtype:"syno_buttonfield_component",requires:["SYNO.DSMMobile.ux.DisplayField"],config:{},getTemplate:function(){return[{reference:"textDiv",cls:"syno-mobile-buttonfield-text",tag:"div"},{reference:"btnDiv",cls:"syno-mobile-buttonfield-icon",tag:"div"}]},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.ux.ButtonField",{extend:"SYNO.DSMMobile.ux.DisplayField",xtype:"syno_buttonfield",config:{btnStyle:null,baseCls:"x-field syno-mobile-buttonfield",handler:null,scope:null,component:{xtype:"syno_buttonfield_component",cls:"syno-mobile-buttonfield-container",value:""}},onTap:function(){var c=this.getDisabled(),b=this.getHandler(),a=this.getScope();if(c){return}if(Ext.isString(b)){b=this[b]}if(Ext.isFunction(b)){b.call(a||this,this)}},initialize:function(){var b=this.getBtnStyle(),a=this.getComponent();if(b){a.btnDiv.addCls(b+"-icon")}this.element.on({tap:this.onTap,scope:this});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.Circle",{extend:"Ext.Component",xtype:"syno_circle",config:{circleCls:"syno-ux-circle-canvas",circleLabelCls:"syno-ux-circle-canvas-label",radius:32,lineWidth:10,fallbackColor:"#1792F2",fontColor:"#0086E6",rotateAngle:null,fillColor:"#000000",canvasConfig:{height:64,width:64},htmlFormat:"<span>{0}</span>{1}",bgConfig:null},onRender:function(d,b){var g=this,c=this.getBgConfig(),f=this.getCanvasConfig(),e=f.width,a=f.height;function h(i){return Ext.isNumber(i)?i:64}if(c){g.bg=g.element.createChild({"class":c.cls,tag:"div"})}g.canvas=g.element.createChild({"class":g.circleCls,tag:"canvas",style:String.format("width: {0}px; height: {1}px;",h(e),h(a))});g.label=g.element.createChild({tag:"div","class":g.getCircleLabelCls()})},getRatio:function(a){if(Ext.isNumber(this.ratio)){return this.ratio}this.ratio=SYNO.SDS.Utils.HiDPI.getRatio(a);return this.ratio},clearCanvas:function(c){var g=this,e=g.getRatio(c),b=g.getLineWidth(),d=b*e,a=g.getRadius(),f=(a-b/2)*e;c.clearRect(-d,-d,f*2+d*2,f*2+d*2);c.setTransform(1,0,0,1,0,0)},updateLabel:function(){var c=this,a=c.getHtmlFormat(),b=Array.prototype.slice.call(arguments);b.unshift(a);c.label.setStyle({color:c.getFontColor()});c.label.setHtml(String.format.apply(this,b))},getCanvas:function(){var a=this;if(Ext.isIE9m&&!Ext.isIE9&&window.G_vmlCanvasManager){try{window.G_vmlCanvasManager.initElement(a.canvas.dom)}catch(b){window.G_vmlCanvasManager.initElement(a.canvas.dom)}}return a.canvas.dom},setCanvasSize:function(c,b,e){var f=this.getCanvasConfig(),d=f.width,a=f.height;c.width=d*e;c.height=a*e;b.scale(e,e)},getCtx:function(){return this.ctx},innerDraw:function(){var h=this,k=h.getCanvas(),j=k.getContext("2d"),i=this.getCanvasConfig(),d=this.getRotateAngle(),c=this.getFillColor(),g=h.getRatio(j),e=this.getLineWidth(),b=e*g,f=this.getRadius(),a=(f-e/2)*g;h.setCanvasSize(k,j,g);h.clearCanvas(j);if(d){j.translate((i.width*g)/2,(i.width*g)/2);j.rotate(d*Math.PI/180);j.translate(-((i.width*g)/2),-((i.width*g)/2))}j.translate(b/2,b/2);j.lineWidth=b;j.save();h.ctx=j;j.beginPath();j.rect(-b,-b,a*2+b*2,a*2+b*2);j.clip();if(c){j.strokeStyle=c;j.beginPath();j.arc(a*1,a*1,a*1,Math.PI*0,Math.PI*2,true);j.stroke();j.restore()}},initialize:function(){this.callParent(arguments);this.onRender()}});Ext.define("SYNO.DSMMobile.base.CircleGradient",{extend:"SYNO.DSMMobile.base.Circle",xtype:"syno_circlegradient",config:{value:1,circleCls:"syno-ux-circle-canvas-gradient",circleLabelCls:"syno-ux-circle-canvas-gradient-label",gradientWidth:null,stopColor:"#2E7AE5",middleColor:"#1792F2",startColor:"#00AAFF",fillColor:"#CDD7E1"},afterRender:function(){var a=this,b=this.getValue();if(b){a.draw(b)}},updateLabel:function(c,b){var a=this;c=Ext.isNumber(c)?Math.min(c,1):1;a.callParent([Math.ceil(c*100),(b||"%")]);a.label[(c===1)?"addCls":"removeCls"]("syno-ux-circle-canvas-gradient-label-maxValue")},getStartLinearGradient:function(j){var h=this,f=h.getRatio(j),d=h.getRadius(),b=h.getLineWidth(),a=(d-b/2)*f,i=this.getFallbackColor(),e=this.getStartColor(),g=this.getMiddleColor(),c=null;if(Ext.isIE9m&&!Ext.isIE9){c=i}else{c=j.createLinearGradient(0,0,0,a*2);c.addColorStop(0,e);c.addColorStop(1,g)}return c},getStopLinearGradient:function(j){var h=this,f=h.getRatio(j),e=h.getRadius(),b=h.getLineWidth(),a=(e-b/2)*f,i=this.getFallbackColor(),g=this.getMiddleColor(),d=this.getStopColor(),c=null;if(Ext.isIE9m&&!Ext.isIE9){c=i}else{c=j.createLinearGradient(0,a*2,0,0);c.addColorStop(0,g);c.addColorStop(1,d)}return c},draw0To50Arc:function(k,g){var i=this,h=i.getRatio(k),e=i.getRadius(),c=this.getLineWidth(),a=(e-c/2)*h,f=i.getStartLinearGradient(k),b=0,j=1.5,d=2.5;b=1.5+g*2;k.strokeStyle=f;k.beginPath();if(g===1){k.arc(a*1,a*1,a*1,Math.PI*d,Math.PI*j,true)}else{k.arc(a*1,a*1,a*1,Math.PI*(Math.min(b,d)),Math.PI*j,true)}k.stroke();k.restore()},draw50To100Arc:function(k,g){var i=this,h=i.getRatio(k),e=i.getRadius(),c=this.getLineWidth(),a=(e-c/2)*h,f=i.getStopLinearGradient(k),b=0,j=2.5,d=3.5;b=1.5+g*2;k.strokeStyle=f;k.beginPath();if(g===1){k.arc(a*1,a*1,a*1,Math.PI*d,Math.PI*j,true)}else{k.arc(a*1,a*1,a*1,Math.PI*(Math.max(b,j)),Math.PI*j,true)}k.stroke();k.restore()},draw:function(c){var b=this,a;b.setValue(c);c=Ext.isNumber(c)?Math.min(c,1):1;b.updateLabel(c);b.innerDraw();a=b.getCtx("2d");b.draw0To50Arc(a,c);if(c>0.5){b.draw50To100Arc(a,c)}},initialize:function(){var a=this.getGradientWidth();this.setLineWidth(a);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.IncrementalCircle",{extend:"SYNO.DSMMobile.base.Circle",xtype:"syno_incrementalcircle",config:{data:{},labelTitle:"99",labelUnit:"TB"},afterRender:function(){var d=this,e=this.getData()||{},b=this.getLabelTitle(),a=this.getLabelUnit(),c=0,f=0;d.innerDraw();if(b){d.updateLabel(b,a)}Ext.iterate(e,function(h,g){if(!Ext.isObject(g)){return}c+=(Ext.isNumber(g.value)?g.value:0)},this);if(c===0){return}Ext.iterate(e,function(h,g){if(!Ext.isObject(g)){return}d.drawWithRange(f/c,(f+g.value)/c,g.color);f+=(Ext.isNumber(g.value)?g.value:0)},this)},drawWithRange:function(b,i,c){var g=this,l=g.getCtx(),f=g.getRatio(l),e=g.getRadius(),d=this.getLineWidth(),k=this.getFallbackColor(),a=(e-d/2)*f,j=1.5;function h(n,p,m,o){if(!Ext.isNumber(n)){return o}else{if(n>m){return m}else{if(n<p){return p}else{return n}}}}i=h(i,0,1,1);b=h(b,0,1,0);l.strokeStyle=c||k;l.beginPath();if((b===0)&&(i===1)){l.arc(a*1,a*1,a*1,Math.PI*2.5,Math.PI*j,true);l.arc(a*1,a*1,a*1,Math.PI*3.5,Math.PI*2.5,true)}else{if(i>b){l.arc(a*1,a*1,a*1,Math.PI*(1.5+i*2),Math.PI*(1.5+b*2),true)}else{l.arc(a*1,a*1,a*1,Math.PI*(1.5+b*2),Math.PI*(1.5+i*2),true)}}l.stroke();l.restore();return g},initialize:function(){this.callParent(arguments);this.on({painted:this.afterRender})}});Ext.define("SYNO.DSMMobile.base.ColorCircleGradient",{extend:"SYNO.DSMMobile.base.CircleGradient",xtype:"syno_colorcirclegradient",applyColorByPercent:function(a){a=Ext.isNumber(a)?Math.min(a,1):1;if(a>0.9){Ext.apply(this,{_stopColor:"#E52E2E",_middleColor:"#F25056",_startColor:"#FF737E",_fallbackColor:"#F25056",_fontColor:"#FA4B4B"})}else{if(a>0.8){Ext.apply(this,{_stopColor:"#F27900",_middleColor:"#F99100",_startColor:"#FFAA00",_fallbackColor:"#F99100",_fontColor:"#FF7F00"})}else{Ext.apply(this,{_fallbackColor:"#1792F2",_stopColor:"#2E7AE5",_middleColor:"#1792F2",_startColor:"#00AAFF",_fontColor:"#0086E6"})}}},draw:function(b){var a=this;a.applyColorByPercent(b);a.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.ProgressCircle",{extend:"SYNO.DSMMobile.base.CircleGradient",xtype:"syno_progresscircle",config:{radius:160,gradientWidth:24,height:320,width:320,fallbackColor:"#FFFFFF",stopColor:"rgba(255, 255, 255, 0.75)",middleColor:"rgba(255, 255, 255, 0.75)",startColor:"rgba(255, 255, 255, 0.75)",fillColor:"rgba(255, 255, 255, 0.15)",fontColor:"#FFFFFF",canvasConfig:{height:320,width:320},htmlFormat:'<span class="progress-chart-label-big">{0}</span>{1}'},updateLabel:function(d){var c=this,a=this.getHtmlFormat(),b=this.getFontColor();d=Ext.isNumber(d)?Math.min(d,1):1;c.label.addCls("progress-chart-label");c.label.setStyle({color:b});c.label.setHtml(String.format(a,Math.ceil(d*100),"%"));c.label[(d===1)?"addCls":"removeCls"]("syno-ux-circle-canvas-gradient-label-maxValue")}});Ext.define("SYNO.DSMMobile.base.CountDownCircle",{extend:"SYNO.DSMMobile.base.CircleGradient",xtype:"syno_countdowncircle",config:{radius:160,gradientWidth:24,height:320,width:320,fallbackColor:"#FFFFFF",startColor:"rgba(255, 255, 255, 0)",middleColor:"rgba(255, 255, 255, 0.38)",stopColor:"rgba(255, 255, 255, 0.75)",fillColor:"rgba(255, 255, 255, 0)",fontColor:"#FFFFFF",rotateAngle:0,startTime:null,durationTime:600*1000,canvasConfig:{height:320,width:320},htmlFormat:'<span class="progress-chart-label-countdown">{0}:{1}</span>'},updateLabel:function(){var d=this,a=new Date().getTime(),c=0,e=0,f=this.getDurationTime(),b=this.getStartTime();e=Math.max(Math.floor((f+b-a)/1000),0);c=Math.floor(e/60);if(c<10){c="0"+c}e=e%60;if(e<10){e="0"+e}d.label.addCls("progress-chart-label");d.label.setStyle({color:d.fontColor});d.setHtml(String.format(this.getHtmlFormat(),c,e))},draw:function(){var b=this,a=this.getRotateAngle();b.callParent([0.9]);a+=1;a%=360;b.setRotateAngle(a);Ext.defer(function(){b.draw()},30)},initialize:function(){this.setStartTime(new Date().getTime());this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.base.FormPanel",{extend:"Ext.form.Panel",xtype:"syno_formpanel",config:{trackResetOnLoad:true},bindFields:function(a){SYNO.DSMMobile.utils.bindFieldValue(this,a)},isDirty:function(){var a=this.getItems(),b=false;a.each(function(c){if(Ext.isFunction(c.isDirty)){if(c.isDirty()){b=true;return false}}},this);return b},isValid:function(){var b=this.getItems(),c=true,a;b.each(function(d){if(Ext.isFunction(d.isValid)){a=d.isValid();if(a!==true){c=a;return false}}},this);return c}});Ext.define("SYNO.DSMMobile.base.TabPanel",{extend:"Ext.TabPanel",config:{tabBarPosition:"bottom",items:[]}});Ext.define("SYNO.DSMMobile.util.AsyncLock",{extend:"Ext.util.Observable",requires:[],config:{tasks:[],callback:null,scope:null,args:null,leftTasks:null,isCallbackFired:false},constructor:function(){this.callParent(arguments);this.init()},done:function(a){var b=this.getLeftTasks();b.remove(a);this.checkAllDone()},isAllDone:function(){var a=this.getLeftTasks();return a.length===0},checkAllDone:function(){if(this.isAllDone()){this.fireCallback()}},fireCallback:function(){var d=this.getCallback(),c=this.getScope(),a=this.getArgs(),b=this.getIsCallbackFired();if(b){return}if(Ext.isFunction(d)){d.apply(c||window,a||[])}else{SYNO.Debug.warn("callback should be a function")}this.fireEvent("allDone")},buildLeftTasks:function(c){var b=[];function a(e,d){var g=Ext.id(),f;f=Ext.bind(function(h){this.done(h)},this,[g]);e.on(d,f,this,{single:true});b.push(g)}Ext.each(c,function(d){if(Ext.isString(d)){b.push(d)}else{if(d instanceof SYNO.DSMMobile.util.AsyncLock){a.call(this,d,"allDone")}else{a.call(this,d[0],d[1])}}},this);return b},init:function(){var b=this.getTasks(),a;a=this.buildLeftTasks(b);this.setLeftTasks(a)}});Ext.define("SYNO.DSMMobile.util.Grouper",{extend:"Ext.util.Grouper",xtype:"syno_grouper",config:{groupSorterFn:"DESC",sorterFn:function(c,b){var e=this.getSortProperty(),d,g,a,f;g=this.getGroupFn();d=this.getGroupSorterFn();a=g.call(this,c);f=g.call(this,b);if(e){if(a!==f){return this.defaultSortFn.call(this,c,b)}else{return 0}}return d.call(this,a,f)}},defaultGroupSorterASCFn:function(a,b){return(a>b)?1:((a<b)?-1:0)},defaultGroupSorterDESCFn:function(a,b){return(a>b)?-1:((a<b)?1:0)},applyGroupSorterFn:function(a){if(Ext.isString(a)){if(a.toLowerCase()==="asc"){a=this.defaultGroupSorterASCFn}else{if(a.toLowerCase()==="desc"){a=this.defaultGroupSorterDESCFn}}}return a}});Ext.define("SYNO.DSMMobile.util.Share",{singleton:true,permissionToStr:function(a){if(a.is_deny){return"na"}else{if(a.is_custom){return"cu"}else{if(a.is_writable){return"rw"}else{if(a.is_readonly){return"ro"}else{return"-"}}}}},strToPermission:function(d){var a={is_deny:false,is_custom:false,is_writable:false,is_readonly:false},b={na:"is_deny",cu:"is_custom",rw:"is_writable",ro:"is_readonly"},c=b[d];if(c){a[c]=true}return a},resolvePermission:function(f,b,h,e){var i=["-","ro","rw","cu","na"],a=i.indexOf(f),c=i.indexOf(b),d=Math.max(a,c),g=i[d];if(g==="-"){return"na"}else{if(g==="ro"&&h&&e){return"rw"}else{return g}}},getDisplayString:function(a){if(Ext.isObject(a)){a=this.permissionToStr(a)}switch(a){case"na":return'<div class="red">'+_T("share","share_permission_none")+"</div>";case"cu":return _T("share","share_permission_custom");case"rw":return'<div class="orange">'+_T("share","share_permission_writable")+"</div>";case"ro":return'<div class="blue">'+_T("share","share_permission_readonly")+"</div>";default:return a}},getString:function(a){switch(a){case"na":return _T("share","share_permission_none");case"cu":return _T("share","share_permission_custom");case"rw":return _T("share","share_permission_writable");case"ro":return _T("share","share_permission_readonly");case"-":return"-";default:return a}},getColor:function(a){switch(a){case"na":return"red";case"cu":return"gray";case"rw":return"orange";case"ro":return"blue";case"-":return"";default:return""}},processPermissionStore:function(b){var a=b.getModifiedRecords(),c={};Ext.each(a,function(d){var e=d.data;c[e.name]=this.permissionToStr(e)},this);return c},processMemberStore:function(b){var a=b.getModifiedRecords(),c={};Ext.each(a,function(d){var e=d.data;c[e.name]=this.data.is_member});return c},GetPackageName:function(a){if("media"===a){return _T("welcome","welcome_package_mediaserver")}else{if("audio"===a){return _T("welcome","welcome_package_audio")}else{if("itune"===a){return _T("firewall","firewall_service_desc_itunes")}else{if("photo"===a){return _T("welcome","welcome_package_photo")}else{if("surveillance"===a){return _T("tree","leaf_surveillance")}else{if("web"===a){return _T("tree","leaf_web")}else{if("netbackup"===a){return _T("netbackup","netbkp_subject")}else{return a}}}}}}}},GetServiceI18N:function(a){var b=[];if(-1!=a.lastIndexOf(":")){b=a.split(":");return _T(b[0],b[1])}else{return a}},isSubViewStoreDirty:function(c){var b=false,a=null;c.each(function(d,e){a=e.store.getModifiedRecords();if(a.length>0){b=true}});return b}});Ext.define("SYNO.DSMMobile.util.Application",{singleton:true,getPrivilegeDisplayString:function(a){switch(a){case"allow":return _T("app_privilege","allow_privilege");case"deny":return _T("app_privilege","deny_privilege");case"custom":return _T("share","share_permission_custom");default:return a}},processApplicationStore:function(b){var a=b.getModifiedRecords(),c={};Ext.each(a,function(d){var e=d.data;c[e.app_id]=e.privilege},this);return c},getAppRuleWebAPI:function(a,h){var e=[],d=[],g=[],c,j=function(i){return(i!=="deny"&&i!=="custom"&&i!=="allow")};for(c in h){if(h.hasOwnProperty(c)){var f=h[c],b={entity_type:a.entity_type,entity_name:a.entity_name,app_id:c};if(j(f)){d.push(b)}else{if(f==="allow"){b.allow_ip=["0.0.0.0"]}else{b.deny_ip=["0.0.0.0"]}g.push(b)}}}if(d.length>0){e.push({apiType:"DeleteAppPrivApp",params:{rules:d}})}if(g.length>0){e.push({apiType:"SetAppPrivApp",params:{rules:g}})}return e},buildProxyResp:function(f,d,g){var c=[];function e(h){return h.allow_ip.length===1&&h.allow_ip[0]==="0.0.0.0"&&h.deny_ip.length===0}function a(h){return h.deny_ip.length===1&&h.deny_ip[0]==="0.0.0.0"&&h.allow_ip.length===0}function b(h){return h.supportIP}d=d.filter(b);d.sort(function(i,h){if(i.name[0]===h.name[0]){return 0}else{if(i.name[0]<h.name[0]){return -1}else{return 1}}});Ext.each(d,function(i){var h={app_id:i.app_id,app_name:i.name,privilege:null,allow:false,deny:false,custom:false};if(f){h.entity_type=f.entity_type;h.entity_name=f.entity_name}Ext.each(g,function(j){if(j.app_id===i.app_id){if(e(j)){h.allow=true;h.privilege="allow"}else{if(a(j)){h.deny=true;h.privilege="deny"}else{h.custom=true;h.privilege="custom"}}}},this);c.push(h)},this);return c}});Ext.define("SYNO.DSMMobile.utilsImpl",{singleton:true,bindFeildValue:function(a,d,g,b,c){var f,i={};if(a.isDestroyed||!d){return}if(!Ext.isDefined(g)){g={};f=a.getFieldsAsArray();Ext.each(f,function(k){var j=k[b]();g[j]=j},this)}function h(j,k){var l;if(Ext.isDefined(k)){l=c.call(a,j);if(l){if(l.$className==="SYNO.DSMMobile.ux.ToggleField"){if(["true",true,1].indexOf(k)!==-1){i[j]=1}else{i[j]=0}}else{if(l.$className==="SYNO.DSMMobile.ux.SelectField"&&l.getStore()&&!l.getStore().loaded){l.getStore().on("load",function(){i[j]=k},l)}else{i[j]=k}}}}}function e(l,k){var m,j;if(Ext.isString(k)){h(l,d[k])}else{if(Ext.isObject(k)){m=d[k.src];j=k.apply;h(l,j(m))}}}Ext.iterate(g,function(j,k){e(j,k)},this);if(a.setValues){a.setValues(i)}else{Ext.iterate(i,function(j,k){var l=c.call(a,j);l.setValue(k)})}}});Ext.define("SYNO.DSMMobile.utils",{singleton:true,getCallback:function(b,a){return function(){if(Ext.isFunction(b)){b.apply(a||window,arguments)}}},bindFieldValue:function(a,b,c){SYNO.DSMMobile.utilsImpl.bindFeildValue(a,b,c,"getName",function(d){return a.getFields(d)})},bindFieldValueById:function(a,b,c){SYNO.DSMMobile.utilsImpl.bindFeildValue(a,b,c,"getItemId",function(d){return a.down("#"+d)})},parseDate:function(b){var a;if(b instanceof Date){return(b.getYear()+1900)+"/"+(b.getMonth()+1)+"/"+(b.getDate())}else{if(Ext.isString(b)){a=b.split(/[^\d]+/);return a.map(function(c){return parseInt(c,10)})}else{if(Ext.isArray(b)){return new Date(b[0],b[1]-1,b[2])}}}},mask:function(b,a){switch(b){case undefined:case"load":b=_T("common","loading");break;case"apply":b=_T("common","applying");break}if(!a){a=Ext.Viewport}a.mask({xtype:"syno-mask",zIndex:150,message:b})},unmask:function(a){if(!a){a=Ext.Viewport}a.unmask()},formatUpTime:function(h){var g="";var f=h.indexOf(":",0);var a=h.substring(0,f);var d=h.indexOf(":",f+1);var c=parseInt(h.substring(f+1,d),10);var e=parseInt(h.substring(d+1,h.length),10);a=parseInt(a,10);var b=(a-a%24)/24;a=a%24;g=b?String.format("{0} {1} ",b,_T("status","status_day")):"";g+=(a||g!=="")?String.format("{0} {1} ",a,_T("status","status_hour")):"";g+=(c||g!=="")?String.format("{0} {1} ",c,_T("status","status_minute")):"";g+=(e||g!=="")?String.format("{0} {1}",e,_T("status","status_second")):"";return g},getHostName:function(e){var a=window.location,f=a.host,c=a.hostname,b=a.port,g=/^https/.test(a.protocol);function d(){return b==="5000"||(g&&b==="5001")}if(!e&&d()){return c}else{return f}},isEventIn:function(a,c){var b=a.target,d;if(!c){return false}if(c.isComponent){d=c.element.dom}else{if(c.isElement){d=c.dom}}return d.contains(b)},diskSortCompare:function(n,m){var l,k;var e,c;var g,d;var j,i;var h,f;if(!n||!m){return n?-1:(m?1:0)}if(Ext.isFunction(n.get)&&Ext.isFunction(m.get)){l=n.get("num_id");k=m.get("num_id");e=n.get("container").type;c=m.get("container").type;g=n.get("container").order;d=m.get("container").order;j=("cache"===n.get("portType"))?2:1;i=("cache"===m.get("portType"))?2:1;h=n.get("pciSlot");f=m.get("pciSlot")}else{l=n.num_id;k=m.num_id;e=n.container.type;c=m.container.type;g=n.container.order;d=m.container.order;j=("cache"===n.portType)?2:1;i=("cache"===m.portType)?2:1;h=n.pciSlot;f=m.pciSlot}if(e!==c){if("ebox"===e){return 1}else{if("ebox"===c){return -1}else{if("internal"===e){return 1}else{if("internal"===c){return -1}}}}}if(g>d){return 1}if(g<d){return -1}if(j>i){return 1}if(j<i){return -1}if(h>f){return 1}if(h<f){return -1}if(l>k){return 1}if(l<k){return -1}return 0}});Ext.define("SYNO.Mobile.ModuleUtils",{singleton:true,getUserExipiedString:function(c){if("domain"==this.authType){return"-"}if("normal"==c){return'<div class="blue">'+_T("user","user_acnt_normal")+"</div>"}if("now"==c){return'<div class="red">'+_T("user","user_acnt_disabled")+"</div>"}var b=new Date();b.setHours(0,0,0,0);var a=new Date(c);if(a<b){return'<div class="orange">'+_T("user","user_acnt_expired")+"</div>"}if("expired"==c){}if(c){return'<div class="green">'+_T("user","user_acnt_expired_date")+c+"</div>"}return _T("user","user_acnt_unknow_status")}});Ext.define("SYNO.DSMMobile.lib.AjaxRequest",{extend:"Ext.data.Connection",singleton:true,config:{},send:function(a){var d,f={};d=Ext.apply({autoJsonDecode:true,dependCmp:null,url:null,params:null,method:"POST",disableCaching:false,timeout:60000,callback:function(){},succ:function(){},fail:function(){},scope:null},a);function c(h,i){if(d.dependCmp&&d.dependCmp.isDestroyed){return}if(d.callback){d.callback.call(d.scope||window,h,i)}}function b(h,i){if(d.dependCmp&&d.dependCmp.isDestroyed){return}d.succ.call(d.scope||window,h,i)}function e(h,i){if(d.dependCmp&&d.dependCmp.isDestroyed){return}d.fail.call(d.scope||window,h,i)}function g(j,h,i){var l=i;if(h&&d.autoJsonDecode){try{l=Ext.util.JSON.decode(i.responseText)}catch(k){l={success:false};h=false}}c(h,l);if(h){b(h,l)}else{e(h,l)}}f={url:d.url,callback:g,method:d.method,timeout:d.timeout,disableCaching:d.disableCaching};if(d.params){f.params=d.params}this.request(f)}});Ext.define("SYNO.DSMMobile.lib.NativeAppPortal",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{appList:{synoaudio:{pkg:"com.synology.DSaudio",iosDownloadUrl:"http://itunes.apple.com/app/ds-audio/id321495303?mt=8"},synocam:{pkg:"com.synology.DScam",iosDownloadUrl:"http://itunes.apple.com/app/ds-cam/id349087111?mt=8"},synodrive:{pkg:"com.synology.dsdrive",iosDownloadUrl:"http://itunes.apple.com/app/synology-drive/id1267275421?mt=8"},synofile:{pkg:"com.synology.DSfile",iosDownloadUrl:"http://itunes.apple.com/app/ds-file/id416751772?mt=8"},synonote:{pkg:"com.synology.dsnote",iosDownloadUrl:"http://itunes.apple.com/app/ds-note/id918177542?mt=8"},synophotos:{pkg:"com.synology.projectkailash",iosDownloadUrl:"http://itunes.apple.com/app/synology-photos/id1484764501?mt=8"},synovideo:{pkg:"com.synology.dsvideo",iosDownloadUrl:"http://itunes.apple.com/app/ds-video/id540949418?mt=8"},synochat:{pkg:"com.synology.dschat",iosDownloadUrl:"http://itunes.apple.com/app/synology-chat/id1121875041?mt=8"},synomail:{pkg:"com.synology.dsmail",iosDownloadUrl:"http://itunes.apple.com/app/synology-mailplus/id967913737?mt=8"}}},getAppInfo:function(c){var b=this.getAppList()[c];var a=String.format("intent://#Intent;scheme={0};package={1};end",c,b.pkg);return{iosUrl:c+"://",iosDownloadUrl:b.iosDownloadUrl,androidUrl:a,androidDownloadUrl:a}},monitorHub:function(){this.hubOn("openApp",this.onOpenApp)},constructor:function(){this.callParent(arguments);this.monitorHub()},onOpenApp:function(d){var c=this.getAppInfo(d),e=Ext.os.is.iOS?"ios":"android",b,a,f;a=c[e+"Url"];f=c[e+"DownloadUrl"];if(Ext.os.is.Android){window.location=a;return}if(Ext.os.is.iOS&&Ext.os.version.gtEq("9")){window.location=f;return}b=Ext.get("iframe_app");if(!b){b=Ext.getBody().createChild({id:"iframe_app",tag:"iframe",cls:"x-hidden-display"})}this.openAppUrl_v2(b,a,f)},openAppUrlCore_v1:function(d,b,e){var c=+new Date(),a;Ext.defer(function(){a=+new Date();if(2000>(a-c)){Ext.defer(function(){if(e){d.dom.src=e}},500,this)}},1500,this)},openAppUrl_v1:function(b,a,c){b.dom.src=a;this.openAppUrlCore_v1(b,a,c)},openAppUrl_v2:function(b,a,c){window.location=a;b.dom.src=c},openAppUrl_v3:function(b,a,c){b.dom.src=a;Ext.defer(function(){b.dom.src=c},100,this)}});Ext.define("SYNO.DSMMobile.lib.AsyncTask",{extend:"Ext.util.Observable",requires:[],mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{ui:{start:function(){},stop:function(){},abort:function(){},succ:function(){},fail:function(){},progress:function(){},ask:function(b,a){Ext.Msg.confirm("",b,function(c){a(c)})},scope:null},fn:function(c,a,d,b){},depend:null,info:null,scope:null},run:function(){var j=this.getUi(),k=this.getFn(),c=this.getInfo(),l=this.getScope(),a=this.getDepend();this.isDoing=true;function d(){return a&&a.isDestroyed}function g(n,m){if(d()){return}j.ask.apply(j.scope||window,arguments)}function b(m){if(d()){return}j.progress.apply(j.scope||window,arguments)}function i(){if(d()){return}this.isDoing=false;j.stop.apply(j.scope||window,arguments)}function h(){if(d()){return}this.isSucc=true;i();j.succ.apply(j.scope||window,arguments)}function e(m,n){if(d()){return}i();j.fail.apply(j.scope||window,arguments)}function f(){if(d()){return}i();j.abort.apply(j.scope||window,arguments)}j.start.call(j.scope||window);k.call(l||window,c,h,e,b,g,f)},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.isDoing=false;this.isSucc=false}});Ext.define("SYNO.Mobile.lib.OpenDetailImpl.Dialog",{extend:"SYNO.DSMMobile.base.Dialog",mixins:[],requires:[],config:{layout:"fit",width:240,height:320,closeOnSelect:true,panel:null},onSelectValue:function(b){var a=this.getCloseOnSelect();if(a){this.fireEvent("closePopover")}},onClosePopover:function(){this.hide({type:"fade",out:true,scope:this})},initialize:function(){var a=this.getPanel();this.add(a);this.relayEvents(a,{selectValue:"selectValue"});this.on({selectValue:this.onSelectValue,closePopover:this.onClosePopover,scope:this});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.lib.OpenDetail",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:[],constructor:function(){this.callParent(arguments);this.init()},onOpenDetail:function(b,a){var c=this;function d(e,g){var f=Ext.clone(e);Ext.apply(f,g);c.detail=Ext.factory(f);if(Ext.isObject(a)){c.detail.on(a)}}if(SYNO.DSMMobile.util.Env.isTablet){d(b.tablet,b.common)}else{this.hubFire("hideNavBar");d(b.phone,b.common);this.hubFire("pushContent",this.detail)}},onPushDetail:function(c,b){var a=Ext.factory(c);if(Ext.isObject(b)){a.on(b)}this.detail.push(a)},onPopDetail:function(){this.detail.pop()},onMaskDetail:function(a){if(!this.detail||this.detail.isDestroyed){return}if(!Ext.isString(a)){a="load"}SYNO.DSMMobile.utils.mask(a,this.detail)},onUnmaskDetail:function(){if(!this.detail||this.detail.isDestroyed){return}SYNO.DSMMobile.utils.unmask(this.detail)},onPopoverDetail:function(e,d,b){var c,a;if(SYNO.DSMMobile.util.Env.isPhone){a=Ext.factory(e);a.on(b);if(d.closeOnSelect!==false){a.on("selectValue",function(){this.detail.pop()},this)}this.onPushDetail(a)}else{a=Ext.factory(e);a.on(b);c={xclass:"SYNO.Mobile.lib.OpenDetailImpl.Dialog",cls:(e.cls||"")+" popover-dialog",panel:a};if(e.height){c.height=e.height+44}if(e.width){c.width=e.width}Ext.apply(c,d);Ext.factory(c)}},init:function(){this.hubOn({openDetail:this.onOpenDetail,pushDetail:this.onPushDetail,popDetail:this.onPopDetail,maskDetail:this.onMaskDetail,unmaskDetail:this.onUnmaskDetail,popoverDetail:this.onPopoverDetail})}});Ext.define("SYNO.DSMMobile.lib.OpenFullScreen",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:[],setupFullScreen:function(){if(SYNO.DSMMobile.util.Env.isPhone){}},teardownFullScreen:function(){if(SYNO.DSMMobile.util.Env.isPhone){}},addPanel:function(a){this.panel=Ext.factory(a);Ext.Viewport.add(this.panel)},removePanel:function(){if(!this.panel){return}this.panel.removeAll();this.panel.destroy();this.panel=null},onOpenFullScreen:function(a){this.setupFullScreen();this.removePanel();this.addPanel(a);Ext.Viewport.setActiveItem(1)},onCloseFullScreen:function(){this.teardownFullScreen();this.removePanel();Ext.Viewport.setActiveItem(0)},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.hubOn({openFullScreen:this.onOpenFullScreen,closeFullScreen:this.onCloseFullScreen})}});Ext.define("SYNO.DSMMobile.lib.OpenMenu",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:[],onOpenMenu:function(a){if(SYNO.DSMMobile.util.Env.isTablet){Ext.create("SYNO.DSMMobile.ux.SelectDialog",a)}else{this.hubFire("hideSlidingMenu");Ext.create("SYNO.DSMMobile.ux.ActionSheet",a)}},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.hubOn("openMenu",this.onOpenMenu)}});Ext.define("SYNO.DSMMobile.lib.AppNotify",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:[],constructor:function(){this.callParent(arguments);this.init()},load:function(){var a=SYNO.DSMMobile.webapi,b;b=[{apiType:"CheckUpgradeServer"},{apiType:"CheckPackageServer"},{apiType:"GetAppNotify"}];a.sendCompoundWebAPI(b,false,function(c,e,d){if(!c){return}if(e.has_fail){return}this.processData(e.GetAppNotify.resp)},this)},query:function(b){var a=this.rawData;if(Ext.isString(b)){b=b.split(">").map(function(c){return c.trim()})}Ext.each(b,function(d){var c=this.ref[d]?this.ref[d]:d;if(a[c]){a=a[c]}else{a=null;return false}},this);return a},get:function(a){if(this.data[a]){return this.data[a]}else{return this.query(a)}},processData:function(a){this.rawData=a;this.data={};this.data.update=this.query("adminCenter > fn > update > unread")||0;this.data.packageCenter=this.query("packageCenter > fn > generalFn > unread")||0;this.hubFire("updateAppNotify",this.data)},init:function(){this.rawData=null;this.data=null;this.ref={adminCenter:"SYNO.SDS.AdminCenter.Application",update:"SYNO.SDS.AdminCenter.Update_Reset.Main",packageCenter:"SYNO.SDS.PkgManApp.Instance"};this.hubOn({loadAppNotify:this.load});this.load()}});Ext.define("SYNO.DSMMobile.lib.WebAPIConfigBase",{extend:"Ext.util.Observable",default_build:function(a){return function(c){var b=Ext.clone(a);Ext.apply(b,c);Ext.iterate(b,function(d,e){if(!Ext.isDefined(e)){console.warn("[WARN] lacking params",d,"in webapi")}});return b}},toggleFieldToBool:function(a){switch(a){case 1:return true;case 0:return false;default:return undefined}},fillData:function(){},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.fillData()}});Ext.define("SYNO.DSMMobile.mixin.TaskRunner",{getTaskRunner:function(){if(!this.taskRunner){this.taskRunner=new SYNO.SDS.TaskRunner();this.addManagedComponent(this.taskRunner)}return this.taskRunner},addTask:function(a){return this.getTaskRunner().createTask(a)},addAjaxTask:function(a){return this.getTaskRunner().createAjaxTask(a)},addWebAPITask:function(a){return this.getTaskRunner().createWebAPITask(a)},getTask:function(a){if(!this.taskRunner){return null}return this.taskRunner.getTask(a)},removeTask:function(b){var a=this.getTask(b);if(a){a.remove()}return a}});Ext.define("SYNO.DSMMobile.lib.WebAPIConfig",{extend:"SYNO.DSMMobile.lib.WebAPIConfigBase",fillData:function(){var a=this.default_build,b=this.toggleFieldToBool;this.data={SetPPPoE:{api:"SYNO.Core.Network.PPPoE",method:"set",version:1,encryption:["password"],build:function(c){var d={ifname:"pppoe",real_ifname:"eth0",is_default_gateway:true};Ext.copyTo(d,c,"wan_type, username, password, pppoe_type");if(c.pppoe_type!=="auto"){Ext.copyTo(d,c,"ip_address, subnet_mask, gateway_ip, dns_ip")}return{configs:[d]}}},GetDataCollect:{api:"SYNO.Core.DataCollect",method:"get",version:1},SetDataCollect:{api:"SYNO.Core.DataCollect",method:"set",version:1,build:function(c){return{enable:c.enable}}},GetSystemLoading:{api:"SYNO.Core.System.Utilization",method:"get",version:1,build:a({type:"current"})},GetPasswordPolicy:{api:"SYNO.Core.User.PasswordPolicy",method:"get",version:1},ListUser:{api:"SYNO.Core.User",method:"list",version:1,build:a({additional:["email","description","expired"]})},GetUser:{api:"SYNO.Core.User",method:"get",version:1,build:a({name:undefined,additional:["description","email","expired","cannot_chg_passwd"]})},CreateUser:{api:"SYNO.Core.User",method:"create",version:1,build:a({name:undefined,description:undefined,email:undefined,cannot_chg_passwd:false,expired:"normal",password:undefined,notify_by_email:false,send_password:false})},SetUser:{api:"SYNO.Core.User",method:"set",version:1,encryption:["password"],build:a({name:undefined,description:undefined,email:undefined})},DeleteUser:{api:"SYNO.Core.User",version:1,method:"delete",build:a({name:undefined})},GetUserHome:{api:"SYNO.Core.User.Home",method:"get",version:1},ListSharePermission:{api:"SYNO.Core.Share.Permission",method:"list",version:1,build:a({name:undefined,action:"enum",user_group_type:"local_user",share_type:["dec","local","usb","sata"],additional:["hidden","encryption","is_aclmode"]})},ListUserSharePermission:{api:"SYNO.Core.Share.Permission",method:"list_by_user",version:1,build:a({name:undefined,user_group_type:"local_user",share_type:["dec","local","usb","sata"],additional:["hidden","encryption","is_aclmode","is_mask"]})},ListGroupSharePermission:{api:"SYNO.Core.Share.Permission",method:"list_by_group",version:1,build:a({name:undefined,user_group_type:"local_group",share_type:["dec","local","usb","sata"],additional:["hidden","encryption","is_aclmode","is_mask"]})},SetSharePermission:{api:"SYNO.Core.Share.Permission",method:"set",version:1,build:a({name:undefined,user_group_type:undefined,permissions:undefined})},SetSharePermissionEx:{api:"SYNO.Core.Share.Permission",method:"set",version:1,build:function(f){var e=[],d,c;d={name:f.name,user_group_type:f.type};Ext.iterate(f.permission,function(h,g){c=SYNO.DSMMobile.util.Share.strToPermission(g);c.name=h;e.push(c)});d.permissions=e;return d}},SetUserSharePermission:{api:"SYNO.Core.Share.Permission",method:"set_by_user_group",version:1,build:a({name:undefined,user_group_type:"local_user",permissions:undefined})},CreateShare:{api:"SYNO.Core.Share",method:"create",version:1,build:a({name:undefined,shareinfo:undefined})},SetShare:{api:"SYNO.Core.Share",method:"set",version:1,build:a({name:undefined,shareinfo:undefined})},ValidateSetShare:{api:"SYNO.Core.Share",method:"validate_set",version:1,build:a({name:undefined,shareinfo:undefined})},ValidateDeleteShare:{api:"SYNO.Core.Share",method:"validate_delete",version:1,build:a({name:undefined})},DeleteShare:{api:"SYNO.Core.Share",method:"delete",version:1,build:a({name:undefined})},GetStorageVolume:{api:"SYNO.Core.Storage.Volume",method:"list",version:1,build:a({offset:0,limit:-1,location:_D("usbstation")===""?"internal":"external",option:"include_cold_storage"})},GetBandwidthControl:{api:"SYNO.Core.BandwidthControl",method:"get",version:1,build:a({owner_type:"local_user"})},GetUserOTP:{api:"SYNO.Core.OTP",method:"get",version:1,build:a({name:undefined})},SendOTPMail:{api:"SYNO.Core.OTP.Mail",method:"send",version:1,build:a({username:undefined})},GetFileServSMB:{api:"SYNO.Core.FileServ.SMB",method:"get",version:1},GetUserQuota:{api:"SYNO.Core.Quota",method:"get",version:1,build:a({name:undefined,support_share_quota:false})},GetGroupQuota:{api:"SYNO.Core.Quota",method:"get",version:1,build:a({name:undefined,subject_type:"group",support_share_quota:false})},SetGroupSharePermission:{api:"SYNO.Core.Share.Permission",method:"set_by_user_group",version:1,build:a({name:undefined,user_group_type:"local_group",permissions:undefined})},CreateGroup:{api:"SYNO.Core.Group",method:"create",version:1,build:a({name:undefined,description:undefined})},SetGroup:{api:"SYNO.Core.Group",method:"set",version:1,build:a({name:undefined,new_name:undefined,description:undefined})},DeleteGroup:{api:"SYNO.Core.Group",method:"delete",version:1,build:a({name:undefined})},ListGroup:{api:"SYNO.Core.Group",method:"list",version:1,build:a({type:"local",name_only:false})},ListGroupMember:{api:"SYNO.Core.Group.Member",method:"list",version:1,build:a({group:undefined,ingroup:true})},ListNotInGroupMember:{api:"SYNO.Core.Group.Member",method:"list",version:1,build:a({action:"enum",group:undefined,ingroup:false})},AddGroupMember:{api:"SYNO.Core.Group.Member",method:"add",version:1,build:a({group:undefined,name:undefined})},RemoveGroupMember:{api:"SYNO.Core.Group.Member",method:"remove",version:1,build:a({group:undefined,name:undefined})},CheckGroupIsAdmin:{api:"SYNO.Core.Group",method:"admin_check",version:1,build:a({name:undefined})},ListUserAppPriv:{api:"SYNO.Core.AppPriv",method:"list",version:2,build:a({action:"list",type:"local",app_id:"SYNO.SDS.AudioStation.Application",filter_type:"all",rule_type:"group",domain_name:""})},ListAppPrivApp:{api:"SYNO.Core.AppPriv.App",method:"list",version:2},PreviewUserAppPrivApp:{api:"SYNO.Core.AppPriv.App",method:"preview",version:2,build:a({username:undefined})},PreviewGroupAppPrivApp:{api:"SYNO.Core.AppPriv.App",method:"preview",version:2,build:a({groups:undefined,include_everyone:true})},GetAppPrivRule:{api:"SYNO.Core.AppPriv.Rule",method:"get",version:1,build:a({entity_type:undefined,entity_name:undefined})},DeleteAppPrivApp:{api:"SYNO.Core.AppPriv.Rule",method:"delete",version:1,build:a({rules:undefined})},SetAppPrivApp:{api:"SYNO.Core.AppPriv.Rule",method:"set",version:1,build:a({rules:undefined})},GetService:{api:"SYNO.Core.Service",method:"get",version:2,build:a({additional:["status","allow_control","active_status"]})},ListPackage:{api:"SYNO.Core.Package",method:"list",version:1,additional:["status","startable","dependent_packages","start_dependent_services"]},ControlService:{api:"SYNO.Core.Service",method:"control",version:1,build:function(d){var c={};c.service=[];Ext.iterate(d,function(e,f){c.service.push({service_id:e,action:f})});return c}},ListSharedFolder:{api:"SYNO.Core.Share",method:"list",version:1,build:a({shareType:"all",additional:["hidden","encryption","is_aclmode","migrate","unite_permission","is_support_acl","is_sync_share","is_force_readonly","is_cold_storage_share","include_cold_storage_share","recyclebin","fileindex","advance_setting","enable_share_cow","enable_share_compress","include_worm_share"]})},GetSharedFolder:{api:"SYNO.Core.Share",method:"get",version:1,build:a({name:undefined,additional:["disable_list","disable_modify","disable_download","unite_permission","is_aclmode","load_worm_attr"]})},Reboot:{api:"SYNO.Core.System",method:"reboot",version:1,build:a({force:true})},ListPackageFull:{api:"SYNO.Core.Package",method:"list",version:1,build:a({additional:["description","description_enu","beta","distributor","distributor_url","maintainer","maintainer_url","url","dsm_apps","help_url","report_beta_url","support_center","startable","status","installed_info","support_url","is_uninstall_pages","install_type","autoupdate","silent_upgrade","installing_progress"]})},ListServerPackage:{api:"SYNO.Core.Package.Server",method:"list",version:1,build:a({blforcereload:false,blloadothers:false})},GetPackage:{api:"SYNO.Core.Package",method:"get",version:1,build:a({id:undefined,additional:["status","dsm_apps"]})},StartPackage:{api:"SYNO.Core.Package.Control",method:"start",version:1,build:a({id:undefined})},StopPackage:{api:"SYNO.Core.Package.Control",method:"stop",version:1,build:a({id:undefined})},CheckPackageInstallation:{api:"SYNO.Core.Package.Installation",method:"check",version:1,build:a({id:"PhotoStation",size:0,depsers:null,deppkgs:null,conflickpkgs:null,blupgrade:false,blCheckDep:true,install_type:""})},InstallPackage:{api:"SYNO.Core.Package.Installation",method:"install",version:1,build:function(c){return c}},StatusPackageInstallation:{api:"SYNO.Core.Package.Installation",method:"status",version:1,build:function(c){return{task_id:"@SYNOPKG_DOWNLOAD_"+c}}},SystemInfo:{api:"SYNO.Core.System",method:"info",version:1,build:function(c){if(c==="network"||c==="storage"){return{type:c}}else{return c}}},ListProcess:{api:"SYNO.Core.System.Process",method:"list",version:1},ProcessGroupServiceInfo:{api:"SYNO.Core.System.ProcessGroup",method:"list",version:1},ProcessGroupStatus:{api:"SYNO.Core.System.ProcessGroup",method:"list",version:1},SystemFirmwareInfo:{api:"SYNO.Core.System",method:"info",version:2,params:{type:"firmware"}},ListNetworkInterface:{api:"SYNO.Core.Network.Interface",method:"list",version:1},GetNetwork:{api:"SYNO.Core.Network",version:1,method:"get"},StartUpgrade:{api:"SYNO.Core.Upgrade",method:"start",version:1,params:{type:"server"}},UpgradePrecheck:{api:"SYNO.Core.Upgrade.PreCheck",method:"start",version:1,params:{type:"server",lang:"enu"}},ProgressUpgrade:{api:"SYNO.Core.Upgrade",method:"progress",version:1},StatusUpgrade:{api:"SYNO.Core.Upgrade",method:"status",version:1},CheckUpgradeServer:{api:"SYNO.Core.Upgrade.Server",method:"check",version:1,params:{need_auto_smallupdate:true}},StartUpgradeServerDownload:{api:"SYNO.Core.Upgrade.Server.Download",method:"start",version:1},ProgressUpgradeServerDownload:{api:"SYNO.Core.Upgrade.Server.Download",method:"progress",version:1},CancelUpgradeSeverDownload:{api:"SYNO.Core.Upgrade.Server.Download",method:"cancel",version:1},GetUpgradeSetting:{api:"SYNO.Core.Upgrade.Setting",method:"get",version:4},SetUpgradeSetting:{api:"SYNO.Core.Upgrade.Setting",method:"set",version:4,build:a({autoupdate_type:undefined,schedule:undefined,smart_nano_enabled:undefined})},ListAutoBlockRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"list",version:1,build:function(c){if(c==="allow"||c==="deny"){return{type:c}}else{return c}}},ListAutoBlockAllowedRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"list",version:1,params:{type:"allow",limit:-1}},ListAutoBlockDeniedRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"list",version:1,params:{type:"deny",limit:-1}},GetAutoBlock:{api:"SYNO.Core.Security.AutoBlock",method:"get",version:1},SetAutoBlock:{api:"SYNO.Core.Security.AutoBlock",method:"set",version:1,build:function(d){var c=Ext.clone(d);c.enable=b(c.enable);return c}},GetAutoBlockRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"get",version:1,build:function(c){return{ip:c}}},CreateAutoBlockRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"create",version:1,build:a({type:undefined,block_days:undefined,overwrite:true,ip:undefined})},DeleteAutoBlockRules:{api:"SYNO.Core.Security.AutoBlock.Rules",method:"delete",version:1,build:a({type:undefined,ip:undefined})},ListSyslogClientLog:{api:"SYNO.Core.SyslogClient.Log",method:"list",version:1,build:function(d){var c={target:"LOCAL",data_from:0,data_to:0,keyword:"",level:""};Ext.apply(c,d);if(d.logtype==="backup"){c.logtype="backup,netbackup,usbcopy"}return c}},ListCurrentConnection:{api:"SYNO.Core.CurrentConnection",method:"list",version:1,build:function(c){if(c!==undefined){return c}else{return{action:"enum"}}}},GetQuickConnect:{api:"SYNO.Core.QuickConnect",method:"get",version:2},ListLatestLog:{api:"SYNO.Core.SyslogClient.Status",method:"latestlog_get",version:1,build:function(d){var c={start:0,limit:50,widget:true,dir:"desc"};Ext.apply(c,d);return c}},StartRecycleBin:{api:"SYNO.Core.RecycleBin",method:"start",version:1,build:function(c){return{id:c}}},GetRecycleBin:{api:"SYNO.Core.RecycleBin",method:"get",version:1,build:function(c){return{id:c}}},CheckPackageServer:{api:"SYNO.Core.Package.Server",method:"check",version:1},GetAppNotify:{api:"SYNO.Core.AppNotify",method:"get",version:1},LoadStorageInfo:{api:"SYNO.Storage.CGI.Storage",method:"load_info",version:1},GetDiskHealthInfo:{api:"SYNO.Storage.CGI.Smart",method:"get_health_info",version:1,build:a({device:undefined})},SmartTest:{api:"SYNO.Core.Storage.Disk",method:"do_smart_test",version:1,build:a({device:undefined,type:undefined})},GetSmartTestLog:{api:"SYNO.Core.Storage.Disk",method:"get_smart_test_log",version:1,build:a({device:undefined})},AuthPasswordConfirm:{api:"SYNO.Core.User.PasswordConfirm",method:"auth",version:1,encryption:["password"],build:function(d){var c={};if(Ext.isString(d)){c.password=d}else{c=d}return c}},GetUserService:{api:"SYNO.Core.Desktop.Initdata",method:"get_user_service",version:1},SetWSTransfer:{api:"SYNO.Core.FileServ.ServiceDiscovery.WSTransfer",method:"set",version:1,build:function(c){return{enable_wstransfer:c}}}}}});Ext.define("SYNO.DSMMobile.lib.WebAPIBase",{extend:"Ext.util.Observable",requires:["SYNO.DSMMobile.lib.WebAPIConfig"],config:{using:null,isCompound:false},constructor:function(){this.callParent(arguments);this.init()},sendWebAPI:function(c){var b=c.apiType,a;if(!Ext.isString(b)){this.doSendWebAPI(c)}else{delete c.apiType;if(!this.apiConfig.data[b]){SYNO.Debug.error("No Such apiType",b)}else{a=this.instantiateWebAPIObj(this.apiConfig.data[b],c.params,c.callback,c.scope);this.doSendWebAPI(a)}}},doSendWebAPI:function(a){SYNO.API.Request(Ext.apply(a,{timeout:180000}))},pushQueue:function(b,a,d,e,c){this.queue.push({apiType:b,cfg:a,params:d,callback:e,scope:c})},sendQueue:function(f,e,c,b){var d=[],a=this.queue.slice();this.queue=[];Ext.iterate(a,function(g){d.push(this.instantiateWebAPIObj(g.cfg,g.params,g.callback,g.scope))},this);this.doSendCompoundWebAPI(a,d,f,e,c,b)},send:function(a,d,c,b){this.sendQueue({stopwhenerror:!!a},d,c,b)},sendCompoundWebAPI:function(c,e,d,b,a){Ext.iterate(c,function(g){var f=g.apiType;this.pushQueue(f,this.apiConfig.data[f],g.params,g.callback,g.scope)},this);this.sendQueue(e,d,b,a)},doSendCompoundWebAPI:function(a,f,e,h,c,b){var d,g;if(Ext.isFunction(e)){b=c;c=h;h=e;e=false}if(e===true||e===false){g={stopwhenerror:e,params:f}}else{g=Ext.apply({stopwhenerror:false,params:f},e)}d={compound:g,callback:function(j,m,l,k){var i={};i.has_fail=m.has_fail;i.result=m.result;i.length=a.length;i.api_type=[];if(i.has_fail){i.error=SYNO.API.Util.GetFirstError(m);if(i.error){i.code=i.error.code;i.msg=SYNO.API.getErrorString(i.code)}}Ext.each(a,function(n){i.api_type.push(n.apiType)},this);Ext.each(m.result,function(p,n){var q=f[n],o=a[n].apiType,r;q.callback.call(q.scope||window,p.success,p.data||p.error);r={succ:p.success,resp:p.data||p.error};if(!Ext.isDefined(i[o])){i[o]=r}i[n]=r},this);if(Ext.isFunction(h)){h.call(c||window,j,i,l,k,m)}}};if(Ext.isArray(b)){d.encryption=b}this.doSendWebAPI(d)},instantiateWebAPIObj:function(a,d,e,b){var c={};Ext.copyTo(c,a,"api, method, version, params, encryption");if(Ext.isFunction(a.build)){c.params=a.build(d)}c.callback=function(f,i,h,g){if(Ext.isFunction(e)){e.call(b||window,f,i,h,g)}};return c},buildWebAPIInterface:function(b,a){var c=this;return function(f,g,d){var e;if(Ext.isFunction(f)){d=g;g=f;f=undefined}e=c.instantiateWebAPIObj(a,f,g,d);c.doSendWebAPI(e)}},buildCompoundWebAPIInterface:function(b,a){var c=this;return function(e,f,d){if(Ext.isFunction(e)){d=f;f=e;e=undefined}c.pushQueue(b,a,e,f,d)}},initInterface:function(){var a=this.getIsCompound();Ext.iterate(this.apiConfig.data,function(c,b){if(a){this[c]=this.buildCompoundWebAPIInterface(c,b)}else{this[c]=this.buildWebAPIInterface(c,b)}},this)},init:function(){var a=this.getUsing();if(a instanceof SYNO.DSMMobile.lib.WebAPIBase){this.apiConfig=a.apiConfig}else{this.apiConfig=Ext.create(a)}this.queue=[];this.initInterface()}});Ext.define("SYNO.DSMMobile.lib.SystemWebAPIConfig",{extend:"SYNO.DSMMobile.lib.WebAPIConfigBase",fillData:function(){this.data={Shutdown:{api:"SYNO.Core.System",method:"shutdown",version:1,build:function(b){var a={force:false,local:true};if(b&&b.force){a.force=b.force}return a}},Reboot:{api:"SYNO.Core.System",method:"reboot",version:1,build:function(b){var a={force:false,local:true};if(b&&b.force){a.force=b.force}return a}},StartFindMe:{api:"SYNO.DSM.FindMe",method:"start",version:2},StopFindMe:{api:"SYNO.DSM.FindMe",method:"stop",version:2}}}});Ext.define("SYNO.DSMMobile.lib.SystemWebAPI",{extend:"SYNO.DSMMobile.lib.WebAPIBase",requires:["SYNO.DSMMobile.lib.SystemWebAPIConfig"],config:{using:"SYNO.DSMMobile.lib.SystemWebAPIConfig"}});Ext.define("SYNO.DSMMobile.lib.SystemRebootPolling",{extend:"Ext.Component",singleton:true,requires:["SYNO.DSMMobile.mixin.TaskRunner"],mixins:["SYNO.DSMMobile.mixin.TaskRunner"],constructor:function(){this.callParent(arguments);this.init()},polling:function(){var b,a=0;b=this.addAjaxTask({preventHalt:true,interval:5000,autoJsonDecode:true,url:"/webman/pingpong.cgi",startTime:new Date().getTime(),timeLimit:600000,scope:this,success:function(c,d){if(a<2){a=0;return}if(c&&c.boot_done){b.stop();window.location.href="/"}},failure:function(e,d){var c=new Date().getTime();if(!d.timeoutNotified&&(c-d.startTime)>d.timeLimit){Ext.Msg.alert("",_JSLIBSTR("uicommon","system_reboot_timeout").replace(/_DISKSTATION_/g,_D("product")));d.timeoutNotified=true}a++}}).start()},init:function(){}});Ext.define("SYNO.DSMMobile.lib.System",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],requires:["SYNO.DSMMobile.lib.SystemWebAPI"],createMask:function(a){SYNO.DSMMobile.utils.mask(a)},CountCharInStr:function(d,e){var a=0,b=0;for(b=0;b<d.length;++b){if(e==d[b]){a++}}return a},parseTasks:function(d){var a=[];var b;var c;Ext.each(d,function(e){if(-1===e.indexOf(":")){a.push(e)}else{b=e.split(":");if(1===this.CountCharInStr(e,":")){c=(0===_T(b[0],b[1]).length)?_JSLIBSTR(b[0],b[1]):_T(b[0],b[1])}else{if(2===this.CountCharInStr(e,":")){c=_TT(b[0],b[1],b[2])}else{return true}}a.push(c)}},this);return a.join("<br> ")},handleHaltFail:function(b,d,e){var c,a;if(!e){return}if(e.errors&&e.errors.blockingTasks){c=this.parseTasks(e.errors.blockingTasks);Ext.Msg.alert("",_T("system","running_tasks_warning")+"<br><br>"+c+"<br><br>"+_T("system","try_later_warning"),function(f){});return}if(e.errors&&e.errors.runningTasks){a=this.parseTasks(e.errors.runningTasks);Ext.Msg.confirm("",d+"<br><br>"+a,function(f){if(f==="yes"){if(b==="reboot"){this.doReboot(true)}else{if(b==="shutdown"){this.doShutdown(true)}}}},this);return}},onShutdown:function(){this.haltImpl(_T("mobile","menu_shutdown_confirm"),this.doShutdown)},doShutdown:function(a){this.doHaltImpl(this.api.Shutdown,a,"shutdown",_T("system","running_tasks_confirm_shutdown"),_T("mobile","menu_shutting_down"))},onReboot:function(){this.haltImpl(_T("mobile","menu_reboot_confirm"),this.doReboot)},doReboot:function(a){this.doHaltImpl(this.api.Reboot,a,"reboot",_T("system","running_tasks_confirm_reboot"),_T("mobile","menu_rebooting"))},haltImpl:function(b,a){Ext.Msg.confirm("",b,function(c){if(c==="yes"){SYNO.DSMMobile.utils.mask();a.call(this)}},this)},doHaltImpl:function(f,e,b,c,a){var d={};if(e){d.force=true}f(d,function(g,h){SYNO.DSMMobile.utils.unmask();if(!g){this.handleHaltFail(b,c,h);return}this.createMask(a);if(b==="reboot"){SYNO.DSMMobile.lib.SystemRebootPolling.polling()}},this)},onStartFindMe:function(){this.api.StartFindMe(function(a,b){if(!a){return}Ext.Msg.alert("",_T("mobile","menu_findme_stop"),function(){this.doStopFindMe()},this)},this)},doStartFindMe:function(b,a){this.api.StartFindMe(SYNO.DSMMobile.utils.getCallback(b,a))},onStopFindMe:function(){this.doStopFindMe()},doStopFindMe:function(){this.api.StopFindMe()},onForceDesktop:function(){window.location="?forceDesktop=stay_desktop"},onResponsiveDesktop:function(){window.location="?forceDesktop=stay_rwd"},onLogout:function(){window.location="webman/logout.cgi"},constructor:function(){this.callParent(arguments);this.init()},monitorHub:function(){this.hubOn({system_shutdown:this.onShutdown,system_reboot:this.onReboot,system_startFindMe:this.onStartFindMe,system_stopFindMe:this.onStopFindMe,system_forceDesktop:this.onForceDesktop,system_logout:this.onLogout})},init:function(){this.api=Ext.create("SYNO.DSMMobile.lib.SystemWebAPI");this.monitorHub()}});Ext.define("SYNO.DSMMobile.lib.WebAPI",{extend:"SYNO.DSMMobile.lib.WebAPIBase",requires:[],config:{using:"SYNO.DSMMobile.lib.WebAPIConfig"},init:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.webapi",{extend:"SYNO.DSMMobile.lib.WebAPI",singleton:true,mixins:["SYNO.DSMMobile.mixin.EventHub"]});Ext.define("SYNO.DSMMobile.lib.InitApp",{extend:"Ext.util.Observable",requires:["SYNO.DSMMobile.lib.WebAPI","SYNO.DSMMobile.base.Proxy","SYNO.DSMMobile.base.Store","SYNO.DSMMobile.mixin.EventHub","SYNO.DSMMobile.data.MainMenuList","SYNO.DSMMobile.data.Service","SYNO.DSMMobile.data.User","SYNO.DSMMobile.data.UserGroup","SYNO.DSMMobile.data.Permission","SYNO.DSMMobile.data.Application","SYNO.DSMMobile.data.ApplicationPrivilege","SYNO.DSMMobile.data.SharedFolder","SYNO.DSMMobile.data.PackageList","SYNO.DSMMobile.data.SystemInfo","SYNO.DSMMobile.data.IPBlock","SYNO.DSMMobile.data.ProcessInfo","SYNO.DSMMobile.data.Connection","SYNO.DSMMobile.data.LatestLog","SYNO.DSMMobile.data.GeneralLog","SYNO.DSMMobile.data.XferLog","SYNO.DSMMobile.base.List","SYNO.DSMMobile.data.Volume","SYNO.DSMMobile.data.ServerPackage","SYNO.DSMMobile.ux.Mask","SYNO.DSMMobile.ux.ActionSheet","SYNO.DSMMobile.ux.Button","SYNO.DSMMobile.ux.Field","SYNO.DSMMobile.ux.DatePicker","SYNO.DSMMobile.ux.TextField","SYNO.DSMMobile.ux.SearchField","SYNO.DSMMobile.ux.PasswordField","SYNO.DSMMobile.ux.Checkbox","SYNO.DSMMobile.ux.ToggleField","SYNO.DSMMobile.ux.SelectField","SYNO.DSMMobile.ux.RadioField","SYNO.DSMMobile.ux.SelectDialog","SYNO.DSMMobile.ux.FieldSet","SYNO.DSMMobile.ux.DisplayField","SYNO.DSMMobile.ux.ButtonField","SYNO.DSMMobile.base.CircleGradient","SYNO.DSMMobile.base.TitleBar","SYNO.DSMMobile.base.AdvDialog","SYNO.DSMMobile.base.Dialog","SYNO.DSMMobile.base.FormPanel","SYNO.DSMMobile.base.TabPanel","SYNO.DSMMobile.base.NavigationView","SYNO.DSMMobile.util.AsyncLock","SYNO.DSMMobile.util.Env","SYNO.DSMMobile.util.Grouper","SYNO.DSMMobile.util.Share","SYNO.DSMMobile.util.Application","SYNO.DSMMobile.utils","SYNO.Mobile.ModuleUtils","SYNO.DSMMobile.lib.AjaxRequest","SYNO.DSMMobile.lib.NativeAppPortal","SYNO.DSMMobile.lib.EventHub","SYNO.DSMMobile.lib.AsyncTask","SYNO.DSMMobile.lib.OpenDetail","SYNO.DSMMobile.lib.OpenFullScreen","SYNO.DSMMobile.lib.OpenMenu","SYNO.DSMMobile.lib.AppNotify","SYNO.DSMMobile.lib.System"]});Ext.define("SYNO.DSMMobile.controller.Base",{extend:"Ext.app.Controller",config:{routes:{},refs:{Hub:"MobileEventHub",SlidingMenu:"MobileSlidingMenu",Navigation:"MobileNavigation"},control:{}},init:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.controller.Main",{extend:"SYNO.DSMMobile.controller.Base",config:{routes:{},refs:{btn:"button"},control:{btn:{}}},init:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.controller.MainMenu",{extend:"SYNO.DSMMobile.controller.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{refs:{},control:{}},init:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.controller.MainMenuBanner",{extend:"SYNO.DSMMobile.controller.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{refs:{banner:"syno-dsmmobile-view-mainmenubanner",moreAction:"syno-dsmmobile-view-mainmenubanner-moreaction"},control:{}},monitorElement:function(){var a=this.getMoreAction();if(a){a.element.on({tap:this.onTapMoreAction,scope:this})}},onTapMoreAction:function(a,b){SYNO.DSMMobile.view.MoreAction.openMenu(b)},init:function(){this.callParent(arguments)},launch:function(){this.callParent(arguments);this.monitorElement()}});Ext.define("SYNO.DSMMobile.controller.MainMenuList",{extend:"SYNO.DSMMobile.controller.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{refs:{addbtn:"MobileMainMenu > titlebar > container > button",menulist:"MobileMainMenuList",menu:"MobileMainMenu"},control:{menulist:{itemtap:"onMenuListItemTap"},addbtn:{tap:"onBtnTap"},Hub:{updateAppNotify:"refreshPage"}}},onMenuListItemTap:function(f,c,g,a,e,b){var d=f.getStore().getAt(c).getData();if(d.xclass){this.hubFire("initContent",{xclass:d.xclass},d.options);this.hubFire("hideSlidingMenu")}else{if(d.schema){this.hubFire("openApp",d.schema)}else{this.hubFire("resetContent")}}},init:function(){this.callParent(arguments)},onBtnTap:function(c){var b=Ext.create("SYNO.DSMMobile.base.Dialog",{items:Ext.create("SYNO.DSMMobile.view.MoreAction")});Ext.Viewport.add(b,"tc-bc");b.showBy(c)},refreshPage:function(b){var c=this.getMenulist(),a=c.getStore();Ext.iterate(b,function(e,f){var d=a.findRecord("badgeName",e);if(d){d.set("badge",f)}},c);window.badgeData=b}});Ext.define("SYNO.DSMMobile.controller.Navigation",{extend:"SYNO.DSMMobile.controller.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{routes:{},refs:{navigation:"MobileNavigation"},control:{navigation:{initialize:function(){},tap:function(){},add:function(){}},Hub:{hideNavBar:"onHideNavBar",showNavBar:"onShowNavBar",pushContent:"onPushContent",popContent:"onPopContent",resetContent:"onResetContent",initContent:"onInitContent"}}},onPainted:function(){console.log("onPainted",this)},onHideNavBar:function(){var a=this.getNavigation();a.getNavigationBar().hide()},onShowNavBar:function(){var a=this.getNavigation();a.getNavigationBar().show()},onPushContent:function(b){var a=this.getNavigation();a.push(b)},onPopContent:function(){var a=this.getNavigation();a.pop()},onResetContent:function(){var a=this.getNavigation();a.reset()},onInitContent:function(f,b){var a=this.getNavigation(),e=a.getNavigationBar();var h=a.getExtraBtn();var c,g,d;b=b||{};e.show();a.reset();a.doPop();e.backButtonStack.pop();a.push(f);g=a.getActiveItem();d=g.getExtraBtn();if(h){h.destroy()}if(d){c=Ext.apply({align:"right"},d);h=Ext.factory(c);h.owner=g;a.setExtraBtn(h);e.add(h)}},init:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.controller.SlidingMenu",{extend:"SYNO.DSMMobile.controller.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{routes:{},refs:{},control:{SlidingMenu:{initialize:"onInitializeSlidingMenu"}}},init:function(){this.callParent(arguments)},onInitializeSlidingMenu:function(){var a=this.getSlidingMenu();Ext.Viewport.setMenu(a,{side:"left",reveal:true})},pushContent:function(a){this.hubFire("pushContent",a)}});Ext.define("SYNO.DSMMobile.profile.Base",{extend:"Ext.app.Profile",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{},addNewViewport:function(){Ext.Viewport.add(Ext.create("SYNO.DSMMobile.view.Main"))},addMenu:function(){var a=this.getApplication();a.addPlugin("SYNO.DSMMobile.view.SlidingMenu")},getAppConfig:function(){return SYNO.DSMMobile.app.appConfig},initApplicationEnv:function(){if(_S("ha_safemode")){Ext.Msg.alert("",_T("mobile","menu_ha_sb_warning"),function(){this.hubFire("showSlidingMenu")},this)}},initLoginEnv:function(){var a=this.getApplication();a.addPlugin("SYNO.DSMMobile.lib.Login");a.addPlugin("SYNO.DSMMobile.lib.ForgetPassword");a.addPlugin("SYNO.DSMMobile.lib.LostPhone")}});Ext.define("SYNO.DSMMobile.profile.Phone",{extend:"SYNO.DSMMobile.profile.Base",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{name:"Phone",views:["Main"]},isActive:function(){return SYNO.DSMMobile.util.Env.isPhone},launch:function(){var a=this.getAppConfig();console.log("launch Phone");if(a.needLogin){var b=new URL(window.location.href);b.searchParams.set("redirect_uri","/");window.location.replace(b.href)}else{this.initApplicationEnv();this.addMenu();Ext.Viewport.add(Ext.create("SYNO.DSMMobile.view.phone.Main"));if(!_S("ha_safemode")){this.hubFire("showSlidingMenu")}}}});Ext.define("SYNO.DSMMobile.profile.Tablet",{extend:"SYNO.DSMMobile.profile.Base",config:{name:"Tablet",views:["Main"]},isActive:function(){return SYNO.DSMMobile.util.Env.isTablet},launch:function(){var a=this.getAppConfig();console.log("launch Tablet");if(a.needLogin){var b=new URL(window.location.href);b.searchParams.set("redirect_uri","/");window.location.replace(b.href)}else{this.initApplicationEnv();Ext.Viewport.add(Ext.create("SYNO.DSMMobile.view.tablet.Main"))}}});Ext.define("SYNO.DSMMobile.view.NoDataPanel",{extend:"SYNO.DSMMobile.base.Panel",config:{cls:"syno-mobile-nodata-panel"}});Ext.define("SYNO.DSMMobile.view.NoData",{extend:"SYNO.DSMMobile.base.Panel",config:{layout:{type:"vbox",align:"center",pack:"center"},items:[{xclass:"SYNO.DSMMobile.view.NoDataPanel"}]}});Ext.define("SYNO.DSMMobile.view.LandingPage",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.DSMMobile.view.NoData"],config:{layout:"fit",items:[{xclass:"SYNO.DSMMobile.view.NoData"}]}});Ext.define("SYNO.DSMMobile.view.List",{extend:"SYNO.DSMMobile.base.List",config:{itemTpl:"{a} -> <div>{b}</div>",data:[{a:"1-a",b:"1-b",c:"1-c",d:"1-d",e:"1-e"},{a:"2-a",b:"2-b",c:"2-c",d:"2-d",e:"2-e"},{a:"3-a",b:"3-b",c:"3-c",d:"3-d",e:"3-e"}],autoLoad:true}});Ext.define("SYNO.SDS.LoginStyleParser",{extend:"Ext.util.Observable",BLANK_IMAGE_URL:Ext.BLANK_IMAGE_URL||"scripts/ext-3/resources/images/default/s.gif",constructor:function(a){this.appName="";this.parseTpl();this.callParent(arguments)},parseTpl:function(){var a=this.isPreview?_S("preview_tpl"):_S("login_style");this.tpl=(a==="dark")?"dark":"light"},getLoginConfig:function(){var a={tplName:this.tpl};Ext.apply(a,this.getTitleConf());Ext.apply(a,this.getCustomizeLogoConf());Ext.apply(a,this.getWelcomeMsgConf());Ext.apply(a,this.getFooterConf());Ext.apply(a,this.getBkgConf());return a},getBkgConf:function(){var b=this.getRawBkgConf();var c=b.background_enable;var a=b.only_bgcolor;if(c){b.background_path=this.getBuiltInPath(b)}else{if(a){b.background_path=this.BLANK_IMAGE_URL}else{b=this.getDefaultBkgConf()}}return b},getRawBkgConf:function(){var a={background_enable:_S("login_background_enable"),background_pos:_S("login_background_pos")||"center",only_bgcolor:_S("login_only_bgcolor"),background_color:_S("login_background_color")||"#FFFFFF",ext:_S("login_background_ext"),idx:_S("login_background_seq")};return a},getDefaultBkgConf:function(){var b;var c={background_pos:"fill",background_path:"webman/resources/images/default/1x/default_login_background/01.jpg?v="+_S("version"),background_color:"#505050"};var a={background_pos:"fill",background_path:"webman/resources/images/default/1x/default_login_background/01.jpg?v="+_S("version"),background_color:"#4c8fbf"};b=(this.tpl==="dark")?c:a;if(this.isRetina()){b.background_path=SYNO.SDS.UIFeatures.IconSizeManager.getIconPath(b.background_path)}return b},isRetina:function(){return SYNO.SDS.UIFeatures.IconSizeManager.isRetinaMode()},isBuiltInBkg:function(a){var b=a.background_path;if(b&&0===b.indexOf("webman/resources/images/default_login_background")){return true}return false},getBuiltInPath:function(a){var b=String.format("webman/{0}login_background{1}?id={2}",this.appName,a.ext,a.idx);return b},getTitleConf:function(){var a=_S("custom_login_title");var b={login_title:a||_S("hostname")};return b},getCustomizeLogoConf:function(){var a={logo_enable:_S("login_logo_enable")};if(a.logo_enable){a.logo_path="webman/"+this.appName+"login_logo"+_S("login_logo_ext")+"?id="+_S("login_logo_seq")}return a},getWelcomeMsgConf:function(){var c={login_welcome_title:_S("login_welcome_title"),login_welcome_msg:_S("login_welcome_msg")};var d={login_welcome_title:_T("login","default_welcome_title"),login_welcome_msg:_T("login","default_welcome_msg")};var b={login_welcome_title:_T("login","default_welcome_title_business"),login_welcome_msg:_T("login","default_welcome_msg_business")};var a=(_S("login_welcome_title")&&_S("login_welcome_msg"));if(a){return c}else{if(this.isBusiness){return b}else{return d}}},getFooterConf:function(){var a=_S("login_footer_enable_html");var b={login_footer_msg:_S("login_footer_msg")||"",login_footer_enable_html:Ext.isDefined(a)?a:false};return b}});Ext.define("SYNO.DSMMobile.view.Login",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-dsmmobile-view-login",config:{layout:{type:"vbox"},cls:"dsm-mobile-login",logoFormat:'<img class="logo" src="{0}">',items:[{xtype:"container",items:{itemId:"errorMsg",cls:"login-errormsg",hidden:true}},{xtype:"container",layout:{type:"vbox"},style:SYNO.DSMMobile.util.Env.isTablet?"padding: 0 30px; position: relative;":"",items:[{xtype:"container",items:[{width:130,height:100,hidden:SYNO.DSMMobile.util.Env.isPhone,itemId:"loginLogo",cls:"login-logo",xtype:"container",html:"",listeners:{painted:function(){var a,c,b=this,d;if(_S("login_logo_enable")){d=b.element.down(".logo");a=(b.getHeight()-d.getHeight())/2;c=(b.getWidth()-d.getWidth())/2;d.setStyle("top",a+"px");d.setStyle("left",c+"px")}}}},{width:320,xtype:"container",itemId:"dsname",cls:"login-title overflow-with-ellipsis",html:""},{width:320,xclass:"SYNO.DSMMobile.view.LoginForm",itemId:"loginForm"}]}]},{xtype:"container",itemId:"bottomCt",cls:"login-bottom-ct",hidden:SYNO.DSMMobile.util.Env.isPhone||_S("login_version_logo")!==true,items:[{xtype:"container",itemId:"descCt",cls:"login-desc-ct"},{xtype:"container",itemId:"bottomBarCt",cls:"login-bottom-bar-ct",html:'<div class="login-bottom-bar-left-icon"></div>'}]},{xtype:"container",itemId:"footerCt",cls:"login-footer",hidden:!_S("login_footer_msg"),items:[{xtype:"container",itemId:"footerMsg",cls:"login-footer-msg",html:""}]}],listeners:{painted:function(){this.setUpBkgStyle();this.hubFire("mainContentReady")}}},encodeHtml:function(a){return Ext.util.Format.htmlEncode(a)},updateBkgPos:function(){var b=this.down("#loginForm").element,a=this.blurCt.down(".blur-bg-mask");a.setSize(b.getWidth(),b.getHeight());a.setStyle("marginTop",b.getY()+"px");a.setStyle("marginLeft",b.getX()+"px")},setUpBkgStyle:function(){var b=this.getLoginConfig(),c=this.down("#loginForm").element;Ext.getBody().addCls(b.background_pos);Ext.getBody().setStyle("background-image","url("+b.background_path+")");Ext.getBody().setStyle("background-color",b.background_color);this.blurCt=Ext.getBody().createChild({tag:"div",cls:"blur-ct",html:'<div class="blur-bg-mask"><div class="blur-color"><div class="blur-bg '+b.background_pos+'" style="background-image: url('+b.background_path+')"></div></div></div>'});var a=this.blurCt.down(".blur-bg-mask"),d=this.blurCt.down(".blur-color");a.setSize(c.getWidth(),c.getHeight());a.setStyle("marginTop",c.getY()+"px");a.setStyle("marginLeft",c.getX()+"px");d.setStyle("background-color",b.background_color)},getLoginConfig:function(){if(!this.loginStyleCfg){this.loginStyleCfg=(new SYNO.SDS.LoginStyleParser()).getLoginConfig()}return this.loginStyleCfg},initialize:function(){var d=(SYNO.DSMMobile.util.Env.isPhone&&Ext.Viewport.getOrientation()==="portrait")?"100%":320,a=this.getLoginConfig();function b(f){var e=_S(f);return Ext.isString(e)?e:""}this.down("#dsname").setWidth(d);this.down("#loginForm").setWidth(d);this.down("#dsname").updateHtml(this.encodeHtml(a.login_title.replace(/ /g," ")));this.down("#descCt").updateHtml(String.format('<div class="desc-title">{0}</div><div class="desc-txt">{1}</div>',b("login_welcome_title").replace(/ /g," "),b("login_welcome_msg").replace(/ /g," ")));if(_S("login_logo_enable")){this.down("#loginLogo").updateHtml(String.format(this.getLogoFormat(),a.logo_path))}if(b("login_footer_msg")){var c=b("login_footer_msg").replace(/ /g," ");if(_S("login_footer_enable_html")){c=Ext.util.Format.htmlDecode(c)}this.down("#footerMsg").updateHtml(String.format('<div class="login-footer-msg-wrapper"><div class="login-footer-msg">{0}</div></div>',c))}Ext.Viewport.on("orientationchange",this.onOrientationChange,this);this.callParent(arguments)},onOrientationChange:function(c,b,e,a,d){var f=320;if(SYNO.DSMMobile.util.Env.isPhone&&b==="portrait"){f="100%"}this.down("#dsname").setWidth(f);this.down("#loginForm").setWidth(f);this.updateBkgPos()},updateErrorMsg:function(a){this.down("#errorMsg").updateHtml(a);this.setErrorMsgVisible(true);this.down("#hintmsg").hide()},setErrorMsgVisible:function(a){var b=(a)?"show":"hide";this.down("#errorMsg")[b]();this.updateBkgPos()}});Ext.define("SYNO.DSMMobile.view.LoginForm",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-dsmmobile-view-loginform",config:{cls:"syno-login-form",items:[{xtype:"syno_selectfield",autoSelect:true,hidden:true,itemId:"sso",cls:"syno-login-form-selectfield",options:[{text:_T("sso","account_login"),value:"local"},{text:_T("sso","sso_login"),value:"sso"}],listeners:{change:function(d,b,a,c){this.parent.onTypeChange.call(this.parent,b)},focus:function(a,c){var f=this,b="syno-login-form-selectfield-focus",e=function(){f.removeCls(b)},d;a.addCls(b);if(f.getUsePicker()){d=f.getPhonePicker();if(!d.tapBinded){d.getDoneButton().on("tap",e);d.getCancelButton().on("tap",e);d.tapBind=true}}else{d=f.getTabletPicker().down("list");if(!d.tapBinded){d.on("itemtap",e);d.tapBind=true}}}}},{xtype:"syno_textfield",itemId:"name",label:" ",labelWidth:18,cls:"syno-login-form-textfield username",autoComplete:false,autoCapitalize:false,autoCorrect:false,listeners:{keyup:function(a,c,b){if(c.browserEvent.keyCode===13){this.parent.down("#passwd").focus()}}}},{xtype:"syno_passwordfield",itemId:"passwd",label:" ",labelWidth:18,cls:"syno-login-form-textfield passwd",listeners:{keyup:function(a,c,b){if(c.browserEvent.keyCode===13){this.parent.requestLogin.call(this.parent)}}}},{xtype:"syno_textfield",itemId:"otp",label:" ",labelWidth:18,cls:"syno-login-form-textfield otp",hidden:true,placeHolder:_T("login","enter_otp_desc")},{xtype:"syno_togglefield",label:_T("login","rememberme"),itemId:"rememberme",cls:"syno-login-form-rememberme"},{xtype:"syno_displayfield",itemId:"hintmsg",cls:"syno-login-form-hintmsg",value:"",hidden:true},{xtype:"syno_button",itemId:"loginBtn",text:_T("common","dsm_login"),cls:"syno-login-form-signin-btn",handler:function(){this.parent.requestLogin.call(this.parent)}},{xtype:"container",layout:{type:"hbox"},items:[{flex:1,xtype:"syno_button",itemId:"ssoBackBtn",text:_T("common","alt_back"),cls:"syno-login-form-ssoback-btn",hidden:true,handler:function(){var a=this.up("syno-dsmmobile-view-loginform");a.setFieldValue.call(a,"sso","local")}},{flex:1,xtype:"syno_button",itemId:"ssoNextBtn",text:_T("common","alt_next"),cls:"syno-login-form-signin-btn",hidden:true,handler:function(){var a=this.up("syno-dsmmobile-view-loginform");a.onSSONext.call(a)}}]},{xtype:"syno_button",itemId:"forgetPWBtn",text:_T("common","ok"),cls:"syno-login-form-signin-btn",hidden:true,handler:function(){this.parent.requestForgetPW.call(this.parent)}},{xtype:"syno_button",text:_T("login","forget_pass_link"),itemId:"forgetpasswd",cls:"syno-login-form-textlink",hidden:true,handler:function(){this.parent.onForgetPwd.call(this.parent)}},{xtype:"syno_button",text:_T("login","otp_lost_phone_desc"),itemId:"lostphone",cls:"syno-login-form-textlink",hidden:true,handler:function(){this.parent.onLostPhone.call(this.parent)}}],control:{},listeners:{painted:function(){this.addCls(_S("login_style"))}}},initialize:function(){this.setFieldValue("rememberme",Ext.util.Cookies.get("stay_login")==="1");if(this.isSupportSSO()){this.setFieldsVisible(["sso"],true);this.setFieldValue("sso",Ext.util.Cookies.get("login_type")||"local")}this.callParent(arguments)},getFieldValue:function(a){return this.down("#"+a).getValue()},setFieldValue:function(b,a){this.down("#"+b).setValue(a)},onTypeChange:function(a){var b=(a==="local");this.setFieldsVisible(["name","passwd","loginBtn"],b);this.setFieldsVisible(["ssoNextBtn","ssoBackBtn"],!b);if(!b){this.setFieldsVisible(["forgetpasswd"],false)}Ext.util.Cookies.set("login_type",a)},onSSONext:function(){if(this.isSSOLogin()){SYNO.SDS.SSOUtils.login(this.onSSOCallback,this)}},isSupportSSO:function(){return SYNO.SDS.SSOUtils.isSupport()},isSSOLogin:function(){return this.isSupportSSO()&&this.getFieldValue("sso")==="sso"},onGotSSOUsername:function(d,a,c,b){if(!d){this.up("syno-dsmmobile-view-login").updateErrorMsg(_T("error_sso_login","error_sso_login"));return}this.updateHintMsg(_T("common","msg_waiting"));this.setFieldsVisible(["name","passwd"],false);this.setFieldValue("passwd","SYNOSSOLOGIN"+c.token);this.setFieldValue("name",a.user.replace("\\\\","\\"));this.requestLogin()},onSSOCallback:function(a){if("login"===a.status&&a.access_token&&40===a.access_token.length){this.sendWebAPI({api:"SYNO.Core.Directory.SSO.utils",method:"exchange",version:1,params:{token:a.access_token},scope:this,callback:this.onGotSSOUsername})}},getValues:function(){return{account:this.getFieldValue("name"),passwd:this.getFieldValue("passwd"),rememberme:this.getFieldValue("rememberme"),otp_code:this.getFieldValue("otp")}},setFormDisabled:function(b){var a=["name","passwd","rememberme","loginBtn","ssoNextBtn"];this.setFieldsDisabled(a,b)},setFieldsDisabled:function(a,b){var c=(b)?"disable":"enable";this.setFields(a,c)},setFieldsVisible:function(a,c){var d=(c)?"show":"hide",b=this.up("syno-dsmmobile-view-login");this.setFields(a,d);if(b){b.updateBkgPos()}},setFields:function(a,c){var b;if(Ext.isString(a)){this.setFields([a],c)}else{if(Ext.isArray(a)){for(b=0;b<a.length;b++){this.down("#"+a[b])[c]()}}}},validateOTP:function(){var c=this.getFieldValue("otp");var b=/^[0-9]{6}$/;var a=/^[0-9]{8}$/;if(b.exec(c)||a.exec(c)){return true}return false},requestLogin:function(){var a=this.getValues();this.setFormDisabled(true);Ext.util.Cookies.set("stay_login",this.getFieldValue("rememberme")?1:0);if(this.mode==="otp"&&!this.validateOTP()){this.setFormDisabled(false);this.up("syno-dsmmobile-view-login").updateErrorMsg(_T("login","otp_wrong_input_format"));return}this.hubFire("requestLogin",a,function(d,c,b){this.down("#loginForm").setFormDisabled(false);if(d){this.updateErrorMsg(d)}if(b){this.down("#loginForm").updateHintMsg(b)}if(c){this.down("#loginForm").showOTP()}},this.up("syno-dsmmobile-view-login"))},requestForgetPW:function(){this.hubFire("requestForgetPW",{user:this.getFieldValue("name")},function(a){if(a){this.updateErrorMsg(a)}},this.up("syno-dsmmobile-view-login"))},showOTP:function(){var a=["forgetpasswd","name","passwd","rememberme","sso"];this.setFieldsVisible(a,false);this.setFieldsVisible(["lostphone","otp"],true);this.mode="otp"},onForgetPwd:function(){var a=["passwd","rememberme","forgetpasswd","loginBtn","sso"];this.setFieldsVisible(a,false);this.setFieldsVisible(["forgetPWBtn"],true)},onLostPhone:function(){this.hubFire("requestLostPhone",{username:this.getFieldValue("name")},function(c,b){if(b){this.updateHintMsg(b)}if(c){var a=this.up("syno-dsmmobile-view-login");a.updateErrorMsg(c)}},this)},updateHintMsg:function(b){if(b){var a=this.up("syno-dsmmobile-view-login");this.down("#hintmsg").updateHtml(b);a.down("#errorMsg").hide();this.setFieldsVisible(["hintmsg"],true)}}});Ext.define("SYNO.DSMMobile.view.Main",{extend:"SYNO.DSMMobile.base.Panel",xtype:"MobileMain",config:{layout:"fit",title:"Generic Main Panel",items:[{xclass:"SYNO.DSMMobile.view.MainContent"}]}});Ext.define("SYNO.DSMMobile.view.MainContent",{extend:"SYNO.DSMMobile.base.Panel",xtype:"MobileMainContent",config:{layout:"fit",title:"Generic Main Panel",items:[{xclass:"SYNO.DSMMobile.view.Navigation"}]},initialize:function(){this.on("painted",function(){this.hubFire("mainContentReady")},this,{single:true});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner.Avatar",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{layout:"fit",cls:"syno-mobile-mainmenubanner-avatar",html:'<div class="syno-mobile-mainmenubanner-avatar-icon"></div>'}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner.AccountInfo",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-dsmmobile-view-mainmenubanner-accountinfo",requires:[],config:{cls:"syno-mobile-mainmenubanner-accountinfo",layout:"fit",html:['<span class="accountinfo-name"></span><br/>','<span class="accountinfo-ip"></span>'].join(""),height:40},initialize:function(){this.callParent(arguments);this.name=this.element.down(".accountinfo-name");this.ip=this.element.down(".accountinfo-ip");this.name.setText(_S("username"));this.ip.setText(SYNO.DSMMobile.utils.getHostName())}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner.MoreAction",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-dsmmobile-view-mainmenubanner-moreaction",requires:[],config:{cls:"syno-mobile-mainmenubanner-moreaction",width:30,height:30}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner.Left",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{cls:"syno-mobile-mainmenubanner-left",layout:"vbox",items:[{xclass:"SYNO.DSMMobile.view.MainMenuBanner.Avatar"},{xclass:"SYNO.DSMMobile.view.MainMenuBanner.AccountInfo",flex:1}],height:112}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner.Right",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{layout:"vbox",items:[{xtype:"syno_panel",height:70},{xclass:"SYNO.DSMMobile.view.MainMenuBanner.MoreAction"}],height:112}});Ext.define("SYNO.DSMMobile.view.MainMenuBanner",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-dsmmobile-view-mainmenubanner",requires:[],config:{cls:"syno-mobile-mainmenubanner",layout:"hbox",items:[{xclass:"SYNO.DSMMobile.view.MainMenuBanner.Left",flex:6},{xclass:"SYNO.DSMMobile.view.MainMenuBanner.Right",flex:1}]}});Ext.define("SYNO.DSMMobile.view.MainMenuList.Store",{extend:"SYNO.DSMMobile.base.Store",config:{xtype:"syno_store",model:"SYNO.DSMMobile.data.MainMenuList",autoLoad:true,sorters:[{property:"order",direction:"ASC"}],grouper:{xtype:"syno_grouper",groupFn:function(a){var b=a.get("type"),c={"function":"function",application:_T("mobile","menu_application")};return c[b]},groupSorterFn:function(a,b){if(a===b){return 0}else{return a==="function"?-1:1}}},menuData:[{title:"Demo Module",xclass:"SYNO.Mobile.Demo.Module",iconCls:"system",drop:(!SYNO.DSMMobile.Global||!SYNO.DSMMobile.Global.isDebugMode),type:"function"},{title:_T("mobile","menu_user_group"),xclass:"SYNO.Mobile.User.Module",iconCls:"user-group",order:10,type:"function"},{title:_T("mobile","menu_shared_folder"),xclass:"SYNO.Mobile.SharedFolder.Module",iconCls:"shared-folders",order:20,type:"function"},{title:_T("mobile","menu_service"),xclass:"SYNO.Mobile.Service.Module",iconCls:"services",order:30,type:"function"},{title:_T("mobile","menu_storage_manager"),xclass:"SYNO.Mobile.StorageManager.Module",iconCls:"storage-manager",order:40,drop:(this._D("support_storage_mgr")!=="yes"||this._D("usbstation")==="yes"),type:"function"},{title:_T("mobile","menu_resource_monitor"),xclass:"SYNO.Mobile.ResourceMonitor.Module",iconCls:"resources-monitor",order:50,type:"function"},{title:_T("mobile","menu_system_info"),xclass:"SYNO.Mobile.System.Module",iconCls:"system",order:60,ha_safemode:true,type:"function"},{title:_T("mobile","menu_firmware"),xclass:"SYNO.Mobile.Firmware.Module",iconCls:"firmware",order:70,badgeName:"update",type:"function"},{title:_T("mobile","menu_ip_block"),xclass:"SYNO.Mobile.IPBlock.Module",iconCls:"ip-blocking",order:80,type:"function"},{title:_T("mobile","menu_package_center"),xclass:"SYNO.Mobile.PackageCenter.Module",iconCls:"package-center",badgeName:"packageCenter",order:90,type:"function"},{title:_T("mobile","menu_log"),xclass:"SYNO.Mobile.Log.Module",iconCls:"logs",order:100,ha_safemode:true,type:"function"},{title:"DS audio",schema:"synoaudio",iconCls:"ds-audio",order:10,type:"application"},{title:"DS cam",schema:"synocam",iconCls:"ds-cam",order:20,type:"application"},{title:"DS file",schema:"synofile",iconCls:"ds-file",order:30,type:"application"},{title:"DS note",schema:"synonote",iconCls:"ds-note",order:50,type:"application"},{title:"DS video",schema:"synovideo",iconCls:"ds-video",order:60,type:"application"},{title:"Synology Chat",schema:"synochat",iconCls:"ds-chat",order:70,type:"application"},{title:"Synology Drive",schema:"synodrive",iconCls:"ds-drive",order:80,type:"application"},{title:"Synology MailPlus",schema:"synomail",iconCls:"ds-mail",order:90,type:"application"},{title:"Synology Photos",schema:"synophotos",iconCls:"ds-photos",order:100,type:"application"}]},initialize:function(){var a=this.getMenuData();a=a.filter(function(b){return !b.drop});if(_S("ha_safemode")){a=a.filter(function(b){return b.ha_safemode})}this.setData(a);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.MainMenuList",{extend:"SYNO.DSMMobile.base.List",xtype:"MobileMainMenuList",config:{cls:"syno-mobile-mainmenu-list",model:"SYNO.DSMMobile.data.MainMenuList",leftTpl:" ",leftCls:"syno-mobile-mainmenu-list-icon list-icon-{iconCls}",centerTpl:"{title}",centerCls:"syno-mobile-mainmenu-item-name",rightTpl:'<tpl if="badge > 0"><div class="syno-mobile-mainmenu-item-badge">{badge}</div></tpl>',iconTpl:null,itemCls:"list-item",grouped:true,pinHeaders:false,isItemList:false,store:{xclass:"SYNO.DSMMobile.view.MainMenuList.Store"}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.mixin.WindowListener",{addWindowListener:function(a,b){this.touchWindowListener(a);this.windowListeners[a].push(b);window.addEventListener(a,b)},removeWindowListener:function(a,b){this.touchWindowListener(a);if(b){window.removeEventListener(a,b);this.windowListeners[a].remove(b)}else{Ext.each(this.windowListeners[a],function(c){window.removeEventListener(a,c)},this);this.windowListeners[a]=[]}},removeAllWindowListener:function(){this.touchWindowListener();Ext.iterate(this.windowListeners,function(a,b){this.removeWindowListener(a)},this)},touchWindowListener:function(a){if(!this.windowListeners){this.windowListeners={}}if(a&&!this.windowListeners[a]){this.windowListeners[a]=[]}}});Ext.define("SYNO.DSMMobile.view.MainMenuSettingIframeComponent",{extend:"Ext.Component",xtype:"syno-dsmmobile-view-mainmenusettingiframecomponent",config:{src:null},updateSrc:function(a){this.div.down("iframe").dom.setAttribute("src",a)},getTemplate:function(){return[{reference:"div",tag:"div",style:"height: 100%; width: 100%; -webkit-overflow-scrolling: touch; overflow-x: hidden; overflow-y: scroll;",html:'<iframe style="border: 0; height: 100%; width: 100%;"></iframe>'}]},initialize:function(){var a=this;this.div.down("iframe").dom.onload=function(){a.fireEvent("iframeonload")};this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.MainMenuSettingIframe",{extend:"SYNO.DSMMobile.base.Panel",config:{layout:"fit",src:null,items:[{xclass:"SYNO.DSMMobile.view.MainMenuSettingIframeComponent"}]},updateSrc:function(b){var a=this.down("syno-dsmmobile-view-mainmenusettingiframecomponent");a.setSrc(b)},initialize:function(){var a=this.down("syno-dsmmobile-view-mainmenusettingiframecomponent");this.relayEvents(a,{iframeonload:"iframeonload"});this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.MainMenuSettingLib",{extend:"Ext.util.Observable",singleton:true,requires:["SYNO.DSMMobile.mixin.WindowListener"],mixins:["SYNO.DSMMobile.mixin.WindowListener","SYNO.DSMMobile.mixin.EventHub"],config:{enableConfirm:true,handlerUrl:"https://mobile.synology.com/mform/control/MobileFormHandler.php",formUrlBase:"https://mobile.synology.com/mform/",enableCaptcha:false},constructor:function(){this.callParent(arguments);this.init()},monitorMessage:function(){var a=this.getEnableConfirm(),c=this;function b(e){var f=null;try{f=JSON.parse(e.data);if(!f.app_name){return}}catch(d){return}if(a&&f.dev_info){c.confirmSendForm(f)}else{c.sendForm(f)}}this.removeWindowListener("message");this.addWindowListener("message",b)},confirmSendForm:function(b){var a=this;this.fireEvent("confirm",function(){a.sendForm(b)})},sendForm:function(b){var c=this.getHandlerUrl();function a(d){try{return JSON.parse(d.responseText)}catch(e){SYNO.Debug.warn("can't decode",d)}}this.fireEvent("start");Ext.Ajax.request({url:c,method:"post",params:b,success:function(d,e){var f=a(d);this.fireEvent("tearDown");if(f&&f.success===1){this.fireEvent("succ")}else{this.fireEvent("fail",f.errcode)}},failure:function(d,e){this.fireEvent("tearDown");this.fireEvent("fail",-1)},scope:this})},getBaseConfig:function(){return{platform:Ext.os.name,app_name:"dsm_mobile",app_version:_S("version"),lang:_S("lang")}},getFeedbackQueryString:function(){var a=this.getBaseConfig();return Ext.Object.toQueryString(a)},getSupportQueryString:function(){var a=this.getBaseConfig(),b=this.getEnableCaptcha();Ext.apply(a,{dev_info:navigator.userAgent});if(b){a.protocol_ver=1}return Ext.Object.toQueryString(a)},buildFeedbackUrl:function(){var a=this.getFormUrlBase();return a+"feedback_form.htm?"+this.getFeedbackQueryString()},buildSupportUrl:function(){var a=this.getFormUrlBase();return a+"support_form.htm?"+this.getSupportQueryString()},getIframeSrc:function(a){switch(a){case"help":return String.format("/mobile/documents/help/{0}/help.html",_S("lang"));case"feedback":return this.buildFeedbackUrl();case"support":return this.buildSupportUrl();case"about":return String.format("/mobile/documents/about/{0}/about.html",_S("lang"));default:return"https://bug.synology.com/index.php"}},openIframe:function(b,a){var c=b.getItemId();this.monitorMessage();this.hubFire("maskDetail");this.hubFire("pushDetail",{xclass:"SYNO.DSMMobile.view.MainMenuSettingIframe",src:this.getIframeSrc(c),listeners:{iframeonload:function(){this.hubFire("unmaskDetail")},destroy:function(){a.clearWindowListener()}}})},openNewTab:function(b,a){var d=b.getItemId(),c;c=window.open(this.getIframeSrc(d),"_blank")},init:function(){this.windowListeners={}}});Ext.define("SYNO.DSMMobile.view.MainMenuSetting",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-dsmmobile-view-mainmenusetting",requires:[],config:{title:_T("mobile","menu_settings"),items:[{xtype:"syno_fieldset",title:_T("mobile","setting_logininfo"),defaults:{xtype:"syno_displayfield"},items:[{label:_S("hostname"),value:SYNO.DSMMobile.utils.getHostName()},{label:_T("mobile","menu_user"),value:_S("username")}]},{xtype:"syno_fieldset",title:" ",items:[{xtype:"syno_button",btnStyle:"red",text:_T("mobile","menu_logout"),handler:function(){this.hubFire("system_logout")}}]},{xtype:"syno_fieldset",title:_T("mobile","setting_document"),bottomPadding:true,defaults:{xtype:"syno_buttonfield",btnStyle:"info",handler:function(){var b=this.getItemId(),a=this.up("syno-dsmmobile-view-mainmenusetting");if(b!=="help"){a.lib.openIframe(this,a)}else{a.lib.openNewTab(this,a)}}},items:[{itemId:"help",label:_T("mobile","setting_help")},{itemId:"feedback",label:_T("mobile","setting_feedback")},{itemId:"support",label:_T("mobile","setting_support")},{itemId:"about",label:_T("mobile","setting_about")}]}]},clearWindowListener:function(){this.lib.removeAllWindowListener()},initLib:function(){this.lib=SYNO.DSMMobile.view.MainMenuSettingLib;this.lib.on({confirm:function(a){Ext.Msg.confirm("","Send Msg ? ",function(b){if(b==="yes"){a()}},this)},start:function(){this.hubFire("maskDetail")},tearDown:function(){this.hubFire("unmaskDetail")},succ:function(){this.hubFire("popDetail")},fail:function(a){Ext.Msg.alert("",_T("error","error_error_system")+a)},scope:this})},initialize:function(){this.initLib();this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.TabletMainMenuSettingDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.DSMMobile.view.MainMenuSetting"],config:{leftBtn:null,items:[{xclass:"SYNO.DSMMobile.view.MainMenuSetting"}]}});Ext.define("SYNO.DSMMobile.view.MoreAction",{extend:"Ext.util.Observable",requires:["SYNO.DSMMobile.view.TabletMainMenuSettingDetail"],mixins:["SYNO.DSMMobile.mixin.EventHub"],singleton:true,openMenu:function(c){var b=this;function a(d){this.hubFire(d)}this.hubFire("openMenu",{showBy:[Ext.get(c),"tc-bc"],options:[{display:_T("mobile","menu_findme"),handler:Ext.bind(a,this,["system_startFindMe"])},{display:_T("mobile","menu_reboot"),handler:Ext.bind(a,this,["system_reboot"])},{display:_T("mobile","menu_shutdown"),handler:Ext.bind(a,this,["system_shutdown"])},{display:_T("mobile","menu_desktop_edition"),handler:Ext.bind(a,this,["system_forceDesktop"])},{display:_T("mobile","menu_settings"),handler:function(){var f={};var e={xclass:"SYNO.DSMMobile.view.TabletMainMenuSettingDetail"};var d={xclass:"SYNO.DSMMobile.view.PhoneMainMenuSettingDetail"};b.hubFire("openDetail",{tablet:e,phone:d,common:f})}}]})}});Ext.define("SYNO.DSMMobile.view.MainMenu",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.DSMMobile.view.MoreAction","SYNO.DSMMobile.view.MainMenuBanner"],xtype:"MobileMainMenu",config:{cls:"syno-mobile-mainmenu",layout:"vbox",width:320,titleBar:{xclass:"SYNO.DSMMobile.view.MainMenuBanner",height:112},content:{xclass:"SYNO.DSMMobile.view.MainMenuList",flex:1}},initTablet:function(){var a=this.getTitleBar(),b=this.getContent();this.setItems([a,b])},initPhone:function(){var a=this.getTitleBar(),b=this.getContent();this.setItems([a,b])},initialize:function(){if(SYNO.DSMMobile.util.Env.isPhone){this.initPhone()}else{this.initTablet()}this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.Navigation",{extend:"SYNO.DSMMobile.base.NavigationView",requires:["SYNO.DSMMobile.view.LandingPage"],xtype:"MobileNavigation",config:{layout:{type:"card"},items:[{xclass:"SYNO.DSMMobile.view.LandingPage"}],navigationBar:{cls:"syno-mobile-content-navigation-bar"},listeners:{painted:function(){this.setupSligingMenu()}},extraBtn:null,navBtn:null},initialize:function(){if(SYNO.DSMMobile.util.Env.isPhone){this.createNavBtn()}this.callParent(arguments)},createNavBtn:function(a){var d=this,c=this.getNavigationBar(),b;b=Ext.apply({xtype:"syno_button",align:"left",cls:"syno-mobile-titlebar-button syno-mobile-icon-nav",handler:function(){d.hubFire("toggleSlidingMenu")}},a);c.add(Ext.factory(b))},setupSligingMenu:function(){var a=this;this.element.on("swipe",function(b){if(b.direction==="right"){a.hubFire("showSlidingMenu")}})}});Ext.define("SYNO.DSMMobile.view.Panel",{extend:"SYNO.DSMMobile.base.Panel",config:{html:"test"}});Ext.define("SYNO.DSMMobile.view.PhoneMainMenuSettingDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.DSMMobile.view.TabletMainMenuSettingDetail"],config:{leftBtn:null,items:[{xclass:"SYNO.DSMMobile.view.MainMenuSetting"}]}});Ext.define("SYNO.DSMMobile.view.phone.Main",{extend:"SYNO.DSMMobile.view.Main",config:{title:"Phone Panel"},initialize:function(){console.log("view.phone.Main initialized");this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.subdir.Panel",{extend:"SYNO.DSMMobile.base.Panel",config:{html:"subdir test"}});Ext.define("SYNO.DSMMobile.view.subdir.phone.Panel",{extend:"SYNO.DSMMobile.view.subdir.Panel",config:{html:"subdir Phone view"}});Ext.define("SYNO.DSMMobile.view.tablet.Main",{extend:"SYNO.DSMMobile.view.Main",config:{title:"Tablet Panel",items:[{docked:"left",width:320,xclass:"SYNO.DSMMobile.view.MainMenu"},{xclass:"SYNO.DSMMobile.view.MainContent"}]},initialize:function(){console.log("view.tablet.Main initialized");this.callParent(arguments)}});Ext.define("SYNO.Mobile.Demo.TabA",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.DSMMobile.view.List"],config:{title:"TabA",scrollable:true,layout:"vbox",items:[{xtype:"syno_fieldset",title:"This is a fieldset",items:[{xtype:"syno_button",text:"Open dialog",handler:function(){Ext.factory({xtype:"syno_dialog"})}},{xtype:"syno_button",text:"Open ActionSheet",handler:function(){var a=[{text:"This is decline style",ui:"decline",handler:function(){console.log("decline handler",arguments);this.parent.close()}},{text:"This is normal style"},{text:"This is confirm style",ui:"confirm"}];Ext.factory({xtype:"syno_actionsheet",items:{xtype:"syno_panel",defaults:{xtype:"syno_button"},items:a}})}},{xtype:"syno_button",text:"Open ActionSheet v2",handler:function(){Ext.factory({xtype:"syno_actionsheet",cancelBtn:true,options:[{display:"Option A",handler:function(){console.log("option A is clicked. Scope: ",this)},scope:this}]})}},{xtype:"syno_button",text:"OpenMenu",handler:function(){this.hubFire("openMenu",{showBy:[this.element,"r-l"],options:[{display:"Option A",handler:function(){console.log("option A is clicked. Scope: ",this)},scope:this},{display:"Option B"},{display:"Option C"}]})}}]},{xtype:"syno_fieldset",title:"Another fieldset",items:[{xtype:"syno_togglefield",name:"demo_togglefield",label:"This is a togglefield"},{xtype:"syno_selectfield",name:"demo_selectfield",label:"This is a selectfield",options:[{text:"1st option",value:"first"},{text:"2nd option",value:"second"},{text:"3rd option",value:"third"}]},{xtype:"syno_selectfield",name:"demo_selectfield2",label:"selectfield with store",store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.Volume",autoLoad:true},displayField:"display_name",valueField:"volume_path"},{xtype:"syno_field",label:"This is a field test"},{xtype:"syno_textfield",name:"demo_textfield",vtype:"email",pattern:/[^ ]{5,10}/,validator:function(a){console.log("validator is called",a);return true},label:"This is a textfield",value:"default in textfield"},{xtype:"syno_searchfield",name:"demo_searchfield",label:"This is a search field",value:"default in searchfield"},{xtype:"syno_checkboxfield",name:"demo_checkfield",label:"This is a checkbox field"},{xtype:"syno_displayfield",label:"This is a display field",value:"display field value",textColor:"green"},{xtype:"syno_displayfield",disablePhoneMultiLine:true,label:"Disable Phone-multi-line",value:"multi-line value",textColor:"orange"},{xtype:"syno_buttonfield",label:"This is a button field",value:"button field value",handler:function(a){console.log(a,"-> handler is called")}},{xtype:"datepickerfield",label:"This is a datepicker field"},{xtype:"syno_radiofield",name:"demo_radio",value:"red",label:"RadioField Red"},{xtype:"syno_radiofield",name:"demo_radio",value:"green",label:"RadioField Green",checked:true},{xtype:"syno_radiofield",name:"demo_radio",value:"blue",label:"RadioField Breen"},{xtype:"syno_button",text:"Get Values",handler:function(a,b){console.log(a.parent.parent.getValues())}}]}]}});Ext.define("SYNO.Mobile.Demo.TabB.List",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.DSMMobile.data.User"],config:{model:"SYNO.DSMMobile.data.User",itemTpl:["<div>","Name: {name}<br/>","OtherInfo: {description} / {expired} / {email} <br/>","</div>"],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.User",autoLoad:true}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.Demo.TabB",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{title:"TabB title",html:null,layout:"vbox",items:[{xclass:"SYNO.Mobile.Demo.TabB.List",height:200},{xtype:"syno_datepicker",height:100,yearFrom:2015},{xtype:"syno_panel",height:100,items:[{xtype:"syno_datepicker",height:100}]}]}});Ext.define("SYNO.Mobile.Demo.TabC",{extend:"SYNO.DSMMobile.base.Panel",config:{title:"TabC title",html:null,scrollable:true,layout:"vbox",items:[{xclass:"SYNO.DSMMobile.view.Panel",items:[{xtype:"syno_button",text:"EventHub Test",handler:function(){console.log("EventHub Test");this.hubOn("testhub",function(){console.log("testhubon is called",arguments)});this.hubFire("testhub","a","b","c","d","e")}}]}]}});Ext.define("SYNO.Mobile.Demo.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.Demo.TabA","SYNO.Mobile.Demo.TabB","SYNO.Mobile.Demo.TabC"],config:{tabBarPosition:"bottom",items:[{title:"Tab A",iconCls:"syno-mobile-icon-resource-performance",xclass:"SYNO.Mobile.Demo.TabA"},{title:"Tab B",iconCls:"syno-mobile-icon-storage-volume",xclass:"SYNO.Mobile.Demo.TabB"},{title:"Tab C",iconCls:"syno-mobile-icon-system-system",xclass:"SYNO.Mobile.Demo.TabC"}]}});Ext.define("SYNO.Mobile.Firmware.CountDown",{extend:"SYNO.DSMMobile.base.Panel",requires:[],xtype:"syno-mobile-firmware-countdowncircle",config:{cls:"firmware-upgrade-panel",style:"background: rgba(32, 32, 32, 0.95)",layout:{type:"vbox",pack:"center"},items:[{xtype:"container",cls:"firmware-upgrade-circle-title",html:_T("mobile","firmware_restart_dsm")},{xtype:"container",cls:"firmware-upgrade-circle-ct",items:[{xtype:"syno_countdowncircle",cls:"firmware-circle",fallbackColor:"#FFFFFF",startColor:"rgba(15, 135, 255, 0)",middleColor:"rgba(15, 135, 255, 0.45)",stopColor:"rgba(15, 135, 255, 0.9)",fillColor:"rgba(255, 255, 255, 0)",gradientWidth:(SYNO.DSMMobile.util.Env.isSmallDevice)?24:(SYNO.DSMMobile.util.Env.isTablet)?38:28,height:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,width:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,radius:(SYNO.DSMMobile.util.Env.isSmallDevice)?94:(SYNO.DSMMobile.util.Env.isTablet)?168:108,canvasConfig:{height:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,width:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216}}]}],listeners:{painted:function(){this.down("syno_countdowncircle").draw()}}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.Firmware.Progress",{extend:"SYNO.DSMMobile.base.Panel",requires:[],xtype:"syno-mobile-firmware-progress",config:{cls:"firmware-upgrade-panel",style:"background: rgba(32, 32, 32, 0.95)",layout:{type:"vbox",pack:"center"},owner:null,items:[{xtype:"container",cls:"firmware-upgrade-circle-title",html:_T("mobile","firmware_updating_dsm")},{xtype:"container",cls:"firmware-upgrade-circle-ct",items:[{xtype:"syno_progresscircle",cls:"firmware-circle",fillColor:"rgba(255, 255, 255, 0)",stopColor:"rgba(15, 135, 255, 1)",startColor:"rgba(15, 135, 255, 1)",middleColor:"rgba(15, 135, 255, 1)",bgConfig:{cls:"firmware-upgrade-progress-bg"},gradientWidth:(SYNO.DSMMobile.util.Env.isSmallDevice)?24:(SYNO.DSMMobile.util.Env.isTablet)?38:28,height:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,width:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,radius:(SYNO.DSMMobile.util.Env.isSmallDevice)?94:(SYNO.DSMMobile.util.Env.isTablet)?168:108,canvasConfig:{height:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216,width:(SYNO.DSMMobile.util.Env.isSmallDevice)?188:(SYNO.DSMMobile.util.Env.isTablet)?336:216}}]},{xtype:"container",itemId:"step",cls:"firmware-upgrade-progress-stepmessage",html:_T("update","update_progress_prepared")}],listeners:{painted:function(){this.down("syno_progresscircle").draw(0)}}},updateProgress:function(a,b){this.down("syno_progresscircle").draw(a);this.down("#step").setHtml(b)},monitorProgress:function(){var a=this.getOwner();if(a){a.on("updateProgress",this.updateProgress,this)}},initialize:function(){this.monitorProgress();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Firmware.Update",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-mobile-firmware-update",requires:["SYNO.Mobile.Firmware.Progress","SYNO.Mobile.Firmware.CountDown"],config:{firmware:null,layout:"vbox",scrollable:true,upgradeSetting:null,items:[{xtype:"syno_fieldset",title:_T("update","update_adv_setting"),defaults:{xtype:"syno_displayfield"},items:[{xtype:"syno_selectfield",itemId:"autoupdate_type",label:_T("mobile","firmware_os_upgrade"),name:"autoupdate_type",labelWidth:"30%",mobileLabelWidth:"100%",cls:"phone-multi-line",autoSelect:false,options:[{text:_T("mobile","update_setting_option_type_auto_install_security"),value:"hotfix-security"},{text:_T("mobile","update_setting_option_type_auto_install"),value:"hotfix"},{text:_T("mobile","update_setting_option_type_notify_me"),value:"notify"}],listeners:{change:function(f,e,b){var d=this.up("syno-mobile-firmware-update"),c=d.getUpgradeSetting(),a=SYNO.DSMMobile.webapi;f.disable();Ext.apply(c,{autoupdate_type:f.getValue()});a.SetUpgradeSetting(c,function(g,h){if(this.isDestroyed){return}f.enable()},this)}}},{label:_T("update","update_version"),name:"firmware_ver"},{label:_T("common","status"),itemId:"update_status",name:"update_status",labelWidth:"30%",htmlEncode:false,value:'<span class="green">'+_T("update","check_new_dsm")+"</span>"},{label:_T("common","status"),itemId:"download_status",htmlEncode:false,hidden:true}]},{xtype:"syno_fieldset",title:"Update",itemId:"downloadFieldSet",hidden:true,items:[{itemId:"downloadBtn",xtype:"syno_button",text:_T("update","update_btn_download"),hidden:true,handler:function(){var a=this.up("syno-mobile-firmware-update");a.startDownload(this,a.getFirmware().lastVersion)}},{itemId:"updateBtn",xtype:"syno_button",text:_T("update","update_btn_upgrade"),hidden:true,handler:function(){var a=this.up("syno-mobile-firmware-update");a.doUpgradeIfPrecheckPass(this)}},{itemId:"cancelBtn",xtype:"syno_button",text:_T("common","cancel"),hidden:true,handler:function(){var a=this.up("syno-mobile-firmware-update");a.cancelDownload(this)}}]}]},refreshDom:function(){var a=this.getFirmware();SYNO.DSMMobile.utils.bindFieldValue(this,a)},refreshPage:function(){var a=SYNO.DSMMobile.webapi;a.SystemFirmwareInfo(function(b,d){if(this.isDestroyed){return}if(d){var c=this.getFirmware()||{};Ext.apply(c,{firmware_ver:d.firmware_ver});this.setFirmware(c);this.refreshDom()}this.checkDSMLastInfo(false);this.checkAutoupdateOptions()},this)},checkDSMLastInfo:function(b){var a=SYNO.DSMMobile.webapi,d,c=this.getFirmware()||{};d=[{apiType:"StatusUpgrade"},{apiType:"CheckUpgradeServer"},{apiType:"ProgressUpgradeServerDownload"},{apiType:"GetUpgradeSetting"}];a.sendCompoundWebAPI(d,function(l,e,m,g,j){var h={},f,i,k,n=this.getUpgradeSetting()||{};if(this.isDestroyed){return}if(!l){c.update_status=this.formatStatus(_T("update","check_new_dsm_err"),"red");this.setFirmware(c);this.refreshDom();return}f=e.CheckUpgradeServer.succ&&e.ProgressUpgradeServerDownload.succ&&e.GetUpgradeSetting.succ;if(f){n=e.GetUpgradeSetting.resp;h.lastDSMInfo=e.CheckUpgradeServer.resp;h.lastDownloadStatus=e.ProgressUpgradeServerDownload.resp.status}else{c.update_status=this.formatStatus(_T("update","check_new_dsm_err"),"red")}i=e.StatusUpgrade.succ;k=e.StatusUpgrade.resp;if(i&&k){h.status=k.status;c.patch_info=k.patch_info}if(f===true){c.lastVersion=h.lastDSMInfo.version||"";switch(k.status){case"none":Ext.apply(c,this.updateStatusNone(h));break;case"downloading":this.startPollingDownloadStatus();break;case"ready_upgrade":Ext.apply(c,this.updateStatusReady(h));break;case"upgrading":Ext.apply(c,this.updateStatusUpdating());break;case"system_busy":Ext.apply(c,this.updateStatusBusy(h));break;default:break}}this.setUpgradeSetting(n);this.setFirmware(Ext.apply(c,{autoupdate_type:n.autoupdate_type}));this.refreshDom()},this)},checkAutoupdateOptions:function(){var a=SYNO.DSMMobile.webapi;a.GetUserService(function(b,e){if(this.isDestroyed){return}var d=this.down("#autoupdate_type");var c=d.getOptions();if(b&&e&&e.Session&&e.Session.show_autoupdatetype_notify==="no"){d.setOptions(c.filter(function(f){return f.value!=="notify"}))}},this)},showCancelBtn:function(){this.down("#downloadFieldSet").show();this.down("#cancelBtn").show()},showUpdateBtn:function(){this.down("#downloadFieldSet").show();this.down("#updateBtn").show()},showDownloadBtn:function(b){var a=this.down("#downloadBtn");if(!Ext.isEmpty(b)){a.setText(b)}a.enable();a.show();this.down("#downloadFieldSet").show()},formatStatus:function(b,a){return'<span class="'+a+'">'+b+"</span>"},updateDownloadFieldset:function(){var c=false,a=["downloadBtn","cancelBtn","updateBtn"],b;for(b=0;b<a.length&&c===false;b++){if(!this.down("#"+a[b]).getHidden()){c=true}}this.down("#downloadFieldSet")[(c)?"show":"hide"]()},getIfClusterExist:function(a){var b="SYNO.Virtualization.Cluster";if(Ext.isDefined(SYNO.API.GetKnownAPI(b))){this.sendWebAPI({api:b,method:"check_exist",version:1,callback:function(d,c){a(d?c.exist:false)}})}else{a(false)}},startUpdate:function(d,b){var a=[];d.disable();SYNO.DSMMobile.utils.mask();var c=this;this.getIfClusterExist(function(g){var e=String.format(_T("update","update_confirm_upgrade"),10,10*2);SYNO.DSMMobile.utils.unmask();if("now"===b.reboot){var f=g?20:10;e=String.format(_T("update","update_confirm_upgrade"),f,f*2)}else{if(b.restart_all){e=_T("update","update_confirm_upgrade_restart_all")}else{if(b.restart_some){if(b.restart_servs){Ext.each(b.restart_servs,function(h){a.push(_T(h.section,h.key))})}e=String.format("{0} <br/>{1}",_T("update","update_confirm_upgrade_restart_some"),a.concat(b.restart_pkgs).join(", "))}else{e=_T("update","update_confirm_upgrade_none")}}}Ext.Msg.confirm(_T("tree","leaf_update"),e,function(h){if(h==="yes"){c.doUpgrade(d);return}d.enable()},c)})},needToShowDNSWarning:function(a,c,b){},doUpgradeIfPrecheckPass:function(c){var b=this;var a=SYNO.DSMMobile.webapi;c.disable();a.UpgradePrecheck(function(d,e){if(b.isDestroyed){return}if(!d||_S("ha_running")){c.enable();Ext.Msg.alert(_T("tree","leaf_update"),_T("mobile","updater_precheck_fail_desc"));return}b.startUpdate(c,b.getFirmware().patch_info)},b)},doUpgrade:function(b){var a=SYNO.DSMMobile.webapi;this.hubFire("openFullScreen",{xclass:"SYNO.Mobile.Firmware.Progress",owner:this});a.StartUpgrade(function(c,d){if(this.isDestroyed){return}if(!c){b.enable();Ext.Msg.alert(_T("tree","leaf_update"),SYNO.API.getErrorString(d));return}this.startPollingUpgradeStatus()},this)},startPollingUpgradeStatus:function(){if(!this.upgradePollingTaskId){this.upgradePollingTaskId=setInterval(Ext.createDelegate(this.requestUpgradeStatus,this),6000)}},stopPollingUpgradeStatus:function(){if(this.upgradePollingTaskId){clearInterval(this.upgradePollingTaskId)}},requestUpgradeStatus:function(){var a=SYNO.DSMMobile.webapi;a.ProgressUpgrade(function(b,c){if(this.isDestroyed){return}if(!b){return}switch(c.step){case"failed":this.updateUpgradeFailed(c);break;case"preparing":case"waiting_remote_upgrading":case"analying_system":case"updating_programs":case"updating_configurations":case"start_service":this.updateUpgradeActioningMsg(c.step,c.percent);break;case"reboot":this.updateUpgradeReboot();break;case"finish":this.updateUpgradeFinish();break;default:break}},this)},updateUpgradeFailed:function(b){var a=String.format(_T("update","error_update_unknown"),b.errno);if(!Ext.isEmpty(_T("update",b.err_desc))){a=String.format(_T("update",b.err_desc),b.errno)}if(!Ext.isEmpty(b.err_msg)){a=String.format("{0}<br>(Notes: {1})",a,b.err_msg)}Ext.Msg.alert(_T("tree","leaf_update"),a,function(){window.location.href="/"});this.stopPollingUpgradeStatus()},updateUpgradeActioningMsg:function(a,i){var k=0,f=0,l=0,h=0,g=0,d=0,e=0,c=0,m=0,b,j=this.getFirmware().patch_info;switch(a){case"preparing":k=i;b=_T("update","update_progress_prepared");break;case"waiting_remote_upgrading":k=100;f=i;b=_T("update","upgrade_remote");break;case"analying_system":k=100;f=100;l=i;b=_S("ha_running")?_T("update","upgrade_local_alz"):_T("update","upgrade_alz");break;case"updating_programs":k=100;f=100;l=100;h=i;b=_S("ha_running")?_T("update","upgrade_local_prg"):_T("update","upgrade_prg");break;case"updating_configurations":k=100;f=100;l=100;h=100;g=i;b=_S("ha_running")?_T("update","upgrade_local_cfg"):_T("update","upgrade_cfg");break;case"start_service":k=100;f=100;l=100;h=100;g=100;d=i;_T("update","upgrade_service");break;default:break}if(j.type!=="smallupdate"){m+=k;e+=1}if(_S("ha_running")){m+=f;e+=1}m+=l;e+=1;m+=h;e+=1;if(j.type!=="smallupdate"){m+=g;e+=1}if(j.restart_some===true||j.restart_all===true){m+=d;e+=1}c=m/e;this.fireEvent("updateProgress",c/100,b)},updateUpgradeReboot:function(){var c=SYNO.DSMMobile.webapi,a=0,b=600,e={url:"webman/pingpong.cgi",startTime:new Date().getTime(),timeLimit:b*1000,success:function(f,h){var j=f.responseText,i=Ext.JSON.decode(j),g=new Date().getTime();if(a<2){a=0;return}if((g-h.startTime)>h.timeLimit){window.location.href="/"}if(i&&i.boot_done){window.location.href="/"}},failure:function(h,g){var f=new Date().getTime();if(!g.timeoutNotified&&(f-g.startTime)>g.timeLimit){Ext.Msg.alert(_D("product"),_JSLIBSTR("uicommon","system_reboot_timeout"));g.timeoutNotified=true}a++}},d=function(){Ext.Ajax.request(e)};this.stopPollingUpgradeStatus();this.hubFire("openFullScreen",{xclass:"SYNO.Mobile.Firmware.CountDown"});c.Reboot();this.reqId=setInterval(d,5000)},updateUpgradeFinish:function(){this.stopPollingUpgradeStatus();this.fireEvent("updateProgress",1,_T("update","upgrade_success"));Ext.Msg.alert(_T("tree","update_dsm_manually"),_T("update","update_confirm_refresh"),function(){window.location.href="/"})},startDownload:function(c,a){c.disable();c.hide();var b=SYNO.DSMMobile.webapi;this.updateDownloadStatus(0);b.StartUpgradeServerDownload(function(d,e){if(this.isDestroyed){return}if(!d){this.updateDownloadFail();return}this.startPollingDownloadStatus(c,a)},this)},cancelDownload:function(b){var a=SYNO.DSMMobile.webapi;b.disable();a.CancelUpgradeSeverDownload(function(c,d){if(this.isDestroyed){return}if(!c){b.enable();return}b.hide();this.stopPollingDownloadStatus(true)},this)},startPollingDownloadStatus:function(b,a){if(!this.downloadPollingTaskId){this.downloadPollingTaskId=setInterval(Ext.createDelegate(this.requestDownloadStatus,this,[b,a]),5000)}},stopPollingDownloadStatus:function(b,a){if(this.downloadPollingTaskId){clearInterval(this.downloadPollingTaskId);this.downloadPollingTaskId=null}if(this.isDestroyed){return}this.down("#cancelBtn").hide();this.down("#download_status").hide();if(b){this.showDownloadBtn(a)}},requestDownloadStatus:function(d,b){var c=SYNO.DSMMobile.webapi,a;c.ProgressUpgradeServerDownload(function(e,g,f){if(!e){this.updateStatusFail(f);return}a=g.status;switch(a){case"downloading":this.updateDownloadStatus(g.percent);break;case"finished":this.stopPollingDownloadStatus(false);this.refreshPage();break;case"stopped":case"none":this.stopPollingDownloadStatus(true);break;case"failed":this.updateDownloadFail();break;default:break}},this)},updateDownloadFail:function(){if(this.isDestroyed){return}this.down("#cancelBtn").hide();Ext.Msg.alert(_T("error","error_error"),_T("update","update_dsm_download_err"));this.stopPollingDownloadStatus(true,_T("update","update_btn_retry"))},updateDownloadStatus:function(a){if(this.isDestroyed){return}this.down("#download_status").show();this.down("#download_status").setValue(this.formatStatus(String.format("{0} ({1}%)",_T("update","update_dsm_downloading"),a)));this.showCancelBtn()},getDownloadStatus:function(b,a){return String.format(_T("update",b),a)},updateStatusNone:function(b){var c,a="green";if(this.isDestroyed){return{}}if(false===b.lastDSMInfo.available){return{update_status:this.formatStatus(_T("update","update_dsm_no_new_dsm"),a)}}if(_S("is_hybrid_ha")){}else{if(b.lastDownloadStatus==="failed"){this.showDownloadBtn(_T("update","update_btn_retry"))}else{this.showDownloadBtn(_T("update","update_btn_download"))}}c=this.getDownloadStatus("update_dsm_download",b.lastDSMInfo.version);return{update_status:this.formatStatus(c,a)}},updateStatusReady:function(b){var c,a="green";this.stopPollingDownloadStatus();if(this.isDestroyed){return}this.showUpdateBtn();c=this.getDownloadStatus("update_dsm_upgrade",b.lastDSMInfo.version);return{update_status:this.formatStatus(c,a)}},updateStatusUpdating:function(){return{update_status:this.formatStatus(_T("update","dsm_busy_updating"),"red")}},updateStatusBusy:function(c){var a=c.status,d=a.reason,e,b={};switch(d){case"volume is building.":e=_T("volume","volume_busy_waiting");break;case"no enough volume space.":if(_D("supportraid","no")){e=String.format(_T("update","update_error_no_root"),a.require_volume_size)}else{e=String.format(_T("update","update_error_no_vol"),a.require_volume_size)}break;case"package is busy.":e=_T("pkgmgr","error_occupied");break;case"disk is secure erasing.":e=_T("uicommon","err_disk_secure_erasing");break;default:e=_T("error","error_system_busy");break}b.update_status=this.formatStatus(e,"red");return b},initialize:function(){this.callParent(arguments);this.refreshPage()}});Ext.define("SYNO.Mobile.Firmware.Main",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.Firmware.Update"],config:{layout:"fit",items:[{xclass:"SYNO.Mobile.Firmware.Update"}]}});Ext.define("SYNO.Mobile.base.CanFindModuleMixin",{findModule:function(){var b,a;for(b=this.parent;b;b=b.parent){if(b instanceof SYNO.Mobile.base.Module){return b}if(b instanceof SYNO.DSMMobile.base.PhoneDetail||b instanceof SYNO.DSMMobile.base.TabletDetail){a=b.getModule();if(a){return a}}}}});Ext.define("SYNO.Mobile.IPBlock.AddIP",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.base.CanFindModuleMixin"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{ipType:null,items:[{xtype:"syno_fieldset",title:" ",items:[{xtype:"syno_textfield",name:"ip",allowBlank:null,vtype:"looseip"},{xtype:"syno_selectfield",name:"block_days",options:[{text:_T("autoblock","forever"),value:0},{text:"1 "+_T("common","time_day"),value:1},{text:"3"+_T("common","time_days"),value:3},{text:"7"+_T("common","time_days"),value:7},{text:"14"+_T("common","time_days"),value:14},{text:"30"+_T("common","time_days"),value:30}]}]}]},saveChanges:function(e,f,d){var b=SYNO.DSMMobile.webapi,g=this.getIpType(),a,c;a=this.getValues();c=[{apiType:"GetAutoBlockRules",params:a.ip},{apiType:"CreateAutoBlockRules",params:{type:g,block_days:a.block_days,ip:[a.ip]}}];b.sendCompoundWebAPI(c,true,function(h,i){if(!h){return}if(!i.has_fail){e.call(d||window)}else{f.call(d||window,i.code);return}})},onBeforeTapDone:function(e,d){var f=this,b=this.isValid(),c=this.findModule();if(this.isDone){return true}if(this.isSaving){return false}if(b!==true){Ext.Msg.alert("",b);return false}this.isSaving=true;e.disable();function a(){f.isSaving=false;e.enable()}function g(){a();f.isDone=true;this.parent.fireEvent("triggerTapDone",e,d);c.fireEvent("refreshList")}function h(i,j){Ext.Msg.alert("",j||SYNO.API.getErrorString(i));a()}this.saveChanges(g,h,this);return false},monitorParent:function(){this.on("painted",function(){this.parent.on("beforeTapDone",this.onBeforeTapDone,this)},this,{single:true})},initUI:function(){var c=this.getIpType(),b=this.getFields("ip"),a=this.getFields("block_days");if(c==="allow"){b.setLabel(_T("autoblock","autoblock_allow_ip"));b.setPlaceHolder(_T("autoblock","autoblock_allow_ip"));a.setValue(0);a.hide()}else{b.setLabel(_T("autoblock","autoblock_ip"));b.setPlaceHolder(_T("autoblock","autoblock_ip"));a.setLabel(_T("autoblock","autoblock_expired_day"))}},initialize:function(){this.initUI();this.monitorParent();this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.IPList",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.DSMMobile.data.IPBlock"],config:{model:"SYNO.DSMMobile.data.IPBlockAll",enableIconTapEvent:true,monitorRefreshEvent:true,grouped:true,pinHeaders:false,cls:"ipblock-list",leftTpl:null,centerTpl:['<span class="ipblock-ip-text">{ip}<br/></span>','<span class="ipblock-until-text">{[this.getType(values)]} </span>',"{[this.getDate(values)]}"],rightTpl:null,iconCls:"del-icon",itemTpl:[{getType:function(a){var b=a.compound_webapi_api_type;switch(b){case"ListAutoBlockAllowedRules":return _T("mobile","ipblock_allow_until");case"ListAutoBlockDeniedRules":return _T("mobile","ipblock_block_until");default:return"Unknown"}},getDate:function(b){var g=b.expire_date,f=b.compound_webapi_api_type==="ListAutoBlockAllowedRules"?"allow":"deny",e='<span class="ipblock-date-text {0}">{1}</span>',d,c,a="";if(g===0){a=f==="allow"?"date-allow-forever":"date-block-forever";c=_T("autoblock","forever")}else{c=new Date(g*1000).toISOString().split("T")[0];d=new Date();if(c<d){a="date-exipred"}}return e.format(a,c)}}],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.IPBlockAll",autoLoad:true,grouper:{xtype:"syno_grouper",groupFn:function(a){var b=a.get("compound_webapi_api_type");switch(b){case"ListAutoBlockAllowedRules":return _T("autoblock","autoblock_white_list");case"ListAutoBlockDeniedRules":return _T("autoblock","autoblock_view_list");default:return"Unknown"}},groupSorterFn:"ASC"}},listeners:{iconTap:"onDelIconTap"}},onDelIconTap:function(b,d,f,a,e,c){var g=a.get("ip"),h;switch(a.get("compound_webapi_api_type")){case"ListAutoBlockAllowedRules":h="allow";break;case"ListAutoBlockDeniedRules":h="deny";break;default:h=null}Ext.Msg.confirm("",_T("mobile","ipblock_confirm_delete").format(g),function(i){if(i==="yes"){this.deleteIp(h,g)}},this)},deleteIp:function(f,e,h,i){var g=SYNO.DSMMobile.webapi;var c={ip:e,type:f};function d(){}function b(j,k){Ext.Msg.alert("",k||SYNO.API.getErrorString(j))}function a(){this.refreshList()}g.DeleteAutoBlockRules(c,function(j,k){a.call(this);if(!j){b.call(this,k.code);return}d.call(this);if(Ext.isFunction(h)){h.apply(i||window,arguments)}},this)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.Main",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.IPBlock.IPList"],config:{layout:"fit",items:[{xclass:"SYNO.Mobile.IPBlock.IPList"}]}});Ext.define("SYNO.Mobile.IPBlock.TabletAddIPDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.IPBlock.AddIP"],config:{ipType:null},initialize:function(){var a=this.getIpType();this.setItems([{xclass:"SYNO.Mobile.IPBlock.AddIP",ipType:a}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.PhoneAddIPDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.IPBlock.TabletAddIPDetail"],config:{ipType:null},initialize:function(){var a=this.getIpType();this.setItems([{xclass:"SYNO.Mobile.IPBlock.AddIP",ipType:a}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.Setting",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.base.CanFindModuleMixin"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{title:_T("mobile","menu_ip_block"),settingInfo:null,items:[{xtype:"syno_fieldset",title:" ",name:"enableFieldset",items:[{xtype:"syno_togglefield",name:"enable",label:_T("autoblock","autoblock_enable")}]},{xtype:"syno_fieldset",title:" ",name:"configFieldset",items:[{xtype:"syno_selectfield",name:"attempts",label:_T("autoblock","autoblock_attempts"),autoInsert:true,options:[{text:"1",value:1},{text:"2",value:2},{text:"3",value:3},{text:"4",value:4},{text:"5",value:5},{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10},{text:"15",value:15},{text:"20",value:20},{text:"25",value:25},{text:"30",value:30}]},{xtype:"syno_selectfield",name:"within_mins",unit:_T("common","time_minutes"),label:_T("autoblock","autoblock_within_mins"),autoInsert:true,options:[{text:"1 "+_T("common","time_minute"),value:1},{text:"3 "+_T("common","time_minutes"),value:3},{text:"5 "+_T("common","time_minutes"),value:5},{text:"10 "+_T("common","time_minutes"),value:10},{text:"30 "+_T("common","time_minutes"),value:30},{text:"60 "+_T("common","time_minutes"),value:60},{text:"1440 "+_T("common","time_minutes"),value:1440}]},{xtype:"syno_togglefield",name:"enable_expire",label:_T("autoblock","autoblock_expired_enable"),listeners:{change:function(d,b,a){var c=this.up("formpanel").getFields("expire_day");if(b){c.enable()}else{c.disable()}}}},{xtype:"syno_selectfield",name:"expire_day",unit:_T("common","time_days"),label:_T("autoblock","autoblock_expired_day"),autoInsert:true,options:[{text:"1 "+_T("common","time_day"),value:1},{text:"3 "+_T("common","time_days"),value:3},{text:"7 "+_T("common","time_days"),value:7},{text:"14 "+_T("common","time_days"),value:14},{text:"30 "+_T("common","time_days"),value:30},{text:"90 "+_T("common","time_days"),value:90},{text:"365 "+_T("common","time_days"),value:365}]}]}]},refreshDom:function(){var d=this.getSettingInfo(),a=this.getFields("enable_expire"),c=this.getFields("expire_day"),b={enable:"enable",attempts:"attempts",expire_day:"expire_day",within_mins:"within_mins"};if(d.expire_day===0){a.setValue(0);c.disable()}else{a.setValue(1)}SYNO.DSMMobile.utils.bindFieldValue(this,d,b)},refreshPage:function(){var a=SYNO.DSMMobile.webapi;a.GetAutoBlock(function(b,c){if(!b){return}this.setSettingInfo(c);this.refreshDom()},this)},saveChanges:function(c,e,b){var a=SYNO.DSMMobile.webapi,d;d=this.getValues();if(!d.enable_expire){d.expire_day=0}a.SetAutoBlock(d,function(f,g){if(!f){e.call(b||window);return}c.call(b||window)},this)},onBeforeTapDone:function(c,b){var d=this;if(this.isDone){return true}if(this.isSaving){return false}this.isSaving=true;c.disable();function a(){d.isSaving=false;c.enable()}function e(){a();d.isDone=true;this.parent.fireEvent("triggerTapDone",c,b)}function f(){a()}this.saveChanges(e,f,this);return false},monitorParent:function(){this.on("painted",function(){this.parent.on("beforeTapDone",this.onBeforeTapDone,this)},this,{single:true})},initialize:function(){this.monitorParent();this.refreshPage();this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.TabletSettingDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.IPBlock.Setting"],config:{},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.IPBlock.Setting"}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.IPBlock.PhoneSettingDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.IPBlock.TabletSettingDetail"],config:{},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.IPBlock.Setting"}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.SingleLog",{extend:"SYNO.DSMMobile.base.Panel",mixins:[],requires:[],config:{cls:"log-singlelog-panel"}});Ext.define("SYNO.Mobile.Log.GeneralLog",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.Mobile.Log.SingleLog","SYNO.DSMMobile.data.GeneralLog"],config:{log:null,apiParams:null,model:"SYNO.DSMMobile.data.GeneralLog",enableInfiniteScroll:true,leftTpl:"{[this.getIcon(values)]}",centerTpl:['<div class="log-loglist-firstline">','<div class="log-loglist-descr">{descr:htmlEncode}</div>',"</div>",'<div class="log-loglist-secondline">','<div class="log-loglist-text">{time:htmlEncode}</div>','<div class="log-loglist-pipe"></div>','<div class="log-loglist-text">{who:htmlEncode}</div>',"</div>"],rightTpl:null,itemTpl:[{getIcon:function(a){var c=a.level,b='<div class="log-loglist-icon syno-mobile-icon-status-{0}"></div>';switch(c){case"emerg":case"alert":case"crit":case"err":return b.format("error");case"warn":case"warning":case"notice":return b.format("warning");case"info":case"debug":return b.format("info");default:return"Undefined"}}}],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.GeneralLog",pageSize:100},listeners:{itemtap:function(b,d,g,a,e,c){var f=a.getData();this.hubFire("pushDetail",{xclass:"SYNO.Mobile.Log.SingleLog",tpl:["{who:htmlEncode} <br><br>","{time:htmlEncode} <br><br>","{descr:htmlEncode}"],data:f})}}},initStore:function(){var a=this.getStore(),b=this.getLog(),c=this.getApiParams(),d=Ext.clone(c)||{};Ext.apply(d,{logtype:b});a.setParams(d)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.initStore();this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.LatestLog",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.LatestLog"],config:{apiParams:null,model:"SYNO.DSMMobile.data.LatestLog",leftTpl:"{llevel}",centerTpl:['<div class="log-loglist-firstline">','<div class="log-loglist-descr">{msg:htmlEncode}</div>',"</div>",'<div class="log-loglist-secondline">','<div class="log-loglist-text">{host:htmlEncode}</div>','<div class="log-loglist-pipe"></div>','<div class="log-loglist-text">{ldate:htmlEncode} {ltime:htmlEncode}</div>',"</div>"],rightTpl:null,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.LatestLog"},listeners:{itemtap:function(b,d,g,a,e,c){var f=a.getData();this.hubFire("pushDetail",{xclass:"SYNO.Mobile.Log.SingleLog",tpl:["{prio:htmlEncode} <br>","{host:htmlEncode} <br>","{ldate:htmlEncode} {ltime:htmlEncode}<br><br>","{prog:htmlEncode} <br>","{msg:htmlEncode} <br><br>"],data:f})}}},initStore:function(){var a=this.getStore(),b=this.getApiParams(),c=Ext.clone(b)||{};Ext.apply(c,{});a.setParams(c)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.initStore();this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.TabletLogDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",config:{leftBtn:null},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.PhoneLogDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",config:{leftBtn:null},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.XferLog",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.XferLog"],config:{log:null,apiParams:null,model:"SYNO.DSMMobile.data.XferLog",enableInfiniteScroll:true,leftTpl:null,centerTpl:['<div class="log-loglist-firstline">','<div class="log-loglist-cmd">{cmd:htmlEncode}</div>','<div class="log-loglist-descr">{descr:htmlEncode}</div>',"</div>",'<div class="log-loglist-secondline">','<div class="log-loglist-text">{time:htmlEncode}</div>','<div class="log-loglist-pipe"></div>','<div class="log-loglist-text">{ip:htmlEncode}</div>','<div class="log-loglist-pipe"></div>','<div class="log-loglist-text">{username:htmlEncode}</div>',"</div>"],rightTpl:null,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.XferLog",enableErrorMsg:false,pageSize:100},listeners:{itemtap:function(b,d,g,a,e,c){var f=a.getData();this.hubFire("pushDetail",{xclass:"SYNO.Mobile.Log.SingleLog",tpl:["{username:htmlEncode} {ip:htmlEncode}<br><br>","{time:htmlEncode} <br><br>","{cmd:htmlEncode} {descr:htmlEncode}<br><br>"],data:f})}}},onProxyException:function(b,c,d,a){if(d.code===5008){this.setEmptyText(_T("log","no_active_log"));this.setScrollable(false)}},initStore:function(){var a=this.getStore(),b=this.getLog(),c=this.getApiParams(),d=Ext.clone(c)||{};Ext.apply(d,{logtype:b});a.setParams(d);a.on("exception",this.onProxyException,this)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.initStore();this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.Overview",{xtype:"syno-mobile-log-overview",extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.Log.TabletLogDetail","SYNO.Mobile.Log.PhoneLogDetail","SYNO.Mobile.Log.LatestLog","SYNO.Mobile.Log.GeneralLog","SYNO.Mobile.Log.XferLog"],config:{layout:"vbox",scrollable:true,defaults:{defaults:{xtype:"syno_buttonfield",handler:function(){this.up(".syno-mobile-log-overview").onTapBtnField(this)}}},items:[{xtype:"syno_fieldset",itemId:"overview_fieldset",title:_T("mobile","log_overview"),items:[{itemId:"latest_log",label:String.format(_T("mobile","log_lasted_log"),50)}]},{xtype:"syno_fieldset",itemId:"event_fieldset",title:_T("mobile","log_event_log"),items:[{itemId:"system",label:_T("log","log_link_system")},{itemId:"connection",label:_T("log","log_link_connection")}]},{xtype:"syno_fieldset",itemId:"file_fieldset",title:_T("mobile","file_transfer_log"),items:[{itemId:"ftp",label:_T("log","log_ftp_xfer")},{itemId:"webdav",label:_T("log","log_webdav_xfer")},{itemId:"filestation",label:_T("log","log_filebrowser_xfer")},{itemId:"cifs",label:_T("log","log_smb_xfer")},{itemId:"afp",label:_T("log","log_afp_xfer")},{itemId:"tftp",label:_T("log","log_tftp_xfer")}]}]},getLogType:function(a){switch(a){case"backup":return"backup,netbackup,usbcopy";default:return a}},onTapBtnField:function(b){var a;var c=this.getLogType(b.getItemId());switch(c){case"latest_log":a=[{xclass:"SYNO.Mobile.Log.LatestLog"}];break;case"ftp":case"webdav":case"filestation":case"cifs":case"afp":case"tftp":a=[{xclass:"SYNO.Mobile.Log.XferLog",log:c}];break;default:a=[{xclass:"SYNO.Mobile.Log.GeneralLog",log:c}];break}this.openDetail(a)},openDetail:function(b){var d={items:b,module:this.up(".syno_module")};var c={xclass:"SYNO.Mobile.Log.TabletLogDetail"};var a={xclass:"SYNO.Mobile.Log.PhoneLogDetail"};this.hubFire("openDetail",{tablet:c,phone:a,common:d})}});Ext.define("SYNO.Mobile.Log.Main",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.Log.Overview"],config:{layout:"fit",items:[{xclass:"SYNO.Mobile.Log.Overview"}]}});(function(d){var b=function(e){return c(a(e),e)};function c(h,g){var l=h.length,f=new Array(l),e={},k=l;function j(o,n,r){var q,p,m;if(r.indexOf(o)>=0){throw new Error("Cyclic dependency: "+JSON.stringify(o))}if(e[n]){return}e[n]=true;m=g.filter(function(i){return i[0]===o});if(m.length>0){n=m.length;q=r.concat(o);do{p=m[--n][1];j(p,h.indexOf(p),q)}while(n)}f[--l]=o}while(k--){if(!e[k]){j(h[k],k,[])}}return f}function a(f){var h=[],g,e,j;for(g=0,e=f.length;g<e;++g){j=f[g];if(h.indexOf(j[0])<0){h.push(j[0])}if(h.indexOf(j[1])<0){h.push(j[1])}}return h}if(typeof d==="undefined"){}else{if(typeof d.module!=="undefined"){d.module.exports=d.exports=b}else{d.toposort=b}}Ext.define("SYNO.DSMMobile.util.TopoSort",{singleton:true,topoSort:function(f,e){if(!Ext.isArray(e)){e=f;f=a(e)}return c(f,e)}})})();Ext.define("SYNO.Mobile.PackageCenter.lib.Provider",{extend:"Ext.util.Observable",requires:[],config:{store:null},constructor:function(){this.callParent(arguments);this.init()},storeEventHooks:{load:"onLoad",refresh:"onRefresh"},applyStore:function(b){var d=this,e=Ext.apply({},d.storeEventHooks,{scope:d}),c,a;if(b){b=Ext.data.StoreManager.lookup(b);if(b&&Ext.isObject(b)&&b.isStore){b.on(e);c=b.getProxy();if(c){a=c.getReader();if(a){a.on("exception","handleException",this)}}}else{Ext.Logger.warn("The specified Store cannot be found",this)}}return b},each:function(c,b){var a=this.getStore();if(!a){return}a.each(function(){c.apply(b||window,arguments)})},getQueryId:function(a){if(Ext.isString(a)){return a}else{if(!a||!a.data){return null}else{return a.data.id}}},getPkg:function(b){var a=this.getStore(),c=this.getQueryId(b);return a.getById(c)},getPkgData:function(b){var c=this.getQueryId(b),a=this.getPkg(c);if(!a){return null}return a.data},isUpgradableImpl:function(a){if(!Ext.isObject(a)){return null}return a.blupgrade!==false},isQuickUpgradableImpl:function(a){if(!Ext.isObject(a)){return null}return a.qupgrade!==false},isUpgradable:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isUpgradableImpl(a)},isFirstBuyImpl:function(a){if(!Ext.isObject(a)){return null}if(!Ext.isEmpty(a.status)||a.source!=="syno"){return false}if(a.type!==0){return true}return false},isFirstBuy:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isFirstBuyImpl(a)},isQuickInstallImpl:function(a){if(!Ext.isObject(a)){return null}return a.qinst},isQuickInstall:function(e){var d=this.getPkgData(e),a,c,b;if(!this.hasLoadedStore||!d){return null}a=this.isQuickInstallImpl(d);c=this.isUpgradableImpl(d);b=this.isQuickUpgradableImpl(d);if(c){a=b}if(d&&d.info&&d.info.blqinst){a=false}return a},isStatusInstallingImpl:function(a){if(!Ext.isObject(a)){return null}if(a.status==="installing"||a.status==="upgrading"){return true}return false},isStatusInstalling:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isStatusInstallingImpl(a)},isInstallingImpl:function(a){if(!Ext.isObject(a)){return null}if(this.isStatusInstallingImpl(a)){return true}if(a.installing){return true}return false},isInstalling:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isInstallingImpl(a)},isUILockedImpl:function(a){if(!Ext.isObject(a)){return null}return a._lock_ui===true},isUILocked:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isUILockedImpl(a)},isBrokenStatusImpl:function(c){var b=["broken","version_limit","non_support","builtin","non_support_dsm_version"],a;if(!Ext.isObject(c)){return null}a=c.status;return b.indexOf(a)!==-1},isBrokenStatus:function(b){var a=this.getPkgData(b);if(!this.hasLoadedStore||!a){return null}return this.isBrokenStatusImpl(a)},isRepairable:function(a){var b=this.getQueryId(a);if(!this.hasLoadedStore){return null}return this.isBrokenStatus(b)},isProcessing:function(a){if(!this.hasLoadedStore){return null}return this.getProcessStatus(a).isProcessing},isInUpgradeList:function(b){var a;if(!this.hasLoadedStore){return null}a=this.getStatus(b);return a.isUpgradable&&!a.isProcessing},isInRepairList:function(b){var a;if(!this.hasLoadedStore){return null}a=this.getStatus(b);return a.isRepairable&&!a.isProcessing},getProcessStatusImpl:function(a,b){var d,c=true;switch(a){case"installing":d=_T("pkgmgr","installing");if(b){d=Math.floor(b*100)+"% "+d}break;case"upgrading":d=_T("pkgmgr","upgrading");if(b){d=Math.floor(b*100)+"% "+d}break;case"uninstalling":d=_T("background_task","task_processing")+"...";break;case"starting":d=_T("pkgmgr","starting");break;case"stopping":d=_T("pkgmgr","stopping");break;default:if(!b){c=false}else{if(b==="0.00001"){d=_T("vpnc","waiting")}else{d=Math.floor(b*100)+"% "+_T("download","download_task_downloading")}}break}return{status:a,msg:d,isProcessing:c,progress:b}},getProcessStatus:function(e){var d=this.getPkgData(e),g,f,c,a,b;if(!this.hasLoadedStore||!d){return null}g=this.isStatusInstalling(e);f=this.isInstalling(e);c=this.isUpgradable(e);a=d.status;b=d.progress;if(f&&!g){return this.getProcessStatusImpl(a,1)}return this.getProcessStatusImpl(a,b)},getDisplayStatusImpl:function(a,c){var d,e,b;b={msg:null,color:null};d={stop:_T("pkgmgr","pkgmgr_pkg_stopped"),running:_T("pkgmgr","pkgmgr_pkg_running"),installing:_T("pkgmgr","installing"),upgrading:_T("pkgmgr","upgrading"),repairing:_T("pkgmgr","repairing"),uninstalling:_T("background_task","task_processing")+"...",starting:_T("pkgmgr","starting"),stopping:_T("pkgmgr","stopping")};e={stop:"gray",running:"green",installing:"green",upgrading:"green",repairing:"green",uninstalling:"green",starting:"green",stopping:"green"};if(d[a]){b.msg=d[a];b.color=e[a]}else{if(c){if(a==="version_limit"){b.msg=_T("pkgmgr","status_version_limit");b.color="orange"}else{b.msg=_T("pkgmgr","pkgmgr_pkg_broken");b.color="red"}}else{b.msg=_T("status","status_not_available");b.color="darkgray"}}return b},getDisplayStatus:function(d){var c=this.getPkgData(d),a,b;if(!this.hasLoadedStore||!c){return null}a=c.status;b=this.isBrokenStatus(d);return this.getDisplayStatusImpl(a,b)},getUpgradeList:function(){var a=[];this.each(function(b){if(this.isInUpgradeList(b)){a.push(b.data.id)}},this);return a},getRepairList:function(){var a=[];this.each(function(b){if(this.isInRepairList(b)){a.push(b.data.id)}},this);return a},getStatus:function(a){return{isRepairable:this.isRepairable(a),isUpgradable:this.isUpgradable(a),isProcessing:this.isProcessing(a)}},rejectFields:function(a){var b=this.getStore();if(!b){return}b.each(function(c){Ext.each(a,function(d){if(c.modified.hasOwnProperty(d)){c.set(d,c.modified[d])}})},this)},rejectDummyField:function(a){var b=["_display_status"];if(a){b.push("_lock_ui")}this.rejectFields(b)},rejectLocalModify:function(b){var a=this.getStore();a.each(function(c){var d=c.get("_lock_ui");c.reject();if(!b){c.set("_lock_ui",d)}},this)},saveLockUIState:function(){var a=this.getStore();this.lockUIState={};a.each(function(b){var d=b.get("id"),c=b.get("_lock_ui");if(c){this.lockUIState[d]=true}},this)},restoreLockUIState:function(){var a=this.getStore();a.each(function(b){var d=b.get("id"),c=this.lockUIState[d];if(c){b.set("_lock_ui",true)}},this)},loadStore:function(){var a=this.getStore();if(!a){return}this.rejectDummyField();this.saveLockUIState();a.load()},onLoad:function(a){this.hasLoadedStore=true;this.restoreLockUIState()},onRefresh:function(a,c,b){this.fireEvent("refresh",a,c,b)},init:function(){this.downloadMap=Ext.create("Ext.util.HashMap");this.hasLoadedStore=false;this.lockUIState={}}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner.GetBannerPkgMixin",{getBannerPkg:function(){var a;for(a=this;a;a=a.parent){if(a instanceof SYNO.Mobile.PackageCenter.PkgDetailBanner){return a.getPkg()}}}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel.PkgInfo",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-mobile-packagecenter-pkgdetailbanner-pkgpanel-pkginfo",mixins:["SYNO.Mobile.PackageCenter.PkgDetailBanner.GetBannerPkgMixin"],config:{layout:"vbox",items:[{xtype:"syno_panel"}],tpl:['<div class="packagecenter-detail-name">{name}</div>','<div class="packagecenter-detail-version">{version}</div>'],data:{name:"Audio Station",version:"6.4.2822"}},setName:function(a){var b=this.getData();b.name=a;this.setData(b)},setVersion:function(a){var b=this.getData();b.version=a;this.setData(b)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel.Control",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-mobile-packagecenter-pkgdetailbanner-pkgpanel-control",mixins:["SYNO.Mobile.PackageCenter.PkgDetailBanner.GetBannerPkgMixin"],config:{layout:"hbox",items:[{itemId:"action",xtype:"syno_button",ui:"classic",btnStyle:"white",text:"Stop"},{xtype:"container",width:10},{itemId:"upgrade",xtype:"syno_button",ui:"classic",btnStyle:"white",text:"Upgrade"}]},getActionBtn:function(){return this.down("#action")},getUpgradeBtn:function(){return this.down("#upgrade")},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel",{extend:"SYNO.DSMMobile.base.Panel",config:{layout:"vbox",items:[{xclass:"SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel.PkgInfo"},{xclass:"SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel.Control"}]},initialize:function(){window.pkgPanel=this;this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner.Inner",{extend:"SYNO.DSMMobile.base.Panel",mixins:["SYNO.Mobile.PackageCenter.PkgDetailBanner.GetBannerPkgMixin"],config:{layout:{type:"hbox",align:"center"},items:[{xtype:"syno_panel",width:SYNO.DSMMobile.util.Env.isTablet?60:20},{xclass:"SYNO.Mobile.PackageCenter.PkgIcon",iconCls:"packagecenter-detail-icon"},{xtype:"syno_panel",width:SYNO.DSMMobile.util.Env.isTablet?70:20,height:SYNO.DSMMobile.util.Env.isTablet?200:170},{xclass:"SYNO.Mobile.PackageCenter.PkgDetailBanner.PkgPanel",flex:1}]},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBanner",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{name:"appname",version:"version",iconUrl:"icon value",bgCls:null,actionText:"",processStatus:null,enableShowProcessStatus:false,isUpgradable:true,isUILocked:false,layout:{type:"vbox",pack:"center"},items:[{xclass:"SYNO.Mobile.PackageCenter.PkgDetailBanner.Inner"}]},updateProcessStatus:function(a){var b=this.getEnableShowProcessStatus();if(a&&a.msg){if(b){this.upgradeBtn.setText(a.msg)}else{this.upgradeBtn.hide()}}else{this.upgradeBtn.setText(_T("pkgmgr","pkgmgr_pkg_upgrade"));this.updateIsUpgradable(this.getIsUpgradable())}},updateIsUILocked:function(a){if(a){this.disableUI()}else{this.enableUI()}},updateIsUpgradable:function(a){if(a){this.showUpgradeBtn()}else{this.hideUpgradeBtn()}},updateName:function(a){if(this.pkgInfo){this.pkgInfo.setName(a)}},updateVersion:function(a){if(this.pkgInfo){this.pkgInfo.setVersion(a)}},updateActionText:function(a){if(!this.actionBtn){return}if(a){this.actionBtn.show();this.actionBtn.setText(a)}else{this.actionBtn.hide()}},updateIconUrl:function(a){if(this.icon){this.icon.setIconUrl(a)}},updateBgCls:function(a,b){if(b){this.removeCls(b)}this.addCls(a)},controlCmp:function(a,b){if(!a){return}a[b]()},disableActionBtn:function(){this.controlCmp(this.actionBtn,"disable")},enableActionBtn:function(){this.controlCmp(this.actionBtn,"enable")},disableUpgradeBtn:function(){this.controlCmp(this.upgradeBtn,"disable")},enableUpgradeBtn:function(){this.controlCmp(this.upgradeBtn,"enable")},hideUpgradeBtn:function(){this.controlCmp(this.upgradeBtn,"hide")},showUpgradeBtn:function(){this.controlCmp(this.upgradeBtn,"show")},disableUI:function(){this.disableActionBtn();this.disableUpgradeBtn()},enableUI:function(){this.enableActionBtn();this.enableUpgradeBtn()},refreshDom:function(){this.updateName(this.getName());this.updateVersion(this.getVersion());this.updateIconUrl(this.getIconUrl());this.updateProcessStatus(this.getProcessStatus());this.updateIsUILocked(this.getIsUILocked())},initialize:function(){this.pkgInfo=this.down("syno-mobile-packagecenter-pkgdetailbanner-pkgpanel-pkginfo");this.actionBtn=this.down("syno-mobile-packagecenter-pkgdetailbanner-pkgpanel-control").getActionBtn();this.upgradeBtn=this.down("syno-mobile-packagecenter-pkgdetailbanner-pkgpanel-control").getUpgradeBtn();this.icon=this.down("syno-mobile-packagecenter-pkgicon");this.relayEvents(this.actionBtn,{tap:"tapActionBtn"});this.relayEvents(this.upgradeBtn,{tap:"tapUpgradeBtn"});this.refreshDom();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBlock",{extend:"SYNO.DSMMobile.base.Panel",mixins:[],requires:[],config:{data:{title:"title test",content:["<p>block 1</p>","<p>block 2</p>","<p>block3 </p>"].join("")},tpl:['<div class="packagecenter-detail-block-title"> {title} </div>','<div class="packagecenter-detail-block-content"> {content} </div>']},setTitle:function(b){var a=this.getData();a.title=b;this.setData(a)},setContent:function(a){var b=this.getData();if(Ext.isString(a)){a=a.replace(/\n/g,"<br>")}b.content=a;this.setData(b)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetailBlockPanel",{extend:"SYNO.DSMMobile.base.Panel",config:{layout:"vbox",scrollable:true,items:[{itemId:"changelog",xclass:"SYNO.Mobile.PackageCenter.PkgDetailBlock"},{itemId:"desc",xclass:"SYNO.Mobile.PackageCenter.PkgDetailBlock"}]}});Ext.define("SYNO.Mobile.PackageCenter.PkgDetail",{extend:"SYNO.DSMMobile.base.FormPanel",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.PackageCenter.PkgDetailBanner"],config:{title:"PkgDetail Title",layout:"vbox",scrollable:null,items:[{itemId:"banner",xclass:"SYNO.Mobile.PackageCenter.PkgDetailBanner",icon:null,height:SYNO.DSMMobile.util.Env.isTablet?200:170},{itemId:"block",xclass:"SYNO.Mobile.PackageCenter.PkgDetailBlockPanel",flex:1}],pkg:null,owner:null},onTapCancel:function(){},onTapDone:function(){},onTapActionBtn:function(){var b=this.findModule(),a=this.getPkg(),d=a.id,c=this.lib.getPkgStatus(d);if(c.isUILocked){return}b.fireEvent("requestTogglePkg",a)},onTapUpgradeBtn:function(){var b=this.findModule(),a=this.getPkg(),d=a.id,c=this.lib.getPkgStatus(d);if(c.isUILocked){return}b.fireEvent("requestUpgradePkg",a)},onRefreshAllProvider:function(){this.refreshDom()},onModifyPkg:function(d,b,c){var a=this.getPkg(),e=a.id;if(e!==d){return}this.refreshDom()},refreshDom:function(){var b=this.getPkg(),f=b.id,a=this.lib.getPkgStatus(f),e=this.lib.getPkgInfo(f),d=this.lib.getServerSidePkgInfo(f),c;if(!d){this.changeLog.hide()}else{c=d.version;this.changeLog.show();this.changeLog.setTitle(_T("pkgmgr","pkgmgr_pkg_changelog").format(c));this.changeLog.setContent(e.changelog)}this.setTitle(e.dname||f);this.banner.setName(e.dname||f);this.banner.setVersion(e.version);this.banner.setIconUrl(e.iconUrl);this.banner.setBgCls(e.bgCls);this.banner.setActionText(a.actionText);this.banner.setProcessStatus(a.processStatus);this.banner.setIsUILocked(a.isUILocked);this.banner.setIsUpgradable(a.isUpgradable);this.desc.setTitle(_T("pkgmgr","pkgmgr_pkg_description"));this.desc.setContent(e.desc)},monitorEvent:function(){this.on("painted",function(){this.parent.on({tapCancel:this.onTapCancel,tapDone:this.onTapDone,scope:this})},this,{single:true});this.banner.on({tapActionBtn:this.onTapActionBtn,tapUpgradeBtn:this.onTapUpgradeBtn,scope:this});this.lib.on({refreshAllProvider:this.onRefreshAllProvider,modifyPkg:this.onModifyPkg,scope:this})},initialize:function(){this.banner=this.down("#banner");this.block=this.down("#block");this.changeLog=this.block.down("#changelog");this.desc=this.block.down("#desc");this.lib=SYNO.Mobile.PackageCenter.Lib;this.monitorEvent();this.refreshDom();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.TabletAppDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.PackageCenter.PkgDetail"],config:{pkg:null,owner:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.PackageCenter.PkgDetail",pkg:this.getPkg(),owner:this.getOwner()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PhoneAppDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.PackageCenter.TabletAppDetail"],config:{pkg:null,owner:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.PackageCenter.PkgDetail",pkg:this.getPkg(),owner:this.getOwner()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgIconComponent",{extend:"Ext.Component",xtype:"syno-mobile-packagecenter-pkgiconcomponent",config:{height:64,width:64,iconUrl:null,iconCls:null},getTemplate:function(){return[{reference:"iconImg",tag:"img"}]},getElementConfig:function(){var a=this.callParent(arguments);return a},updateWidth:function(a){this.iconImg.set({width:a})},updateHeight:function(a){this.iconImg.set({height:a})},updateIconUrl:function(a){this.iconImg.set({src:a})},updateIconCls:function(a){this.iconImg.set({cls:a})},refreshDom:function(){this.updateIconUrl(this.getIconUrl());this.updateWidth(this.getWidth());this.updateHeight(this.getHeight())},initialize:function(){this.refreshDom();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgIcon",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-mobile-packagecenter-pkgicon",config:{layout:"fit",height:SYNO.DSMMobile.util.Env.isTablet?128:72,width:SYNO.DSMMobile.util.Env.isTablet?128:72,iconUrl:null,iconCls:null,items:[{xtype:"syno-mobile-packagecenter-pkgiconcomponent"}]},updateWidth:function(a){if(!this.iconCmp){return}this.iconCmp.setWidth(a)},updateHeight:function(a){if(!this.iconCmp){return}this.iconCmp.setHeight(a)},updateIconUrl:function(a){if(!this.iconCmp){return}this.iconCmp.setIconUrl(a)},updateIconCls:function(a){if(!this.iconCmp){return}this.iconCmp.setCls(a)},refreshDom:function(){this.updateIconUrl(this.getIconUrl());this.updateIconCls(this.getIconCls());this.updateWidth(this.getWidth());this.updateHeight(this.getHeight());this.iconCmp.refreshDom()},initialize:function(){this.iconCmp=this.down("syno-mobile-packagecenter-pkgiconcomponent");this.refreshDom();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.ProgressCircle",{extend:"SYNO.DSMMobile.base.CircleGradient",mixins:[],requires:[],config:{radius:14,gradientWidth:2,centerSquareSize:8,startColor:"#80BE41",middleColor:"#80BE41",stopColor:"#80BE41",fillColor:"#CDD7E1",centerSquareColor:"#80BE41",canvasConfig:{width:28,height:28},htmlFormat:""},drawCenterSquare:function(){var e=this.getCanvas(),c=e.getContext("2d"),b=window.devicePixelRatio,a=this.getRadius(),f=this.getCenterSquareSize(),d=this.getCenterSquareColor(),h=a-f/2-1,g=h;c.save();c.scale(b,b);c.translate(0,0);c.fillStyle=d;c.fillRect(h,g,f,f);c.restore()},draw:function(){this.callParent(arguments);this.drawCenterSquare()},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgListItem.PkgInfo",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-mobile-packagecenter-pkglistitem-pkginfo",config:{layout:"vbox",cls:"packagecenter-list-item-info",tpl:['<div class="packagecenter-list-item-name">{name}</div>','<div class="packagecenter-list-item-version">{version}</div>','<div class="packagecenter-list-item-status">{status}</div>'],data:{name:"PkgName",version:"PkgVersion",status:"PkgStatus"}},setName:function(a){var b=this.getData();b.name=a;this.setData(b)},setVersion:function(a){var b=this.getData();b.version=a;this.setData(b)},setStatus:function(a){var b=this.getData();b.status=a;this.setData(b)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.PkgListItem",{extend:"Ext.dataview.component.ListItem",xtype:"syno-mobile-packagecenter-pkglistitem",mixins:[],requires:["SYNO.Mobile.PackageCenter.ProgressCircle","SYNO.Mobile.PackageCenter.PkgIcon"],config:{layout:{type:"hbox",align:"center"},width:"100%",height:110,isUILocked:false,isUpgradeMode:false,processStatus:null,items:[{itemId:"icon",xclass:"SYNO.Mobile.PackageCenter.PkgIcon",cls:"packagecenter-list-item-icon",width:64,height:64},{itemId:"info",xclass:"SYNO.Mobile.PackageCenter.PkgListItem.PkgInfo",flex:1},{itemId:"progress",xclass:"SYNO.Mobile.PackageCenter.ProgressCircle",width:28,height:28},{itemId:"action",xtype:"syno_button",ui:"classic",btnStyle:"blue",text:"PkgBtn"},{itemId:"upgrade",xtype:"syno_button",ui:"classic",text:_T("pkgmgr","pkgmgr_pkg_upgrade"),btnStyle:"green-fill",hidden:true}]},updateIsUILocked:function(a){if(a){this.disableUI()}else{this.enableUI()}},updateIsUpgradeMode:function(b){var a=this.getActionBtn(),c=this.getUpgradeBtn();if(b){a.hide();c.show()}else{a.show();c.hide()}},updateProcessStatus:function(a){var c=this.getUpgradeBtn(),b=this.down("#info");if(a&&a.msg){b.setStatus(a.msg);c.hide()}},updateRecord:function(a){this.refreshDom(a)},disableBtnImpl:function(b){var a=this.down(b);if(!a){return}a.disable()},enableBtnImpl:function(b){var a=this.down(b);if(!a){return}a.enable()},disableActionBtn:function(){this.disableBtnImpl("#action")},enableActionBtn:function(){this.enableBtnImpl("#action")},disableUpgradeBtn:function(){this.disableBtnImpl("#upgrade")},enableUpgradeBtn:function(){this.enableBtnImpl("#upgrade")},getActionBtn:function(){return this.down("#action")},getUpgradeBtn:function(){return this.down("#upgrade")},getParentList:function(){return this.parent.parent},enableUI:function(){this.enableActionBtn();this.enableUpgradeBtn()},disableUI:function(){this.disableActionBtn();this.disableUpgradeBtn()},refreshDom:function(h){if(!h){return}var c=h.get("id"),f=this.lib.getPkgStatus(c),b=f.processStatus,a=b.progress,g=parseFloat(a,10),d=this.lib.getPkgInfo(c),l=this.down("#info"),j=this.down("#icon"),m=this.down("#progress"),k=this.getParentList(),i=k.getIsUpdateList(),e=this.getActionBtn();if(i){this.setIsUpgradeMode(f.isUpgradable);this.updateIsUpgradeMode(f.isUpgradable)}else{if(!f.actionText){e.hide()}else{e.show()}}if(g||b.status==="upgrading"){e.hide();m.show();if(b.status==="upgrading"){m.draw(1)}else{m.draw(g)}}else{m.hide()}l.setName(d.dname||c);l.setVersion(d.version);l.setStatus(f.renderedStatus);j.setIconUrl(d.iconUrl);e.setText(f.actionText);this.setIsUILocked(f.isUILocked);this.setProcessStatus(b)},refreshDomForOrientationChange:function(){if(SYNO.DSMMobile.util.Env.isTablet){this.setWidth(Ext.Viewport.orientation==="landscape"?"50%":"100%")}},onOrientationChange:function(){this.refreshDomForOrientationChange()},initialize:function(){this.lib=SYNO.Mobile.PackageCenter.Lib;this.lib.on({refreshAllProvider:function(){var a=this.getRecord();this.refreshDom(a)},scope:this});Ext.Viewport.on("orientationchange",this.onOrientationChange,this);this.addCls("packagecenter-list-item");this.refreshDomForOrientationChange();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.UtilImpl",{extend:"Ext.util.Observable",singleton:true,requires:[],config:{},getWebAPIErr:function(b,g,d,f,c){if(!b){if(g&&g.code<400){return SYNO.API.CheckResponse(b,g,d)}else{var a=g,e;if(g.code&&Ext.isObject(g.errors)){a=g.errors}switch(g.code){case 4500:case 4501:return c||_T("error","error_error_system");case 4502:return _T("pkgmgr","pkgmgr_space_not_ready");case 4503:return _T("error","volume_creating");case 4504:return _T("pkgmgr","error_sys_no_space");case 4505:return _T("error","no_external_devices");case 4520:return _T("error","error_space_not_enough");case 4521:return _T("pkgmgr","pkgmgr_file_not_package");case 4522:return _T("pkgmgr","broken_package");case 4523:return String.format(_T("pkgmgr","pkgmgr_pkg_required_newer_version"),a.firmware);case 4524:return String.format(_T("pkgmgr","conflict_packages"),a.packages);case 4525:break;case 4526:break;case 4527:return String.format(_T("pkgmgr","port_conflict"),a.port);case 4528:return String.format(_T("pkgmgr","pkgmgr_pkg_not_support_platform"),_D("product"));case 4529:return _T("pkgmgr","pkgmgr_pkg_cannot_upgrade");case 4530:return _T("pkgmgr","error_occupied");case 4540:return _T("pkgmgr","pkgmgr_file_install_failed");case 4541:return _T("pkgmgr","upgrade_fail");case 4542:return _T("error","error_error_system");case 4543:return _T("pkgmgr","pkgmgr_file_not_package");case 4544:return _T("pkgmgr","pkgmgr_pkg_install_already");case 4545:return _T("pkgmgr","pkgmgr_pkg_not_available");case 4546:break;case 4547:case 4552:if(f){return String.format(_T("pkgmgr","error_upgrade_dep_packages_with_name"),a.packages,f)}return String.format(_T("pkgmgr","error_upgrade_dep_packages"),a.packages);case 4548:return _T("pkgmgr","install_version_less_than_limit");case 4549:return _T("pkgmgr","depend_cycle");case 4550:break;case 4551:break;case 4553:return _T("pkgmgr","mysql_error_root_password");case 4554:return _T("pkgmgr","mysql_error_db_name");case 4555:return _T("pkgmgr","mysql_error_db_exist");case 4560:break;case 4561:break;case 4562:break;case 4580:return _T("pkgmgr","pkgmgr_pkg_start_failed");case 4581:return _T("pkgmgr","pkgmgr_pkg_stop_failed");case 4582:break;case 4583:break;case 4584:if(!Ext.isEmpty(a.unstart_packages)){return _T("pkgmgr","start_depend_unstart")+"<br>"+a.unstart_packages}break}if(!e){return c||_T("error","error_error_system")}}}},_showErrMsg:function(l,b,f){var k;var e=_T("error","error_error_system"),d;if(l){e="";var c=SYNO.API.Util.GetFirstError(l),j=true,i,h,a;if(c){i=SYNO.API.Util.GetFirstErrorIndex(l);h=SYNO.API.Util.GetReqByIndex(b,i,"api");if("SYNO.Core.Package.Control"===h){a=SYNO.API.Util.GetReqByIndex(b,i,"method");if(0===i){e=("start"===a)?_T("pkgmgr","pkgmgr_pkg_start_failed"):_T("pkgmgr","pkgmgr_pkg_stop_failed")}else{j=true;e=this.mode?_T("pkgmgr","pkgmgr_pkg_upgrade_wizard_done"):_T("pkgmgr","pkgmgr_pkg_install_wizard_done")}}else{if(h==="SYNO.Core.Package"){if(SYNO.API.Util.GetReqByAPI(b,"SYNO.Core.Package.Control","start")){e=_T("pkgmgr","pkgmgr_pkg_start_failed")}else{if(SYNO.API.Util.GetReqByAPI(b,"SYNO.Core.Package.Control","stop")){e=_T("pkgmgr","pkgmgr_pkg_stop_failed")}else{e=this.mode?_T("pkgmgr","pkgmgr_pkg_upgrade_wizard_done"):_T("pkgmgr","pkgmgr_pkg_install_wizard_done")}}}else{if(h==="SYNO.Core.Package.Installation"){a=SYNO.API.Util.GetReqByIndex(b,i,"method");if("install"===a){if(this.dname||this.pkgName){e=String.format((this.mode?_T("pkgmgr","upgrade_pkg_fail"):_T("pkgmgr","install_pkg_fail")),this.dname||this.pkgName,"")}else{e=this.mode?_T("pkgmgr","upgrade_fail"):_T("pkgmgr","install_fail")}}}}}d=c.code;c=c.errors||c;switch(d){case 4502:e=_T("error","volume_no_volumes");k=function(m){if("ok"===m){}};break;case 4503:e=_T("error","volume_creating");k=function(m){if("ok"===m){}};break;case 4525:var g=this._decodeServiceErr(c.services);if(j){e=_T("pkgmgr","pkgmgr_pkg_start_failed")+"<br>"}e+=g.msg;k=g.callback;break;case 4562:e=String.format(_T("pkgmgr","error_uninst_dep_packages"),c.packages);break;case 4547:if(this.dname||this.pkgName){e=String.format(_T("pkgmgr","error_upgrade_dep_packages_with_name"),c.packages,this.dname||this.pkgName)}else{e=String.format(_T("pkgmgr","error_upgrade_dep_packages"),c.packages)}break;case 4552:if(this.dname||this.pkgName){e=String.format(_T("pkgmgr","error_upgrade_dep_packages_with_name"),c.packages,this.dname||this.pkgName)}else{e=String.format(_T("pkgmgr","error_upgrade_dep_packages"),c.packages)}break;case 4582:e=String.format(_T("pkgmgr","error_stop_dep_packages"),c.packages);break;case 4546:e=String.format(_T("pkgmgr","downgrade_version"),c.current_version,c.install_version);break;case 4583:e=String.format(_T("pkgmgr","version_less_than_limit"),c.current_version,c.require_version);break;case 4548:e=String.format(_T("pkgmgr","version_less_than_limit"),c.current_version,c.require_version);break;default:e=this.getWebAPIErr(false,SYNO.API.Util.GetFirstError(l),{},this.dname||this.pkgName,e);break}}if(c.message&&""!==c.message){}if(e===""){e=_T("error","error_error_system")}}return{msg:e,callback:k}},_parseDepPkg:function(a){var f="";for(var b in a){if(a.hasOwnProperty(b)){if(f!==""){f+=", "}var e=this._getAvalRec(b),d=e?e.get("dname"):b,c="";for(var g in a[b]){if(a[b].hasOwnProperty(g)){switch(Ext.util.Format.htmlDecode(g)){case">=":c=String.format(_T("pkgmgr","version_bigger_equal"),d,a[b][g]);break;case"<=":c=String.format(_T("pkgmgr","version_less_equal"),d,a[b][g]);break;case"=":c=String.format(_T("pkgmgr","version_equal"),d,a[b][g]);break;case">":c=String.format(_T("pkgmgr","version_bigger"),d,a[b][g]);break;case"<":c=String.format(_T("pkgmgr","version_less"),d,a[b][g]);break;default:c=d;break}break}}f+=(c||d)}}return f},_onCheckPKGFailMsg:function(f,a,b){a=a||{};a=a.error||a;var e=b||_T("user","user_file_upload_fail");var h=Ext.emptyFn;var g;if(a.code){g=a.code;if(Ext.isObject(a.errors)){a=a.errors}}else{g=a.errmsg||a.key}switch(g){case"error_no_space":e=_T("error","error_space_not_enough");break;case 4502:case 4503:case"volume_no_volumes":case"volume_creating":switch(g){case 4502:e=_T("error","volume_no_volumes");break;case 4503:e=_T("error","volume_creating");break;default:e=_T("error",g);break}h=function(i){if("ok"===i){SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance")}};break;case 4504:case"sys_no_space":e=_T("pkgmgr","error_sys_no_space");break;case"error_format":e=_T("pkgmgr","pkgmgr_file_not_package");break;case 4528:case"not_support":e=String.format(_T("pkgmgr","pkgmgr_pkg_not_support_platform"),_D("product"));break;case 4523:case"error_firmware":e=String.format(_T("pkgmgr","pkgmgr_pkg_required_newer_version"),a.firmware);break;case"error_version":e=_T("pkgmgr","pkgmgr_pkg_required_newer_pkgversion");break;case"error_portconflict":e=String.format(_T("pkgmgr","port_conflict"),a.adminport);break;case"error_broken":e=_T("pkgmgr","broken_package");break;case 4526:case"error_dep_packages":var c=this._parseDepPkg(a.uninstall_packages);if(!Ext.isEmpty(a.unstart_packages)&&!Ext.isEmpty(c)){e=_T("pkgmgr","depend_uninst_unstart")+"<br>"+c+", "+a.unstart_packages}else{if(!Ext.isEmpty(a.unstart_packages)){e=_T("pkgmgr","depend_unstart")+"<br>"+a.unstart_packages}else{e=_T("pkgmgr","depend_packages")+"<br>"+c}}break;case 4531:case"error_no_synosig":e=_T("pkgmgr","pkgmgr_not_syno_publish");break;case 4532:case"error_unknown_dev":e=_T("pkgmgr","pkgmgr_unknown_publisher");break;case 4533:case"error_no_sig":e=_T("pkgmgr","pkgmgr_no_signature");break;case 4534:case"error_expired":e=_T("pkgmgr","pkgmgr_cert_expired");break;case 4535:case"error_bad_sig":e=_T("pkgmgr","broken_package");break;case 4582:case"error_stop_dep_packages":e=String.format(_T("pkgmgr","error_stop_dep_packages"),a.packages);break;case 4547:case 4552:case"error_upgrade_dep_statable_packages":if(f){e=String.format(_T("pkgmgr","error_upgrade_dep_packages_with_name"),a.packages,f)}else{e=String.format(_T("pkgmgr","error_upgrade_dep_packages"),a.packages)}break;case 4524:case"error_conflict_packages":e=String.format(_T("pkgmgr","conflict_packages"),a.packages);break;case 4525:case"error_services":var d=this._decodeServiceErr(a.services);e=d.msg;h=d.callback;break;case"error_occupied":e=_T("pkgmgr","error_occupied");break;case 4505:case"no_external_devices":e=_T("error","no_external_devices");break;default:if(Ext.isNumber(g)){e=SYNO.SDS.PkgManApp.Utils.getWebAPIErr(false,a,{},f)}else{e=_T("error","error_error_system")}}if(f){e=f+":<br>"+e}return{msg:e,callback:h}},localizeArrMsg:function(f,b,c){var d=[];if(!Ext.isArray(f)){f=[f]}for(var a=0;a<f.length;a++){if(Ext.isString(f[a])){d.push(SYNO.SDS.Utils.GetLocalizedString(f[a],c))}else{d.push(f[a])}}var e=String.format.apply(String,d);if(b){return Ext.util.Format.stripTags(e)}else{return e}}});Ext.define("SYNO.Mobile.PackageCenter.Util",{extend:"Ext.util.Observable",singleton:true,requires:["SYNO.Mobile.PackageCenter.UtilImpl"],config:{},constructor:function(){this.callParent(arguments);this.init()},getErrorMsg:function(e,d,c){var b=this.impl,a;a=b._showErrMsg(e,c,d);return a.msg},parseErrorString:function(d){var c,a;if(!d){return null}c=d.error;if(!c){return null}try{a=Ext.decode(c)}catch(b){return null}return this.impl.localizeArrMsg(a)},parseCheckEnvFailResp:function(c,b){var a=this.impl._onCheckPKGFailMsg(c,b);return a.msg},init:function(){this.impl=SYNO.Mobile.PackageCenter.UtilImpl}});Ext.define("SYNO.Mobile.PackageCenter.lib.BaseStatus",{extend:"Ext.util.Observable",requires:[],config:{},constructor:function(){this.callParent(arguments);this.init()},pollingCore:function(c,a,b){},isPolling:function(a){return this.pollingMap.containsKey(a)},isPollingFinished:function(a,b){return false},getStatus:function(b){var a=this.infoMap.get(b);if(a){return a}},setStatus:function(b,a){this.infoMap.replace(b,a);this.fireEvent("updateStatus",b,a)},refreshStatus:function(e,d,a){var b=this;function c(f,g){if(f&&!this.isDestroyed){b.setStatus(e,g)}if(d){d.call(a||window,f,g)}}this.pollingCore(e,this.pollingMap.get(e),c)},pollingStatusImpl:function(b,a){if(!this.isPolling(b)){return}this.refreshStatus(b,function(c,e){var d=this.isPollingFinished(c,e);if(d){this.stopPollingStatus(b)}else{Ext.defer(this.pollingStatusImpl,a,this,[b,a])}},this)},startPollingStatus:function(c,b,a){if(!a){a=1000}if(b===undefined){b=null}this.pollingMap.add(c,b);this.fireEvent("start",c);this.pollingStatusImpl(c,a)},stopPollingStatus:function(a){this.pollingMap.removeByKey(a);this.fireEvent("end",a,this.getStatus(a))},getPollingCount:function(){return this.pollingMap.getCount()},init:function(){this.pollingMap=Ext.create("Ext.util.HashMap");this.infoMap=Ext.create("Ext.util.HashMap")}});Ext.define("SYNO.Mobile.PackageCenter.lib.DownloadStatus",{extend:"SYNO.Mobile.PackageCenter.lib.BaseStatus",singleton:true,requires:[],config:{},isPollingFinished:function(a,b){if(!a){return false}if(b.finished&&b.status==="upgrading"){return false}return b.finished},pollingCore:function(d,b,c){var a=SYNO.DSMMobile.webapi;a.StatusPackageInstallation(d,function(e,f){c(e,f)})}});Ext.define("SYNO.Mobile.PackageCenter.lib.PkgStatus",{extend:"SYNO.Mobile.PackageCenter.lib.BaseStatus",singleton:true,requires:[],config:{},isPollingFinished:function(a,c){if(!a){return false}var d=["installing","upgrading","uninstalling","starting","stopping"],b=c.additional.status;return d.indexOf(b)===-1},pollingCore:function(d,b,c){var a=SYNO.DSMMobile.webapi;a.GetPackage({id:d},function(e,f){c(e,f)})}});Ext.define("SYNO.Mobile.PackageCenter.LibPkgInfo",{extend:"Ext.util.Observable",singleton:true,requires:["SYNO.Mobile.PackageCenter.lib.Provider","SYNO.Mobile.PackageCenter.lib.DownloadStatus","SYNO.Mobile.PackageCenter.lib.PkgStatus"],config:{},constructor:function(){this.callParent(arguments);this.init()},getLocalPkg:function(a){return this.localPkg.getPkg(a)},getServerPkg:function(a){return this.synoPkg.getPkg(a)||this.otherPkg.getPkg(a)},getMixedPkgData:function(d){var c=this.getLocalPkg(d),a=this.getServerPkg(d),b={};if(a){Ext.apply(b,a.data)}if(c){Ext.apply(b,c.data)}return b},getPkgProvider:function(a){if(this.synoPkg.getPkg(a)){return this.synoPkg}else{if(this.otherPkg.getPkg(a)){return this.otherPkg}else{return null}}},getDependPkgs:function(b){var a=this.getMixedPkgData(b);return a.deppkgs},getDname:function(b){var a=this.getMixedPkgData(b);return a.dname},isQuickInstall:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isQuickInstall(b)},isUpgradable:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isUpgradable(b)},isInstalling:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isInstalling(b)},isBrokenStatus:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isBrokenStatus(b)},isFirstBuy:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isFirstBuy(b)},isRepairable:function(a){return this.localPkg.isRepairable(a)},isWaiting:function(a){return false},isUILocked:function(b){var a=this.getPkgProvider(b);if(!a){return null}return a.isUILocked(b)},isInstalledWell:function(d){var b=this.getLocalPkg(d),c=this.isUpgradable(d),a=this.isRepairable(d);return b&&!c&&!a},isAllInstalledWell:function(b){var a=true;Ext.iterate(b,function(c,d){if(!this.isInstalledWell(c)){a=false;return false}},this);return a},isAllDependInstalledWell:function(a){},getProcessStatus:function(a){return this.localPkg.getProcessStatus(a)},getActionText:function(f){var d=this.getLocalPkg(f),b=d.data.status,a=d.data.pkgstartable,c,e;if(!d){return null}if(!a){return null}c={running:_T("pkgmgr","pkgmgr_pkg_stop"),stop:_T("pkgmgr","pkgmgr_pkg_start")};e=c[b];if(e){return e}else{return null}},getStatusImpl:function(i){var p=this.providerLib,j=this.getServerPkg(i),m=this.getLocalPkg(i),o=this.getMixedPkgData(i);if(!m){return null}var k=m.data.status,f=o.progress,r=this.getProcessStatus(i),b=this.getRenderedStatus(i),l=this.getActionText(i),a=this.isWaiting(i),e=this.isRepairable(i),h=this.isUpgradable(i),d=this.isInstalling(i),c=this.isQuickInstall(i),q=false,g=p.isBrokenStatusImpl(m.data),n=this.isUILocked(i);if(e||h){if(j){q=(j.data.progress>0&&j.data.progress<1);if(q||d){if(m.data.status==="version_limit"){k="upgrading"}else{k=e?"repairing":"upgrading"}}}}return{serverPkg:j,localPkg:m,status:k,progress:f,processStatus:r,renderedStatus:b,actionText:l,isWaiting:a,isRepairable:e,isUpgradable:h,isInstalling:d,isProcessing:q,isQuickInstall:c,isBrokenStatus:g,isUILocked:n}},getStatus:function(b){var a=this.getStatusImpl(b);delete a.serverPkg;delete a.localPkg;return a},getDisplayStatusImpl:function(a){return this.localPkg.getDisplayStatus(a)},getDisplayStatus:function(a){return this.getDisplayStatusImpl(a).msg},getRenderedStatus:function(b){var a=this.getDisplayStatusImpl(b);return'<font class="{0}">{1}</font>'.format(a.color,a.msg)},getPkgIconUrl:function(f,c){var b=this.getMixedPkgData(f),d=SYNO.API.currentManager.getBaseURL("SYNO.Core.Package.Thumb","get",1),a=b.version,e;if(!c){c=128}e={name:f,ver:String.format('"{0}"',a),size:c};return Ext.urlAppend(d,Ext.urlEncode(e))},getPkgBgCls:function(d){var a="packagecenter-bg-",c,b;c={AudioStation:a+"audio",SurveillanceStation:a+"cam",DownloadStation:a+"download",NoteStation:a+"note",VideoStation:a+"video"};b=c[d];return b?b:a+"default"},getDownloadStatus:function(b){var a=this.downloadStatusLib;a.refreshStatus(b);return a.getStatus(b)},startPollingPkg:function(b,a){if(!a){a="status"}switch(a){case"status":return this.pkgStatusLib.startPollingStatus(b);case"download":return this.downloadStatusLib.startPollingStatus(b)}},stopPollingPkg:function(b,a){if(!a){a="status"}switch(a){case"status":return this.pkgStatusLib.stopPollingStatus(b);case"download":return this.downloadStatusLib.stopPollingStatus(b)}},getPollingCount:function(a){if(!a){a="status"}switch(a){case"status":return this.pkgStatusLib.getPollingCount();case"download":return this.downloadStatusLib.getPollingCount()}},isPolling:function(d,c){var b=this.pkgStatusLib.isPolling(d),a=this.downloadStatusLib.isPolling(d);if(!c){return b||a}else{switch(c){case"status":return b;case"download":return a}}},getUpgradeList:function(){var a=this.synoPkg.getUpgradeList(),b=this.otherPkg.getUpgradeList();return a.concat(b)},inspectPkg:function(d,b){var a=this.getServerPkg(d),c=this.getLocalPkg(d);this.loadProvider();if(b){console.info(a.data[b],a.data[b])}else{console.info(a.data,c.data)}},isLocalLibReady:function(){return this.hasLoadedLocalProvider},isServerLibReady:function(){return this.hasLoadedServerProvider},isLibReady:function(){return this.hasLoadedProvider},initProvider:function(){this.synoPkg=Ext.factory({xclass:"SYNO.Mobile.PackageCenter.lib.Provider",store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.ServerPackage",proxyExceptionHandler:function(b,c,a){}}});this.otherPkg=Ext.factory({xclass:"SYNO.Mobile.PackageCenter.lib.Provider",store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.ServerPackage",proxyExceptionHandler:function(b,c,a){},params:{blloadothers:true}}});this.localPkg=Ext.factory({xclass:"SYNO.Mobile.PackageCenter.lib.Provider",store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.PackageList"}})},loadProvider:function(d){var a,c,b;if(Ext.isString(d)){this.doLoadProvider(d)}else{a=Ext.create("SYNO.DSMMobile.util.AsyncLock",{tasks:[[this.synoPkg,"refresh"],[this.otherPkg,"refresh"]],callback:function(){this.fireEvent("refreshServerProvider")},scope:this});c=Ext.create("SYNO.DSMMobile.util.AsyncLock",{tasks:[[this.localPkg,"refresh"]],callback:function(){this.fireEvent("refreshLocalProvider")},scope:this});b=Ext.create("SYNO.DSMMobile.util.AsyncLock",{tasks:[a,c],callback:function(){this.fireEvent("refreshAllProvider")},scope:this});this.doLoadProvider("syno");this.doLoadProvider("other");this.doLoadProvider("local")}},doLoadProvider:function(b){var a,c;if(!b||["syno","other","local"].indexOf(b)===-1){SYNO.Debug.error("illegal type",b);return}a=b+"Pkg";c=this[a];c.on("refresh",function(d,f,e){this.onRefreshProvider(d,f,e)},this,{single:true});c.loadStore()},fastLoadLocalProvider:function(){this.synoPkg.rejectLocalModify();this.otherPkg.rejectLocalModify();this.loadProvider("local")},checkIsAllPollingEnd:function(){var b=this.getPollingCount("download"),a=this.getPollingCount("status");if(b===0&&a===0){this.fireEvent("allPollingEnd")}},modifyPkg:function(g,c,e){var a=this.getServerPkg(g),b=this.getLocalPkg(g),d=false;function f(h,j,k){var i;if(!h){return}i=h.get(j);if(k!==i){d=true;h.set(j,k)}}f(a,c,e);f(b,c,e);if(d){console.log("modifyPkg",g,c,e);this.fireEvent("modifyPkg",g,c,e)}},lockPkgUI:function(a){this.modifyPkg(a,"_lock_ui",true)},unlockPkgUI:function(a){this.modifyPkg(a,"_lock_ui",false)},checkAndUnlockPkgUI:function(a){if(this.isPolling(a)){return}this.unlockPkgUI(a)},onRefreshProvider:function(a,c,b){console.info("refreshProvider");this.fireEvent("refreshProvider",a,c,b)},onRefreshLocalProvider:function(){if(!this.hasLoadedLocalProvider){this.hasLoadedLocalProvider=true;this.fireEvent("localPkgInfoReady")}},onRefreshServerProvider:function(){if(!this.hasLoadedServerProvider){this.hasLoadedServerProvider=true;this.fireEvent("serverPkgInfoReady")}},onRefreshAllProvider:function(){if(!this.hasLoadedProvider){this.hasLoadedProvider=true;this.fireEvent("pkgInfoReady")}},onDownloadStatusUpdate:function(c,a){var b;this.modifyPkg(c,"progress",a.progress);if(a.taskid){this.modifyPkg(c,"installing",a.installing);if(a.status){this.modifyPkg(c,"status",a.status)}}b=this.getProcessStatus(c).msg;this.modifyPkg(c,"_display_status",b);this.fireEvent("updateInstallStatus",c,a)},onDownloadPollingEnd:function(c,a){var b;this.checkAndUnlockPkgUI(c);this.fireEvent("downloadPollingEnd",c,a);b=this.util.parseErrorString(a.data);if(b){this.fireEvent("downloadPollingError",b,c,a)}this.checkIsAllPollingEnd()},onPkgStatusUpdate:function(b,a){this.modifyPkg(b,"status",a.additional.status)},onPkgPollingEnd:function(b,a){this.checkAndUnlockPkgUI(b);this.fireEvent("pkgPollingEnd",b,a);this.checkIsAllPollingEnd()},initLibImpl:function(){this.loadProvider()},initLib:function(){if(this.hasInitedLib){return}else{this.hasInitedLib=true;this.initLibImpl()}},init:function(){this.util=SYNO.Mobile.PackageCenter.Util;this.providerLib=SYNO.Mobile.PackageCenter.lib.Provider.prototype;this.downloadStatusLib=SYNO.Mobile.PackageCenter.lib.DownloadStatus;this.pkgStatusLib=SYNO.Mobile.PackageCenter.lib.PkgStatus;this.on({refreshLocalProvider:this.onRefreshLocalProvider,refreshServerProvider:this.onRefreshServerProvider,refreshAllProvider:this.onRefreshAllProvider});this.downloadStatusLib.on({updateStatus:this.onDownloadStatusUpdate,end:this.onDownloadPollingEnd,scope:this});this.pkgStatusLib.on({updateStatus:this.onPkgStatusUpdate,end:this.onPkgPollingEnd,scope:this});this.initProvider();window.pkg=this}});Ext.define("SYNO.Mobile.PackageCenter.BaseList",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.Mobile.PackageCenter.LibPkgInfo","SYNO.Mobile.PackageCenter.PkgListItem","SYNO.Mobile.PackageCenter.TabletAppDetail","SYNO.Mobile.PackageCenter.PhoneAppDetail","SYNO.Mobile.base.CanFindModuleMixin"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{model:"SYNO.DSMMobile.data.PackageList",cls:"packagecenter-list",isItemList:false,isUpdateList:false,useComponents:true,disableSelection:true,defaultType:"syno-mobile-packagecenter-pkglistitem",store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.PackageList"},listeners:{itemtap:function(b,d,g,a,e,c){var f=g.getActionBtn(),h=g.getUpgradeBtn();if(SYNO.DSMMobile.utils.isEventIn(e,f)){this.onActionBtnTap(b,d,g,a,e,c)}else{if(SYNO.DSMMobile.utils.isEventIn(e,h)){this.onUpgradeBtnTap(b,d,g,a,e,c)}else{this.onPkgTap(b,d,g,a,e,c)}}}}},isPkgLocked:function(a){return a.get("_lock_ui")===true},onPkgTap:function(h,e,f,d,a,i){var c=this.findModule(),b=d.get("id"),g;g={id:b};c.fireEvent("openPkgDetail",g,f)},onActionBtnTap:function(i,e,f,d,a,j){var c=this.findModule(),b=d.get("id"),h=this.lib.getPkgStatus(b),g;if(h.isUILocked){return}g={id:b};c.fireEvent("requestTogglePkg",g)},onUpgradeBtnTap:function(i,e,f,d,a,j){var c=this.findModule(),b=d.get("id"),h=this.lib.getPkgStatus(b),g;if(h.isUILocked){return}g={id:b};c.fireEvent("requestUpgradePkg",g)},initStore:function(){this.setStore({xtype:"syno_store",model:"SYNO.DSMMobile.data.PackageList"})},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.lib=SYNO.Mobile.PackageCenter.Lib;this.initStore();this.loadStore();this.scrollElement.addCls("packagecenter-list-scroll-element");this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.InstalledList",{extend:"SYNO.Mobile.PackageCenter.BaseList",requires:["SYNO.Mobile.base.CanFindModuleMixin"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.InstalledTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.PackageCenter.InstalledList"],config:{title:"InstalledTab title",layout:"fit",items:[{xclass:"SYNO.Mobile.PackageCenter.InstalledList"}]}});Ext.define("SYNO.Mobile.PackageCenter.UpdateList",{extend:"SYNO.Mobile.PackageCenter.BaseList",requires:["SYNO.Mobile.base.CanFindModuleMixin"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{isUpdateList:true,listeners:{}},filterStore:function(){var a=this.getStore();a.filterBy(function(c){var d=c.get("id"),b=this.lib.getPkgStatus(d);return b.isUpgradable},this)},onLoad:function(a){this.filterStore();this.callParent(arguments)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.UpdateTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.PackageCenter.UpdateList"],config:{title:"UpdateTab title",layout:"fit",items:[{xclass:"SYNO.Mobile.PackageCenter.UpdateList"}]}});Ext.define("SYNO.Mobile.PackageCenter.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.PackageCenter.InstalledTab","SYNO.Mobile.PackageCenter.UpdateTab"],config:{module:null,items:[]},onLibReady:function(){var a=this.getModule();SYNO.DSMMobile.utils.unmask(a);this.add([{title:_T("pkgmgr","install_packages"),itemId:"installed",iconCls:"syno-mobile-icon-package-installed",xclass:"SYNO.Mobile.PackageCenter.InstalledTab"},{title:_T("pkgmgr","upgradable"),itemId:"upgradable",iconCls:"syno-mobile-icon-package-updates",xclass:"SYNO.Mobile.PackageCenter.UpdateTab"}]);if(window.badgeData.packageCenter>0){this.setActiveItem(this.getComponent("upgradable"))}},initItems:function(){var b=this.getModule(),a=false;SYNO.DSMMobile.utils.mask("load",b);this.lib.ready(function(){if(a||this.isDestroyed){return}a=true;this.onLibReady()},this);Ext.defer(function(){if(a||this.isDestroyed){return}this.lib.localReady(function(){a=true;this.onLibReady();this.lib.serverReady(function(){this.refreshList()},this)},this)},10000,this)},pollingPkgStatusImpl:function(){if(!this.enablePollingPkgStatus){return}this.lib.fastLoad()},pollingPkgStatus:function(){if(this.isDestroyed){return}this.pollingPkgStatusImpl();Ext.defer(this.pollingPkgStatus,30000,this)},refreshList:function(){var b=this.down("#installed").down("syno_list"),a=this.down("#upgradable").down("syno_list");b.loadStore();a.loadStore()},monitorModule:function(){this.on("painted",function(){this.initItems()},this,{single:true})},initialize:function(){this.lib=SYNO.Mobile.PackageCenter.Lib;this.monitorModule();this.lib.initLib();this.enablePollingPkgStatus=true;this.pollingPkgStatus();this.callParent(arguments)}});Ext.define("SYNO.Mobile.PackageCenter.LibPkgDep",{extend:"Ext.util.Observable",singleton:true,requires:["SYNO.DSMMobile.util.TopoSort","SYNO.Mobile.PackageCenter.LibPkgInfo"],config:{},constructor:function(){this.callParent(arguments);this.init()},isNeedToProcess:function(e){var c=this.pkgInfo.isFirstBuy(e),a=this.pkgInfo.isQuickInstall(e),b=this.pkgInfo.getDependPkgs(e),d=this.pkgInfo.isAllInstalledWell(b);return c||!a||!d},getDependencyGraphImpl:function(b){var a=[];function c(e,d){a.push([e,d])}Ext.iterate(b,function(e){var d=this.pkgInfo.getDependPkgs(e);c("",e);Ext.iterate(d,function(f){c(f,e)},this)},this);return a},getDependencyGraph:function(c){var b,a;if(Ext.isString(c)){c=[c]}b=this.getDependList(c);a=this.getDependencyGraphImpl(b);return a},getDependListImpl:function(c,b){var a;if(b.indexOf(c)!==-1){return}b.push(c);a=this.pkgInfo.getDependPkgs(c);Ext.iterate(a,function(d,e){this.getDependListImpl(d,b)},this)},getDependList:function(b){var a=[];if(Ext.isString(b)){b=[b]}Ext.each(b,function(c){this.getDependListImpl(c,a)},this);return a},getDependServices:function(a){},getInstallOrder:function(c,e){var a=SYNO.DSMMobile.util.TopoSort.topoSort,d,b;if(Ext.isString(c)){c=[c]}d=this.getDependencyGraph(c);b=a(d).slice(1);if(!e){b=b.filter(function(f){return !this.pkgInfo.isInstalledWell(f)},this)}return b},debugPkgStatus:function(e){var c=this.pkgInfo.isFirstBuy(e),a=this.pkgInfo.isQuickInstall(e),b=this.pkgInfo.getDependPkgs(e),d=this.pkgInfo.isAllInstalledWell(b);console.log(e,c,a,d)},init:function(){window.dep=this;this.pkgInfo=SYNO.Mobile.PackageCenter.LibPkgInfo}});Ext.define("SYNO.Mobile.PackageCenter.LibImpl",{extend:"Ext.util.Observable",singleton:true,requires:["SYNO.Mobile.PackageCenter.LibPkgInfo","SYNO.Mobile.PackageCenter.LibPkgDep"],config:{},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.pkgInfoLib=SYNO.Mobile.PackageCenter.LibPkgInfo}});Ext.define("SYNO.Mobile.PackageCenter.Lib",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],singleton:true,requires:["SYNO.Mobile.PackageCenter.LibPkgInfo","SYNO.Mobile.PackageCenter.LibPkgDep","SYNO.Mobile.PackageCenter.LibImpl","SYNO.Mobile.PackageCenter.Util"],config:{},constructor:function(){this.callParent(arguments);this.init()},installPkg:function(b,d,f){var g=SYNO.DSMMobile.webapi,a=Ext.isString(b)?b:b.id,e=this.pkgInfoLib.getServerPkg(a),i=this.pkgInfoLib.getDependPkgs(a),c=this.pkgInfoLib.getDname(a),h=[];if(!e.data.silent_upgrade||e.data.silent_upgrade===false||(e.data.silent_upgrade===true&&e.data.auto_upgrade_from&&e.data.auto_upgrade_from!=="")){f("","",_T("mobile","error_pkg_install"));return}h.push({apiType:"CheckPackageInstallation",params:{id:a,depsers:null,deppkgs:i}});h.push({apiType:"InstallPackage",params:{name:a,url:e.data.link,filesize:e.data.size,blqinst:true}});this.lockPkgUI(a);g.sendCompoundWebAPI(h,true,function(j,l){var k;if(!j||l.has_fail){this.unlockPkgUI(a);k=this.util.parseCheckEnvFailResp(c,l);f(l.code,l.msg,k);return}this.pkgInfoLib.modifyPkg(a,"progress",0.00001);this.pkgInfoLib.startPollingPkg(a,"download");d()},this)},togglePkgImpl:function(a,e,d,f){var b=SYNO.DSMMobile.webapi,g=Ext.isString(e)?e:e.id,c=[];c.push({apiType:a?"StartPackage":"StopPackage",params:{id:g}});c.push({apiType:"GetPackage",params:{id:g}});Ext.defer(function(){this.pkgInfoLib.startPollingPkg(g)},500,this);b.sendCompoundWebAPI(c,true,function(h,k){var i,j;if(!h||k.has_fail){j=this.util.getErrorMsg(k);f(k.code,k.msg,j);return}i=k.GetPackage.resp.additional.status;this.pkgInfoLib.modifyPkg(g,"status",i);d()},this)},togglePkg:function(c,b,d){var a=this.getPkgStatus(c.id),e=a.status==="running"?"stopPkg":"startPkg";this.lockPkgUI(c.id);this[e](c,b,d)},startPkg:function(b,a,c){this.togglePkgImpl(true,b,a,c)},stopPkg:function(b,a,c){this.togglePkgImpl(false,b,a,c)},upgradeAll:function(d,g){var a=this.pkgInfoLib.getUpgradeList(),i=this.pkgDepLib.getInstallOrder(a),b=i.slice(0),h=this;function c(j){console.info("upgradeAll going to install ",j);h.installPkg(j,function(){var k=b.shift();if(!k){f()}else{c(k)}},function(k,l){g(k,l)})}function e(j,k){h.load();g(j,k)}function f(){d()}if(a.length===0){return}console.log(a,i);c(b.shift(),f,e)},isLocalPkgInfoReady:function(){return this.pkgInfoLib.isLocalLibReady()},isServerPkgInfoReady:function(){return this.pkgInfoLib.isServerLibReady()},isPkgInfoReady:function(){return this.pkgInfoLib.isLibReady()},readyImpl:function(a,c,f,b){var d=this[a]();function e(){f.call(b||window)}if(d){e()}else{this.pkgInfoLib.on(c,e,this,{single:true})}},localReady:function(b,a){this.readyImpl("isLocalPkgInfoReady","localPkgInfoReady",b,a)},serverReady:function(b,a){this.readyImpl("isServerPkgInfoReady","serverPkgInfoReady",b,a)},ready:function(b,a){this.readyImpl("isPkgInfoReady","pkgInfoReady",b,a)},load:function(){this.pkgInfoLib.loadProvider()},fastLoad:function(){this.pkgInfoLib.fastLoadLocalProvider()},lockPkgUI:function(a){this.pkgInfoLib.lockPkgUI(a)},unlockPkgUI:function(a){this.pkgInfoLib.unlockPkgUI(a)},isUILocked:function(a){return this.pkgInfoLib.isUILocked(a)},onUpdateInstallStatus:function(b,a){this.fireEvent("updateInstallStatus",b,a)},onRefreshAllProvider:function(){this.fireEvent("refreshAllProvider")},onModifyPkg:function(c,a,b){this.fireEvent("modifyPkg",c,a,b)},onDownloadPollingEnd:function(b,a){this.pkgInfoLib.loadProvider();this.hubFire("loadAppNotify")},onDownloadPollingError:function(b,c,a){console.info("onDownloadPollingError",b,c,a);this.fireEvent("downloadPollingError",b,c,a)},onAllPollingEnd:function(){console.info("allPollingEnd")},getPkgStatus:function(a){return this.pkgInfoLib.getStatus(a)},getPkgInfo:function(b){var a=this.pkgInfoLib.getMixedPkgData(b);a.iconUrl=this.pkgInfoLib.getPkgIconUrl(b);a.bgCls=this.pkgInfoLib.getPkgBgCls(b);return a},getServerSidePkgInfo:function(b){var a=this.pkgInfoLib.getServerPkg(b);if(!a){return null}else{return a.data}},initLib:function(){this.pkgInfoLib.initLib()},init:function(){this.util=SYNO.Mobile.PackageCenter.Util;this.impl=SYNO.Mobile.PackageCenter.LibImpl;this.pkgInfoLib=SYNO.Mobile.PackageCenter.LibPkgInfo;this.pkgDepLib=SYNO.Mobile.PackageCenter.LibPkgDep;this.pkgInfoLib.on({updateInstallStatus:this.onUpdateInstallStatus,refreshAllProvider:this.onRefreshAllProvider,modifyPkg:this.onModifyPkg,allPollingEnd:this.onAllPollingEnd,downloadPollingEnd:this.onDownloadPollingEnd,downloadPollingError:this.onDownloadPollingError,scope:this});window.lib=this}});Ext.define("SYNO.Mobile.ResourceMonitor.ConnectedList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.Connection"],config:{apiParams:null,model:"SYNO.DSMMobile.data.Connection",leftTpl:null,iconWrapperTpl:'<div class="syno-mobile-listitem-icon {[this.getIconCls(values.can_be_kicked)]}" style="{{iconStyle}}">{{iconTpl}}</div>',cls:"rsmonitor-connect-list",centerTpl:['<div class="rsmonitor-connect-who">{who}</div>','<div class="rsmonitor-connect-time">{[this.formatTime(values.time)]}</div>','<div class="rsmonitor-connect-pipe"></div>','<div class="rsmonitor-connect-ip">{from}</div>'],rightTpl:null,itemTpl:[{formatTime:function(a){var b=new Date(a);return Ext.Date.format(b,"Y-m-d H:m:s")},getIconCls:function(a){if(a){return""}else{return"kick-disabled"}}}],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.Connection"},listeners:{itemtap:function(c,e,h,b,g,d){var f=Ext.get(g.target);if(!f.hasCls("syno-mobile-listitem-icon")){return}var a={};Ext.iterate(["can_be_kicked","who","from","type","pid"],function(i){a[i]=b.get(i)});this.openSelectDialog(a,f)}}},openSelectDialog:function(a,b){Ext.create("SYNO.DSMMobile.ux.SelectDialog",{showBy:[b],options:[{display:_T("connections","kick_connection"),value:"kill",handler:Ext.bind(this.killConnection,this,[a]),scope:this}]})},killConnection:function(a){if(a.can_be_kicked===false){return}var c=[],b=[],d=false;if("HTTP/HTTPS"===a.type){b.push({who:a.who,from:a.from})}else{c.push({pid:a.pid,type:a.type,who:a.who,from:a.from})}if(_S("username")===a.who){d=true}if(d){Ext.Msg.confirm(_T("connections","connections_title"),_T("connections","confirm_kick_self"),function(e){if(e==="yes"){this.doKill(c,b)}},this)}else{this.doKill(c,b)}},doKill:function(b,a){Ext.Viewport.mask({xtype:"loadmask",message:"Loading..."});this.sendWebAPI({api:"SYNO.Core.CurrentConnection",method:"kick_connection",timeout:450000,params:{service_conn:b,http_conn:a},version:1,scope:this,callback:function(c,d){Ext.Viewport.unmask();if(!c){}else{this.loadStore()}}})},initStore:function(){},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.initStore();this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.ConnectedUserTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.ResourceMonitor.ConnectedList"],config:{title:"ConnectedUserTab title",layout:"fit",items:[{xclass:"SYNO.Mobile.ResourceMonitor.ConnectedList"}]}});Ext.define("SYNO.Mobile.ResourceMonitor.MemoryCompositionMain",{extend:"SYNO.DSMMobile.base.TabPanel",config:{memory:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.ResourceMonitor.PhysicalMemoryTab",title:_T("rsrcmonitor","physical_memory"),memory:this.getMemory()},{xclass:"SYNO.Mobile.ResourceMonitor.SwapMemoryTab",title:_T("rsrcmonitor","swap"),memory:this.getMemory()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.MemoryCompositionMainOld",{extend:"SYNO.DSMMobile.base.Panel",config:{memory:null,layout:"fit",title:_T("rsrcmonitor","memory_composition")},initialize:function(){this.callParent(arguments);this.setItems([{xclass:"SYNO.Mobile.ResourceMonitor.PhysicalMemoryTab",memory:this.getMemory()}])}});Ext.define("SYNO.Mobile.ResourceMonitor.LineChart",{extend:"Ext.Container",xtype:"syno-mobile-resourcemonitor-linechart",config:{html:"<canvas>",maxValue:100,lineColor:"#000000",lineWidth:2,leftPadding:(SYNO.DSMMobile.util.Env.isPhone)?15:20,rightPadding:15},initialize:function(){this.addCls("resource-line-chart");this.on("painted",this.onResize,this);this.history=[];this.devicePixelRatio=window.devicePixelRatio},setWidth:function(e){var c=this.element.down("canvas"),b=this.devicePixelRatio,d,a;d=e-this.getLeftPadding()-this.getRightPadding()-2;a=this.element.getSize().height-2;this.callParent([d]);c.dom.width=d*b;c.dom.height=a*b;c.setSize({width:d,height:a});this.updateDrawConfig()},updateDrawConfig:function(){var k,c,j,e,m,l;var f=this.element.down("canvas");var d=f.dom;var h=this.getMaxValue();c=f.getWidth();j=f.getHeight();k=d.getContext("2d");e=1*(c/Math.max(c/100,5)).toFixed();m=c/e;l=j/h;var b=Ext.Viewport.getWindowWidth(),i=Ext.Viewport.getWindowHeight();var g=Math.max(b,i);var a=Math.ceil(g/m);this.drawConfig={ctx:k,width:c,height:j,canvas:d,canvasW:d.width,canvasH:d.height,dx:m,dy:l,maxDataSize:a}},getDrawConfig:function(){if(!this.drawConfig){this.updateDrawConfig()}return this.drawConfig},addPoint:function(a){this.history.unshift(a);this.prunDataOutOfSight();this.drawChart()},prunDataOutOfSight:function(){var a=this.getDrawConfig();if(this.history.length>a.maxDataSize){this.history=this.history.slice(0,a.maxDataSize)}},drawChart:function(){var b=this.getDrawConfig();var c=this.getLineColor();var a=b.ctx;a.save();a.clearRect(0,0,b.canvasW,b.canvasH);a.translate(b.canvasW,b.canvasH);a.scale(this.devicePixelRatio,this.devicePixelRatio);this.strokeLine(a,this.history,c,-b.dx,-b.dy);a.restore()},strokeLine:function(c,f,g,d,b){var a=f.length;c.lineJoin="round";c.lineWidth=this.getLineWidth();c.strokeStyle=g;c.beginPath();c.moveTo(0,f[0]*b);var e;for(e=0;e<a;++e){c.lineTo(e*d,f[e]*b)}c.stroke()}});Ext.define("SYNO.Mobile.ResourceMonitor.NetworkLineChart",{extend:"SYNO.Mobile.ResourceMonitor.LineChart",config:{html:"<canvas>",cls:"resource-line-chart",maxValue:100,ulColor:"#0AC8CE",dlColor:"#FF4B4B",lineWidth:2},initialize:function(){this.callParent(arguments)},addPoint:function(b){var a=Math.max(b.ul,b.dl);if(a>this.getMaxValue()){this.setMaxValue(a)}this.callParent(arguments)},drawChart:function(){var d=this.getDrawConfig();var c=d.ctx;var h=[],b=[],e,f;var g=this.history,a=g.length;for(e=0;e<a;e++){h.push(g[e].dl);b.push(g[e].ul)}f=d.height/this.getMaxValue();c.save();c.clearRect(0,0,d.canvasW,d.canvasH);c.translate(d.canvasW,d.canvasH);c.scale(this.devicePixelRatio,this.devicePixelRatio);this.strokeLine(c,h,this.getDlColor(),-d.dx,-f);this.strokeLine(c,b,this.getUlColor(),-d.dx,-f);c.restore()}});Ext.define("SYNO.Mobile.ResourceMonitor.UsagePieChart",{extend:"Ext.Container",config:{html:'<canvas width="90px"; height="90px">',cls:"resource-pie-chart",colorUsed:"#32AAFE",colorFree:"#A0DC14"},drawChart:function(f,g){var a,c,b,d;var e=this.element.down("canvas");d=e.dom;b=d.getContext("2d");a=d.width/2;c=(2*Math.PI*(g/(f+g)));b.clearRect(0,0,d.width,d.height);this.fillPie(b,a,0,c,this.getColorFree());this.fillPie(b,a,c,0,this.getColorUsed())},fillPie:function(c,b,a,f,e){var d=b;var g=(((a+f)%(2*Math.PI))===0);c.beginPath();if(!g){c.moveTo(d,d);c.arc(d,d,b,a,f,false)}else{c.arc(d,d,b,0,Math.PI*2,false)}c.closePath();c.fillStyle=e;c.fill()}});Ext.define("SYNO.Mobile.ResourceMonitor.PerformanceTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.ResourceMonitor.NetworkLineChart","SYNO.Mobile.ResourceMonitor.LineChart","SYNO.Mobile.ResourceMonitor.UsagePieChart"],config:{cls:"rs-performance",info:null,scrollable:{direction:"vertical",directionLock:true},netwokPanels:[],items:[{xclass:"SYNO.Mobile.ResourceMonitor.CPUPanel",itemId:"cpu_panel"},{xclass:"SYNO.Mobile.ResourceMonitor.MemoryPanel",itemId:"memory_panel"}]},defineFields:function(){this.cpuPanel=this.down("#cpu_panel");this.memoryPanel=this.down("#memory_panel")},onResize:function(){var a=Ext.ComponentQuery.query("syno-mobile-resourcemonitor-linechart",this),b=this.element.getWidth();Ext.each(a,function(c){c.setWidth(b)},this)},monitorModule:function(){this.on("painted",function(){var a=this.up("syno_module");a.on("updateInfo",this.onReceiveInfo,this)},this,{single:true});this.on("resize",this.onResize,this)},initialize:function(){this.defineFields();this.monitorModule();this.networkPanel=[];this.dataInitialized=false;SYNO.DSMMobile.utils.mask("load",this);this.callParent(arguments)},processInfo:function(a){if(!Ext.isArray(a.api_type)){return a}else{return a.GetSystemLoading.resp}},onReceiveInfo:function(a){a=this.processInfo(a);this.onApplyData(a)},onApplyData:function(a){var b=Ext.ComponentQuery.query("performence_swap_panel");if(!this.dataInitialized){this.dataInitialized=true;SYNO.DSMMobile.utils.unmask(this)}this.cpuPanel.updateData(a.cpu);this.memoryPanel.updateData(a.memory);Ext.each(b,function(c){c.updateData(a.memory)},this);if(!this.networkInitialized){this.addNetworkPanels(a.network)}else{Ext.each(a.network,function(d){var c=this.down("#"+d.device);if(c){c.updateData(d)}},this)}this.apiData=a},addNetworkPanels:function(e){var d,a,c=e.length,f;var b=[];for(d=0;d<c;d++){f=e[d];a=new SYNO.Mobile.ResourceMonitor.NetworkPanel({itemId:f.device,title:f.device==="total"?_T("rsrcmonitor","network"):SYNO.SDS.Utils.Network.idToString(f.device)});b.push(a);this.add(a)}this.setNetwokPanels(b);this.refreshDom();this.networkInitialized=true},refreshDom:function(){this.onResize()},destroy:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.UsageBasePanel",{extend:"SYNO.DSMMobile.ux.FieldSet",config:{},defineFields:function(){},updateData:function(a){},initialize:function(){this.defineFields();this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.CPUPanel",{extend:"SYNO.Mobile.ResourceMonitor.UsageBasePanel",xtype:"performence_cpu_panel",config:{itemId:"cpu-panel",cls:"cpu-panel",title:_T("rsrcmonitor","rsrcmonitor_cpu_usage"),items:[{xclass:"SYNO.Mobile.ResourceMonitor.LineChart",itemId:"cpu_line_chart",cls:"cpu-line-chart",maxValue:100,lineColor:"#0AC8CE"},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",itemId:"cpu_usage_rec",title:_T("rsrcmonitor","rsrcmonitor_usage"),markColor:"#0AC8CE",cls:"cpu-usage"}]},defineFields:function(){this.lineChart=this.down("#cpu_line_chart");this.rec=this.down("#cpu_usage_rec");this.callParent(arguments)},updateData:function(b){var a=b.system_load+b.user_load;this.rec.setValue(a+"%");this.lineChart.addPoint(a);this.apiData=b;this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.MemoryPanel",{extend:"SYNO.Mobile.ResourceMonitor.UsageBasePanel",xtype:"performence_memory_panel",config:{title:_T("rsrcmonitor","rsrcmonitor_mem_usage"),cls:"memory-panel",layout:"vbox",items:[{xtype:"panel",layout:"hbox",cls:"memory-chart-panel",items:[{xclass:"SYNO.Mobile.ResourceMonitor.UsagePieChart",itemId:"memory_pie_chart",width:90},{xclass:"SYNO.Mobile.ResourceMonitor.LineChart",itemId:"memory_line_chart",flex:1,cls:"left-padding",leftPadding:(SYNO.DSMMobile.util.Env.isPhone)?120:125,maxValue:100,lineColor:"#32AAFE"}]},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",itemId:"memory_used_rec",title:_T("rsrcmonitor","memroy_used"),markColor:"#32AAFE",cls:"used-memory"},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",itemId:"memory_avail_rec",title:_T("rsrcmonitor","memory_free"),markColor:"#A0DC14",cls:"avail-memory"},{xtype:"syno_button",text:_T("rsrcmonitor","memory_composition"),cls:"memory-composition",handler:function(){var b=this.up("syno_module"),a=this.up("performence_memory_panel");b.fireEvent("openMemoryDetail",a.apiData)}}]},defineFields:function(){this.pieChart=this.down("#memory_pie_chart");this.lineChart=this.down("#memory_line_chart");this.usesRec=this.down("#memory_used_rec");this.availRec=this.down("#memory_avail_rec");this.callParent(arguments)},initialize:function(){this.defineFields();this.callParent(arguments)},updateData:function(d){var b=d.total_real-d.avail_real-d.cached-d.buffer;var e=d.total_real-b;var a=Ext.util.Format.fileSize(b*1024);var c=Ext.util.Format.fileSize(e*1024);this.usesRec.setValue(a);this.availRec.setValue(c);this.lineChart.addPoint(d.real_usage);this.pieChart.drawChart(b,e);this.apiData=d;this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.NetworkPanel",{extend:"SYNO.Mobile.ResourceMonitor.UsageBasePanel",xtype:"performence_network_panel",config:{itemId:"network-panel",cls:"network-panel",title:"Network",items:[{xclass:"SYNO.Mobile.ResourceMonitor.NetworkLineChart",itemId:"network_line_chart",cls:"network-line-chart",ulColor:"#0AC8CE",dlColor:"#FF4B4B"},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",itemId:"network-dl-rec",title:_T("rsrcmonitor","rsrcmonitor_recv"),markColor:"#FF4B4B",cls:"network-download"},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",itemId:"network-ul-rec",title:_T("rsrcmonitor","rsrcmonitor_trans"),markColor:"#0AC8CE",cls:"network-upload"}]},defineFields:function(){this.lineChart=this.down("#network_line_chart");this.dlRec=this.down("#network-dl-rec");this.ulRec=this.down("#network-ul-rec");this.callParent(arguments)},initialize:function(){this.defineFields();this.callParent(arguments)},updateData:function(b){var a=Ext.util.Format.fileSize(b.rx);var c=Ext.util.Format.fileSize(b.tx);this.lineChart.addPoint({dl:b.rx,ul:b.tx});this.dlRec.setValue(a+"/s");this.ulRec.setValue(c+"/s");this.apiData=b;this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.SwapPanel",{extend:"SYNO.Mobile.ResourceMonitor.UsageBasePanel",xtype:"performence_swap_panel",config:{itemId:"swap-panel",cls:"swap-panel",title:" ",items:[{xclass:"SYNO.Mobile.ResourceMonitor.NetworkLineChart",itemId:"swap_line_chart",cls:"swap-line-chart",dlColor:"#0086e6",ulColor:"#1eb400"},{xtype:"syno_displayfield",itemId:"swap-total",disablePhoneMultiLine:true,label:_T("rsrcmonitor","total")},{xtype:"syno_displayfield",itemId:"swap-used",disablePhoneMultiLine:true,label:_T("rsrcmonitor","memroy_used")},{xtype:"syno_displayfield",itemId:"swap-util",disablePhoneMultiLine:true,label:_T("rsrcmonitor","utilization")},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",title:_T("rsrcmonitor","si_descr"),itemId:"swap-in-rec",markColor:"#0086e6"},{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",title:_T("rsrcmonitor","so_descr"),itemId:"swap-out-rec",markColor:"#1eb400"}]},defineFields:function(){this.lineChart=this.down("#swap_line_chart");this.inRec=this.down("#swap-in-rec");this.outRec=this.down("#swap-out-rec");this.totalField=this.down("#swap-total");this.usedField=this.down("#swap-used");this.utilField=this.down("#swap-util");this.callParent(arguments)},initialize:function(){this.defineFields();this.callParent(arguments)},updateData:function(c){var e=Ext.util.Format.fileSize(c.si_disk*1024),d=Ext.util.Format.fileSize(c.so_disk*1024),b=Ext.util.Format.fileSize(c.total_swap*1024),a=Ext.util.Format.fileSize((c.total_swap-c.avail_swap)*1024),f=Math.round((c.total_swap-c.avail_swap)*100/c.total_swap)+"%";this.lineChart.addPoint({dl:c.si_disk,ul:c.so_disk});this.inRec.setValue(e+"/s");this.outRec.setValue(d+"/s");this.totalField.setValue(b);this.usedField.setValue(a);this.utilField.setValue(f);this.apiData=c;this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.UsageRecord",{extend:"Ext.Container",xtype:"performance_usage_record",config:{title:null,name:null,renderer:null,layout:"hbox",baseCls:"usage-record",markColor:"#0AC8CE",value:"-",items:[{xtype:"container",itemId:"rec_mark",width:16,cls:"rec-mark"},{xtype:"syno_displayfield",cls:"usage-record-displayfield",itemId:"rec_data",mobileLabelWidth:"50%",flex:1,value:"-"}]},updateMarkColor:function(a){var b=this.down("#rec_mark");b.element.setStyle("background-color",a)},updateValue:function(b){var a=this.down("#rec_data");a.setValue(b)},updateRenderer:function(b){var a=this.down("#rec_data");a.setRenderer(b)},resetOriginalValue:function(){},initialize:function(){var b=this.getTitle(),a=this.down("#rec_data");this.isField=true;a.setLabel(b)}});Ext.define("SYNO.Mobile.ResourceMonitor.TabletMemoryDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:[],config:{memory:null,leftBtn:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.ResourceMonitor.MemoryCompositionMain",memory:this.getMemory()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.PhoneMemoryDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.ResourceMonitor.TabletMemoryDetail"],config:{memory:null,leftBtn:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.ResourceMonitor.MemoryCompositionMain",memory:this.getMemory()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.PhysicalMemoryTab",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.ResourceMonitor.UsageRecord"],config:{memory:null,usage:null,title:"PhysicalMemoryTab title",layout:"vbox",items:[{xclass:"SYNO.Mobile.ResourceMonitor.PhysicalMemoryFieldSet",itemId:"memory-usage"}]},updateMemory:function(b){var a;a={total:b.memory_size,avail:b.total_real,used:b.total_real-b.avail_real-b.cached-b.buffer,buffer:b.buffer,cached:b.cached,free:b.avail_real,util:b.real_usage,reserved:b.memory_size-b.total_real};this.setUsage(a)},updateUsage:function(){this.refreshDom()},refreshDom:function(){var b=this.getUsage(),a=this.down("#memory-usage");SYNO.DSMMobile.utils.bindFieldValue(this,b);a.setUsage(b)},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.PhysicalMemoryBar",{extend:"SYNO.DSMMobile.base.Panel",xtype:"performance_physicalmemorybar",requires:["SYNO.Mobile.ResourceMonitor.UsageRecord"],config:{layout:"hbox",width:"100%",height:50,blocks:[]},updateBlocks:function(){this.refreshDom()},refreshDom:function(){var a=this.getBlocks();this.removeAll();Ext.each(a,function(e,b){var d="memory-block",c;if(b===0){d+=" first-block"}else{if(b===a.length-1){d+=" last-block"}}c=Ext.factory({xtype:"syno_panel",cls:d,flex:e.size});c.element.setStyle("background-color",e.color);this.add(c)},this)},initialize:function(){this.addCls("physical-memory-bar");this.callParent(arguments);this.refreshDom()}});Ext.define("SYNO.Mobile.ResourceMonitor.PhysicalMemoryBarPanel",{extend:"SYNO.DSMMobile.base.Panel",xtype:"performance_physicalmemorybar_panel",requires:["SYNO.Mobile.ResourceMonitor.PhysicalMemoryBar"],config:{layout:{type:"vbox",pack:"center"},height:100,usage:[],usageColor:[],items:[{xclass:"SYNO.Mobile.ResourceMonitor.PhysicalMemoryBar"}]},updateUsage:function(){this.refreshDom()},updateUsageColor:function(){this.refreshDom()},refreshDom:function(){var c=this.getUsage(),b=this.getUsageColor(),a=this.down("performance_physicalmemorybar"),d=[];Ext.each(c,function(f,e){d.push({size:c[e],color:b[e]})},this);a.setBlocks(d)},initialize:function(){this.callParent(arguments);this.refreshDom()}});Ext.define("SYNO.Mobile.ResourceMonitor.PhysicalMemoryFieldSet",{extend:"SYNO.DSMMobile.ux.FieldSet",requires:["SYNO.Mobile.ResourceMonitor.UsageRecord"],config:{usage:null,usageColor:["#caced2","#ffc600","#21bbee","#18bc9a","#84c828"],title:" ",defaults:{xclass:"SYNO.Mobile.ResourceMonitor.UsageRecord",renderer:function(a){return Ext.util.Format.fileSize(a*1024)}},items:[{xclass:"SYNO.Mobile.ResourceMonitor.PhysicalMemoryBarPanel"},{xtype:"syno_displayfield",name:"total",disablePhoneMultiLine:true,label:_T("rsrcmonitor","total")},{xtype:"syno_displayfield",name:"util",disablePhoneMultiLine:true,label:_T("rsrcmonitor","utilization"),renderer:function(a){return a+"%"}},{title:_T("rsrcmonitor","reserved"),name:"reserved",markColor:"#caced2"},{title:_T("rsrcmonitor","memroy_used"),name:"used",markColor:"#ffc600"},{title:_T("rsrcmonitor","memroy_buff"),name:"buffer",markColor:"#21bbee"},{title:_T("rsrcmonitor","memory_cached"),name:"cached",markColor:"#18bc9a"},{title:_T("rsrcmonitor","memory_free"),name:"free",markColor:"#84c828"}]},updateUsage:function(){this.refreshDom()},refreshDom:function(){var e=this.getUsage(),c=this.getUsageColor(),d=this.down("performance_physicalmemorybar_panel"),a,b;if(!e||!d||!c){return}a=[e.reserved,e.used,e.buffer,e.cached,e.free];b=c;d.setUsageColor(b);d.setUsage(a);this.callParent(arguments)},initialize:function(){this.callParent(arguments);this.refreshDom()}});Ext.define("SYNO.DSMMobile.data.ProcessGroup",{extend:"Ext.data.Model",config:{fields:[{name:"display_name",type:"string",convert:function(c,a){var e=a.raw;var b=e.name_i18n;if(b){var d=b.split(":");return _T(d[0],d[1])}else{return e.name}}},{name:"cpuFraction",type:"int",convert:function(b,a){return Math.round(a.raw.cpu_utilization*100*10)/10}},{name:"cpu_time",type:"int"},{name:"memory",type:"int"},{name:"read",type:"int",convert:function(b,a){return Math.round(a.raw.byte_read_per_sec*10)/10}},{name:"write",type:"int",convert:function(b,a){return Math.round(a.raw.byte_write_per_sec*10)/10}}],proxy:{type:"syno",apiType:"ProcessGroupServiceInfo",reader:{type:"json",rootProperty:"slices"}}}});Ext.define("SYNO.Mobile.ResourceMonitor.ProcessGroup",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.DSMMobile.data.ProcessGroup"],config:{cls:"rsmonitor-performance-list",grouped:true,scrollToTopOnRefresh:false,iconWrapperTpl:"",centerTpl:['<div class="rsmonitor-list-item">{[values.display_name]}</div>','<div class="rsmonitor-right-list-item blue" style="min-width:50px">{[this.getSize(values.write)]}</div>','<div class="rsmonitor-right-list-item pipe"></div>','<div class="rsmonitor-right-list-item blue" style="min-width:50px">{[this.getSize(values.read)]}</div>','<div class="rsmonitor-right-list-item pipe"></div>','<div class="rsmonitor-right-list-item blue" style="min-width:50px">{[this.getSize(values.memory)]}</div>','<div class="rsmonitor-right-list-item pipe"></div>','<div class="rsmonitor-right-list-item green">{[this.getFraction(values.cpuFraction)]} %</div>'],itemTpl:[{getSize:function(a){if(isNaN(a)){return"-"}return Ext.util.Format.fileSize(a)},getFraction:function(a){if(isNaN(a)){return"-"}return a}}],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.ProcessGroup",sorters:[{property:"cpuFraction",direction:"DESC"}],grouper:{xtype:"syno_grouper",groupFn:function(a){return'<div class="rsmonitor-group-title">'+_T("rsrcmonitor","service_name")+'</div><div class="rsmonitor-group-right-title blue">'+_T("rsrcmonitor","output_per_sec")+'</div><div class="rsmonitor-group-right-title pipe"></div><div class="rsmonitor-group-right-title blue">'+_T("rsrcmonitor","input_per_sec")+'</div><div class="rsmonitor-group-right-title pipe"></div><div class="rsmonitor-group-right-title blue">'+_T("rsrcmonitor","memory")+'</div><div class="rsmonitor-group-right-title pipe"></div><div class="rsmonitor-group-right-title green">'+_T("rsrcmonitor","cpu")+"</div>"},groupSorterFn:"DESC"}}},loadStore:function(){var a=this.getStore();a.load()},onReceiveInfo:function(a){var b=(a&&a.ProcessGroupStatus&&a.ProcessGroupStatus.resp)?a.ProcessGroupStatus.resp:{};if(!Ext.isArray(b.slices)){return}this.getStore().setData(b.slices)},monitorModule:function(){this.on("painted",function(){var a=this.up("syno_module");a.on("updateInfo",function(){SYNO.DSMMobile.utils.unmask(this)},this,{single:true});a.on("updateInfo",this.onReceiveInfo,this);this.onReceiveInfo(a.getInfo())},this,{single:true})},initialize:function(){this.callParent(arguments);SYNO.DSMMobile.utils.mask("load",this);this.loadStore();this.monitorModule()}});Ext.define("SYNO.Mobile.ResourceMonitor.ProcessList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.ProcessInfo"],config:{cls:"rsmonitor-performance-list",apiParams:null,grouped:true,scrollToTopOnRefresh:false,model:"SYNO.DSMMobile.data.ProcessInfo",loadingText:null,leftTpl:null,iconWrapperTpl:"",centerTpl:['<div class="rsmonitor-list-item">{command}</div>','<div class="rsmonitor-right-list-item green">{[this.getPercentage(values.cpu)]}</div>','<div class="rsmonitor-right-list-item pipe"></div>','<div class="rsmonitor-right-list-item blue">{[this.getSize(values.mem)]}</div>'],rightTpl:null,itemTpl:[{getSize:function(a){return Ext.util.Format.fileSize(a*1024)},getPercentage:function(a){return a/10+" %"}}],store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.ProcessInfo",memory:{},sorters:[{property:"cpu",direction:"DESC"}],grouper:{xtype:"syno_grouper",groupFn:function(a){return'<div class="rsmonitor-group-title">'+_T("rsrcmonitor","process")+'</div><div class="rsmonitor-group-right-title green">'+_T("rsrcmonitor","cpu")+'</div><div class="rsmonitor-group-right-title pipe"></div><div class="rsmonitor-group-right-title blue">'+_T("rsrcmonitor","memory")+"</div>"},groupSorterFn:"DESC"}},listeners:{itemtap:function(b,d,f,a,e,c){}}},initStore:function(){},loadStore:function(){var a=this.getStore();a.load()},onReceiveInfo:function(b){var a=this.getStore();a.setMemory(b);this.loadStore()},monitorModule:function(){this.on("painted",function(){var a=this.up("syno_module");a.on("updateInfo",this.onReceiveInfo,this);this.onReceiveInfo(a.getInfo())},this,{single:true})},initialize:function(){SYNO.DSMMobile.utils.mask("load",this);this.initStore();this.loadStore();this.monitorModule();this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.ProcessTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.ResourceMonitor.ProcessList","SYNO.Mobile.ResourceMonitor.ProcessGroup"],config:{title:"ProcessTab title",layout:"fit"},initialize:function(){this.setItems([{xclass:SYNO.API.GetKnownAPI("SYNO.Core.System.ProcessGroup")?"SYNO.Mobile.ResourceMonitor.ProcessGroup":"SYNO.Mobile.ResourceMonitor.ProcessList"}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.ResourceMonitor.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.ResourceMonitor.PerformanceTab","SYNO.Mobile.ResourceMonitor.ProcessTab","SYNO.Mobile.ResourceMonitor.ConnectedUserTab"],config:{items:[{title:_T("rsrcmonitor","performance"),iconCls:"syno-mobile-icon-resource-performance",xclass:"SYNO.Mobile.ResourceMonitor.PerformanceTab"},{title:_T("rsrcmonitor","process"),iconCls:"syno-mobile-icon-resource-processes",xclass:"SYNO.Mobile.ResourceMonitor.ProcessTab"},{title:_T("connections","connections_title"),iconCls:"syno-mobile-icon-resource-connected",xclass:"SYNO.Mobile.ResourceMonitor.ConnectedUserTab"}]}});Ext.define("SYNO.Mobile.ResourceMonitor.SwapMemoryTab",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.ResourceMonitor.UsageRecord"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{memory:null,usage:null,title:"PhysicalMemoryTab title",layout:"vbox",items:[{xclass:"SYNO.Mobile.ResourceMonitor.SwapPanel",itemId:"swap-usage"}]},updateMemory:function(b){var a;a={swap_in:b.si_disk,swap_out:b.so_disk,swap_avail:b.avail_swap,swap_used:b.total_swap-b.avail_swap,swap_total:b.total_swap,swap_util:(b.total_swap-b.avail_swap)*100/b.total_swap};this.setUsage(a)},updateUsage:function(){this.refreshDom()},refreshDom:function(){},onResize:function(){var a=Ext.ComponentQuery.query("syno-mobile-resourcemonitor-linechart",this),b=this.element.getWidth();Ext.each(a,function(c){c.setWidth(b)},this)},initialize:function(){this.on("resize",this.onResize,this);this.callParent(arguments)}});Ext.define("SYNO.Mobile.Service.ServiceList",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{scrollable:true,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.Service",sorters:[{property:"display_name",direction:"ASC"}]},items:[{xtype:"syno_fieldset",itemId:"service_fieldset",items:[]}]},controlService:function(d,e,c){var a=SYNO.DSMMobile.webapi,b=SYNO.DSMMobile.utils.getCallback;a.ControlService(d,b(e,c||window),this)},onServiceOptionChange:function(f,d,c){var a=f.getRecord(),e=a.getData(),b=e.service_id,g={};g[b]=d===1?"start":"stop";f.disable();this.controlService(g,function(h,l,k,j){if(!f.isDestroyed){f.enable()}if(b==="pkg-synosamba-smbd"&&d===0){var i=SYNO.DSMMobile.webapi;i.SetWSTransfer(false)}},this)},addItemToFieldset:function(b,c,d){if(c.record&&null===c.record.get("enable")){b.add({xtype:"syno_field",label:c.record.get("display_name")})}else{var a=b.add(Ext.apply({xtype:"syno_togglefield"},c));a.on("change",d,this)}},onStoreLoad:function(){var a=this.getStore(),b=a.getData();b.each(function(e){var d=e.data,c;if(d.service_id==="pgsql"||d.service_id==="ups-usb"){return}c=this.serviceFieldset;if(null===d.enable&&(!d.additional||"active"!==d.additional.active_status)){return}this.addItemToFieldset(c,{label:d.display_name,value:d.enable?1:0,record:e},this.onServiceOptionChange)},this);SYNO.DSMMobile.utils.unmask(this)},initStore:function(){var a=this.getStore();a=Ext.factory(a);a.on({load:this.onStoreLoad,scope:this});this.setStore(a)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){SYNO.DSMMobile.utils.mask("load",this);this.serviceFieldset=this.down("#service_fieldset");this.initStore();this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Service.Main",{extend:"SYNO.DSMMobile.base.FormPanel",requires:["SYNO.Mobile.Service.ServiceList"],config:{layout:"fit",scrollable:null,items:[{xclass:"SYNO.Mobile.Service.ServiceList"}]}});Ext.define("SYNO.Mobile.base.SubViewStateMixin",{saveSubViewState:function(a){var b;if(Ext.isFunction(a.saveState)){a.saveState();b=a.getState();this.subViewStateMap.replace(a.$className,b)}},restoreSubViewState:function(a){var c=a.xclass,b=this.getSubViewState(c);if(b){a.state=b}return a},initSubViewStateMixin:function(){this.subViewStateMap=Ext.create("Ext.util.HashMap");this.on("painted",function(){this.parent.on("beforePush",this.saveSubViewState,this);this.parent.on("beforePop",this.saveSubViewState,this)},this,{single:true})},getSubViewState:function(a){return this.subViewStateMap.get(a)}});Ext.define("SYNO.DSMMobile.util.PasswordConfirm",{singleton:true,confirmImpl:function(b,e,i,f,d,c){var j=SYNO.DSMMobile.webapi,a=b.confirmString;function h(k,l){if(k!=="ok"){c();return}else{j.AuthPasswordConfirm(l,function(m,o){var n;if(!m){n=SYNO.API.getErrorString(o);g(n);return}e()})}}function g(k){var l=a;if(k){l=k+"<br>"+a}Ext.Msg.prompt("",l,h,window,false,"",{xtype:"syno_passwordfield"})}g()},confirm:function(d,c,e,b){var a;a=Ext.create("SYNO.DSMMobile.lib.AsyncTask",{fn:this.confirmImpl,scope:this,info:d,ui:{start:function(){SYNO.DSMMobile.utils.mask("load")},stop:function(){SYNO.DSMMobile.utils.unmask()},succ:function(){if(Ext.isFunction(c)){c()}},fail:function(){if(Ext.isFunction(e)){e()}},abort:function(){if(Ext.isFunction(b)){b()}},scope:this}});a.run()}});Ext.define("SYNO.Mobile.SharedFolder.LibImpl",{singleton:true,generatePackageWarningMsg:function(b,c){var d=[];var e;for(var a=0;a<b.length;a++){d.push(SYNO.DSMMobile.util.Share.GetPackageName(b[a]))}e=String.format("{0}<br><b>{1}</b><br>",c,b.join(", "));e=String.format(e,d.join(", "));return e},combineWarningMsg:function(c){var i=[];if(c.hasOwnProperty("warning_external")){var a=String.format("{0}<br><b>{1}</b><br>",_T("share","share_cannot_delete_for_reserved"),c.warning_external.join(", "));i.push(a)}if(c.hasOwnProperty("warning_mount_point")){var f=String.format("{0}<br><b>{1}</b><br>",_T("share","error_mount_point_delete"),c.warning_mount_point.join(", "));i.push(f)}if(c.hasOwnProperty("warning_homes")){var h=String.format("{0}<br><b>{1}</b><br>",_T("share","error_home_service"),c.warning_homes.join(", "));i.push(h)}if(c.hasOwnProperty("warning_ftp_anonymousroot")){var b=String.format("{0}<br><b>{1}</b><br>",_T("share","error_ftp_anonymousroot"),c.warning_ftp_anonymousroot.join(", "));i.push(b)}if(c.hasOwnProperty("warning_replica_demote")){var d=String.format("{0}<br><b>{1}</b><br>",_T("share","error_replica_demote"),c.warning_replica_demote.join(", "));i.push(d)}if(c.hasOwnProperty("warning_replica_promote")){var g=String.format("{0}<br><b>{1}</b><br>",_T("share","error_replica_promote"),c.warning_replica_promote.join(", "));i.push(g)}if(c.hasOwnProperty("warning_disable_package")||c.hasOwnProperty("warning_uninstall_package")){if(c.hasOwnProperty("warning_disable_package")){i.push(this.generatePackageWarningMsg(c.warning_disable_package,_T("share","error_packages")))}if(c.hasOwnProperty("warning_uninstall_package")){i.push(this.generatePackageWarningMsg(c.warning_uninstall_package,_T("share","error_package_uninstall")))}}else{if(c.hasOwnProperty("warning_package")){i.push(this.generatePackageWarningMsg(c.warning_package,_T("share","error_packages")))}}if(c.hasOwnProperty("warning_cluster_share")){var e=String.format("{0}<br><b>{1}</b><br>",_T("share","error_cluster_share"),c.warning_cluster_share.join(", "));i.push(e)}return i},combineWarningConfirm:function(b){var c="";if(b.hasOwnProperty("warning_sd_destination")){var d="";if(b.hasOwnProperty("warning_sd_default_destination")){d=_T("share","share_rmsdcopyfolder");d=String.format(d,b.warning_sd_destination,b.warning_sd_default_destination)}else{d=_T("share","share_rmsdcopyfolderempty");d=String.format(d,b.warning_sd_destination)}c=d}if(b.hasOwnProperty("warning_usb_destination")){var a="";if(b.hasOwnProperty("warning_usb_default_destination")){a=_T("share","share_rmusbcopyfolder");a=String.format(a,b.warning_usb_destination,b.warning_usb_default_destination)}else{a=_T("share","share_rmusbcopyfolderempty");a=String.format(a,b.warning_usb_destination)}if(c===""){c=a}else{c=c+"<b>"+a}}if(b.hasOwnProperty("warning_disable_service")){Ext.each(b.warning_disable_service,function(i){var f=i.services;var g=[];var e="";var h="";if(!Ext.isArray(f)){return false}Ext.each(f,function(j){g.push(this.GetServiceI18N(j))},this);e="<b>"+i.share+"</b>";h="<b>"+g.join(", ")+"</b>";if(c===""){c=String.format(_T("share","share_service_disable_confirm"),e,h)}else{c=c+"<br>"+String.format(_T("share","share_service_disable_confirm"),e,h)}},this);c=c+"<br><br>"+_T("share","share_service_disable_confirm_post")}return c},GetServiceI18N:function(a){return SYNO.DSMMobile.util.Share.GetServiceI18N(a)},collectErrorsInResp:function(b){var a={};Ext.each(b,function(c){if(c&&!c.succ&&c.resp.errors){Ext.iterate(c.resp.errors,function(d,e){a[d]=e},this)}},this);return a},checkWebAPIHasFail:function(b){var a=false;Ext.each(b,function(c){if(Ext.isDefined(c)&&!c.succ){a=true;return false}});return a}});Ext.define("SYNO.Mobile.SharedFolder.Lib",{singleton:true,config:{},constructor:function(){this.callParent(arguments);this.init()},buildShareInfoConfig:function(a){var b;b={name:a.name,vol_path:a.vol_path,desc:a.description,name_org:"",enable_recycle_bin:a.enable_recycle_bin===1?true:false,recycle_bin_admin_only:(a.enable_recycle_bin===1&&a.recycle_bin_admin_only===1)?true:false};return b},createFolder:function(e,d,g){var a=e.values,b=this.buildShareInfoConfig(a),c=this.api,f;f={name:a.name,shareinfo:b};c.CreateShare(f);c.SetSharePermissionEx({type:"local_user",name:a.name,permission:e.user});c.SetSharePermissionEx({type:"local_group",name:a.name,permission:e.group});c.sendQueue(true,function(h,i){if(!h||i.has_fail){g(i.code);return}d()},this)},validateSetFolder:function(d,h,k,j,g,f){var b=d.folder,l=d.values,c=this.buildShareInfoConfig(l),i=this.api,e,a;e={name:b.name,shareinfo:c};i.ValidateSetShare(e);i.sendQueue(true,function(m,p){var o,n;if(!m){k(p.code);return}a=[p.ValidateSetShare];n=this.impl.collectErrorsInResp(a);if(this.impl.checkWebAPIHasFail(a)){o=this.impl.combineWarningMsg(n);k(null,o);return}else{if(!p.ValidateSetShare.resp){h()}else{if(p.ValidateSetShare.resp.hard){o=String.format("{0}<br><b>{1}</b><br>",_T("share","edit_hard_check_fail"),SYNO.SDS.Utils.GetFeasibilityCheckMsgJoin(p.ValidateSetShare.resp.hard[b.name]));k(null,o);return}else{o=this.impl.combineWarningConfirm(p.ValidateSetShare.resp);if(p.ValidateSetShare.resp.soft){o+=String.format("{0}<br><b>{1}</b><br>",_T("share","edit_soft_check_fail"),SYNO.SDS.Utils.GetFeasibilityCheckMsgJoin(p.ValidateSetShare.resp.soft[b.name]))}g(o,function(q){if(q==="yes"){h()}else{f()}})}}}},this)},saveFolder:function(f,d,h){var e=f.folder,a=f.values,b=this.buildShareInfoConfig(a),c=this.api,g;g={name:e.name,shareinfo:b};c.SetShare(g);if(f.user){c.SetSharePermissionEx({type:"local_user",name:a.name,permission:f.user})}if(f.group){c.SetSharePermissionEx({type:"local_group",name:a.name,permission:f.group})}c.sendQueue(true,function(i,j){if(!i||j.has_fail){h(j.code);return}d()},this)},validateDeleteFolder:function(c,g,j,i,f,e){var k=c.values,b=k.name,l=k.vol_path,h=this.api,d,a;if(l.indexOf("Gluster")!==-1){j(null,_T("share","share_gluster_share")+b)}d={name:[b]};h.GetStorageVolume();h.ValidateDeleteShare(d);h.sendQueue(true,function(m,q){var o=false,p,n;if(!m){j(q.code);return}if(!q.GetStorageVolume.succ){j(q.code);return}Ext.each(q.GetStorageVolume.resp.volumes,function(r){if(r.volume_path===l&&r.readonly===true){o=true;return false}},this);if(o){j(null,_T("share","error_volume_read_only"));return}a=[q.ValidateDeleteShare];n=this.impl.collectErrorsInResp(a);if(this.impl.checkWebAPIHasFail(a)){p=this.impl.combineWarningMsg(n);j(null,p);return}else{if(!q.ValidateDeleteShare.resp){g()}else{if(q.ValidateDeleteShare.resp.hard){p=String.format("{0}<br><b>{1}</b><br>",_T("share","edit_hard_check_fail"),SYNO.SDS.Utils.GetFeasibilityCheckMsgJoin(q.ValidateDeleteShare.resp.hard[b]));j(null,p);return}else{p=this.impl.combineWarningConfirm(q.ValidateDeleteShare.resp);if(q.ValidateDeleteShare.resp.soft){p+=String.format("{0}<br><b>{1}</b><br>",_T("share","edit_soft_check_fail"),SYNO.SDS.Utils.GetFeasibilityCheckMsgJoin(q.ValidateDeleteShare.resp.soft[b]))}f(p,function(r){if(r==="yes"){g()}else{e()}})}}}},this)},deleteFolder:function(b,f,h,g,e,d){var i=SYNO.DSMMobile.webapi,j=b.values,a=j.name,c;c={name:[a]};i.DeleteShare(c,function(k,l){if(!k){h(l.code);return}f()})},emptyRecycleBin:function(e,d,g){var c=SYNO.DSMMobile.webapi,b=e.values,f,a;f=b.name;a=Ext.create("Ext.util.DelayedTask",function(){c.GetRecycleBin(f,function(h,i){if(!h||i.has_fail){g(i.code);return}if(i.is_cleaning===false){d(_T("mobile","sharefolder_empty_recyclebin_succ"))}else{a.delay(1000)}},this)},this);c.StartRecycleBin(f,function(h,i){if(!h||i.has_fail){g(i.code);return}a.delay(1000)},this)},init:function(){this.impl=SYNO.Mobile.SharedFolder.LibImpl;this.api=Ext.create("SYNO.DSMMobile.lib.WebAPI",{using:"SYNO.DSMMobile.lib.WebAPIConfig",isCompound:true})}});Ext.define("SYNO.Mobile.SharedFolder.FolderList",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.SharedFolder"],mixins:["SYNO.Mobile.base.CanFindModuleMixin"],config:{model:"SYNO.DSMMobile.data.SharedFolder",monitorRefreshEvent:true,leftTpl:" ",leftCls:"sharedfolder-list-icon",centerTpl:['<div class="sharedfolder-list-title">{name}</div>','<div class="sharedfolder-list-desc">{desc:htmlEncode}</div>'],rightTpl:null,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.SharedFolder"},listeners:{itemtap:function(h,f,g,e,a,i){var b={},c=this.findModule();var d=["name","desc","enable_recycle_bin","recycle_bin_admin_only","vol_path","is_aclmode","is_usb_share","external_dev_type","encryption"];Ext.each(d,function(j){b[j]=e.get(j)});c.fireEvent("openFolderDetail",b)}}},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){this.loadStore();this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.Main",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.SharedFolder.FolderList"],config:{layout:"fit",items:[{itemId:"keyword",xtype:"syno_searchfield",docked:"top",listeners:{keyup:{fn:function(){this.parent.fireEvent("updateFilter")},buffer:300},clearicontap:{fn:function(){this.parent.fireEvent("updateFilter")}}}},{itemId:"folderlist",xclass:"SYNO.Mobile.SharedFolder.FolderList"}],listeners:{updateFilter:"onUpdateFilter"}},onUpdateFilter:function(){var d=this.down("#keyword"),c=this.down("#folderlist"),b=c.getStore(),a=d.getValue();b.clearFilter();if(a!==""){b.filter("name",a,true,false)}}});Ext.define("SYNO.Mobile.StorageManager.HDDTab",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno-mobile-storagemanager-hddtab",requires:[],config:{itemId:"stgmgr-hdd-tab",layout:"vbox",cls:"stgmgr-mobile",scrollable:true,items:[{xtype:"syno_panel",itemId:"storage_overview_hdd"},{xtype:"syno_panel",itemId:"disk_info_hdd"},{xclass:"SYNO.DSMMobile.ux.FieldSet",itemId:"disk_list_fieldset",title:_T("tree","leaf_hddmgr"),cls:"stgmgr-volume-usage",items:[{xclass:"SYNO.Mobile.StorageManager.DiskList",itemId:"disk_list"}]}]},initialize:function(){var a=this;a.on("painted",function(){a.up("syno_module").on("updateInfo",a.updateInfo,a)},a,{single:true});a.on("painted",function(){a.refreshDom()},a);a.on("activate",function(){a.updateInfo(a.up("syno_module").getData())},a);a.on("resize",a.onResize,a);Ext.Viewport.on("orientationchange",a.onOrientationChange,a);a.callParent(arguments)},onOrientationChange:function(){var d,c=false,b,a;if(!this.isRendered()){return}if("Phone"===Ext.os.deviceType){return}if("portrait"===Ext.Viewport.getOrientation()){d="50%";c=true}else{d="25%"}for(a=0;a<4;a++){b=Ext.get(String.format("stgmgr-hdd-disk-{0}",a));if(c&&a>1){b.removeCls("stgmgr-disk-info1");b.addCls("stgmgr-disk-info2")}else{b.removeCls("stgmgr-disk-info2");b.addCls("stgmgr-disk-info1")}b.setWidth(d)}},updateInfo:function(f){var e=this,d=e.up("syno_module"),g={},c=[],b,h,a=e.down("#disk_list_fieldset").down("#disk_list").getStore();d.prepareHealth(g);d.prepareOverview(g);e.prepareDisk(f,c);g.id="hdd";e.down("#storage_overview_hdd").updateHtml(d.renderOverview(g));e.down("#disk_info_hdd").updateHtml(e.renderDiskInfo(g.diskInfo));b=e.down("#disk_list_fieldset").down("#disk_list").getScrollableBehavior().scrollView._scroller;h=b.position.y;a.removeAll();a.addData(c);e.down("#disk_list_fieldset").down("#disk_list").setHeight(67*c.length);b.scrollTo(0,h);e.refreshDom();e.onOrientationChange()},renderDiskInfo:function(f){var b,g,d,e=[],c=false,a;g=['<div id="{id}" class="{class}" style="width: {width}">','<div class="stgmgr-disk-info-count">{usedCount}</div>','<div class="stgmgr-disk-info-type">{diskType}</div>',"</div>"];if("Phone"===Ext.os.deviceType||"portrait"===Ext.Viewport.getOrientation()){d="50%";c=true}else{d="25%"}for(a=0;a<f.length;a++){b=g.join("");b=b.replace(/\{id\}/g,String.format("stgmgr-hdd-disk-{0}",a));if(c&&a>1){b=b.replace(/\{class\}/g,"stgmgr-disk-info2")}else{b=b.replace(/\{class\}/g,"stgmgr-disk-info1")}b=b.replace(/\{width\}/g,d);b=b.replace(/\{usedCount\}/g,f[a].usedCount);b=b.replace(/\{diskType\}/g,f[a].diskType);e.push(b)}e.push('<div style="clear: both"></div>');b=e.join("");return b},prepareDisk:function(h,o){var n=SYNO.SDS.Utils.StorageUtils,f=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,j,c,d,g,b,m,a,k,e;function l(i){if(_D("supportsas")==="yes"){return"{0} / {1}".format(i.diskType,i.isSsd?"SSD":"HDD")}else{return i.isSsd?"SSD":"HDD"}}h.disks.sort(SYNO.DSMMobile.utils.diskSortCompare);for(j=0;j<h.disks.length;j++){c=h.disks[j];if("cache"===c.portType){d=_T("volume","dedicated_ssd_cache")}else{d=f.DiskNameRenderer(c.name)}g=("hotspare"===c.used_by)?"hotspare":c.status;g=f.DiskSummaryStatusRenderV2(g,c.overview_status);b=String.format("{0} {1}",(parseInt(c.size_total,10)/1024/1024/1024).toFixed(2),_T("status","status_disk_size_unit"));m=(0===c.temp)?_T("common","loading"):f.DiskTemperatureRender(c.temp);a=n.SpaceIDParser(c.used_by).str||"-";k=String.format("{0} | {1} | {2} | {3}",l(c),b,m,a);o.push({name:d,status:g,detail:k,order:parseInt(c.num_id,10),ctnOrder:parseInt(c.container.order,10),diskType:c.diskType,device:c.device})}for(j=0;j<h.ports.length;j++){e=h.ports[j];d=String.format("{0} {1}",_T("volume","volume_disk"),e.port_num);g=String.format('<span class="red-status">{0}</span>',_T("disk_info","disk_disable_title"));k="-";o.push({name:d,status:g,detail:k,order:parseInt(e.num_id,10),ctnOrder:0,device:""})}},refreshDom:function(){var b=this,e,a,d,c;if(!b.isRendered()){return}e=Ext.get("stgmgr-overview-hdd");a=Ext.get("stgmgr-overview-icon-hdd");d=Ext.get("stgmgr-overview-text-hdd");if(!e||!a||!d){return}d.setLeft(0);c=(e.getWidth()/2)-((a.getWidth()+20+d.getWidth())/2);a.setLeft(c);d.setLeft(c+a.getWidth()+20)},onResize:function(){var a=this;a.refreshDom()}});Ext.define("SYNO.Mobile.StorageManager.DiskList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin"],config:{scrollable:false,disableSelection:true,leftTpl:" ",leftCls:"stgmgr-disk-list-icon",centerTpl:['<div class="stgmgr-volume-usage-name">{name}</div>','<div class="stgmgr-volume-usage-status">({status})</div>','<div class="stgmgr-volume-usage-capacity">{detail}</div>'],iconWrapperTpl:['<tpl if="!this.isSAS(values)">','<div class="syno-mobile-listitem-icon {{iconCls}}" style="{{iconStyle}}">{{iconTpl}}</div>',"</tpl>"].join(""),itemTpl:[{isSAS:function(a){return"SAS"===a.diskType}}],store:{fields:["name","status","detail","device","diskType"]},listeners:{itemtap:function(l,g,h,f,b,m){var c=this.findModule(),k=SYNO.DSMMobile.webapi,d=this.up("syno-mobile-storagemanager-hddtab"),j=c.getData().disks,a,e;if(""===f.data.device){return}if("SAS"===f.data.diskType){return}for(e=0;e<j.length;e++){if(j[e].device===f.data.device){a=j[e]}}if(!a){return}a.name=f.data.name;SYNO.DSMMobile.utils.mask("load",d);k.GetDiskHealthInfo({device:f.data.device},function(n,i){if(this.isDestroyed){return}if(!n){return}SYNO.DSMMobile.utils.unmask(d);c.fireEvent("openHddDetail",{disk:a,healthInfo:i})},this)}}}});Ext.define("SYNO.Mobile.StorageManager.HddInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno_mobile_stgmgr_hddinfo",mixins:["SYNO.Mobile.base.SubViewStateMixin"],requires:["SYNO.Mobile.base.SubViewStateMixin"],config:{scrollable:true,layout:"vbox",module:{},disk:{},healthInfo:{},cls:"stgmgr-mobile",items:[{xtype:"syno_fieldset",title:" ",defaults:{htmlEncode:false},items:[{xtype:"syno_displayfield",name:"model",label:_T("volume","volume_diskmodel")},{xtype:"syno_displayfield",name:"serial",label:_T("smart","smart_disk_serial")},{xtype:"syno_displayfield",name:"firmware",label:_T("smart","smart_disk_firmware")},{xtype:"syno_displayfield",name:"capacity",label:_T("volume","volume_diskcapacity")},{xtype:"syno_displayfield",name:"temperature",label:_T("status","temperature")},{xtype:"syno_displayfield",name:"diskType",label:_T("volume","volume_disk_type")},{xtype:"syno_displayfield",name:"is4Kn",label:_T("volume","4k_hdd")},{xtype:"syno_displayfield",name:"space",label:_T("volume","volume")}]},{xtype:"syno_fieldset",title:" ",defaults:{xtype:"syno_buttonfield",htmlEncode:false,handler:function(a){var d=a.getItemId(),b=this.up("syno_mobile_stgmgr_hddinfo");function c(e){switch(e){case"healthInfo":return"SYNO.Mobile.StorageManager.HealthInfo";case"smartInfo":return"SYNO.Mobile.StorageManager.SmartInfo"}}b.fireEvent("pushContent",{xclass:c(d)})}},items:[{itemId:"healthInfo",name:"healthInfo",label:_T("disk_info","disk_health_info")},{itemId:"smartInfo",name:"smartInfo",label:_T("smart","smart_toolbar_smart_info")}]}],listeners:{pushContent:"onPushContent"}},initialize:function(){var d=this,b,a=SYNO.SDS.Utils.StorageUtils,c=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,e=d.getDisk(),f=d.getHealthInfo().healthInfo;b=parseInt(e.size_total,10)/1024/1024/1024;SYNO.DSMMobile.utils.bindFieldValue(d,{model:e.model,serial:e.serial,firmware:e.firm,capacity:String.format("{0} {1}",b.toFixed(2),_T("status","status_disk_size_unit")),temperature:c.DiskTemperatureRender(e.temp),diskType:e.isSsd?"SSD":"HDD",is4Kn:e.is4Kn?_T("common","yes"):_T("common","no"),space:a.SpaceIDParser(e.used_by).str,healthInfo:c.DiskSummaryStatusRenderV2(e.status,e.overview_status),smartInfo:c.smartStatusRender(f.overview.smart,f.overview.smart_progress)},{model:"model",serial:"serial",firmware:"firmware",capacity:"capacity",temperature:"temperature",diskType:"diskType",is4Kn:"is4Kn",space:"space",healthInfo:"healthInfo",smartInfo:"smartInfo"});d.callParent(arguments)},onPushContent:function(a){var c=this,b={},d=c.getDisk();b.title=d.name;b.disk=d;b.healthInfo=c.getHealthInfo();Ext.apply(b,a);c.hubFire("pushDetail",b)}});Ext.define("SYNO.Mobile.StorageManager.HealthInfo",{extend:"SYNO.DSMMobile.base.FormPanel",mixins:["SYNO.Mobile.base.SubViewStateMixin"],requires:["SYNO.Mobile.base.SubViewStateMixin"],config:{scrollable:true,layout:"vbox",disk:{},healthInfo:{},cls:"stgmgr-mobile",items:[{xtype:"syno_fieldset",title:" ",defaults:{htmlEncode:false},items:[{xtype:"syno_displayfield",name:"status",label:_T("common","status")},{xtype:"syno_displayfield",name:"temperature",label:_T("status","temperature")},{xtype:"syno_displayfield",name:"powerOnTime",label:_T("disk_info","disk_poweron_hours")},{xtype:"syno_displayfield",name:"reconnectCount",label:_T("disk_info","disk_retry_ct")},{xtype:"syno_displayfield",name:"badSector",label:_T("disk_info","disk_bad_sector_ct")},{xtype:"syno_displayfield",name:"reidentifyCount",label:_T("disk_info","disk_identify_failed_ct")},{xtype:"syno_displayfield",name:"smart",label:_T("smart","smart_status")}]}]},initialize:function(){var b=this,a=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,c=b.getDisk(),d=b.getHealthInfo().healthInfo.overview;SYNO.DSMMobile.utils.bindFieldValue(b,{status:a.DiskSummaryStatusRenderV2(c.status,c.overview_status),temperature:a.DiskTemperatureRender(c.temp),powerOnTime:String.format("{0} {1}",d.poweron,_T("usbbackup","usbbkp_hour")),reconnectCount:d.retry,badSector:a.BadSecCtRender(c.unc),reidentifyCount:d.idnf,smart:a.smartStatusRender(d.smart,d.smart_progress)},{status:"status",temperature:"temperature",powerOnTime:"powerOnTime",reconnectCount:"reconnectCount",badSector:"badSector",reidentifyCount:"reidentifyCount",smart:"smart"});b.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.VolumeTab",{extend:"SYNO.DSMMobile.base.Panel",requires:[],config:{itemId:"stgmgr-volume-tab",layout:"vbox",cls:"stgmgr-mobile",scrollable:true,items:[{xtype:"syno_panel",itemId:"storage_overview"},{xtype:"syno_panel",itemId:"disk_info"},{xclass:"SYNO.DSMMobile.ux.FieldSet",itemId:"volume_usage",title:_T("volume","volume_usage"),cls:"stgmgr-volume-usage",items:[{xclass:"SYNO.Mobile.StorageManager.VolumeList",itemId:"volume_list"}]}]},initialize:function(){var a=this;a.on("painted",function(){a.up("syno_module").on("updateInfo",a.updateInfo,a)},a,{single:true});a.on("painted",function(){a.refreshDom()},a);a.on("resize",a.refreshDom,a);Ext.Viewport.on("orientationchange",a.onOrientationChange,a);a.callParent(arguments)},onOrientationChange:function(){var d,c=false,b,a;if(!this.isRendered()){return}if("Phone"===Ext.os.deviceType){return}if("portrait"===Ext.Viewport.getOrientation()){d="50%";c=true}else{d="25%"}for(a=0;a<4;a++){b=Ext.get(String.format("stgmgr-vol-disk-{0}",a));if(c&&a>1){b.removeCls("stgmgr-disk-info1");b.addCls("stgmgr-disk-info2")}else{b.removeCls("stgmgr-disk-info2");b.addCls("stgmgr-disk-info1")}b.setWidth(d)}},updateInfo:function(c){var h=this,b=h.up("syno_module"),k={},j=[],d,l,e,a,g,f;if(h.skip){return}h.skip=true;b.prepareHealth(k);b.prepareOverview(k);h.prepareVolume(c,j);k.id="volume";h.down("#storage_overview").updateHtml(b.renderOverview(k));h.down("#disk_info").updateHtml(h.renderDiskInfo(k.diskInfo));l=h.down("#volume_usage").down("#volume_list").getStore();e=h.down("#volume_usage").down("#volume_list").getScrollableBehavior().scrollView._scroller;a=e.position.y;l.removeAll();l.addData(j);h.down("#volume_usage").down("#volume_list").setHeight(67*j.length);for(d=0;d<j.length;d++){g=Ext.factory({xtype:"syno_mobile_stgmgr_circlegradient",percent:j[d].ratio,gradientWidth:5,radius:21,canvasConfig:{height:42,width:42},renderTo:j[d].id});g.onRender();f=g.config.percent;if(1===f){g.label.removeCls("stgmgr-volume-usage-circle-label");g.label.addCls("stgmgr-volume-usage-circle-label-max")}else{if(0.1>f){g.label.removeCls("stgmgr-volume-usage-circle-label");g.label.addCls("stgmgr-volume-usage-circle-label-min")}}if(f>=0.9){g.setStartColor("#ff727d");g.setMiddleColor("#f25357");g.setStopColor("#e63432");g.setFontColor("#de3432")}else{if(f<0.8){g.setStartColor("#00aaff");g.setMiddleColor("#1396f4");g.setStopColor("#2682ea");g.setFontColor("#1a8ef0")}else{g.setStartColor("#f5962c");g.setMiddleColor("#fa8116");g.setStopColor("#ff6c00");g.setFontColor("#f5873c")}}g.draw(f)}e.scrollTo(0,a);h.refreshDom();h.onOrientationChange()},renderDiskInfo:function(f){var b,g,d,e=[],c=false,a;g=['<div id="{id}" class="{class}" style="width: {width}">','<div class="stgmgr-disk-info-count">{usedCount}</div>','<div class="stgmgr-disk-info-type">{diskType}</div>',"</div>"];if("Phone"===Ext.os.deviceType||"portrait"===Ext.Viewport.getOrientation()){d="50%";c=true}else{d="25%"}for(a=0;a<f.length;a++){b=g.join("");b=b.replace(/\{id\}/g,String.format("stgmgr-vol-disk-{0}",a));if(c&&a>1){b=b.replace(/\{class\}/g,"stgmgr-disk-info2")}else{b=b.replace(/\{class\}/g,"stgmgr-disk-info1")}b=b.replace(/\{width\}/g,d);b=b.replace(/\{usedCount\}/g,f[a].usedCount);b=b.replace(/\{diskType\}/g,f[a].diskType);e.push(b)}e.push('<div style="clear: both"></div>');b=e.join("");return b},prepareVolume:function(b,j){var g=SYNO.SDS.Utils.StorageUtils,a=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,c,d,e,h,f;for(c=0;c<b.volumes.length;c++){d=b.volumes[c];if(0===parseInt(d.size.total,10)){e=0}else{e=parseInt(d.size.used,10)/parseInt(d.size.total,10)}h=a.GetSizeUnit(d.size.used);f=a.GetSizeUnit(d.size.total);j.push({id:d.id,ratio:e,name:g.SpaceIDParser(d.id).str,status:a.StatusNameRender(d.status),usage:String.format("{0} {1} / {2} {3}",h.size,h.unit,f.size,f.unit)})}j.sort(function(k,i){if(k.ratio>i.ratio){return -1}if(k.ratio===i.ratio){return 0}return 1})},refreshDom:function(){var b=this,e,a,d,c;if(!b.isRendered()){return}e=Ext.get("stgmgr-overview-volume");a=Ext.get("stgmgr-overview-icon-volume");d=Ext.get("stgmgr-overview-text-volume");if(!e||!a||!d){return}d.setLeft(0);c=(e.getWidth()/2)-((a.getWidth()+20+d.getWidth())/2);a.setLeft(c);d.setLeft(c+a.getWidth()+20)},onResize:function(){var a=this;a.refreshDom()}});Ext.define("SYNO.Mobile.StorageManager.CircleGradient",{extend:"SYNO.DSMMobile.base.CircleGradient",xtype:"syno_mobile_stgmgr_circlegradient",config:{htmlFormat:'{0}<span class="stgmgr-volume-usage-circle-label-percent">{1}</span>',circleLabelCls:"stgmgr-volume-usage-circle-label"},onRender:function(){var a=this;if(a.drawn){return}a.callParent(arguments);a.drawn=true}});Ext.define("SYNO.Mobile.StorageManager.VolumeList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin"],config:{scrollable:false,disableSelection:true,leftTpl:'<div id="{id}" class="stgmgr-volume-usage-circle"></div>',centerTpl:['<div class="stgmgr-volume-usage-name">{name}</div>','<div class="stgmgr-volume-usage-status">({status})</div>','<div class="stgmgr-volume-usage-capacity">{usage}</div>'],store:{fields:["id","name","status","usage"]},listeners:{itemtap:function(m,h,j,g,a,n){var k=this,d,b=k.findModule(),c=b.getData(),f=c.storagePools,l=c.volumes,e;for(d=0;d<l.length;d++){if(g.getId()===l[d].id){e=l[d];break}}if(!e){return}e.storagePoolDisks=[];for(d=0;d<f.length;d++){if(e.pool_path===f[d].id){e.storagePoolDisks=f[d].disks;break}}b.fireEvent("openVolumeDetail",e)}}}});Ext.define("SYNO.Mobile.StorageManager.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.StorageManager.VolumeTab","SYNO.Mobile.StorageManager.HDDTab"],config:{items:[{title:_T("tree","leaf_volume"),iconCls:"syno-mobile-icon-storage-volume",xclass:"SYNO.Mobile.StorageManager.VolumeTab"},{title:_T("tree","leaf_hddmgr"),iconCls:"syno-mobile-icon-storage-disk",xclass:"SYNO.Mobile.StorageManager.HDDTab"}]}});Ext.define("SYNO.Mobile.StorageManager.PhoneHddDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.StorageManager.HddInfo"],config:{leftBtn:null,module:{},disk:{},healthInfo:{}},initialize:function(){var a=this;a.setItems([{xclass:"SYNO.Mobile.StorageManager.HddInfo",module:a.getModule(),disk:a.getDisk(),healthInfo:a.getHealthInfo()}]);a.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.VolumeInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno_mobile_stgmgr_volumeinfo",config:{scrollable:true,layout:"vbox",volume:{},module:{},cls:"stgmgr-mobile",items:[{xtype:"syno_fieldset",title:" ",defaults:{xtype:"syno_displayfield",htmlEncode:false},items:[{xtype:"syno_displayfield",name:"raidType",label:_T("volume","volume_raid_title")},{xtype:"syno_displayfield",name:"fsType",label:_T("volume","volume_add_fs_type")},{xtype:"syno_displayfield",name:"status",label:_T("volume","volume_volumestatus")},{xtype:"syno_displayfield",name:"capacity",label:_T("volume","volume_totalsize")},{xtype:"syno_displayfield",name:"used",label:_T("volume","volume_usedsize")},{xtype:"syno_displayfield",name:"available",label:_T("volume","volume_freesize")}]},{xtype:"syno_fieldset",title:_T("volume","volume_disk_information"),itemId:"diskInfoFieldset",cls:"stgmgr-volume-detail-disk-info",items:[{xclass:"SYNO.DSMMobile.base.List",itemId:"diskInfoList",disableSelection:true,iconWrapperTpl:"",centerTpl:['<div class="stgmgr-volume-usage-name">{name}</div>','<div class="stgmgr-volume-usage-status">({status})</div>','<div class="stgmgr-volume-usage-capacity">{detail}</div>'],store:{fields:["name","status","detail","num_id","container","portType","pciSlot"]},listeners:{painted:function(){this.setHeight(53*this.getStore().getCount());this.setScrollable(false)}}}]},{xtype:"syno_fieldset",title:" ",cls:"stgmgr-volume-detail-dummy-fieldset"}]},initialize:function(){var k=this,g,l={},m,e,a,n,b,j,d=SYNO.SDS.Utils.StorageUtils.UiRenderHelper,c=k.getModule(),f=c.getData(),h=k.getVolume();for(g=0;g<f.disks.length;g++){l[f.disks[g].id]=f.disks[g]}if("cache_missing"===h.cacheStatus){e=d.StatusNameRender(h.cacheStatus)}else{e=d.StatusRender(h.status,h.progress)}a=parseInt(h.size.total,10);n=parseInt(h.size.used,10);SYNO.DSMMobile.utils.bindFieldValue(k,{raidType:d.SpaceTypeRender(h.device_type,false),fsType:_T("volume",String.format("volume_add_fs_{0}_type",h.fs_type)),status:e,capacity:d.SizeRender(a),used:d.SizeRender(n),available:d.SizeRender(a-n)},{raidType:"raidType",fsType:"fsType",status:"status",capacity:"capacity",used:"used",available:"available"});m=k.down("#diskInfoFieldset").down("#diskInfoList").getStore();for(g=0;g<h.storagePoolDisks.length;g++){b=l[h.storagePoolDisks[g]];j=String.format("{0} | {1}",b.isSsd?"SSD":"HDD",d.SizeRender(b.size_total));m.addData({name:b.name,status:d.DiskStatusRender(b.status),detail:j,num_id:b.num_id,container:b.container,portType:b.portType,pciSlot:b.pciSlot})}m.sort(SYNO.DSMMobile.utils.diskSortCompare);k.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.PhoneVolumeDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.StorageManager.VolumeInfo"],config:{leftBtn:null,module:{},volume:{}},initialize:function(){var a=this;a.setItems([{xclass:"SYNO.Mobile.StorageManager.VolumeInfo",module:a.getModule(),volume:a.getVolume()}]);a.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.SmartInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-mobile-storagemanager-smartinfo",config:{scrollable:false,layout:"vbox",disk:{},healthInfo:{},cls:"stgmgr-mobile",items:[{xclass:"SYNO.DSMMobile.base.List",itemId:"smartAttributeList",disableSelection:true,iconWrapperTpl:'<div class="stgmgr-list-icon">{status}</div>',centerTpl:['<div class="stgmgr-volume-usage-name">{attribute}</div>','<div class="stgmgr-volume-usage-capacity">{detail}</div>'],store:{fields:["attribute","detail","status"]},listeners:{resize:function(){var a=Ext.Viewport.getWindowHeight();this.setHeight(Math.min(480,a-100))}}},{xtype:"syno_fieldset",title:"",cls:"stgmgr-hide-fieldset",items:[{itemId:"smartBtn",xtype:"syno_button",text:_T("smart","smart_toolbar_smart_test"),handler:function(){var a=this.up("syno-mobile-storagemanager-smartinfo");a.toggleSmartTest(this)}}]}]},toggleSmartTestImpl:function(e,b){var a=SYNO.DSMMobile.webapi,c=this.getDisk(),d;d={device:c.device,type:e?"quick":"stop"};SYNO.DSMMobile.utils.mask("load",this);a.SmartTest(d,function(f,g){if(this.isDestroyed){return}SYNO.DSMMobile.utils.unmask(this);if(!f){Ext.Msg.alert("",_T("smart","smart_selftest_cmd_exec_failed"));return}b.setText(e?_T("smart","smart_test_button_stop"):_T("smart","smart_toolbar_smart_test"))},this)},toggleSmartTest:function(a){var b=a.getText();if(b===_T("smart","smart_test_button_stop")){this.toggleSmartTestImpl(false,a)}else{this.toggleSmartTestImpl(true,a)}},refreshPage:function(b){var a=SYNO.DSMMobile.webapi,c=this.getDisk(),d;d={device:c.device};if(b){SYNO.DSMMobile.utils.mask("load",this)}a.GetSmartTestLog(d,function(e,g){var f;if(this.isDestroyed){return}if(b){SYNO.DSMMobile.utils.unmask(this)}if(!e){return}f=g.testInfo[0];if(f.testing){this.down("#smartBtn").setText(_T("smart","smart_test_button_stop"))}else{this.down("#smartBtn").setText(_T("smart","smart_toolbar_smart_test"))}},this)},initPolling:function(){var b=this,a=10000;function c(){if(b.isDestroyed){return}b.refreshPage(false);setTimeout(c,a)}c()},initialize:function(){var c=this,b,d=c.getHealthInfo().healthInfo.smartInfo,a=c.down("#smartAttributeList").getStore();this.refreshPage(true);for(b=0;b<d.length;b++){a.addData({attribute:d[b].name,detail:String.format("{0}: {1} | {2}: {3} | {4}: {5}",_T("smart","smart_current"),d[b].current,_T("smart","smart_worst"),d[b].worst,_T("smart","smart_threshold"),d[b].threshold),status:String.format('<span class="{0}">{1}</span>',("OK"===d[b].status)?"green-status":"red-status",d[b].status)})}c.initPolling();c.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.TabletHddDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.StorageManager.HddInfo"],config:{leftBtn:null,module:{},disk:{},healthInfo:{}},initialize:function(){var a=this;a.setItems([{xclass:"SYNO.Mobile.StorageManager.HddInfo",module:a.getModule(),disk:a.getDisk(),healthInfo:a.getHealthInfo()}]);a.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.TabletVolumeDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.StorageManager.VolumeInfo"],config:{leftBtn:null,volume:{},module:{}},initialize:function(){var a=this;a.setItems([{xclass:"SYNO.Mobile.StorageManager.VolumeInfo",module:a.getModule(),volume:a.getVolume()}]);a.callParent(arguments)}});Ext.define("SYNO.Mobile.System.SystemTab",{extend:"SYNO.DSMMobile.base.FormPanel",requires:[],config:{scrollable:true,systemInfo:null,module:null,items:[{xtype:"syno_fieldset",itemId:"system_fieldset",title:_T("home","home_info_title"),defaults:{xtype:"syno_displayfield"},items:[{name:"serial",label:_T("common","ds_serial")},{name:"model",label:_T("common","ds_model")},{name:"ram_size",label:_T("status","ramsize"),renderer:function(a){if(a>=1024*10){a=Math.round(a*10/1024)/10;return _T("status","ramsize"),a+" "+_T("common","size_gb")}else{return _T("status","ramsize"),a+" "+_T("common","size_mb")}}},{name:"time",label:_T("status","sys_time")},{name:"time_zone",label:_T("status","status_timezone")},{name:"up_time",label:_T("status","uptime")},{name:"sys_temp",hidden:(this._D("supportsystemperature")!=="yes"),label:_T("status","temperature"),renderer:function(c){if(c===""){return""}var b=c;var a=(b*9/5+32);return"{0} {1} / {2} {3}".format(b,_T("status","celsius"),a,_T("status","fahrenheit"))}},{name:"quickconnect_id",label:_T("relayservice","title_svrid")}]}]},refreshDom:function(){var a=this.getSystemInfo();this.bindFields(a)},refreshPage:function(){var a=SYNO.DSMMobile.webapi,b,c={};b=[{apiType:"SystemInfo"},{apiType:"GetQuickConnect"}];a.sendCompoundWebAPI(b,false,function(e,g,f,d){if(this.isDestroyed){return}if(!e){return}if(g.SystemInfo.succ){Ext.apply(c,g.SystemInfo.resp)}if(g.GetQuickConnect.succ){c.quickconnect_id=g.GetQuickConnect.resp.server_alias}this.setSystemInfo(c);this.refreshDom();this.fireEvent("load")},this)},initialize:function(){this.systemFieldset=this.down("#system_fieldset");this.callParent(arguments);this.refreshPage()}});Ext.define("SYNO.Mobile.System.NetworkTab",{extend:"SYNO.DSMMobile.base.FormPanel",requires:[],config:{scrollable:true,systemInfo:null,module:null,items:[]},addBasicFieldset:function(){this.basicFieldset=this.add({xtype:"syno_fieldset",itemId:"basic_fieldset",title:_T("home","home_info_title"),defaults:{xtype:"syno_displayfield"},items:[{itemId:"hostname",label:_T("status","status_name")},{itemId:"dns",label:_T("status","status_dns")},{itemId:"gateway",label:_T("status","status_gateway")},{itemId:"workgroup",label:_T("network","wnds_domain")}]})},addNetworkInterface:function(b){var a={};if(!this.networkInterface){this.networkInterface=[]}Ext.apply(a,{xtype:"syno_fieldset",itemId:"id_"+b.id,title:"title",defaults:{xtype:"syno_displayfield"},items:[{itemId:"mac",label:_T("status","status_addr")},{itemId:"addr",label:_T("status","status_ipaddr")},{itemId:"mask",label:_T("status","status_mask")}]});this.networkInterface.push(this.add(a))},addNetworkInterfaces:function(a){Ext.each(a,function(b){this.addNetworkInterface(b)},this)},refreshDom:function(){var b=this.getSystemInfo(),a=b.nif;this.removeAll();this.addBasicFieldset();this.addNetworkInterfaces(b.nif);SYNO.DSMMobile.utils.bindFieldValueById(this.basicFieldset,b);Ext.each(a,function(e){var f=e.id;var c=this.down("#id_"+f),d={mac:"mac",addr:"addr",mask:"mask"};if(!c){console.warn("cannot find ","#id_"+f);return}SYNO.DSMMobile.utils.bindFieldValueById(c,e,d);c.setTitle(SYNO.SDS.Utils.Network.idToString(e.id,e.type));if(e.ipv6){Ext.each(e.ipv6,function(h){var g=String.format("{0}/{1}\t{2}:{3}",h.addr,h.prefix_len,_T("tcpip","ipv6_scope"),_T("tcpip","ipv6_scope_"+h.scope));c.add({label:_T("status","status_ipv6addr"),value:g})})}},this)},refreshPage:function(){var a=SYNO.DSMMobile.webapi;a.SystemInfo("network",function(b,c){if(this.isDestroyed){return}if(!b){return}this.setSystemInfo(c);this.refreshDom();this.fireEvent("load")},this)},initialize:function(){this.callParent(arguments);this.refreshPage()}});Ext.define("SYNO.Mobile.System.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.System.SystemTab","SYNO.Mobile.System.NetworkTab"],config:{module:null,items:[{title:_T("mobile","menu_system_info"),iconCls:"syno-mobile-icon-system-system",xclass:"SYNO.Mobile.System.SystemTab",listeners:{load:function(){this.parent.onTabLoaded("system")}}},{title:_T("tree","leaf_lan"),iconCls:"syno-mobile-icon-system-network",xclass:"SYNO.Mobile.System.NetworkTab",listeners:{load:function(){this.parent.onTabLoaded("network")}}}]},onTabLoaded:function(a){this.unmaskTask.done(a)},initialize:function(){this.unmaskTask=Ext.create("SYNO.DSMMobile.util.AsyncLock",{tasks:["system","network"],callback:function(){SYNO.DSMMobile.utils.unmask(this)},scope:this});this.on("painted",function(){SYNO.DSMMobile.utils.mask("load",this)},this,{single:true});this.callParent(arguments)}});Ext.define("SYNO.Mobile.System.StorageTab",{extend:"SYNO.DSMMobile.base.FormPanel",requires:[],config:{title:"StorageTab title",scrollable:true,systemInfo:null,module:null,items:[]},getVolInfo:function(f){var a,e,d,b,c=0;if(this.isUSBStation){a=[];for(d=0;f.devices&&d<f.devices.length;++d){e=f.devices[d];if(e.partitions&&e.partitions.length>0){for(b=0;b<e.partitions.length;++b){a.push({status:e.partitions[b].status,total_size:parseInt(e.partitions[b].total_size_mb,10)*1024*1024,used_size:parseInt(e.partitions[b].used_size_mb,10)*1024*1024,name:e.partitions[b].share_name,volstr:e.partitions[b].share_name});++c}}else{++c}}}else{a=f.vol_info}return a},addStorage:function(b){var c=this,a={};if(!this.storage){this.storage=[]}Ext.apply(a,{xtype:"syno_fieldset",itemId:b.name,title:(c.isUSBStation?b.name:SYNO.SDS.Utils.StorageUtils.SpaceIDParser(b.name).str)||" ",defaults:{xtype:"syno_displayfield"},items:[{itemId:"desc",hidden:c.isUSBStation,htmlEncode:false,label:_T("share","share_comment")},{itemId:"name",label:_T("common","name"),renderer:function(d){if(c.isUSBStation){return d}else{return SYNO.SDS.Utils.StorageUtils.SpaceIDParser(d).str||""}}},{itemId:"status",label:_T("usb","usb_status"),htmlEncode:false,renderer:function(d){if(c.isUSBStation){return SYNO.SDS.Utils.ExternalDevices.getStatus(d)}else{return SYNO.SDS.Utils.StorageUtils.UiRenderHelper.StatusNameRender(d)}}},{itemId:"total_size",label:_T("volume","volume_totalsize"),renderer:function(d){return Ext.util.Format.fileSize(d)}},{itemId:"used_size",label:_T("volume","volume_usedsize"),renderer:function(d){return Ext.util.Format.fileSize(d)}}]});this.storage.push(this.add(a))},addStorages:function(a){Ext.each(a,function(b){this.addStorage(b)},this)},refreshDom:function(){var b=this.getSystemInfo(),a=this.getVolInfo(b);this.removeAll();this.addStorages(a);Ext.each(a,function(e){var c=this.down("#"+e.name),d={desc:"desc",name:"name",status:"status",total_size:"total_size",used_size:"used_size"};if(!c){console.warn("cannot find ","#"+e.name);return}SYNO.DSMMobile.utils.bindFieldValueById(c,e,d)},this)},refreshPage:function(){var a=SYNO.DSMMobile.webapi;a.SystemInfo("storage",function(b,c){if(this.isDestroyed){return}if(!b){return}this.setSystemInfo(c);this.refreshDom();this.fireEvent("load")},this)},initialize:function(){this.isUSBStation=_D("usbstation")==="yes";this.supportBuildinStorage=_D("support_buildin_storage")==="yes";this.callParent(arguments);this.refreshPage()}});Ext.define("SYNO.Mobile.User.GroupList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.UserGroup"],config:{model:"SYNO.DSMMobile.data.UserGroup",monitorRefreshEvent:true,leftTpl:" ",leftCls:"usergroup-group-list-icon",centerTpl:['<div class="usergroup-group-name">{name} </div>','<div class="usergroup-group-desc">{description:htmlEncode}</div>'],rightTpl:null,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.UserGroup",autoLoad:true},listeners:{itemtap:function(b,d,h,a,f,c){var g={},e=this.findModule();Ext.iterate(["name","description"],function(i){g[i]=a.get(i)});e.fireEvent("openGroupDetail",g)}}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.base.MemberItem",{xtype:"syno-mobile-base-memberitem",extend:"Ext.dataview.component.DataItem",config:{layout:"fit",checkedField:"is_member",dataMap:{getCheckbox:{setLabel:"name"}},items:[{xtype:"syno_checkboxfield"}]},getCheckbox:function(){return this.down("syno_checkboxfield")},syncRecord:function(){var a=this.getRecord(),c=this.getCheckbox(),b=this.getCheckedField();if(!a||!c||c.isDestroyed){return}a.set(b,c.isChecked())},updateRecord:function(b){var d=this.getCheckedField(),g=(this.parent)?this.parent.parent:null,a=(g)?g.getLockedList():[],f,e;this.callParent(arguments);if(!b){return}f=b.get(d);e=this.getCheckbox();if(!e||e.isDestroyed){return}if(f){e.check()}else{e.uncheck()}for(var c=0;c<a.length;c++){if(b.get("name")===a[c]){e.disable()}}},initialize:function(){var a=this.getCheckbox();a.on("change",function(){this.syncRecord()},this);this.callParent(arguments)}});Ext.define("SYNO.Mobile.base.MemberList",{extend:"SYNO.DSMMobile.base.List",requires:[],config:{itemHeight:44,lockedList:[],defaultType:"syno-mobile-base-memberitem",useComponents:true,useHeaders:false,enablePadding:true,model:"SYNO.DSMMobile.data.UserGroup",store:null,apiParams:null,listeners:{},state:null},initApiParams:function(){},initStore:function(){var a=this.getModel(),b=this.getApiParams();this.setStore({xtype:"syno_store",model:a,params:b,sorters:[{property:"name",direction:"ASC"}]})},loadStore:function(){var a=this.getStore();a.load()},saveState:function(){this.setState({store:this.getStore()})},restoreState:function(){var a=this.getStore(),b=this.getState();a.loadFromStore(b.store)},initialize:function(){var a=this.getState();this.initApiParams();this.initStore();if(a){this.restoreState()}else{this.loadStore()}this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.data.GroupMember",{extend:"Ext.data.Model",config:{fields:[{name:"name",type:"string"},{name:"description",type:"string"},{name:"uid",type:"int"},{name:"is_member",type:"boolean",defaultValue:false}],proxy:{type:"syno",apiType:"ListGroupMember",reader:{type:"json",rootProperty:"users"}}}});Ext.define("SYNO.DSMMobile.data.CreatingGroupMember",{extend:"SYNO.DSMMobile.data.GroupMember",config:{proxy:{type:"syno",apiType:"ListUser",defaultParams:{additional:[]},reader:{type:"json",rootProperty:"users"}}}});Ext.define("SYNO.DSMMobile.data.GroupMemberAll",{extend:"SYNO.DSMMobile.data.GroupMember",config:{proxy:{type:"syno",apiType:[{apiType:"ListGroupMember"},{apiType:"ListNotInGroupMember"}],reader:{type:"json",rootProperty:"users"},processor:function(a){var c=this.getDefaultCompoundProcessor(),b=c.call(this,a);Ext.each(b,function(d){if(d.compound_webapi_api_type==="ListNotInGroupMember"){d.is_member=false}else{d.is_member=true}});return b}}}});Ext.define("SYNO.Mobile.User.GroupMember",{extend:"SYNO.Mobile.base.MemberList",requires:["SYNO.DSMMobile.data.GroupMember"],config:{group:null,creatingInfo:null,model:"SYNO.DSMMobile.data.GroupMemberAll",listeners:{itemtap:function(b,d,f,a,e,c){console.log("itemtap",arguments)}}},initApiParams:function(){var a=this.getGroup(),b;if(a){this.setApiParams({group:a.name})}else{b=this.getCreatingInfo();this.setModel("SYNO.DSMMobile.data.CreatingGroupMember")}},initialize:function(){var b=this.getGroup(),a=this.getLockedList();a.push("SynologyCMS");if(b&&b.is_admin){a=a.concat(["admin",_S("username"),"guest"])}this.setLockedList(a);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.GroupTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.User.GroupList"],config:{title:"GroupTab title",scrollable:true,layout:"fit",items:[{xclass:"SYNO.Mobile.User.GroupList"}]}});Ext.define("SYNO.Mobile.User.PasswordCheckerImpl",{singleton:true,applyPasswordPolicy:function(b,a){if(Object.keys(a).length>0){a.strong_password_enable=true;b.passwordPolicy=Ext.apply({},a)}else{a.strong_password_enable=false;b.passwordPolicy=Ext.apply({},a)}}});Ext.define("SYNO.Mobile.User.PasswordChecker",{extend:"Ext.util.Observable",requires:[],config:{},constructor:function(){this.callParent(arguments);this.init()},isStrongValidator:function(c,d,b,a){this.fillPasswordCheckerData(c,d,b,a);return this.passwordChecker.isStrongValidator()},initPasswordPolicy:function(){var a=SYNO.DSMMobile.webapi;a.GetPasswordPolicy(function(b,c){if(!b){return}this.impl.applyPasswordPolicy(this.passwordChecker,c.strong_password)},this)},fillPasswordCheckerData:function(c,d,b,a){this.passwordChecker.initPasswordChecker({getUserAcc:c,getUserDesc:d,getPasswd:b,getPasswdConfirm:a,getStartValidate:function(){return true}})},createPasswordChecker:function(){this.passwordChecker=new SYNO.SDS.Utils.CheckStrongPassword();this.initPasswordPolicy()},init:function(){this.impl=SYNO.Mobile.User.PasswordCheckerImpl;this.createPasswordChecker()}});Ext.define("SYNO.Mobile.User.StatusPanel",{extend:"SYNO.DSMMobile.base.FormPanel",requires:[],config:{layout:"vbox",scrollable:null,value:"enable",canDisable:true,items:[{xtype:"syno_fieldset",items:[{xtype:"syno_radiofield",name:"status",itemId:"enable",label:_T("mobile","usergroup_status_enable")},{xtype:"syno_radiofield",name:"status",itemId:"disable",label:_T("mobile","usergroup_status_disable")},{xtype:"syno_radiofield",name:"status",itemId:"disable_after",label:_T("user","user_acnt_expired_date")}]},{xtype:"syno_panel",cls:"user-picker-panel",height:140,items:[{xtype:"syno_datepicker",height:100,yearFrom:(new Date()).getYear()+1900,yearTo:(new Date()).getYear()+1910}]}]},updateValue:function(b){var a=this.down("syno_datepicker");if(b==="enable"){this.down("#enable").check()}else{if(b==="disable"){this.down("#disable").check()}else{this.down("#disable_after").check();a.setValue(b)}}this.fireEvent("updateValue",this.getValue())},monitorItems:function(){var d=this,c=this.down("#enable"),b=this.down("#disable"),f=this.down("#disable_after"),a=this.down("syno_datepicker");function e(){var h=a.getValue(true),g=new Date();if(h<g){h=g}d.setValue(SYNO.DSMMobile.utils.parseDate(h))}c.on({check:function(){d.setValue("enable");a.hide()}});b.on({check:function(){d.setValue("disable");a.hide()}});f.on({check:function(){e();a.show()}});a.on({pick:function(){if(f.isChecked()){e()}}})},initialize:function(){var b=this.down("syno_datepicker"),a=this.down("#disable"),c=this.getValue(),d=this.getCanDisable();if(!d){a.setDisabled(true)}this.callParent(arguments);this.monitorItems();if(c==="enable"||c==="disable"){b.setValue(new Date());b.hide()}}});Ext.define("SYNO.Mobile.User.UserGroup",{extend:"SYNO.Mobile.base.MemberList",requires:["SYNO.DSMMobile.data.UserGroup"],config:{cls:"usergroup-usergroup-list",user:null,creatingInfo:null,model:"SYNO.DSMMobile.data.UserGroup",lockedList:["users"],listeners:{itemtap:function(b,d,f,a,e,c){console.log("itemtap",arguments)}}},initStore:function(){var b=this.getUser(),a;this.callParent(arguments);if(!b){a=this.getStore();a.on("load",function(){a.each(function(c){var d=c.get("name");if(d==="users"){c.set("is_member",true)}},this)},this)}},initApiParams:function(){var a=this.getUser();if(a){this.setApiParams({user:a.name})}else{this.setApiParams({user:undefined})}},initialize:function(){var b=this.getUser(),a=this.getLockedList();if(b){if(b.name===_S("username")||b.name==="guest"){a.push("administrators")}}this.setLockedList(a);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserList",{extend:"SYNO.DSMMobile.base.List",mixins:["SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.CanFindModuleMixin","SYNO.DSMMobile.data.User"],config:{model:"SYNO.DSMMobile.data.User",monitorRefreshEvent:true,infinite:true,leftTpl:" ",leftCls:"usergroup-user-list-icon",centerTpl:['<div class="usergroup-user-name">{name:htmlEncode}</div>','<div class="usergroup-user-desc">{[this.getDescStr(values.description)]}</div>','<div class="usergroup-user-expired">{[this.getExpiredStr(values.expired)]}</div>'],itemTpl:[{getDescStr:function(a){if(!a||a===""){return""}return"("+Ext.util.Format.htmlEncode(a)+")"},getExpiredStr:function(a){return SYNO.Mobile.ModuleUtils.getUserExipiedString(a)}}],rightTpl:null,store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.User",autoLoad:true},listeners:{itemtap:function(c,e,h,a,g,d){var b={},f=this.findModule();if(a.get("name").toUpperCase()==="SynologyCMS".toUpperCase()){return}Ext.iterate(["name","description","email","expired"],function(i){b[i]=a.get(i)});f.fireEvent("openUserDetail",b)}}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserTab",{extend:"SYNO.DSMMobile.base.Panel",requires:["SYNO.Mobile.User.UserList"],config:{title:"UserTab title",layout:"fit",items:[{itemId:"keyword",xtype:"syno_searchfield",docked:"top",listeners:{keyup:{fn:function(){this.parent.fireEvent("updateFilter")},buffer:300},clearicontap:{fn:function(){this.parent.fireEvent("updateFilter")}}}},{itemId:"userlist",xclass:"SYNO.Mobile.User.UserList"}],listeners:{updateFilter:"onUpdateFilter"}},onUpdateFilter:function(){var d=this.down("#keyword"),c=this.down("#userlist"),b=c.getStore(),a=d.getValue();b.clearFilter();if(a!==""){b.filter("name",a,true,false)}}});Ext.define("SYNO.Mobile.User.Main",{extend:"SYNO.DSMMobile.base.TabPanel",requires:["SYNO.Mobile.User.UserTab","SYNO.Mobile.User.GroupTab"],config:{tabBarPosition:"bottom",items:[{title:_T("mobile","menu_user"),iconCls:"syno-mobile-icon-usergroup-user",xclass:"SYNO.Mobile.User.UserTab"},{title:_T("mobile","menu_group"),iconCls:"syno-mobile-icon-usergroup-group",xclass:"SYNO.Mobile.User.GroupTab"}]}});Ext.define("SYNO.Mobile.base.PreviewDialogForm",{extend:"SYNO.DSMMobile.base.FormPanel",mixins:[],requires:[],config:{scrollable:null,value:null,permissionOptions:null,displayFn:null,items:[{xtype:"syno_fieldset",title:" ",itemId:"permission",defaults:{xtype:"syno_radiofield",name:"permission"},items:[]}]},addPermissionOptions:function(){var c=this.down("#permission"),b=this.getPermissionOptions(),g=this.getDisplayFn(),f=this.getValue(),e,d,a;Ext.each(b,function(h){c.add({label:g(h),value:h})},this);d=c.getItems().items;if(f){e=this.down("syno_radiofield[value={0}]".format(f));if(e){e.check();e.element.on("tap",function(){this.fireEvent("selectValue",this.getValues().permission)},this)}}a=Ext.ComponentQuery.query("syno_radiofield",this);Ext.each(a,function(h){h.on("change",function(){var i=this.getValues().permission;this.setValue(i);this.fireEvent("selectValue",i)},this)},this)},initialize:function(){this.addPermissionOptions();this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserPermissionPreview",{extend:"SYNO.Mobile.base.PreviewDialogForm",mixins:[],requires:[],config:{scrollable:null,value:null,groupValue:null,permissionOptions:null,displayFn:null,items:[{xtype:"syno_fieldset",title:" ",itemId:"permission",defaults:{xtype:"syno_radiofield",name:"permission"},items:[]},{xtype:"syno_fieldset",title:" ",itemId:"preview",defaults:{xtype:"syno_displayfield"},items:[]},{xtype:"container",itemId:"infoText",hidden:true,html:'<div class="user-permission-preview-info">'+_T("mobile","share_override_by_group")+"</div>"}]},valueRenderer:function(a){return SYNO.DSMMobile.util.Share.getString(a)},colorRenderer:function(a){return SYNO.DSMMobile.util.Share.getColor(a)},getPreviewValue:function(a,b){return SYNO.DSMMobile.util.Share.resolvePermission(a,b)},updateValue:function(d){var c=this.down("#previewValue"),e=this.down("#infoText"),a=this.getGroupValue(),b;b=this.getPreviewValue(a,d);if(c){c.setValue(this.valueRenderer(b));c.setTextColor(this.colorRenderer(b))}if(e){if(d!==b&&d!=="-"){e.show()}else{e.hide()}}},addPreview:function(){var b=this.down("#preview"),a=this.getGroupValue();b.add([{itemId:"groupValue",label:_T("mobile","sharefolder_group_permission"),value:this.valueRenderer(a),textColor:this.colorRenderer(a)},{itemId:"previewValue",label:_T("share","share_preview")}])},initialize:function(){var a=this.getValue();this.addPreview();this.updateValue(a);this.callParent(arguments)}});Ext.define("SYNO.Mobile.base.ApplicationList",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.Mobile.base.PreviewDialogForm"],config:{model:null,apiParams:{},agentInfo:null,appInfo:null,state:null,itemHeight:44,enablePermissionPreview:null,enablePadding:true,cls:"application-list",permissionOptions:["allow","deny"],displayFn:function(a){return SYNO.DSMMobile.util.Application.getPrivilegeDisplayString(a)},leftTpl:"{[this.getResolvedPermission(values)]}",centerTpl:"{app_name}",rightCls:"application-listitem-privilege",rightTpl:"{[this.getPrivilege(values)]}",itemTpl:[{getPrivilege:function(a){return SYNO.DSMMobile.util.Application.getPrivilegeDisplayString(a.privilege)},getResolvedPermission:function(a){return"FIXME"}}],listeners:{itemtap:"handleItemTap"}},createPermissionDialog:function(b,k,g,f,j){var a=b.getData(),e=a.privilege,h=this.getPermissionOptions(),c=this.getDisplayFn(),i,d;d={title:_T("share","share_preview"),height:h.length*44+120,showBy:[g,"cr-cl"]};i={xclass:"SYNO.Mobile.base.PreviewDialogForm",title:_T("share","share_preview"),permissionOptions:h,displayFn:c,value:e};this.hubFire("popoverDetail",i,d,{selectValue:Ext.bind(f,j||window,[b],true),scope:this})},getPermissionEl:function(c){var b=this.getRightCls(),a=b.trim().split(/\s+/);a=a.map(function(d){return"."+d});return c.element.down(a.join(""))},handleItemTap:function(c,e,h,b,g,d){var f=this.getPermissionEl(h),a=this.getPermissionOptions();this.createPermissionDialog(b,a,f,this.modifyRecord,this)},modifyRecord:function(c,b,d,a){a.set("privilege",c)},initApiParams:function(){},initAgentInfo:function(){},initStore:function(){var b=this.getModel(),e=this.getApiParams(),d=this.getAgentInfo(),a,c;this.setStore({xtype:"syno_store",model:b});a=this.getStore();c=a.getProxy();c.setParams(e);c.setAgentInfo(d)},saveState:function(){this.setState({store:this.getStore()})},restoreState:function(){var a=this.getStore(),b=this.getState();a.loadFromStore(b.store)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){var a=this.getState(),b=this.getEnablePermissionPreview();if(!b){this.setLeftTpl(null)}this.initApiParams();this.initAgentInfo();this.initStore();if(a){this.restoreState()}else{this.loadStore()}this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.GroupApplication",{extend:"SYNO.Mobile.base.ApplicationList",requires:["SYNO.DSMMobile.data.ApplicationPrivilege"],config:{model:"SYNO.DSMMobile.data.ApplicationPrivilege",group:null,apiParams:null},initAgentInfo:function(){var a=this.getGroup();if(!a){this.setAgentInfo(null)}else{this.setAgentInfo({entity_type:"group",entity_name:a.name})}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserApplication",{extend:"SYNO.Mobile.base.ApplicationList",requires:["SYNO.DSMMobile.data.ApplicationPrivilege"],config:{model:"SYNO.DSMMobile.data.ApplicationPrivilege",user:null,apiParams:null},initAgentInfo:function(){var a=this.getUser();if(!a){this.setAgentInfo(null)}else{this.setAgentInfo({entity_type:"user",entity_name:a.name})}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.base.PermissionList",{extend:"SYNO.DSMMobile.base.List",requires:["SYNO.Mobile.base.PreviewDialogForm"],config:{model:null,apiParams:{},state:null,itemHeight:44,enablePermissionPreview:null,cls:"syno-mobile-single-line-list permissionlist-without-preview",displayFn:function(a){return SYNO.DSMMobile.util.Share.getDisplayString(a)},permissionOptions:["na","rw","ro","-"],grouped:false,leftTpl:null,centerTpl:"{name}",rightCls:"permissionlist-permission",rightTpl:['<div class="permissionlist-option">{[this.getPermission(values)]}</div>'],grouperTpl:['<div class="permissionlist-header">','<span class="permissionlist-title-left">','<span class="permissionlist-title-name">{0}</span>',"</span>",'<span class="permissionlist-title-right">','<span class="permissionlist-title-option">{2}</span>',"</span>","</div>"],titleName:"Name",titlePreview:_T("share","share_preview"),titleOption:_T("mobile","share_option"),innerItemsTpl:"{1}{0}{2}{3}",appendItemTpl:[{getPermission:function(a){return SYNO.DSMMobile.util.Share.getDisplayString(a)},getResolvedPermission:function(b){var d=b.inherit,c=SYNO.DSMMobile.util.Share.permissionToStr(b),a=SYNO.DSMMobile.util.Share.resolvePermission(d,c);return SYNO.DSMMobile.util.Share.getDisplayString(a)}}],listeners:{itemtap:"handleItemTap"}},fillPanelConfig:function(b,a){},createPermissionDialog:function(b,h,g,f,j){var a=b.getData(),e=SYNO.DSMMobile.util.Share.permissionToStr(a),c=this.getDisplayFn(),i,d;d={title:_T("share","share_preview"),height:h.length*44+120,showBy:[g,"cr-cl"]};i={xclass:"SYNO.Mobile.base.PreviewDialogForm",title:_T("share","share_preview"),permissionOptions:h,displayFn:c,value:e};this.fillPanelConfig(i,b);this.hubFire("popoverDetail",i,d,{selectValue:Ext.bind(f,j||window,[b],true),scope:this})},getPermissionEl:function(c){var b=this.getRightCls(),a=b.trim().split(/\s+/);a=a.map(function(d){return"."+d});return c.element.down(a.join(""))},isPhotoMask:function(a){return a.get("name").toLowerCase()==="photo"&&a.get("is_mask")===true},handleItemTap:function(b,d,f,a,e,c){if(this.isPhotoMask(a)){Ext.Msg.alert("",_T("share","photo_permission_control_notify"));return}this.pushPermissionDialog(f,a)},pushPermissionDialog:function(d,b){var c=this.getPermissionEl(d),a=this.getPermissionOptions();c=c.down(".permissionlist-option");this.createPermissionDialog(b,a,c,this.modifyRecord,this)},modifyRecord:function(c,b,e,a){var d;d=SYNO.DSMMobile.util.Share.strToPermission(c);a.set(d)},initApiParams:function(){},getGrouperTpl:function(){var c=this.getTitleName(),b=this.getTitlePreview(),a=this.getTitleOption(),d=this._grouperTpl;if(Ext.isArray(d)){d=d.join("")}return d.format(c,b,a)},initStore:function(){var a=this.getModel(),c=this.getApiParams(),b=this.getGrouperTpl();this.setStore({xtype:"syno_store",model:a,params:c,sorters:[{property:"name",direction:"ASC"}],grouper:{xtype:"syno_grouper",groupFn:function(d){return b}}})},saveState:function(){this.setState({store:this.getStore()})},restoreState:function(){var a=this.getStore(),b=this.getState();a.loadFromStore(b.store)},loadStore:function(){var a=this.getStore();a.load()},initialize:function(){var a=this.getState(),b=this.getEnablePermissionPreview();if(!b){this.setLeftTpl(null)}this.initApiParams();this.initStore();if(a){this.restoreState()}else{this.loadStore()}this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.BasePermission",{extend:"SYNO.Mobile.base.PermissionList",requires:["SYNO.DSMMobile.data.SharedFolderPermission"],config:{model:"SYNO.DSMMobile.data.SharedFolderPermission",folder:null,apiParams:null},pushPermissionDialog:function(f,b){var e=this.getFolder(),d=this.getPermissionEl(f),a=this.getPermissionOptions(),c=b.get("is_admin");d=d.down(".permissionlist-option");if(c&&e.is_aclmode){a=["na","rw","-"]}this.createPermissionDialog(b,a,d,this.modifyRecord,this)}});Ext.define("SYNO.Mobile.SharedFolder.GroupPermission",{extend:"SYNO.Mobile.SharedFolder.BasePermission",requires:["SYNO.DSMMobile.data.SharedFolderPermission"],config:{model:"SYNO.DSMMobile.data.SharedFolderGroupPermission",titleName:_T("mobile","share_group_name")},initApiParams:function(){var a=this.getFolder();if(a){this.setApiParams({name:a.name,user_group_type:"local_group"})}else{this.setModel("SYNO.DSMMobile.data.CreatingSharedFolderGroupPermission")}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.UserPermission",{extend:"SYNO.Mobile.SharedFolder.BasePermission",requires:["SYNO.DSMMobile.data.SharedFolderPermission"],config:{model:"SYNO.DSMMobile.data.SharedFolderUserPermission",titleName:_T("mobile","share_user_name")},initApiParams:function(){var a=this.getFolder();if(a){this.setApiParams({name:a.name,user_group_type:"local_user"})}else{this.setModel("SYNO.DSMMobile.data.CreatingSharedFolderUserPermission")}},getItemPermission:function(b){var a=SYNO.DSMMobile.util.Share.permissionToStr(b);return SYNO.DSMMobile.util.Share.getDisplayString(a)},initialize:function(){var a=this;this.setAppendItemTpl([{getPermission:function(b){return a.getItemPermission(b)},getResolvedPermission:function(c){var e=c.inherit,d=SYNO.DSMMobile.util.Share.permissionToStr(c),b=SYNO.DSMMobile.util.Share.resolvePermission(e,d);return SYNO.DSMMobile.util.Share.getDisplayString(b)}}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.FolderInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-mobile-sharedfolder-folderinfo",mixins:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin","SYNO.Mobile.SharedFolder.UserPermission","SYNO.Mobile.SharedFolder.GroupPermission","SYNO.DSMMobile.util.PasswordConfirm","SYNO.Mobile.SharedFolder.Lib"],config:{folder:null,title:null,layout:"vbox",items:[{xtype:"syno_fieldset",title:" ",items:[{xtype:"syno_textfield",name:"name",itemId:"name",label:_T("share","share_name"),placeHolder:_T("share","share_name"),vtype:"sharename",maxLength:32,allowBlank:false,blankText:_T("share","error_noname")},{xtype:"syno_textfield",name:"description",label:_T("share","share_comment"),maxLength:64,placeHolder:_T("share","share_comment")},{xtype:"syno_selectfield",itemId:"vol_path",name:"vol_path",label:_T("volume","volume_share_position"),store:{xtype:"syno_store",model:"SYNO.DSMMobile.data.Volume"},displayField:"display_name",valueField:"volume_path"},{xtype:"syno_displayfield",itemId:"external_vol_path",label:_T("volume","volume_share_position"),hidden:true}]},{xtype:"syno_fieldset",title:" ",defaults:{xtype:"syno_buttonfield",handler:function(a){var e=a.getItemId(),b=this.up("syno-mobile-sharedfolder-folderinfo"),c=b.getFolder();function d(f){switch(f){case"user":return"SYNO.Mobile.SharedFolder.UserPermission";case"group":return"SYNO.Mobile.SharedFolder.GroupPermission";default:return undefined}}if(c&&c.is_photo){Ext.Msg.alert("",_T("share","photo_permission_control_notify"));return}b.fireEvent("pushContent",{xclass:d(e)})}},items:[{label:_T("mobile","sharefolder_user_permission"),itemId:"user"},{label:_T("mobile","sharefolder_group_permission"),itemId:"group"},{xtype:"syno_togglefield",itemId:"enable_recycle_bin",name:"enable_recycle_bin",label:_T("share","share_enable_recycle_bin"),listeners:{painted:function(c,a){var b=this.up("syno-mobile-sharedfolder-folderinfo");b.syncRecycleBinToggle()},change:function(c,a){var b=this.up("syno-mobile-sharedfolder-folderinfo");b.syncRecycleBinToggle()}}},{xtype:"syno_togglefield",itemId:"recycle_bin_admin_only",name:"recycle_bin_admin_only",labelCls:"x-form-label-indent",label:_T("network","cifs_safe_recycle_bin")},{xtype:"syno_button",itemId:"empty_recycle_bin",text:_T("share","share_clean_recycle_bin"),handler:function(a){var b=this.up("syno-mobile-sharedfolder-folderinfo");b.confirmEmptyRecycleBin(a)}}]},{xtype:"syno_fieldset",title:" ",itemId:"deleteFieldset",items:[{xtype:"syno_button",btnStyle:"red",text:_T("share","share_delete"),handler:function(a){var b=this.up("syno-mobile-sharedfolder-folderinfo");b.confirmDeleteFolder(a)}}]}],listeners:{pushContent:"onPushContent"}},isWormShare:function(a){if(a&&a.worm_subvol_mode){return Ext.isString(a.worm_subvol_mode)&&a.worm_subvol_mode!=="normal"}return false},onPushContent:function(a){var b={},c=this.getFolder(),d=this.getTitle();Ext.apply(b,a);b.folder=c;b.title=c?c.name:d;this.restoreSubViewState(b);this.hubFire("pushDetail",b)},processUserPermission:function(a){return SYNO.DSMMobile.util.Share.processPermissionStore(a)},processGroupPermission:function(a){return SYNO.DSMMobile.util.Share.processPermissionStore(a)},processFolderInfo:function(){var a={};a.folder=this.getFolder();a.values=this.getValues();if(a.folder&&a.folder.is_usb_share){a.values.vol_path=a.folder.vol_path}this.subViewStateMap.each(function(b,c){switch(b){case"SYNO.Mobile.SharedFolder.UserPermission":a.user=this.processUserPermission(c.store);break;case"SYNO.Mobile.SharedFolder.GroupPermission":a.group=this.processGroupPermission(c.store);break;default:break}},this);return a},processWebAPI:function(d,f,b){var c=this.findModule(),e=this.processFolderInfo(),a;if(b){a=Ext.create("SYNO.DSMMobile.lib.AsyncTask",{fn:SYNO.Mobile.SharedFolder.Lib[f],info:e,scope:SYNO.Mobile.SharedFolder.Lib,ui:{start:function(){SYNO.DSMMobile.utils.mask("apply")},stop:function(){SYNO.DSMMobile.utils.unmask()},succ:function(g){Ext.Msg.alert("",g)},fail:function(g,h){Ext.Msg.alert("",h||SYNO.API.getErrorString(g))},scope:this}})}else{a=Ext.create("SYNO.DSMMobile.lib.AsyncTask",{fn:SYNO.Mobile.SharedFolder.Lib[f],info:e,scope:SYNO.Mobile.SharedFolder.Lib,ui:{start:function(){d.disable();SYNO.DSMMobile.utils.mask("apply")},stop:function(){d.enable();SYNO.DSMMobile.utils.unmask();c.fireEvent("refreshList")},succ:function(){this.isDone=true;this.closeDetail()},fail:function(g,h){Ext.Msg.alert("",h||SYNO.API.getErrorString(g))},scope:this}})}a.run()},confirmDeleteFolder:function(a){Ext.Msg.confirm("",_T("share","share_cfrmrmv"),function(b){if(b==="yes"){this.validateDeleteFolder(a)}},this)},validateDeleteFolder:function(c){var a=this,b=this.processFolderInfo();Ext.create("SYNO.DSMMobile.lib.AsyncTask",{fn:SYNO.Mobile.SharedFolder.Lib.validateDeleteFolder,info:b,scope:SYNO.Mobile.SharedFolder.Lib,ui:{start:function(){SYNO.DSMMobile.utils.mask("apply")},stop:function(){SYNO.DSMMobile.utils.unmask()},succ:function(d){a.passwordConfirmDeleteFolder(c)},fail:function(d,e){Ext.Msg.alert("",e||SYNO.API.getErrorString(d))},scope:this}}).run()},passwordConfirmDeleteFolder:function(d){var b=this,c;c={confirmString:String.format(_T("common","enter_user_password"),_S("username"))};function a(){b.processWebAPI(d,"deleteFolder")}SYNO.DSMMobile.util.PasswordConfirm.confirm(c,a)},confirmEmptyRecycleBin:function(a){Ext.Msg.confirm("",_T("share","share_recycle_bin_clean_warn"),function(b){if(b==="yes"){this.processWebAPI(a,"emptyRecycleBin",true)}},this)},isExtraDirty:function(){return SYNO.DSMMobile.util.Share.isSubViewStoreDirty(this.subViewStateMap)},onTapCancel:function(){},onTapDone:function(){},closeDetail:function(){this.parent.fireEvent("closeDetail")},initVolume:function(){var b=this.down("#vol_path"),a=b.getStore(),c=this.getFolder();a.on("load",function(f,e,h,d,g){f.filter(function(i){return !i.get("readonly")});if(f.getCount()===0){Ext.Msg.alert("",_T("volume","volume_share_volumeno"),function(){this.closeDetail()},this)}if(c){this.setValues({vol_path:c.vol_path})}else{this.setValues({vol_path:b.getValue()})}},this)},loadVolume:function(){var b=this.down("#vol_path"),a=b.getStore();a.load()},getUSBShareStatus:function(b){var a="-";if(-1!==b.vol_path.indexOf("USB")){if(b.external_dev_type==="SDCARD"){a=_T("tree","leaf_sdcard")}else{a=_T("status","status_usb")}}else{if(-1!==b.vol_path.indexOf("sata")){a=_T("status","status_sata")}}return a},refreshSpecialFolder:function(){var b=this.getFolder(),a=this.down("#name"),d=this.down("#external_vol_path"),j=this.down("#vol_path"),c=this.down("#enable_recycle_bin"),f=this.down("#recycle_bin_admin_only"),i=this.down("#empty_recycle_bin"),e=this.down("#user"),h=this.down("#group"),g;if(!b){return}g=b.name.toLowerCase();if(b.is_usb_share){d.setValue(this.getUSBShareStatus(b));d.show();j.hide()}if(g==="homes"||b.vol_path.indexOf("SATA")!==-1){a.disable()}switch(b.encryption){case 0:break;case 1:c.disable();f.disable();i.hide();e.hide();h.hide();break;case 2:a.disable();break;default:console.warn("Error: unknown encryption = ",b.encryption);break}if(!b.enable_recycle_bin){i.disable()}if(b.is_worm_share){c.hide();f.hide();i.hide()}},refreshDom:function(){var a=this.getFolder(),b={name:"name",description:"desc",vol_path:"vol_path",enable_recycle_bin:"enable_recycle_bin",recycle_bin_admin_only:"recycle_bin_admin_only"};this.loadVolume();if(a){this.getFields("vol_path").disable();this.setTitle(a.name);this.refreshSpecialFolder()}else{this.down("#empty_recycle_bin").hide();this.down("#deleteFieldset").hide();this.setTitle(_T("share","share_add"));this.setValues({enable_recycle_bin:true,recycle_bin_admin_only:true})}SYNO.DSMMobile.utils.bindFieldValue(this,a,b)},syncRecycleBinToggle:function(){var a=this.down("#enable_recycle_bin"),b=this.down("#recycle_bin_admin_only");if(a.getValue()){b.enable()}else{b.disable()}this.refreshSpecialFolder()},parseIsPhoto:function(b,c){var a=b.toLowerCase();return a==="photo"&&c.mask_permission_tab===true},refreshPage:function(){var a=SYNO.DSMMobile.webapi,c=this.getFolder(),b;this.refreshDom();if(!c){return}b=[{apiType:"GetSharedFolder",params:{name:c.name}}];SYNO.DSMMobile.utils.mask("load",this);a.sendCompoundWebAPI(b,true,function(d,e){SYNO.DSMMobile.utils.unmask(this);if(e.has_fail){this.handleWebAPIError(e.code);return}Ext.apply(c,{is_photo:this.parseIsPhoto(c.name,e.GetSharedFolder.resp),is_worm_share:this.isWormShare(e.GetSharedFolder.resp)});this.refreshDom()},this)},onBeforeTapDone:function(b,a){var c=this.getFolder(),d=this.isValid();if(d!==true){Ext.Msg.alert("",d);return false}if(this.isDone){return true}else{if(c){this.validateSetFolder(b)}else{this.processWebAPI(b,"createFolder")}return false}},validateSetFolder:function(a){var b=this,c=this.processFolderInfo();Ext.create("SYNO.DSMMobile.lib.AsyncTask",{fn:SYNO.Mobile.SharedFolder.Lib.validateSetFolder,info:c,scope:SYNO.Mobile.SharedFolder.Lib,ui:{start:function(){SYNO.DSMMobile.utils.mask("apply")},stop:function(){SYNO.DSMMobile.utils.unmask()},succ:function(d){b.processWebAPI(a,"saveFolder")},fail:function(d,e){Ext.Msg.alert("",e||SYNO.API.getErrorString(d))},scope:this}}).run()},monitorParent:function(){this.on("painted",function(){this.parent.on({tapCancel:this.onTapCancel,tapDone:this.onTapDone,beforeTapDone:this.onBeforeTapDone,scope:this})},this,{single:true})},handleWebAPIError:function(a,b){Ext.Msg.alert("",b||SYNO.API.getErrorString(a),function(){this.closeDetail()},this)},initialize:function(){this.monitorParent();this.initSubViewStateMixin();this.initVolume();this.refreshPage();this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.TabletFolderDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.SharedFolder.FolderInfo"],config:{hideOnMaskTap:false,destroyOnMaskTap:false,confirmBeforeClose:true,folder:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.SharedFolder.FolderInfo",folder:this.getFolder()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.SharedFolder.PhoneFolderDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.SharedFolder.TabletFolderDetail"],config:{confirmBeforeClose:true,folder:null,module:null},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.SharedFolder.FolderInfo",folder:this.getFolder()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.GroupPermission",{extend:"SYNO.Mobile.base.PermissionList",requires:["SYNO.DSMMobile.data.GroupPermission"],config:{model:"SYNO.DSMMobile.data.GroupPermission",titleName:_T("mobile","share_share_name"),group:null,apiParams:null},initApiParams:function(){var a=this.getGroup();if(a){this.setApiParams({name:a.name})}else{this.setModel("SYNO.DSMMobile.data.CreatingGroupPermission")}},fillPanelConfig:function(b,a){var c=this.getGroup();if(c&&c.is_admin){if(a.get("is_aclmode")){b.permissionOptions=["na","rw","-"]}}},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.GroupInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-mobile-user-groupinfo",mixins:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin","SYNO.Mobile.User.GroupMember","SYNO.Mobile.User.GroupPermission","SYNO.Mobile.User.GroupApplication"],config:{title:_T("group","newgrpdlg_title"),group:null,items:[{xtype:"syno_fieldset",title:_T("group","group_basicinfo"),items:[{xtype:"syno_textfield",name:"name",itemId:"name",allowBlank:false,blankText:_T("mobile","common_error_empty_name"),label:_T("group","group_name"),maxLength:32,placeHolder:_T("group","group_name")},{xtype:"syno_textfield",name:"description",label:_T("group","group_desc"),maxLength:64,placeHolder:_T("group","group_desc")}]},{xtype:"syno_fieldset",title:_T("common","webman_options"),defaults:{xtype:"syno_buttonfield",handler:function(a){var d=a.getItemId(),b=this.up("syno-mobile-user-groupinfo");function c(e){switch(e){case"member":return"SYNO.Mobile.User.GroupMember";case"permission":return"SYNO.Mobile.User.GroupPermission";case"application":return"SYNO.Mobile.User.GroupApplication";default:return undefined}}b.fireEvent("pushContent",{xclass:c(d)})}},items:[{label:_T("helptoc","group_member"),itemId:"member"},{label:_T("group","group_shareinfo_title"),itemId:"permission"},{label:_T("user","user_application"),itemId:"application"}]},{xtype:"syno_fieldset",title:_T("common","action"),itemId:"deleteFieldset",items:[{xtype:"syno_button",text:_T("common","delete"),itemId:"deletegroup",btnStyle:"red",handler:function(){var a=this.up("syno-mobile-user-groupinfo");a.confirmDeleteGroup()}}]}],listeners:{pushContent:"onPushContent"}},onPushContent:function(a){var b={},c=this.getGroup(),d=this.getTitle();Ext.apply(b,a);b.group=c;b.title=c?c.name:d;this.restoreSubViewState(b);this.hubFire("pushDetail",b)},onTapCancel:function(){},onTapDone:function(){},onBeforeTapDone:function(b,a){var d=this.getGroup(),c=this.isValid();if(c!==true){Ext.Msg.alert("",c);return false}if(d){return this.processWebAPI(b,a,this.saveGroup)}else{return this.processWebAPI(b,a,this.createGroup)}},processWebAPI:function(d,c,e){var f=this,b=f.findModule();if(this.isDone){return true}if(this.isSaving){return false}SYNO.DSMMobile.utils.mask("apply");this.isSaving=true;d.disable();function a(){f.isSaving=false;d.enable();Ext.Viewport.unmask()}function g(){a();f.isDone=true;this.parent.fireEvent("triggerTapDone",d,c);b.fireEvent("refreshList")}function h(j){a();var i=SYNO.API.getErrorString();if(j){i=SYNO.API.getErrorString(j)}Ext.Msg.alert(_T("error","error_error"),i)}e.call(this,g,h,this);return false},processGroupMember:function(a){return SYNO.DSMMobile.util.Share.processMemberStore(a)},getGroupMemberWebAPI:function(c){var b=[],d,f=[],a=[],e=this.getGroup();for(d in c){if(c.hasOwnProperty(d)){if(c[d]===true){f.push(d)}else{a.push(d)}}}if(f.length>0){b.push({apiType:"AddGroupMember",params:{group:(e)?e.name:this.down("#name").getValue(),name:f}})}if(a.length>0){b.push({apiType:"RemoveGroupMember",params:{group:(e)?e.name:this.down("#name").getValue(),name:a}})}return b},processGroupPermission:function(a){return SYNO.DSMMobile.util.Share.processPermissionStore(a)},getGroupPermissionWebAPI:function(a){var c=[],b;for(b in a){if(a.hasOwnProperty(b)){var d=a[b];c.push({name:b,is_readonly:d==="ro",is_writable:d==="rw",is_deny:d==="na"})}}return c.length===0?[]:[{apiType:"SetGroupSharePermission",params:{name:this.down("#name").getValue(),user_group_type:"local_group",permissions:c}}]},processGroupApplication:function(a){return SYNO.DSMMobile.util.Application.processApplicationStore(a)},getAppRuleWebAPI:function(a){return SYNO.DSMMobile.util.Application.getAppRuleWebAPI({entity_type:"group",entity_name:this.down("#name").getValue()},a)},getGroupInfoWebAPI:function(){var a,c=this.getValues(),b=this.getGroup();if(b){if(c.name!==b.name){c.new_name=c.name;c.name=b.name}}a=[{apiType:(!b)?"CreateGroup":"SetGroup",params:c}];return a},getGroupWebAPI:function(){var a=[],b={};this.subViewStateMap.each(function(c,d){switch(c){case"SYNO.Mobile.User.GroupMember":b.member=this.processGroupMember(d.store);break;case"SYNO.Mobile.User.GroupPermission":b.permission=this.processGroupPermission(d.store);break;case"SYNO.Mobile.User.GroupApplication":b.application=this.processGroupApplication(d.store);break;default:break}},this);a=this.getGroupInfoWebAPI();a=a.concat(this.getGroupPermissionWebAPI(b.permission||{}));a=a.concat(this.getGroupMemberWebAPI(b.member||{}));a=a.concat(this.getAppRuleWebAPI(b.application||{}));return a},confirmDeleteGroup:function(){var a=this.getGroup();Ext.Msg.confirm("",_T("group","group_cfrmrmv")+a.name,function(b){if(b==="yes"){this.processDeleteGroup()}},this)},processDeleteGroup:function(){var b=this.findModule(),c=this;function a(){b.fireEvent("refreshList");SYNO.DSMMobile.utils.unmask();c.parent.fireEvent("closeDetail")}function d(){a()}function e(){a()}SYNO.DSMMobile.utils.mask("apply");this.deleteGroup(d,e,this)},createGroup:function(d,e,c){var b=this.getGroupWebAPI(),a=SYNO.DSMMobile.webapi;a.sendCompoundWebAPI(b,true,function(f,g){if(!f||g.has_fail){e.call(c||window,g);return}d.call(c||window)},this)},saveGroup:function(d,e,c){var b=this.getGroupWebAPI(),a=SYNO.DSMMobile.webapi;a.sendCompoundWebAPI(b,true,function(f,g){if(!f||g.has_fail){e.call(c||window,g);return}d.call(c||window)},this)},deleteGroup:function(e,d,c){var b=this.getGroup().name,a=SYNO.DSMMobile.webapi;a.DeleteGroup({name:b},function(f,g){if(!f){d.call(c||window,g);return}e.call(c||window,g)})},parseIsAdmin:function(b){var a=false;Ext.each(b.groups,function(c){if(c.is_admin){a=true;return false}},this);return a},isExtraDirty:function(){return SYNO.DSMMobile.util.Share.isSubViewStoreDirty(this.subViewStateMap)},refreshDom:function(){var b=this.getGroup(),c={name:"name",description:"description"},a=function(e){var d=e.name;return d==="users"||d==="administrators"||d==="http"};if(b){this.setTitle(b.name);if(a(b)){this.down("#name").disable();this.down("#deleteFieldset").hide()}if(b.name==="users"){this.down("#member").hide()}}else{this.down("#deleteFieldset").hide()}SYNO.DSMMobile.utils.bindFieldValue(this,b,c)},refreshPage:function(){var a=SYNO.DSMMobile.webapi,d=Ext.clone(this.getGroup()),b,c;this.refreshDom();if(!d){return}SYNO.DSMMobile.utils.mask("load",this);b=[{apiType:"CheckGroupIsAdmin",params:{name:d.name}}];a.sendCompoundWebAPI(b,true,function(e,f){SYNO.DSMMobile.utils.unmask(this);if(f.has_fail){this.handleWebAPIError(f.code);return}c=this.parseIsAdmin(f.CheckGroupIsAdmin.resp);Ext.apply(d,{is_admin:c});this.setGroup(d);this.refreshDom()},this)},monitorParent:function(){this.on("painted",function(){this.parent.on({tapCancel:this.onTapCancel,tapDone:this.onTapDone,beforeTapDone:this.onBeforeTapDone,scope:this})},this,{single:true})},initialize:function(){this.monitorParent();this.initSubViewStateMixin();this.refreshPage();this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.TabletGroupDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.User.GroupInfo"],config:{hideOnMaskTap:false,destroyOnMaskTap:false,confirmBeforeClose:true,group:{}},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.User.GroupInfo",group:this.getGroup()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.PhoneGroupDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.User.TabletGroupDetail"],config:{confirmBeforeClose:true,group:{}},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.User.GroupInfo",group:this.getGroup()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserPermission",{extend:"SYNO.Mobile.base.PermissionList",requires:["SYNO.DSMMobile.data.UserPermission","SYNO.Mobile.User.UserPermissionPreview","SYNO.DSMMobile.data.CreatingUserPermission"],config:{model:"SYNO.DSMMobile.data.UserPermission",titleName:_T("mobile","share_share_name"),rightTpl:['<div class="permissionlist-preview">{[this.getResolvedPermission(values)]}</div>'],grouperTpl:['<div class="permissionlist-header">','<span class="permissionlist-title-left">','<span class="permissionlist-title-name">{0}</span>',"</span>",'<span class="permissionlist-title-right">','<span class="permissionlist-title-preview">{1}</span>',"</span>","</div>"],grouped:false,user:null,creatingInfo:null,apiParams:null},pushPermissionDialog:function(c,b){var a=this.getPermissionOptions();this.createPermissionDialog(b,a,this.modifyRecord,this)},fillPanelConfig:function(c,a){var b=this.getUser();if(b&&b.is_admin){if(a.get("is_aclmode")){c.permissionOptions=["na","rw","-"]}}},createPermissionDialog:function(c,g,f,i){var b=c.getData(),e=SYNO.DSMMobile.util.Share.permissionToStr(b),d=this.getDisplayFn(),a=b.inherit||"-",h;h={xclass:"SYNO.Mobile.User.UserPermissionPreview",title:_T("share","share_preview"),permissionOptions:g,displayFn:d,groupValue:a,value:e};this.fillPanelConfig(h,c);this.hubFire("pushDetail",h,{selectValue:Ext.bind(f,i||window,[c],true),scope:this})},initApiParams:function(){var a=this.getUser(),b;if(a){this.setApiParams({name:a.name})}else{b=this.getCreatingInfo();this.setModel("SYNO.DSMMobile.data.CreatingUserPermission");this.setApiParams({name:b.group})}},initialize:function(){var a=this.getUser();if(a&&a.is_admin){this.setAppendItemTpl([{getPermission:function(b){return SYNO.DSMMobile.util.Share.getDisplayString(b)},getResolvedPermission:function(c){var e=c.inherit,d=SYNO.DSMMobile.util.Share.permissionToStr(c),b=SYNO.DSMMobile.util.Share.resolvePermission(e,d);return SYNO.DSMMobile.util.Share.getDisplayString(b)}}])}this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.UserInfo",{extend:"SYNO.DSMMobile.base.FormPanel",xtype:"syno-mobile-user-userinfo",mixins:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin"],requires:["SYNO.Mobile.base.SubViewStateMixin","SYNO.Mobile.base.CanFindModuleMixin","SYNO.Mobile.User.UserGroup","SYNO.Mobile.User.UserPermission","SYNO.Mobile.User.UserApplication","SYNO.Mobile.User.StatusPanel"],config:{title:_T("user","newuser_dlgtitle"),layout:"vbox",user:null,items:[{xtype:"syno_fieldset",title:" ",items:[{xtype:"syno_textfield",name:"name",itemId:"name",allowBlank:false,blankText:_T("mobile","common_error_empty_name"),vtype:"username",label:_T("user","user_account"),maxLength:64,placeHolder:_T("user","user_account")},{xtype:"syno_textfield",name:"description",label:_T("user","user_fullname"),maxLength:64,placeHolder:_T("user","user_fullname")},{xtype:"syno_passwordfield",name:"password",itemId:"password",allowBlank:null,maxLength:127,label:_T("user","user_passwd"),placeHolder:_T("user","user_passwd"),value:"12345678",validator:function(){var d=this.up("syno-mobile-user-userinfo"),a=d.getValues(),c=d.findModule(),b=c.getPasswordChecker();if(!b){return true}else{return b.isStrongValidator(a.name,a.description,a.password,a.confirmpassword)}}},{xtype:"syno_passwordfield",name:"confirmpassword",itemId:"confirmpassword",confirmFor:"password",label:_T("user","user_repswd"),placeHolder:_T("user","user_passwd"),maxLength:127,value:"87654321"},{xtype:"syno_textfield",name:"email",itemId:"email",vtype:"email",label:_T("user","user_email"),maxLength:512,placeHolder:_T("user","user_email")},{xtype:"syno_buttonfield",cls:"phone-multi-line",name:"status",itemId:"status",htmlEncode:false,label:_T("user","user_acnt_status"),renderer:function(a){return SYNO.Mobile.ModuleUtils.getUserExipiedString(a)},handler:function(a){var b=this.up("syno-mobile-user-userinfo");b.openStatusDialog(a)}}]},{xtype:"syno_fieldset",title:" ",defaults:{xtype:"syno_buttonfield",handler:function(b){var e=b.getItemId(),c=this.up("syno-mobile-user-userinfo"),a=c.getUser();function d(f){switch(f){case"usergroup":return"SYNO.Mobile.User.UserGroup";case"permission":return"SYNO.Mobile.User.UserPermission";case"application":return"SYNO.Mobile.User.UserApplication";default:return undefined}}c.fireEvent("pushContent",{xclass:d(e),lockedList:(a&&a.name==="admin")?["administrators","users"]:["users"]})}},items:[{label:_T("user","user_groups"),itemId:"usergroup"},{label:_T("user","user_share_permission"),itemId:"permission"},{label:_T("user","user_application"),itemId:"application"}]},{xtype:"syno_fieldset",title:" ",itemId:"deleteFieldset",items:[{xtype:"syno_button",text:_T("common","delete"),itemId:"deleteuser",btnStyle:"red",handler:function(){var a=this.up("syno-mobile-user-userinfo");a.confirmDeleteUser()}}]}],listeners:{pushContent:"onPushContent"}},openStatusDialog:function(b){var e=b.getValue(),d,c,a;if(e==="normal"){d="enable"}else{if(e==="now"){d="disable"}else{d=e}}a={title:_T("share","share_preview"),width:320,height:380,showBy:[b.getComponent(),"cr-cl"]};c={xclass:"SYNO.Mobile.User.StatusPanel",value:d};this.hubFire("popoverDetail",c,a,{updateValue:function(f){if(f==="enable"){b.setValue("normal")}else{if(f==="disable"){b.setValue("now")}else{b.setValue(f)}}},scope:this})},onPushContent:function(a){var c={},b=this.getUser(),d=this.getTitle();Ext.apply(c,a);c.user=b;c.creatingInfo={group:["users"]};c.title=b?b.name:d;this.restoreSubViewState(c);this.hubFire("pushDetail",c)},processUserGroup:function(b){var c=SYNO.DSMMobile.util.Share.processMemberStore(b),d=[],a=[];Ext.iterate(c,function(e,f){if(e==="users"){return}if(c[e]===true){d.push(e)}else{a.push(e)}},this);return{addGroup:d,delGroup:a}},getGroupWebAPI:function(a){var b=[];if(a.addGroup){b=b.concat(this.serializeGroupAPIByType(a.addGroup,"AddGroupMember"))}if(a.delGroup){b=b.concat(this.serializeGroupAPIByType(a.delGroup,"RemoveGroupMember"))}return b},serializeGroupAPIByType:function(a,d){var b=[],c;for(c=0;c<a.length;c++){b.push({apiType:d,params:{name:this.down("#name").getValue(),group:a[c]}})}return b},processUserPermission:function(a){return SYNO.DSMMobile.util.Share.processPermissionStore(a)},getPermissionWebAPI:function(a){var c=[],b,d;for(b in a){if(a.hasOwnProperty(b)){d=a[b];c.push({name:b,is_readonly:d==="ro",is_writable:d==="rw",is_deny:d==="na",is_custom:d==="cu"})}}return(c.length===0)?[]:[{apiType:"SetUserSharePermission",version:1,params:{name:this.down("#name").getValue(),user_group_type:"local_user",permissions:c}}]},processUserApplication:function(a){return SYNO.DSMMobile.util.Application.processApplicationStore(a)},getAppRuleWebAPI:function(a){return SYNO.DSMMobile.util.Application.getAppRuleWebAPI({entity_type:"user",entity_name:this.down("#name").getValue()},a)},getUserInfoWebAPI:function(){var a=this.getUser(),c=(a===null),b=this.getValues();b.expired=b.status;delete b.status;delete b.confirmpassword;if(!c){if(!this.down("#password").isDirty()){delete b.password}if(b.name!==a.name){b.new_name=b.name;b.name=a.name}}return[{apiType:(c)?"CreateUser":"SetUser",params:b}]},getUserWebAPI:function(){var b={},a;this.subViewStateMap.each(function(c,d){switch(c){case"SYNO.Mobile.User.UserGroup":b.group=this.processUserGroup(d.store);break;case"SYNO.Mobile.User.UserPermission":b.permission=this.processUserPermission(d.store);break;case"SYNO.Mobile.User.UserApplication":b.application=this.processUserApplication(d.store);break;default:break}},this);a=this.getUserInfoWebAPI();a=a.concat(this.getGroupWebAPI(b.group||{}));a=a.concat(this.getPermissionWebAPI(b.permission||{}));a=a.concat(this.getAppRuleWebAPI(b.application||{}));return a},processWebAPI:function(d,c,e){var f=this,b=f.findModule();if(this.isDone){return true}if(this.isSaving){return false}SYNO.DSMMobile.utils.mask("apply");this.isSaving=true;d.disable();function a(){f.isSaving=false;d.enable();Ext.Viewport.unmask()}function g(){a();f.isDone=true;this.parent.fireEvent("triggerTapDone",d,c);b.fireEvent("refreshList")}function h(j){a();var i=SYNO.API.getErrorString();if(j){i=SYNO.API.getErrorString(j)}Ext.Msg.alert(_T("error","error_error"),i)}e.call(this,g,h,this);return false},processDeleteUser:function(){var b=this.findModule(),c=this;var d={confirmString:String.format(_T("common","enter_user_password"),_S("username"))};function a(){b.fireEvent("refreshList");SYNO.DSMMobile.utils.unmask();c.parent.fireEvent("closeDetail")}function e(){a()}function f(){a()}SYNO.DSMMobile.util.PasswordConfirm.confirm(d,function(){SYNO.DSMMobile.utils.mask("apply");c.deleteUser(e,f,c)})},loadUserHomeAndDelete:function(d,f,c){var b=this.getUser().name,a=SYNO.DSMMobile.webapi,e=this;a.GetUserHome({},function(g,i){Ext.Viewport.unmask();if(!g){f.call(c||window,i);return}var h=!!i.enable;this.hubFire("pushDetail",{xtype:"syno_panel",title:_T("user","user_delete"),items:[{xtype:"container",cls:"user-delete-confirm-ct",html:(h)?String.format("<b>{0}</b>",_T("user","user_rm_home_warning")+_T("user","user_cfrmrmv"))+"<b> "+b+"</b>":String.format("<b>{0}</b>",_T("user","user_cfrmrmv"))+"<b> "+b+"</b>"},{xtype:"syno_fieldset",items:[{xtype:"syno_togglefield",label:String.format('<span class="red-status">{0}</span>',_T("user","user_delete_confirm")),hidden:!h,listeners:{change:function(l,j){var k=this.parent.parent.down("syno_button");if(j===1){k.enable()}else{k.disable()}}}}]},{xtype:"syno_button",btnStyle:"red",text:_T("common","delete"),disabled:h,handler:function(){e.processDeleteUser()}}]})},this)},confirmDeleteUser:function(){var a=this.getUser();Ext.Msg.confirm("",_T("user","user_cfrmrmv")+a.name,function(b){if(b==="yes"){this.processDeleteUser()}},this)},createUser:function(d,e,c){var a=SYNO.DSMMobile.webapi,b=this.getUserWebAPI();a.sendCompoundWebAPI(b,true,function(f,g){if(!f||g.has_fail){e.call(c||window,g);return}d.call(c||window)},this,["password"])},saveUser:function(d,e,c){var a=SYNO.DSMMobile.webapi,b=this.getUserWebAPI();a.sendCompoundWebAPI(b,true,function(f,g){if(!f||g.has_fail){e.call(c||window,g);return}d.call(c||window)},this,["password"])},deleteUser:function(d,e,c){var b=SYNO.DSMMobile.webapi,a=this.getUser();b.DeleteUser({name:a.name},function(f,g){if(!f||g.has_fail){e.call(c||window,g);return}d.call(c||window)},this)},isExtraDirty:function(){return SYNO.DSMMobile.util.Share.isSubViewStoreDirty(this.subViewStateMap)},refreshDom:function(){var a=this.getUser(),b={name:"name",email:"email",description:"description",status:"expired"};SYNO.DSMMobile.utils.bindFieldValue(this,a,b);this.updateViewInfo()},parseIsAdmin:function(b){var a=false;Ext.each(b.groups,function(c){if(c.name==="administrators"&&c.is_member===true){a=true;return false}},this);return a},parseIsLMB:function(a){return a.enable_samba&&a.enable_local_master_browser},refreshPage:function(){var b=SYNO.DSMMobile.webapi,a=Ext.clone(this.getUser()),c;this.refreshDom();if(!a){return}SYNO.DSMMobile.utils.mask("load",this);c=[{apiType:"ListGroup",params:{user:a.name}},{apiType:"GetFileServSMB"}];b.sendCompoundWebAPI(c,true,function(d,g){var e,f;SYNO.DSMMobile.utils.unmask(this);if(g.has_fail){this.handleWebAPIError(g.code);return}e=this.parseIsAdmin(g.ListGroup.resp);f=this.parseIsLMB(g.GetFileServSMB.resp);Ext.apply(a,{is_admin:e,is_LMB:f});this.setUser(a);this.refreshDom()},this)},onTapCancel:function(){},onTapDone:function(){},onBeforeTapDone:function(c,b){var a=this.getUser(),d=this.isValid();if(d!==true){Ext.Msg.alert("",d);return false}if(a){return this.processWebAPI(c,b,this.saveUser)}else{return this.processWebAPI(c,b,this.createUser)}},monitorParent:function(){this.on("painted",function(){this.parent.on({tapCancel:this.onTapCancel,tapDone:this.onTapDone,beforeTapDone:this.onBeforeTapDone,scope:this})},this,{single:true})},updateViewInfo:function(){var a=this.getUser(),b=function(d){var g=d.toUpperCase(),c="admin".toUpperCase(),f="guest".toUpperCase(),e="SynologyCMS".toUpperCase();return g===c||g===f||g===e};if(!a){this.down("#deleteFieldset").hide();this.setValues({status:"normal",password:"",confirmpassword:""})}else{this.setTitle(a.name);if(b(a.name)){this.down("#name").disable();this.down("#email").disable();this.down("#deleteFieldset").hide()}if(a.name===_S("username")){this.down("#deleteFieldset").hide();this.down("#status").disable()}if(a.name==="guest"){this.down("#application").hide();if(a.is_LMB){this.down("#password").disable();this.down("#confirmpassword").disable();this.down("#status").disable()}}}},handleWebAPIError:function(a,b){Ext.Msg.alert("",b||SYNO.API.getErrorString(a),function(){this.closeDetail()},this)},closeDetail:function(){this.parent.fireEvent("closeDetail")},initialize:function(){this.monitorParent();this.initSubViewStateMixin();this.refreshPage();this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.TabletUserDetail",{extend:"SYNO.DSMMobile.base.TabletDetail",requires:["SYNO.Mobile.User.UserInfo"],config:{hideOnMaskTap:false,destroyOnMaskTap:false,confirmBeforeClose:true,user:{}},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.User.UserInfo",user:this.getUser()}]);this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.PhoneUserDetail",{extend:"SYNO.DSMMobile.base.PhoneDetail",requires:["SYNO.Mobile.User.TabletUserDetail"],config:{confirmBeforeClose:true,user:{}},initialize:function(){this.setItems([{xclass:"SYNO.Mobile.User.UserInfo",user:this.getUser()}]);this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.mixin.CanTraverseItemCollection",{traverseItemCollection:function(d,c){var a=this,b;c.call(a,d,a);if(!Ext.isFunction(d.getItems)){return}b=d.getItems();if(b instanceof Ext.ItemCollection){}else{return}b.each(function(e){this.traverseItemCollection(e,c)},this)}});Ext.define("SYNO.Mobile.base.Module",{extend:"SYNO.DSMMobile.base.Panel",xtype:"syno_module",requires:["SYNO.DSMMobile.mixin.CanTraverseItemCollection"],mixins:["SYNO.DSMMobile.mixin.CanTraverseItemCollection"],config:{title:"SYNO.Mobile.base.Module title",extraBtn:null,layout:"fit"},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.Demo.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.Demo.Main"],config:{title:"This is Demo Module",extraBtn:{xtype:"syno_button",cls:"syno-mobile-titlebar-button syno-mobile-icon-control",handler:function(){console.log("get owner by this.owner",this.owner)}},items:[{xclass:"SYNO.Mobile.Demo.Main"}]}});Ext.define("SYNO.Mobile.Firmware.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.Firmware.Main"],config:{title:_T("mobile","menu_firmware"),items:[{xclass:"SYNO.Mobile.Firmware.Main"}]}});Ext.define("SYNO.Mobile.IPBlock.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.IPBlock.Main","SYNO.Mobile.IPBlock.TabletSettingDetail","SYNO.Mobile.IPBlock.PhoneSettingDetail","SYNO.Mobile.IPBlock.TabletAddIPDetail","SYNO.Mobile.IPBlock.PhoneAddIPDetail"],config:{title:_T("mobile","menu_ip_block"),extraBtn:{xtype:"syno_panel",layout:"hbox",items:[{xtype:"syno_button",cls:"syno-mobile-titlebar-button syno-mobile-icon-control",handler:function(a,b){this.parent.owner.onTapSettingBtn(a,b)}},{xtype:"syno_button",cls:"syno-mobile-titlebar-button syno-mobile-icon-add",handler:function(a,b){this.parent.owner.onTapAddBtn(a,b)}}]},items:[{xclass:"SYNO.Mobile.IPBlock.Main"}]},onTapAddBtn:function(a,c){function b(){this.fireEvent("openAddIPDetail","allow")}function d(){this.fireEvent("openAddIPDetail","deny")}this.hubFire("openMenu",{showBy:[a.element],options:[{display:_T("autoblock","autoblock_white_list"),handler:b,scope:this},{display:_T("autoblock","autoblock_view_list"),handler:d,scope:this}]})},onTapSettingBtn:function(a,b){this.fireEvent("openSettingDetail")},onOpenAddIPDetail:function(d){var c={ipType:d,module:this};var b={xclass:"SYNO.Mobile.IPBlock.TabletAddIPDetail"};var a={xclass:"SYNO.Mobile.IPBlock.PhoneAddIPDetail"};this.hubFire("openDetail",{tablet:b,phone:a,common:c})},onOpenSettingDetail:function(){var c={module:this};var b={xclass:"SYNO.Mobile.IPBlock.TabletSettingDetail"};var a={xclass:"SYNO.Mobile.IPBlock.PhoneSettingDetail"};this.hubFire("openDetail",{tablet:b,phone:a,common:c})},monitorModule:function(){this.on({openSettingDetail:this.onOpenSettingDetail,openAddIPDetail:this.onOpenAddIPDetail})},initialize:function(){this.monitorModule();this.callParent(arguments)}});Ext.define("SYNO.Mobile.Log.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.Log.Main"],config:{title:_T("mobile","menu_log"),items:[{xclass:"SYNO.Mobile.Log.Main"}]}});Ext.define("SYNO.Mobile.PackageCenter.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.PackageCenter.Lib","SYNO.Mobile.PackageCenter.Main"],config:{title:_T("mobile","menu_package_center")},isUILocked:function(a){return this.lib.isUILocked(a.id)},onOpenPkgDetail:function(d,a){var e={pkg:d,owner:a,module:this};var c={xclass:"SYNO.Mobile.PackageCenter.TabletAppDetail"};var b={xclass:"SYNO.Mobile.PackageCenter.PhoneAppDetail"};this.hubFire("openDetail",{tablet:c,phone:b,common:e})},onRequestUpgradePkg:function(c,d){var a,b,e;if(this.isUILocked(c)){return}e={id:c.id};b=Ext.apply({fn:this.lib.installPkg,info:e,scope:this.lib,ui:{start:function(){},stop:function(){},succ:function(f){},fail:function(g,h,f){Ext.Msg.alert("",f)},scope:this}},d);a=Ext.create("SYNO.DSMMobile.lib.AsyncTask",b);a.run()},onRequestTogglePkg:function(c,d){var a,b,e;if(this.isUILocked(c)){return}e={id:c.id};b=Ext.apply({fn:this.lib.togglePkg,info:e,scope:this.lib,ui:{start:function(){},stop:function(){},succ:function(f){},fail:function(g,h,f){Ext.Msg.alert("",f)},scope:this}},d);a=Ext.create("SYNO.DSMMobile.lib.AsyncTask",b);a.run()},onLibDownloadPollingError:function(b,c,a){Ext.Msg.alert("",b)},monitorModule:function(){this.on({openPkgDetail:this.onOpenPkgDetail,requestUpgradePkg:this.onRequestUpgradePkg,requestTogglePkg:this.onRequestTogglePkg})},initialize:function(){this.lib=SYNO.Mobile.PackageCenter.Lib;this.setItems([{xclass:"SYNO.Mobile.PackageCenter.Main",module:this}]);this.lib.on({downloadPollingError:this.onLibDownloadPollingError,scope:this});this.monitorModule();this.callParent(arguments);window.pkgModule=this}});Ext.define("SYNO.Mobile.ResourceMonitor.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.ResourceMonitor.Main","SYNO.Mobile.ResourceMonitor.MemoryCompositionMain"],config:{title:_T("mobile","menu_resource_monitor"),info:null,items:[{xclass:"SYNO.Mobile.ResourceMonitor.Main"}]},requestInfo:function(){var a=SYNO.DSMMobile.webapi,c;var b={stopwhenerror:true,mode:"parallel"};c=[{apiType:"ListProcess"},{apiType:"GetSystemLoading"}];if(SYNO.API.GetKnownAPI("SYNO.Core.System.ProcessGroup")){c.push({apiType:"ProcessGroupStatus"})}a.sendCompoundWebAPI(c,b,function(e,h,g,f,d){if(this.isDestroyed){return}if(!e){return}this.setInfo(h);this.fireEvent("updateInfo",h)},this)},initPolling:function(){var a=10000;this.on("updateInfo",this.requestInfo,this,{buffer:a});this.requestInfo()},onOpenMemoryDetail:function(d){var c={memory:d,module:this};var b={xclass:"SYNO.Mobile.ResourceMonitor.TabletMemoryDetail"};var a={xclass:"SYNO.Mobile.ResourceMonitor.PhoneMemoryDetail"};this.hubFire("openDetail",{tablet:b,phone:a,common:c})},initialize:function(){this.initPolling();this.on({openMemoryDetail:this.onOpenMemoryDetail});this.callParent(arguments)}});Ext.define("SYNO.Mobile.Service.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.Service.Main"],config:{title:_T("mobile","menu_service"),items:[{xclass:"SYNO.Mobile.Service.Main"}]}});Ext.define("SYNO.Mobile.SharedFolder.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.SharedFolder.Main","SYNO.Mobile.SharedFolder.TabletFolderDetail","SYNO.Mobile.SharedFolder.PhoneFolderDetail"],config:{title:_T("mobile","menu_shared_folder"),extraBtn:{xtype:"syno_button",cls:"syno-mobile-titlebar-button syno-mobile-icon-add",handler:function(a,b){this.owner.onTapAddBtn(a,b)}},items:[{xclass:"SYNO.Mobile.SharedFolder.Main"}]},onTapAddBtn:function(){this.fireEvent("openFolderDetail",null)},onOpenFolderDetail:function(d){var c={folder:d,module:this};var b={xclass:"SYNO.Mobile.SharedFolder.TabletFolderDetail"};var a={xclass:"SYNO.Mobile.SharedFolder.PhoneFolderDetail"};this.hubFire("openDetail",{tablet:b,phone:a,common:c})},monitorModule:function(){this.on({openFolderDetail:this.onOpenFolderDetail})},initialize:function(){this.monitorModule();this.callParent(arguments)}});Ext.define("SYNO.Mobile.StorageManager.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.StorageManager.Main"],config:{title:_T("volume","storage_manager"),items:[{itemId:"stgmgr-tabpanel",xclass:"SYNO.Mobile.StorageManager.Main"}],data:{},statusColors:{healthy:"#37a600",caution:"#ff7f00",attention:"#cc1414"},statusText:{healthy:_T("volume","volume_healthy"),caution:_T("volume","volume_caution"),attention:_T("volume","volume_danger")}},initialize:function(){var a=this;a.initPolling();a.on({openVolumeDetail:a.openVolumeDetail,openHddDetail:a.openHddDetail});a.callParent(arguments)},initPolling:function(){var b=this,a=10000;function c(){if(b.isDestroyed){return}b.requestInfo();setTimeout(c,a)}c()},requestInfo:function(){var a=this;function b(c){c.iscsiLuns=c.iscsiLuns||[];return c}SYNO.DSMMobile.webapi.LoadStorageInfo(function(d,c){if(!d){return}a.setData(b(c));a.fireEvent("updateInfo",a.getData())})},prepareHealth:function(b){var a=this;a.systemNeedRepair=false;a.repairSysLinkId=undefined;a.checkSpaceStatus(a.getData().volumes,b);if("healthy"!==b.status){return}if("yes"===_D("support_iscsi_target","no")){a.checkSpaceStatus(a.getData().iscsiLuns,b);if("healthy"!==b.status){return}}a.checkSpaceStatus(a.getData().storagePools,b);if("healthy"!==b.status){return}if("yes"===_D("support_ssd_cache","no")){a.checkSsdCacheStatus(a.getData().ssdCaches,b);if("healthy"!==b.status){return}}if("yes"===_D("supportraid","no")&&a.getData().env.status.system_crashed){b.status="attention";b.text=a.getStatusText()[b.status];if("healthy"!==b.status){return}}if("yes"===_D("supportsas","no")){if("yes"===_D("support_dual_head")){if(0===a.getData().AHAInfo.link_status){b.status="caution";b.text=a.getStatusText()[b.status]}else{if(1!=a.getData().AHAInfo.link_status){b.status="caution";b.text=a.getStatusText()[b.status]}}}else{if(!a.checkLinkValid()){b.status="caution";b.text=a.getStatusText()[b.status]}}if("healthy"!==b.status){return}}a.checkDiskSmart(b)},prepareOverview:function(g){var o={},w,m,h,b,l,z,r,f,c,v,a,p,s,q,d=0,y=0,k=0,e=0,t;var x=this.getData().disks;var n=this.getData().AHAInfo;var u=function(j,i){return(j.order>i.order)?1:((j.order===i.order)?0:-1)};g.expansions=[];g.diskInfoStat=[];for(s=0;s<x.length;s++){t=x[s];if("disabled"===t.portType){continue}h=t.container;if("cache"===t.portType){continue}if("yes"===_D("supportsas","no")){if("ebox"===h.type){r=h.order;if(n){c=n.enclosures[r-1].max_disk;z=String.format("{0} {1}",n.enclosures[r-1].model,r)}else{c=12;z=String.format("{0} {1}",h.str,r)}}else{r=0;c=parseInt(_D("maxdisks",0),10);z=_S("hostname")}}else{if("ebox"===h.type){v=h.str.split("-");if(2!=v.length||3>v[0].length){continue}r=parseInt(v[1],10);f=v[0].match(/\d+/);if(!f||0===f.length){continue}c=parseInt(f[0].substr(0,f[0].length-2),10);z=h.str}else{r=0;c=parseInt(_D("maxdisks",0),10);z=_S("hostname")}}if(!o[r]){m={bayNumber:c,name:z,disks:[],nonEmptySlot:{}};o[r]=m}else{m=o[r]}if(""===t.used_by){++k;p="unused"}else{if("hotspare"===t.used_by){++y;p="spare"}else{++d;p="used"}}if("unused"===p){l=_T("volume","unused_size")}else{l=SYNO.SDS.Utils.StorageUtils.SpaceIDParser(t.used_by).str}a=parseInt(t.order,10);b=SYNO.SDS.Utils.StorageUtils.UiRenderHelper.DiskNameRenderer(t.name);m.disks.push({status:p,order:a,displayName:b,usedBy:l});m.nonEmptySlot[a]=true}if(n){for(q=1;q<=n.enclosures.length;++q){if(!o[q]){c=n.enclosures[q-1].max_disk;z=String.format("{0} {1}",n.enclosures[q-1].model,q);m={bayNumber:c,name:z,disks:[],nonEmptySlot:{}};o[q]=m}else{m=o[q]}for(s=1;s<=m.bayNumber;++s){if(!m.nonEmptySlot[s]){++e;m.disks.push({status:"empty",order:s})}}m.disks.sort(u);g.expansions.push(m)}}else{for(w in o){if(o.hasOwnProperty(w)){m=o[w];for(s=1;s<=m.bayNumber;++s){if(!m.nonEmptySlot[s]){++e;m.disks.push({status:"empty",order:s})}}m.disks.sort(u);g.expansions.push(m)}}}g.diskInfo=[{usedCount:d,diskType:_T("volume","volume_used_disk")},{usedCount:k,diskType:_T("volume","volume_unused_disk")},{usedCount:y,diskType:_T("volume","volume_hot_spare_disk")},{usedCount:e,diskType:_T("volume","volume_available_slot")}]},isPool:function(a){return(a.pool_path===a.id||(""===a.pool_path&&!a.vol_path))},isLogicalVolume:function(a){if(this.isPool(a)||!a.pool_path){return false}return(0<a.pool_path.length)},isVolume:function(a){return("volume"===SYNO.SDS.Utils.StorageUtils.SpaceIDParser(a.id).type)},isDegrade:function(a){return("degrade"===a.status)},isLocked:function(a){return a.is_locked},isCrashed:function(a){return("crashed"===a.status)},findPool:function(d){var c=this.getData().storagePools,b,a;for(b=0;b<c.length;b++){if(d.pool_path===c[b].id){a=c[b];break}}return a},checkSpaceStatus:function(b,g){var e=this,d,f,a="healthy",c;for(d=0;d<b.length;d++){f=b[d];if(e.isLogicalVolume(f)){if(e.isVolume(f)){c=e.findPool(f);if(e.isDegrade(c)||e.isCrashed(c)){continue}}else{continue}}if(e.isCrashed(f)||e.isLocked(f)){a="attention";break}if(e.isDegrade(f)){a="caution"}}g.status=a;g.text=e.getStatusText()[a]},checkSsdCacheStatus:function(e,g){var f=this,d,c,b="healthy",a=false;for(d=0;d<e.length;d++){c=e[d];if("write"===c.mode||"write_bypass"===c.mode){if(f.isCrashed(c)){b="attention";break}else{if(f.isDegrade(c)){b="caution"}}}else{if("healthy"===b&&f.isCrashed(c)){b="caution";a=true}}}g.status=b;g.text=f.getStatusText()[b]},checkLinkValid:function(){var d=this,b=d.getData().enclosures,a,c,e=true;for(c=0;c<b.length;c++){a=b[c];if(a.internal){if(0===a.ports.length||1===a.ports.length){return true}if(a.ports[0].linkId!==a.ports[1].linkId||1!==a.ports[0].portNum||2!==a.ports[1].portNum){e=false}}else{if(2===a.ports.length){return true}if(a.ports[0].linkId!==a.ports[1].linkId||a.ports[2].linkId!==a.ports[3].linkId||3!==a.ports[2].portNum||4!==a.ports[3].portNum){e=false}}return e}return e},checkDiskSmart:function(e){var c=this,a=c.getData().disks,b,d;for(b=0;b<a.length;b++){d=a[b];if("degraded"===d.smart_status||"failing"===d.smart_status){e.status="caution";e.text=c.getStatusText()[e.status];break}}},renderOverview:function(c){var b,a=['<div class="stgmgr-overview" id="stgmgr-overview-{id}">','<div class="stgmgr-overview-icon stgmgr-overview-icon-{status}" id="stgmgr-overview-icon-{id}"></div>','<div class="stgmgr-overview-text stgmgr-overview-text-{status}" id="stgmgr-overview-text-{id}">{statusText}</div>',"</div>",'<div style="clear: both"></div>'];b=a.join("");b=b.replace(/\{id\}/g,c.id);b=b.replace(/\{status\}/g,c.status);b=b.replace(/\{statusText\}/g,String.format('<span style="color: {0}">{1}</span>',this.getStatusColors()[c.status],c.text));return b},openVolumeDetail:function(e){var d=this,c,b,a;c={volume:e,module:d};b={xclass:"SYNO.Mobile.StorageManager.TabletVolumeDetail"};a={xclass:"SYNO.Mobile.StorageManager.PhoneVolumeDetail"};d.hubFire("openDetail",{common:c,tablet:b,phone:a})},openHddDetail:function(b){var a=this;a.hubFire("openDetail",{common:{disk:b.disk,healthInfo:b.healthInfo,module:a},tablet:{xclass:"SYNO.Mobile.StorageManager.TabletHddDetail"},phone:{xclass:"SYNO.Mobile.StorageManager.PhoneHddDetail"}})}});Ext.define("SYNO.Mobile.System.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.System.Main"],config:{title:_T("mobile","menu_system_info"),systemInfo:null,items:[{xclass:"SYNO.Mobile.System.Main"}]},initialize:function(){this.callParent(arguments)}});Ext.define("SYNO.Mobile.User.Module",{extend:"SYNO.Mobile.base.Module",requires:["SYNO.Mobile.User.Main","SYNO.Mobile.User.PasswordChecker","SYNO.Mobile.User.TabletUserDetail","SYNO.Mobile.User.PhoneUserDetail","SYNO.Mobile.User.TabletGroupDetail","SYNO.Mobile.User.PhoneGroupDetail"],config:{title:_T("mobile","menu_user_group"),extraBtn:{xtype:"syno_button",cls:"syno-mobile-titlebar-button syno-mobile-icon-add",handler:function(a,b){this.owner.onTapAddBtn(a,b)}},passwordChecker:null,items:[{xclass:"SYNO.Mobile.User.Main"}]},onTapAddBtn:function(){var b=this.getActiveItem(),a=b.getActiveItem();switch(a.$className){case"SYNO.Mobile.User.UserTab":this.fireEvent("openUserDetail",null);break;case"SYNO.Mobile.User.GroupTab":this.fireEvent("openGroupDetail",null);break;default:break}},onOpenUserDetail:function(b){var d={user:b,module:this};var c={xclass:"SYNO.Mobile.User.TabletUserDetail"};var a={xclass:"SYNO.Mobile.User.PhoneUserDetail"};this.hubFire("openDetail",{tablet:c,phone:a,common:d})},onOpenGroupDetail:function(d){var c={group:d,module:this};var b={xclass:"SYNO.Mobile.User.TabletGroupDetail"};var a={xclass:"SYNO.Mobile.User.PhoneGroupDetail"};this.hubFire("openDetail",{tablet:b,phone:a,common:c})},monitorModule:function(){this.on({openUserDetail:this.onOpenUserDetail,openGroupDetail:this.onOpenGroupDetail})},initialize:function(){this.monitorModule();this.setPasswordChecker(Ext.create("SYNO.Mobile.User.PasswordChecker"));this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.view.SlidingMenu",{extend:"Ext.Menu",xtype:"MobileSlidingMenu",requires:[],config:{defaults:{},width:320,layout:"fit",items:[{xclass:"SYNO.DSMMobile.view.MainMenu"}]},initialize:function(){this.callParent(arguments);this.monitorHub()},monitorHub:function(){this.hubOn("showSlidingMenu",this.onShowSlidingMenu);this.hubOn("hideSlidingMenu",this.onHideSlidingMenu);this.hubOn("toggleSlidingMenu",this.onToggleSlidingMenu)},isMenuHidden:function(){var a=Ext.Viewport.getMenus();return a.left.isHidden()},showMenu:function(){var a;a=Ext.factory({xtype:"mask",transparent:true,listeners:{tap:function(){this.onToggleSlidingMenu()},scope:this}});Ext.Viewport.setMasked(a);Ext.Viewport.showMenu("left")},hideMenu:function(){Ext.Viewport.hideMenu("left");Ext.Viewport.setMasked(false)},onToggleSlidingMenu:function(){var a=this.isMenuHidden();if(a){this.showMenu()}else{this.hideMenu()}},onShowSlidingMenu:function(){var a=this.isMenuHidden();if(a){this.showMenu()}},onHideSlidingMenu:function(){this.hideMenu()}});Ext.define("SYNO.DSMMobile.lib.History",{extend:"Ext.util.Observable",mixins:["SYNO.DSMMobile.mixin.EventHub"],config:{historyDepth:1,listeners:{}},constructor:function(){this.callParent(arguments);this.init()},init:function(){this.rollback();alert("lib.History is NOT WORKED yet.");this.monitorWindow();this.monitorHub();this.syncState()},rollback:function(){function a(){if(window.history.state!==null&&window.history.state.depth!==1){console.warn("historyback",window.history.state.depth);history.back();Ext.defer(a,1,this)}}Ext.defer(a,500,this)},pushState:function(a){var b=window.history.state||{};window.history.pushState({depth:(b.depth||0)+a})},syncState:function(){var a=window.history.state||{};var b=this.getHistoryDepth();console.log("syncState",a.depth,this.getHistoryDepth());if(a.depth>b){}else{if(a.depth<b){this.pushState(1)}}console.log("afterSync",a.depth,this.getHistoryDepth())},monitorWindow:function(){window.addEventListener("popstate",Ext.bind(this.onPopState,this))},monitorHub:function(){this.hubOn("pushContent",this.onPushContent);this.hubOn("popContent",this.onPopContent)},onPopState:function(){console.log("history onpopstate",this);this.syncState()},onPushContent:function(){console.log("history onPushContent",this);this.pushState(1)},onPopContent:function(){console.log("history onPopContent",this)},fireEvent:function(){this.callParent(arguments)}});Ext.define("SYNO.DSMMobile.util.Example",{singleton:true,hello:function(){console.log("Hello World")}});Ext.define("SYNO.Mobile.PackageCenter.LibWebAPITest",{extend:"Ext.util.Observable",singleton:true,requires:[],config:{},constructor:function(){this.callParent(arguments);this.init()},fillPkgInfo:function(){this.pkgInfo={Hasplm:{url:"https://global.download.synology.com/download/spk/Hasplm/8.3.0-11/Hasplm-evansport-8.3.0-11.spk",filesize:3225600},bittorrentsync:{url:"https://global.download.synology.com/download/spk/bittorrentsync/2.0.93-1/bittorrentsync_evansport_2.0.93-1.spk",filesize:4679680},WebStation:{url:"https://global.download.synology.com/download/spk/WebStation/1.0-0017/WebStation-i686-1.0-0017.spk",filesize:1679360},NoteStation:{url:"https://global.download.synology.com/download/spk/NoteStation/2.0-0341/NoteStation-i686-2.0-0341.spk",filesize:6440960},PhotoStation:{url:"https://global.download.synology.com/download/spk/PhotoStation/6.4-3028/PhotoStation-i686-6.4-3028.spk",filesize:16281600}}},webapiUpgrade:function(e,c){var a=this.webapi,b=this.pkgInfo[e];function d(){a.StatusPackageInstallation(e,function(f,g){if(c){console.log("polling",g)}if(!g.finished){Ext.defer(d,this,2000)}},this)}a.CheckPackageInstallation({id:e},function(f,g){console.log("CheckPackageInstallation",f,g);if(!f){return}a.InstallPackage({name:e,url:b.url,filesize:b.filesize,blqinst:true},function(h,i){console.log("InstallPackage",h,i);d.call(this)},this)},this)},upgradeAndPoll:function(c){if(!c){c="NoteStation"}var a=this.webapi,b=this.pkgInfo[c];a.CheckPackageInstallation({id:c},function(d,e){console.log("CheckPackageInstallation",d,e);if(!d){return}a.InstallPackage({name:c,url:b.url,filesize:b.filesize,blqinst:true},function(f,g){console.log("InstallPackage",f,g);if(window.pkg){window.pkg.startPollingPkg(c,"download")}},this)},this)},inspectServerPkg:function(b){var a=this.webapi;a.ListServerPackage(function(c,d){Ext.each(d.data,function(e){if(e.id===b){console.info(e)}})})},init:function(){this.webapi=SYNO.DSMMobile.webapi;this.fillPkgInfo();window.testPkg=this}});Ext.define("SYNO.Mobile.ResourceMonitor.CanvasUtil",{extend:"Ext.util.Observable",scaleCanvas:function(b){var d,c,a,e;d=Ext.fly(b);c=d.getWidth();a=d.getHeight();e=Math.ceil(window.devicePixelRatio||1);b.setAttribute("width",c*e);b.setAttribute("height",a*e);return e},fillPie:function(c,g,f,b,a,e,d){var h=(((a+e)%(2*Math.PI))===0);c.beginPath();if(!h){c.moveTo(g,f);c.arc(g,f,b,a,e,false)}else{c.arc(g,f,b,0,Math.PI*2,false)}c.closePath();c.fillStyle=d;c.fill()},strokePie:function(c,f,e,b,a,d,h){var g=(((a+d)%(2*Math.PI))===0);c.lineWidth=1;c.beginPath();if(!g){c.moveTo(f,e);c.arc(f,e,b,a,d,false)}else{c.arc(f,e,b,0,Math.PI*2,false)}c.closePath();c.strokeStyle=h;c.stroke()},drawPieWithShadow:function(i,h,g,b,c,e,a){var j=2,f,d;if(c===e){return}SYNO.CanvasUtil.fillPie(i,h+j,g+j,b,c,e,"rgba(0, 0, 0, 0.1)",false);f=Ext.util.Format.format("rgba({0}, {1}, {2}, 0.6)",a[0],a[1],a[2]);SYNO.CanvasUtil.fillPie(i,h,g,b,c,e,f);d=Ext.util.Format.format("rgba({0}, {1}, {2}, 1.0)",a[0],a[1],a[2]);SYNO.CanvasUtil.strokePie(i,h,g,b,c,e,d)},drawPieChart:function(i,h,b,j,g){var c,r,m,q,e,l,p,a,f,o,n,k,d;c=Ext.fly(i);if(!c){return}d=c.dom;k=d.getContext("2d");r=SYNO.CanvasUtil.scaleCanvas(d);k.save();k.scale(r,r);k.lineWidth=1;m=c.getWidth();q=m/2;l=3;e=m/2-6;if(0===j){h=1}k.clearRect(0,0,d.width,d.height);a=Math.PI+(2*Math.PI*(h/(h+j)));f=a+(2*Math.PI*(j/(h+j)));p=(a+f)/2;o=q+Math.cos(p)*l;n=q+Math.sin(p)*l;SYNO.CanvasUtil.drawPieWithShadow(k,o,n,e,a,f,g);a=Math.PI;f=a+(2*Math.PI*(h/(h+j)));p=(a+f)/2;o=q+Math.cos(p)*l;n=q+Math.sin(p)*l;SYNO.CanvasUtil.drawPieWithShadow(k,o,n,e,a,f,b);k.restore()},strokeLine:function(b,e,g,c,a,f){b.lineJoin="round";b.lineWidth=2;b.strokeStyle=g;b.beginPath();b.moveTo(0,e[0]*a+f);var d;for(d=0;d<e.length;++d){b.lineTo(d*c,e[d]*a+f)}b.stroke()},drawLineCharBackground:function(b,d,a){var c;b.beginPath();for(c=1;c<5;++c){b.moveTo(0,-a*c/4);b.lineTo(-d,-a*c/4)}b.closePath();b.lineWidth=1;b.strokeStyle="rgb(240, 245, 250)";b.stroke();b.beginPath();b.moveTo(0,0);b.lineTo(-d,0);b.moveTo(-d,0);b.lineTo(-d,-a);b.closePath();b.lineWidth=2;b.strokeStyle="rgb(84, 84, 84)";b.stroke()},drawLineCharLegend:function(b,c,a,e,d){b.font="12px sans-serif";b.fillStyle="rgb(84, 84, 84)";b.textAlign="right";b.textBaseline="middle";b.fillText(e,-c-5,-a);b.fillText((e/2).toFixed(),-c-5,-a/2);b.textBaseline="bottom";b.fillText(0,-c-5,0);b.textAlign="left";b.textBaseline="middle";b.fillText("("+d+")",-c+5,-a)},drawLineChart:function(b,f,i,n,h,m){var g,d,e,l,c,a,j,o,k;d=Ext.fly(b);if(!d){return}c=d.dom;a=d.getWidth();j=d.getHeight();l=c.getContext("2d");e=SYNO.CanvasUtil.scaleCanvas(c);if(h){a-=30;j-=6}l.save();l.clearRect(0,0,c.width,c.height);l.translate(c.width,c.height);l.scale(e,e);l.lineJoin="round";SYNO.CanvasUtil.drawLineCharBackground(l,a,j);if(h){SYNO.CanvasUtil.drawLineCharLegend(l,a,j,h,m)}g=1*(a/Math.max(a/100,5)).toFixed();Ext.each(i,function(q,p){q=q.slice(0,g+1);o=(a-2)/g;k=j/f;l.lineWidth=2;SYNO.CanvasUtil.strokeLine(l,q,"rgba(0, 0, 0, 0.1)",-o,-k,-1+4);SYNO.CanvasUtil.strokeLine(l,q,"rgba(0, 0, 0, 0.2)",-o,-k,-1+2);SYNO.CanvasUtil.strokeLine(l,q,n[p],-o,-k,-1)});l.restore();return g}});(function(){function c(g){var h=g||window.location.search.slice(1);return Ext.Object.fromQueryString(h)}function b(){var g=window.location.href,i=g.indexOf("report="),h;if(i!==-1){h=g.substring(i+"report=".length);window.location=Ext.urlAppend("/dar/"+h,"");return true}}function f(){if(!_S("isLogined")||_S("isAdmin")){return false}var g=Ext.get("syno-non-admin-redirect");g.setVisibility(true);var k=Ext.get("syno-non-admin-redirect-desc");k.setHtml(String.format(_T("mobile","dsm_mobile_forbid_non_admin")));var h=Ext.get("syno-non-admin-redirect-button");h.setHtml(_T("common","alt_apply"));var i=Ext.get("syno-mask-ct");var l=Ext.get("syno-mask-loading");i.addCls("syno-mobile-non-admin-ct");i.removeChild(l);var j=(h.getHeight()+k.getHeight())*1.6;if(i.getHeight()<j){i.setHeight(j)}return true}function a(g){g=Ext.apply({needLogin:true},g);if(!g.needLogin){if(b()||f()){return}}Ext.application({name:"SYNO.DSMMobile",requires:["SYNO.DSMMobile.lib.InitApp","SYNO.Mobile.Demo.Module","SYNO.Mobile.User.Module","SYNO.Mobile.SharedFolder.Module","SYNO.Mobile.Service.Module","SYNO.Mobile.StorageManager.Module","SYNO.Mobile.ResourceMonitor.Module","SYNO.Mobile.System.Module","SYNO.Mobile.Firmware.Module","SYNO.Mobile.IPBlock.Module","SYNO.Mobile.PackageCenter.Module","SYNO.Mobile.Log.Module"],profiles:["Phone","Tablet"],controllers:["Main","SlidingMenu","MainMenu","MainMenuList","MainMenuBanner","Navigation"],models:[],proxys:[],views:["Login","LoginForm","MainMenu","MainMenuList","MainContent","SlidingMenu","Navigation","Panel","Main"],hub:SYNO.DSMMobile.app.hub,appConfig:g,addPlugin:function(h){if(!Ext.isDefined(this.plugins)){this.plugins={}}if(!Ext.isDefined(this.plugins[h])){this.plugins[h]=Ext.create(h)}return this.plugins[h]},initPlugins:function(){this.addPlugin("SYNO.DSMMobile.lib.NativeAppPortal");this.addPlugin("SYNO.DSMMobile.lib.OpenDetail");this.addPlugin("SYNO.DSMMobile.lib.OpenMenu");this.addPlugin("SYNO.DSMMobile.lib.OpenFullScreen");this.addPlugin("SYNO.DSMMobile.lib.System");this.addPlugin("SYNO.DSMMobile.lib.AppNotify")},onMainContentReady:function(){var j=Ext.os.is.iOS&&Ext.os.version.gtEq("9")&&Ext.browser.is.safari;var h=100;function i(){Ext.Viewport.fireEvent("orientationchange")}if(j){h=1000}Ext.defer(i,h,this)},doFixIOSChromeOrientationBug:function(){Ext.defer(function(){var i=Ext.Viewport.getOrientation(),h=Ext.Viewport.determineOrientation();Ext.Viewport.fireOrientationChangeEvent(h,i)},500,this)},fixIOSChromeKeyboardBug:function(){var i=Ext.os.is.iOS&&Ext.os.version.gtEq("9")&&Ext.browser.is.ChromeiOS,h=false;if(!i){return}if(h){if(this.hasFixedIOSChromeKeyboardBug){return}this.hasFixedIOSChromeKeyboardBug=true}this.doFixIOSChromeOrientationBug()},launch:function(){var h;if(SYNO.DSMMobile.Global.isDebugMode){window.webapi=SYNO.DSMMobile.webapi}if(!g.needLogin){this.initPlugins()}h=Ext.get("syno-mobile-preinit-mask");if(h){h.destroy()}this.hub.on("mainContentReady",this.onMainContentReady,this);this.hub.on("fixIOSChromeKeyboardBug",this.fixIOSChromeKeyboardBug,this)}})}function e(){var g=new SYNO.DSMMobile.Init();g.main(function(h){a(h)})}var d=c();if(d.mobile2==="debug"){SYNO.DSMMobile.Global.BringUpDebug(function(){e()})}else{Ext.Loader.setConfig({enabled:false});e()}})();