1
0
Fork 0
mirror of synced 2024-06-02 19:04:49 +12:00

Upgrading JS framework version

This commit is contained in:
eldadfux 2019-05-09 22:30:30 +03:00
parent b09cc8ab6e
commit 02db725253
6 changed files with 72 additions and 98 deletions

View file

@ -174,10 +174,7 @@ use Utopia\Locale\Locale;
data-appwrite="account.sessions"
data-scope="console"
data-service="sessions"
data-event="load"
data-success="render"
data-error="render"
data-success-rerender="account.update">
data-event="load">
<ul data-ls-loop="sessions" data-ls-as="session" class="list">
<li class="clear">
@ -212,7 +209,7 @@ use Utopia\Locale\Locale;
</form>
</span>
<img data-ls-attrs="src={{env.API}}/v1/avatars/browsers/{{session.client.short_name|lowerCase}}?width=120&height=120" data-ls-title="{{session.client.name}}" data-ls-alt="{{session.client.name}}" class="avatar trans pull-start margin-end" />
<img data-ls-attrs="src={{env.API}}/v1/avatars/browsers/{{session.client.short_name|lowerCase}}?width=120&height=120,title={{session.client.name}},alt={{session.client.name}}" class="avatar trans pull-start margin-end" />
<span data-ls-bind="{{session.client.name}}"></span> <span data-ls-bind="{{session.client.version}}"></span> on <span data-ls-bind="{{session.model}}"></span> <span data-ls-bind="{{session.OS.name}}"></span> <span data-ls-bind="{{session.OS.version}}"></span>
&nbsp;
@ -245,10 +242,8 @@ use Utopia\Locale\Locale;
data-appwrite="account.security"
data-scope="console"
data-service="securityLogs"
data-event="load"
data-success="render"
data-success-rerender="account.update"
data-error="">
data-event="load">
<span data-ls-bind="{{securityLogs}}"></span>
<h3><?php echo Locale::getText('console.account.section.security.recent-activity.title'); ?></h3>

View file

@ -1,13 +1,10 @@
<?php
use Utopia\Locale\Locale;
?>
<header class="clear" data-ls-rerender="project.update">
<header class="clear">
&nbsp;&nbsp;&nbsp;
<div data-ls-wait="projects.load" class="list pull-start project-only">
<!-- <select data-ls-options="{{projects}}" data-key="{{option.$uid}}" data-label="{{option.name}}" data-ls-bind="{{router.params.project}}" aria-label="<?php /*echo $this->escape(Locale::getText('console.navigation.switch')); */?>" data-switch=""></select>
-->
<select data-ls-loop="projects" data-ls-as="option" data-ls-bind="{{router.params.project}}">
<select data-ls-loop="projects" data-ls-as="option" data-ls-bind="{{router.params.project}}" data-switch>
<option data-ls-attrs="value={{option.$uid}}" data-ls-bind="{{option.name}}"></option>
</select>
</div>
@ -18,12 +15,7 @@ use Utopia\Locale\Locale;
data-appwrite="account.get"
data-service="account"
data-scope="console"
data-event="load"
data-success="render,trigger"
data-success-rerender="account.update"
data-success-triggers="account.load"
data-error="render,trigger"
data-error-triggers="logout">
data-event="load">
<div class="pull-end console-back">
<a href="/console">Back to Console &nbsp;<i class="icon-right-open"></i></a>
@ -35,7 +27,7 @@ use Utopia\Locale\Locale;
</a>
</div>
<nav data-ls-rerender="project.load,project.update">
<nav>
<a class="logo" href="/console">
<img src="/images/appwrite-nav.svg" alt="Appwrite Logo" />
</a>
@ -111,21 +103,14 @@ use Utopia\Locale\Locale;
data-event="load"
data-service="projects"
data-scope="console"
data-success="render,trigger"
data-error="render"
data-success-rerender=""
data-error-rerender=""
data-success-triggers="projects.load" data-singleton="true">
data-singleton="true">
</div>
<div data-ls-if="'{{router.params.project}}' != 'undefined'" data-ls-rerender="project.reload">
<div data-ls-if="({{router.params.project}} != undefined)" data-debug="1">
<div data-appwrite="projects.get"
data-event="load"
data-service="console-project"
data-param-project-id="{{router.params.project}}"
data-success="render,trigger"
data-success-rerender="platform.new,platform.update,platform.delete"
data-success-triggers="project.load">
data-param-project-id="{{router.params.project}}">
</div>
</div>
@ -133,30 +118,21 @@ use Utopia\Locale\Locale;
data-appwrite="geo.get"
data-service="geo"
data-event="load"
data-success="render,trigger"
data-success-triggers="geo.load"
data-error="alert"
data-error-triggers="logout" data-singleton="true">
data-singleton="true">
</div>
<div class=""
data-appwrite="geo.countries.list"
data-service="geo-countries"
data-event="load"
data-success="render,trigger"
data-success-triggers="geo-countries.load"
data-error="trigger"
data-error-triggers="logout" data-singleton="true">
data-singleton="true">
</div>
<div class=""
data-appwrite="geo.countries.phones"
data-service="geo-countries-phones"
data-event="load"
data-success="render,trigger"
data-success-triggers="geo-countries-phones.load"
data-error="trigger"
data-error-triggers="logout" data-singleton="true">
data-singleton="true">
</div>
<div data-ui-modal class="modal close" data-button-alias="setup" data-button-icon="icon-plus" data-button-class="project-only" data-open-event="new-project">

View file

@ -2084,7 +2084,7 @@ return value.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').rep
catch(error){let handler=window.ls.container.resolve(this.error);handler(error);}};window.ls.error=function(){return function(error){console.error('ls-error',error.message,error.stack,error.toString());}};window.ls.router=window.ls.container.get('router');window.ls.view=window.ls.container.get('view');window.ls.filter=window.ls.container.get('filter');window.ls.container.get('view').add({selector:'data-ls-router',repeat:false,controller:function(element,window,document,view,router){let firstFromServer=(element.getAttribute('data-first-from-server')==='true');let scope={selector:'data-ls-scope',template:false,repeat:true,controller:function(){},};let init=function(route){window.scrollTo(0,0);if(window.document.body.scrollTo){window.document.body.scrollTo(0,0);}
router.reset();if(null===route){return;}
scope.template=(undefined!==route.view.template)?route.view.template:null;scope.controller=(undefined!==route.view.controller)?route.view.controller:function(){};document.dispatchEvent(new CustomEvent('state-change'));if(firstFromServer&&null===router.getPrevious()){scope.template='';}
else if(null!==router.getPrevious()){view.render(element);console.log('render 3')}
else if(null!==router.getPrevious()){view.render(element);}
document.dispatchEvent(new CustomEvent('state-changed'));};let findParent=function(tagName,el){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}
while(el=el.parentNode){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}}
return null;};element.setAttribute('data-ls-scope','');view.add(scope);document.addEventListener('click',function(event){let target=findParent('a',event.target);if(!target){return false;}
@ -2108,7 +2108,8 @@ if(bind){element.addEventListener('input',sync);}}
else{if(element.innerText!==value){element.innerHTML=value;}}};let sync=(function(as,prefix){return function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.value,as,prefix);}}})($as,$prefix);let syntax=element.getAttribute('data-ls-bind');let result=expression.parse(syntax,null,$as,$prefix);let paths=expression.getPaths();echo(result,true);for(let i=0;i<paths.length;i++){container.bind(element,paths[i],function(){echo(expression.parse(syntax,null,$as,$prefix),false);});}}});window.ls.container.get('view').add({selector:'data-ls-if',controller:function(element,expression,container,$as,$prefix){let result='';let syntax=element.getAttribute('data-ls-if')||'';let debug=element.getAttribute('data-debug')||false;let paths=[];let check=function(){if(debug){console.info('debug-ls-if',expression.parse(syntax,'undefined',$as,$prefix));}
try{result=!!(eval(expression.parse(syntax,'undefined',$as,$prefix).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+'": '+error);}
paths=expression.getPaths();if(!result){element.style.visibility='hidden';element.style.display='none';}
if(debug){console.info('debug-ls-if result:',result);}
paths=expression.getPaths();element.$lsSkip=!result;if(!result){element.style.visibility='hidden';element.style.display='none';}
else{element.style.removeProperty('display');element.style.removeProperty('visibility');}};check();for(let i=0;i<paths.length;i++){container.bind(element,paths[i],check);}}});window.ls.container.get('view').add({selector:'data-ls-loop',template:false,repeat:false,nested:false,controller:function(element,view,container,window){let expr=element.getAttribute('data-ls-loop');let as=element.getAttribute('data-ls-as');let echo=function(){let array=container.path(expr);array=(!array)?[]:array;while(element.hasChildNodes()){element.removeChild(element.lastChild);element.lastChild=null;}
if(array instanceof Array&&typeof array!=='object'){throw new Error('Reference value must be array or object. '+(typeof array)+' given');}
let children=[];element.$lsSkip=true;element.style.visibility=(0===array.length)?'hidden':'visible';for(let prop in array){if(!array.hasOwnProperty(prop)){continue;}
@ -2242,20 +2243,20 @@ return(date.getTime()/1000)}
return{format:format,strtotime:strtotime}}(),true);})(window);(function(window){"use strict";window.ls.container.set('di',function(){var list={'load':true};return{listen:function(event,callback){if(list[event]){callback();}
document.addEventListener(event,callback);},report:function(event){list[event]=true;},check:function(event){return(list[event]);},reset:function(){list={'load':true};},list:list};},true);})(window);(function(window){"use strict";window.ls.container.set('env',function(){return APP_ENV;},true);})(window);(function(window){"use strict";window.ls.container.set('markdown',function(window){var md=window.markdownit();function renderEm(tokens,idx,opts,_,slf){var token=tokens[idx];if(token.markup==='__'){token.tag='u';}
return slf.renderToken(tokens,idx,opts);}
md.renderer.rules.strong_open=renderEm;md.renderer.rules.strong_close=renderEm;return md;},true);})(window);(function(window){"use strict";window.ls.container.set('sdk',function(window,router){var sdk=new window.AppwriteSDK();sdk.config.domain=APP_ENV.API;sdk.config.project=router.params.project||null;sdk.config.locale=APP_ENV.LOCALE;sdk.config.mode='admin';return sdk;},false);})(window);(function(window){"use strict";window.ls.container.set('timezone',function(){return{convert:function(unixTime){var timezoneMinutes=new Date().getTimezoneOffset();timezoneMinutes=(timezoneMinutes===0)?0:-timezoneMinutes;return parseInt(unixTime)+(timezoneMinutes*60);}};},true);})(window);window.ls.router.add('/auth/signin',{template:'/auth/signin?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/signup',{template:'/auth/signup?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery',{template:'/auth/recovery?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery/reset',{template:'/auth/recovery/reset?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/confirm',{template:'/auth/confirm?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/join',{template:'/auth/join?version='+APP_ENV.VERSION,scope:'home'}).add('/console',{template:'/console?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account/:tab',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/home',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/home/:tab',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/platforms/:platform',{template:function(window){return window.location.pathname+'?version='+APP_ENV.VERSION;},scope:'console',project:true}).add('/console/notifications',{template:'/console/notifications?version='+APP_ENV.VERSION,scope:'console'}).add('/console/settings',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/settings/:tab',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database/:tab',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage/:tab',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view/:tab',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/:tab',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true});let date=window.ls.container.get('date');let timezone=window.ls.container.get('timezone');let markdown=window.ls.container.get('markdown');window.ls.filter.add('lowerCase',function(value){return value.toLowerCase();}).add('date',function(value,options){return date.format('Y-m-d',value);}).add('date-time',function(value,options){return date.format('Y-m-d H:i',value);}).add('date-text',function(value,options){return date.format('d M Y',value);}).add('date-long',function(value,options){return date.format('l, j F, H:i',value);}).add('min2hum',function(value,options){if(value>=60){if(value%60===0){return Math.ceil(value/60)+' hours';}
else{return Math.ceil(value/60)+' hours and '+(value%60)+' minutes';}}
return value+' minutes';}).add('ms2hum',function(value,options){let temp=value;const years=Math.floor(temp/31536000),days=Math.floor((temp%=31536000)/86400),hours=Math.floor((temp%=86400)/3600),minutes=Math.floor((temp%=3600)/60),seconds=temp%60;if(days||hours||seconds||minutes){return(years?years+"y ":"")+
md.renderer.rules.strong_open=renderEm;md.renderer.rules.strong_close=renderEm;return md;},true);})(window);(function(window){"use strict";window.ls.container.set('sdk',function(window,router){var sdk=new window.AppwriteSDK();sdk.config.domain=APP_ENV.API;sdk.config.project=router.params.project||null;sdk.config.locale=APP_ENV.LOCALE;sdk.config.mode='admin';return sdk;},false);})(window);(function(window){"use strict";window.ls.container.set('timezone',function(){return{convert:function(unixTime){var timezoneMinutes=new Date().getTimezoneOffset();timezoneMinutes=(timezoneMinutes===0)?0:-timezoneMinutes;return parseInt(unixTime)+(timezoneMinutes*60);}};},true);})(window);window.ls.router.add('/auth/signin',{template:'/auth/signin?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/signup',{template:'/auth/signup?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery',{template:'/auth/recovery?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery/reset',{template:'/auth/recovery/reset?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/confirm',{template:'/auth/confirm?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/join',{template:'/auth/join?version='+APP_ENV.VERSION,scope:'home'}).add('/console',{template:'/console?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account/:tab',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/home',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/home/:tab',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/platforms/:platform',{template:function(window){return window.location.pathname+'?version='+APP_ENV.VERSION;},scope:'console',project:true}).add('/console/notifications',{template:'/console/notifications?version='+APP_ENV.VERSION,scope:'console'}).add('/console/settings',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/settings/:tab',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database/:tab',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage/:tab',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view/:tab',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/:tab',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true});let date=window.ls.container.get('date');let timezone=window.ls.container.get('timezone');let markdown=window.ls.container.get('markdown');window.ls.filter.add('lowerCase',function($value){return $value.toLowerCase();}).add('date',function($value){return date.format('Y-m-d',$value);}).add('date-time',function($value){return date.format('Y-m-d H:i',$value);}).add('date-text',function($value){return date.format('d M Y',$value);}).add('date-long',function($value){return date.format('l, j F, H:i',$value);}).add('min2hum',function($value){if($value>=60){if($value%60===0){return Math.ceil($value/60)+' hours';}
else{return Math.ceil($value/60)+' hours and '+($value%60)+' minutes';}}
return $value+' minutes';}).add('ms2hum',function($value){let temp=$value;const years=Math.floor(temp/31536000),days=Math.floor((temp%=31536000)/86400),hours=Math.floor((temp%=86400)/3600),minutes=Math.floor((temp%=3600)/60),seconds=temp%60;if(days||hours||seconds||minutes){return(years?years+"y ":"")+
(days?days+"d ":"")+
(hours?hours+"h ":"")+
(minutes?minutes+"m ":"")+
Number.parseFloat(seconds).toFixed(0)+"s";}
return"< 1s";}).add('nl2p',function(value,options){let result="<p>"+value+"</p>";result=result.replace(/\r\n\r\n/g,"</p><p>").replace(/\n\n/g,"</p><p>");result=result.replace(/\r\n/g,"<br />").replace(/\n/g,"<br />");return result;}).add('markdown',function(value,options){return markdown.render(value);}).add('id2name',function(value,options){let members=container.get('members');if(members===null){return'';}
for(let y=0;y<members.length;y++){if(members[y]['$uid']===value){value=members[y].name;}}
return value;}).add('id2role',function(value,options){if(APP_ENV.ROLES[value]){return APP_ENV.ROLES[value];}
return"< 1s";}).add('nl2p',function($value){let result="<p>"+$value+"</p>";result=result.replace(/\r\n\r\n/g,"</p><p>").replace(/\n\n/g,"</p><p>");result=result.replace(/\r\n/g,"<br />").replace(/\n/g,"<br />");return result;}).add('markdown',function($value){return markdown.render($value);}).add('id2name',function($value){let members=container.get('members');if(members===null){return'';}
for(let y=0;y<members.length;y++){if(members[y]['$uid']===$value){$value=members[y].name;}}
return $value;}).add('id2role',function($value){if(APP_ENV.ROLES[$value]){return APP_ENV.ROLES[$value];}
return'';}).add('humanFileSize',function(bytes){if(!bytes){return 0;}
let thresh=1000;if(Math.abs(bytes)<thresh){return bytes+' B';}
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{bytes/=thresh;++u;}while(Math.abs(bytes)>=thresh&&u<units.length-1);return bytes.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function(value){if(!value){return 0;}
value=abbreviate(value,1,false,false);return(value==='0')?'N/A':value;});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);}
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{bytes/=thresh;++u;}while(Math.abs(bytes)>=thresh&&u<units.length-1);return bytes.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function($value){if(!$value){return 0;}
$value=abbreviate($value,1,false,false);return($value==='0')?'N/A':$value;});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);}
let abbr;if(number>=1e12){abbr='T';}
else if(number>=1e9){abbr='B';}
else if(number>=1e6){abbr='M';}

View file

@ -70,7 +70,7 @@ return value.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').rep
catch(error){let handler=window.ls.container.resolve(this.error);handler(error);}};window.ls.error=function(){return function(error){console.error('ls-error',error.message,error.stack,error.toString());}};window.ls.router=window.ls.container.get('router');window.ls.view=window.ls.container.get('view');window.ls.filter=window.ls.container.get('filter');window.ls.container.get('view').add({selector:'data-ls-router',repeat:false,controller:function(element,window,document,view,router){let firstFromServer=(element.getAttribute('data-first-from-server')==='true');let scope={selector:'data-ls-scope',template:false,repeat:true,controller:function(){},};let init=function(route){window.scrollTo(0,0);if(window.document.body.scrollTo){window.document.body.scrollTo(0,0);}
router.reset();if(null===route){return;}
scope.template=(undefined!==route.view.template)?route.view.template:null;scope.controller=(undefined!==route.view.controller)?route.view.controller:function(){};document.dispatchEvent(new CustomEvent('state-change'));if(firstFromServer&&null===router.getPrevious()){scope.template='';}
else if(null!==router.getPrevious()){view.render(element);console.log('render 3')}
else if(null!==router.getPrevious()){view.render(element);}
document.dispatchEvent(new CustomEvent('state-changed'));};let findParent=function(tagName,el){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}
while(el=el.parentNode){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}}
return null;};element.setAttribute('data-ls-scope','');view.add(scope);document.addEventListener('click',function(event){let target=findParent('a',event.target);if(!target){return false;}
@ -94,7 +94,8 @@ if(bind){element.addEventListener('input',sync);}}
else{if(element.innerText!==value){element.innerHTML=value;}}};let sync=(function(as,prefix){return function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.value,as,prefix);}}})($as,$prefix);let syntax=element.getAttribute('data-ls-bind');let result=expression.parse(syntax,null,$as,$prefix);let paths=expression.getPaths();echo(result,true);for(let i=0;i<paths.length;i++){container.bind(element,paths[i],function(){echo(expression.parse(syntax,null,$as,$prefix),false);});}}});window.ls.container.get('view').add({selector:'data-ls-if',controller:function(element,expression,container,$as,$prefix){let result='';let syntax=element.getAttribute('data-ls-if')||'';let debug=element.getAttribute('data-debug')||false;let paths=[];let check=function(){if(debug){console.info('debug-ls-if',expression.parse(syntax,'undefined',$as,$prefix));}
try{result=!!(eval(expression.parse(syntax,'undefined',$as,$prefix).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+'": '+error);}
paths=expression.getPaths();if(!result){element.style.visibility='hidden';element.style.display='none';}
if(debug){console.info('debug-ls-if result:',result);}
paths=expression.getPaths();element.$lsSkip=!result;if(!result){element.style.visibility='hidden';element.style.display='none';}
else{element.style.removeProperty('display');element.style.removeProperty('visibility');}};check();for(let i=0;i<paths.length;i++){container.bind(element,paths[i],check);}}});window.ls.container.get('view').add({selector:'data-ls-loop',template:false,repeat:false,nested:false,controller:function(element,view,container,window){let expr=element.getAttribute('data-ls-loop');let as=element.getAttribute('data-ls-as');let echo=function(){let array=container.path(expr);array=(!array)?[]:array;while(element.hasChildNodes()){element.removeChild(element.lastChild);element.lastChild=null;}
if(array instanceof Array&&typeof array!=='object'){throw new Error('Reference value must be array or object. '+(typeof array)+' given');}
let children=[];element.$lsSkip=true;element.style.visibility=(0===array.length)?'hidden':'visible';for(let prop in array){if(!array.hasOwnProperty(prop)){continue;}
@ -228,20 +229,20 @@ return(date.getTime()/1000)}
return{format:format,strtotime:strtotime}}(),true);})(window);(function(window){"use strict";window.ls.container.set('di',function(){var list={'load':true};return{listen:function(event,callback){if(list[event]){callback();}
document.addEventListener(event,callback);},report:function(event){list[event]=true;},check:function(event){return(list[event]);},reset:function(){list={'load':true};},list:list};},true);})(window);(function(window){"use strict";window.ls.container.set('env',function(){return APP_ENV;},true);})(window);(function(window){"use strict";window.ls.container.set('markdown',function(window){var md=window.markdownit();function renderEm(tokens,idx,opts,_,slf){var token=tokens[idx];if(token.markup==='__'){token.tag='u';}
return slf.renderToken(tokens,idx,opts);}
md.renderer.rules.strong_open=renderEm;md.renderer.rules.strong_close=renderEm;return md;},true);})(window);(function(window){"use strict";window.ls.container.set('sdk',function(window,router){var sdk=new window.AppwriteSDK();sdk.config.domain=APP_ENV.API;sdk.config.project=router.params.project||null;sdk.config.locale=APP_ENV.LOCALE;sdk.config.mode='admin';return sdk;},false);})(window);(function(window){"use strict";window.ls.container.set('timezone',function(){return{convert:function(unixTime){var timezoneMinutes=new Date().getTimezoneOffset();timezoneMinutes=(timezoneMinutes===0)?0:-timezoneMinutes;return parseInt(unixTime)+(timezoneMinutes*60);}};},true);})(window);window.ls.router.add('/auth/signin',{template:'/auth/signin?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/signup',{template:'/auth/signup?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery',{template:'/auth/recovery?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery/reset',{template:'/auth/recovery/reset?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/confirm',{template:'/auth/confirm?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/join',{template:'/auth/join?version='+APP_ENV.VERSION,scope:'home'}).add('/console',{template:'/console?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account/:tab',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/home',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/home/:tab',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/platforms/:platform',{template:function(window){return window.location.pathname+'?version='+APP_ENV.VERSION;},scope:'console',project:true}).add('/console/notifications',{template:'/console/notifications?version='+APP_ENV.VERSION,scope:'console'}).add('/console/settings',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/settings/:tab',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database/:tab',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage/:tab',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view/:tab',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/:tab',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true});let date=window.ls.container.get('date');let timezone=window.ls.container.get('timezone');let markdown=window.ls.container.get('markdown');window.ls.filter.add('lowerCase',function(value){return value.toLowerCase();}).add('date',function(value,options){return date.format('Y-m-d',value);}).add('date-time',function(value,options){return date.format('Y-m-d H:i',value);}).add('date-text',function(value,options){return date.format('d M Y',value);}).add('date-long',function(value,options){return date.format('l, j F, H:i',value);}).add('min2hum',function(value,options){if(value>=60){if(value%60===0){return Math.ceil(value/60)+' hours';}
else{return Math.ceil(value/60)+' hours and '+(value%60)+' minutes';}}
return value+' minutes';}).add('ms2hum',function(value,options){let temp=value;const years=Math.floor(temp/31536000),days=Math.floor((temp%=31536000)/86400),hours=Math.floor((temp%=86400)/3600),minutes=Math.floor((temp%=3600)/60),seconds=temp%60;if(days||hours||seconds||minutes){return(years?years+"y ":"")+
md.renderer.rules.strong_open=renderEm;md.renderer.rules.strong_close=renderEm;return md;},true);})(window);(function(window){"use strict";window.ls.container.set('sdk',function(window,router){var sdk=new window.AppwriteSDK();sdk.config.domain=APP_ENV.API;sdk.config.project=router.params.project||null;sdk.config.locale=APP_ENV.LOCALE;sdk.config.mode='admin';return sdk;},false);})(window);(function(window){"use strict";window.ls.container.set('timezone',function(){return{convert:function(unixTime){var timezoneMinutes=new Date().getTimezoneOffset();timezoneMinutes=(timezoneMinutes===0)?0:-timezoneMinutes;return parseInt(unixTime)+(timezoneMinutes*60);}};},true);})(window);window.ls.router.add('/auth/signin',{template:'/auth/signin?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/signup',{template:'/auth/signup?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery',{template:'/auth/recovery?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/recovery/reset',{template:'/auth/recovery/reset?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/confirm',{template:'/auth/confirm?version='+APP_ENV.VERSION,scope:'home'}).add('/auth/join',{template:'/auth/join?version='+APP_ENV.VERSION,scope:'home'}).add('/console',{template:'/console?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/account/:tab',{template:'/console/account?version='+APP_ENV.VERSION,scope:'console'}).add('/console/home',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/home/:tab',{template:'/console/home?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/platforms/:platform',{template:function(window){return window.location.pathname+'?version='+APP_ENV.VERSION;},scope:'console',project:true}).add('/console/notifications',{template:'/console/notifications?version='+APP_ENV.VERSION,scope:'console'}).add('/console/settings',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/settings/:tab',{template:'/console/settings?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/database/:tab',{template:'/console/database?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/storage/:tab',{template:'/console/storage?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/view/:tab',{template:'/console/users/view?version='+APP_ENV.VERSION,scope:'console',project:true}).add('/console/users/:tab',{template:'/console/users?version='+APP_ENV.VERSION,scope:'console',project:true});let date=window.ls.container.get('date');let timezone=window.ls.container.get('timezone');let markdown=window.ls.container.get('markdown');window.ls.filter.add('lowerCase',function($value){return $value.toLowerCase();}).add('date',function($value){return date.format('Y-m-d',$value);}).add('date-time',function($value){return date.format('Y-m-d H:i',$value);}).add('date-text',function($value){return date.format('d M Y',$value);}).add('date-long',function($value){return date.format('l, j F, H:i',$value);}).add('min2hum',function($value){if($value>=60){if($value%60===0){return Math.ceil($value/60)+' hours';}
else{return Math.ceil($value/60)+' hours and '+($value%60)+' minutes';}}
return $value+' minutes';}).add('ms2hum',function($value){let temp=$value;const years=Math.floor(temp/31536000),days=Math.floor((temp%=31536000)/86400),hours=Math.floor((temp%=86400)/3600),minutes=Math.floor((temp%=3600)/60),seconds=temp%60;if(days||hours||seconds||minutes){return(years?years+"y ":"")+
(days?days+"d ":"")+
(hours?hours+"h ":"")+
(minutes?minutes+"m ":"")+
Number.parseFloat(seconds).toFixed(0)+"s";}
return"< 1s";}).add('nl2p',function(value,options){let result="<p>"+value+"</p>";result=result.replace(/\r\n\r\n/g,"</p><p>").replace(/\n\n/g,"</p><p>");result=result.replace(/\r\n/g,"<br />").replace(/\n/g,"<br />");return result;}).add('markdown',function(value,options){return markdown.render(value);}).add('id2name',function(value,options){let members=container.get('members');if(members===null){return'';}
for(let y=0;y<members.length;y++){if(members[y]['$uid']===value){value=members[y].name;}}
return value;}).add('id2role',function(value,options){if(APP_ENV.ROLES[value]){return APP_ENV.ROLES[value];}
return"< 1s";}).add('nl2p',function($value){let result="<p>"+$value+"</p>";result=result.replace(/\r\n\r\n/g,"</p><p>").replace(/\n\n/g,"</p><p>");result=result.replace(/\r\n/g,"<br />").replace(/\n/g,"<br />");return result;}).add('markdown',function($value){return markdown.render($value);}).add('id2name',function($value){let members=container.get('members');if(members===null){return'';}
for(let y=0;y<members.length;y++){if(members[y]['$uid']===$value){$value=members[y].name;}}
return $value;}).add('id2role',function($value){if(APP_ENV.ROLES[$value]){return APP_ENV.ROLES[$value];}
return'';}).add('humanFileSize',function(bytes){if(!bytes){return 0;}
let thresh=1000;if(Math.abs(bytes)<thresh){return bytes+' B';}
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{bytes/=thresh;++u;}while(Math.abs(bytes)>=thresh&&u<units.length-1);return bytes.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function(value){if(!value){return 0;}
value=abbreviate(value,1,false,false);return(value==='0')?'N/A':value;});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);}
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{bytes/=thresh;++u;}while(Math.abs(bytes)>=thresh&&u<units.length-1);return bytes.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function($value){if(!$value){return 0;}
$value=abbreviate($value,1,false,false);return($value==='0')?'N/A':$value;});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);}
let abbr;if(number>=1e12){abbr='T';}
else if(number>=1e9){abbr='B';}
else if(number>=1e6){abbr='M';}

View file

@ -70,7 +70,7 @@ else{window.history.replaceState({},'',URL);}
catch(error){let handler=window.ls.container.resolve(this.error);handler(error);}};window.ls.error=function(){return function(error){console.error('ls-error',error.message,error.stack,error.toString());}};window.ls.router=window.ls.container.get('router');window.ls.view=window.ls.container.get('view');window.ls.filter=window.ls.container.get('filter');window.ls.container.get('view').add({selector:'data-ls-router',repeat:false,controller:function(element,window,document,view,router){let firstFromServer=(element.getAttribute('data-first-from-server')==='true');let scope={selector:'data-ls-scope',template:false,repeat:true,controller:function(){},};let init=function(route){window.scrollTo(0,0);if(window.document.body.scrollTo){window.document.body.scrollTo(0,0);}
router.reset();if(null===route){return;}
scope.template=(undefined!==route.view.template)?route.view.template:null;scope.controller=(undefined!==route.view.controller)?route.view.controller:function(){};document.dispatchEvent(new CustomEvent('state-change'));if(firstFromServer&&null===router.getPrevious()){scope.template='';}
else if(null!==router.getPrevious()){view.render(element);console.log('render 3')}
else if(null!==router.getPrevious()){view.render(element);}
document.dispatchEvent(new CustomEvent('state-changed'));};let findParent=function(tagName,el){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}
while(el=el.parentNode){if((el.nodeName||el.tagName).toLowerCase()===tagName.toLowerCase()){return el;}}
return null;};element.setAttribute('data-ls-scope','');view.add(scope);document.addEventListener('click',function(event){let target=findParent('a',event.target);if(!target){return false;}
@ -94,7 +94,8 @@ catch(error){let handler=window.ls.container.resolve(this.error);handler(error);
else{if(element.innerText!==value){element.innerHTML=value;}}};let sync=(function(as,prefix){return function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.value,as,prefix);}}})($as,$prefix);let syntax=element.getAttribute('data-ls-bind');let result=expression.parse(syntax,null,$as,$prefix);let paths=expression.getPaths();echo(result,true);for(let i=0;i<paths.length;i++){container.bind(element,paths[i],function(){echo(expression.parse(syntax,null,$as,$prefix),false);});}}});window.ls.container.get('view').add({selector:'data-ls-if',controller:function(element,expression,container,$as,$prefix){let result='';let syntax=element.getAttribute('data-ls-if')||'';let debug=element.getAttribute('data-debug')||false;let paths=[];let check=function(){if(debug){console.info('debug-ls-if',expression.parse(syntax,'undefined',$as,$prefix));}
try{result=!!(eval(expression.parse(syntax,'undefined',$as,$prefix).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+'": '+error);}
paths=expression.getPaths();if(!result){element.style.visibility='hidden';element.style.display='none';}
if(debug){console.info('debug-ls-if result:',result);}
paths=expression.getPaths();element.$lsSkip=!result;if(!result){element.style.visibility='hidden';element.style.display='none';}
else{element.style.removeProperty('display');element.style.removeProperty('visibility');}};check();for(let i=0;i<paths.length;i++){container.bind(element,paths[i],check);}}});window.ls.container.get('view').add({selector:'data-ls-loop',template:false,repeat:false,nested:false,controller:function(element,view,container,window){let expr=element.getAttribute('data-ls-loop');let as=element.getAttribute('data-ls-as');let echo=function(){let array=container.path(expr);array=(!array)?[]:array;while(element.hasChildNodes()){element.removeChild(element.lastChild);element.lastChild=null;}
if(array instanceof Array&&typeof array!=='object'){throw new Error('Reference value must be array or object. '+(typeof array)+' given');}
let children=[];element.$lsSkip=true;element.style.visibility=(0===array.length)?'hidden':'visible';for(let prop in array){if(!array.hasOwnProperty(prop)){continue;}

View file

@ -4,35 +4,35 @@ let timezone = window.ls.container.get('timezone');
let markdown = window.ls.container.get('markdown');
window.ls.filter
.add('lowerCase', function (value) {
return value.toLowerCase();
.add('lowerCase', function ($value) {
return $value.toLowerCase();
})
.add('date', function (value, options) {
return date.format('Y-m-d', value);
.add('date', function ($value) {
return date.format('Y-m-d', $value);
})
.add('date-time', function (value, options) {
return date.format('Y-m-d H:i', value);
.add('date-time', function ($value) {
return date.format('Y-m-d H:i', $value);
})
.add('date-text', function (value, options) {
return date.format('d M Y', value);
.add('date-text', function ($value) {
return date.format('d M Y', $value);
})
.add('date-long', function (value, options) {
return date.format('l, j F, H:i', value);
.add('date-long', function ($value) {
return date.format('l, j F, H:i', $value);
})
.add('min2hum', function (value, options) {
if(value >= 60) {
if(value % 60 === 0) {
return Math.ceil(value / 60) + ' hours';
.add('min2hum', function ($value) {
if($value >= 60) {
if($value % 60 === 0) {
return Math.ceil($value / 60) + ' hours';
}
else {
return Math.ceil(value / 60) + ' hours and ' + (value % 60) + ' minutes';
return Math.ceil($value / 60) + ' hours and ' + ($value % 60) + ' minutes';
}
}
return value + ' minutes';
return $value + ' minutes';
})
.add('ms2hum', function (value, options) {
let temp = value;
.add('ms2hum', function ($value) {
let temp = $value;
const years = Math.floor( temp / 31536000 ),
days = Math.floor( ( temp %= 31536000 ) / 86400 ),
hours = Math.floor( ( temp %= 86400 ) / 3600 ),
@ -49,17 +49,17 @@ window.ls.filter
return "< 1s";
})
.add('nl2p', function (value, options) {
let result = "<p>" + value + "</p>";
.add('nl2p', function ($value) {
let result = "<p>" + $value + "</p>";
result = result.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
return result;
})
.add('markdown', function (value, options) {
return markdown.render(value);
.add('markdown', function ($value) {
return markdown.render($value);
})
.add('id2name', function (value, options) {
.add('id2name', function ($value) {
let members = container.get('members');
if(members === null) {
@ -67,16 +67,16 @@ window.ls.filter
}
for (let y = 0; y < members.length; y++) {
if(members[y]['$uid'] === value) {
value = members[y].name;
if(members[y]['$uid'] === $value) {
$value = members[y].name;
}
}
return value;
return $value;
})
.add('id2role', function (value, options) {
if(APP_ENV.ROLES[value]) {
return APP_ENV.ROLES[value];
.add('id2role', function ($value) {
if(APP_ENV.ROLES[$value]) {
return APP_ENV.ROLES[$value];
}
return '';
@ -102,14 +102,14 @@ window.ls.filter
return bytes.toFixed(1) + '<span class="text-size-small unit">' + units[u] + '</span>';
})
.add('statsTotal', function (value) {
if(!value) {
.add('statsTotal', function ($value) {
if(!$value) {
return 0;
}
value = abbreviate(value, 1, false, false);
$value = abbreviate($value, 1, false, false);
return (value === '0') ? 'N/A' : value;
return ($value === '0') ? 'N/A' : $value;
});
function abbreviate(number, maxPlaces, forcePlaces, forceLetter) {