1
0
Fork 0
mirror of synced 2024-06-22 04:30:29 +12:00

Fixed project switching and reloading

This commit is contained in:
eldadfux 2019-05-14 12:02:51 +03:00
parent f883a53856
commit 560799d59e
7 changed files with 54 additions and 95 deletions

View file

@ -1,9 +1,18 @@
<div data-service="projects.get"
data-event="project-load"
data-name="console-project"
data-param-project-id="{{router.params.project}}">
</div>
<header class="clear">
&nbsp;&nbsp;&nbsp;
<div class="list pull-start">
<select data-ls-loop="projects" data-ls-as="option" data-ls-bind="{{router.params.project}}" data-switch class="project-only">
<option data-ls-attrs="value={{option.$uid}}" data-ls-bind="{{option.name}}"></option>
</select>
<label>
<select data-switch data-ls-bind="{{console-project.$uid}}" data-ls-loop="projects" data-ls-as="option" class="project-only">
<option data-ls-attrs="value={{option.$uid}}" data-ls-bind="{{option.name}}"></option>
</select>
</label>
</div>
<button style="width: 40px; height: 40px; line-height: 40px; overflow: visible;" id="setup" class="tooltip round down project-only" aria-label="Quick Start" data-tooltip="Create a new project"><i class="icon-plus"></i></button>
@ -33,7 +42,7 @@
<ul class="links">
<li>
<a data-ls-attrs="href=/console/home?project={{router.params.project}}">
<a data-ls-attrs="href=/console/home?project={{console-project.$uid}}">
<i class="icon-home"></i>
Home
</a>
@ -44,19 +53,19 @@
<ul class="links">
<li>
<a data-ls-attrs="href=/console/database?project={{router.params.project}}">
<a data-ls-attrs="href=/console/database?project={{console-project.$uid}}">
<i class="icon-database"></i>
Database
</a>
</li>
<li>
<a data-ls-attrs="href=/console/storage?project={{router.params.project}}">
<a data-ls-attrs="href=/console/storage?project={{console-project.$uid}}">
<i class="icon-folder"></i>
Storage
</a>
</li>
<li>
<a data-ls-attrs="href=/console/users?project={{router.params.project}}">
<a data-ls-attrs="href=/console/users?project={{console-project.$uid}}">
<i class="icon-users"></i>
Users
</a>
@ -67,19 +76,19 @@
<ul class="links">
<li>
<a data-ls-attrs="href=/console/settings/keys?project={{router.params.project}}">
<a data-ls-attrs="href=/console/settings/keys?project={{console-project.$uid}}">
<i class="icon-key-inv"></i>
API Keys
</a>
</li>
<li>
<a data-ls-attrs="href=/console/settings/webhooks?project={{router.params.project}}">
<a data-ls-attrs="href=/console/settings/webhooks?project={{console-project.$uid}}">
<i class="icon-link"></i>
Webhooks
</a>
</li>
<li>
<a data-ls-attrs="href=/console/settings/tasks?project={{router.params.project}}">
<a data-ls-attrs="href=/console/settings/tasks?project={{console-project.$uid}}">
<i class="icon-clock"></i>
Tasks
</a>
@ -88,7 +97,7 @@
<ul class="links bottom project-only">
<li>
<a data-ls-attrs="href=/console/settings?project={{router.params.project}}"><i class="icon-cog"></i> Settings</a>
<a data-ls-attrs="href=/console/settings?project={{console-project.$uid}}"><i class="icon-cog"></i> Settings</a>
</li>
</ul>
</div>
@ -103,14 +112,6 @@
data-singleton="true">
</div>
<div data-ls-if="({{router.params.project}} != undefined)">
<div data-service="projects.get"
data-event="load"
data-name="console-project"
data-param-project-id="{{router.params.project}}">
</div>
</div>
<div class=""
data-service="geo.get"
data-name="geo"

View file

@ -75,7 +75,7 @@
<div class="zone xl margin-top-xl clear">
<h2 class="margin-bottom">Platforms</h2>
<div data-debug="1" class="box margin-bottom" data-ls-if="0 < {{console-project.platforms.length}} && undefined !== {{console-project.platforms}}" style="display: none;">
<div class="box margin-bottom" data-ls-if="0 < {{console-project.platforms.length}} && undefined !== {{console-project.platforms}}" style="display: none;">
<ul data-ls-loop="console-project.platforms" data-ls-as="platform" class="list">
<li class="clear">

View file

@ -2030,7 +2030,7 @@ else{element.removeAttribute('checked');element.checked=false;}
if(bind){element.addEventListener('change',function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.checked,$as,$prefix);}});}}
return;}
if(element.value!==value){element.value=value;}
if(bind){element.addEventListener('input',sync);}}
if(bind){element.addEventListener('input',sync);element.addEventListener('change',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,true).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+' (resulted with: "'+result+'")": '+error);}
@ -2219,7 +2219,7 @@ if(!element){return;}
try{container.set(service.replace('.','-'),JSON.parse(data),true,true);if(debug)console.log('%cservice ready: "'+service.replace('.','-')+'"','color:green');if(debug)console.log('%cservice:','color:blue',container.get(service.replace('.','-')));}catch(e){container.set(service.replace('.','-'),{},true);}
element.$lsSkip=false;view.render(element);},function(exception){if(loaderId!==null){alerts.remove(loaderId);}
if(!element){return;}});};let events=event.trim().split(',');for(let y=0;y<events.length;y++){if(''===events[y]){continue;}
switch(events[y].trim()){case'load':exec();break;case'none':break;case'click':case'change':case'keypress':case'keydown':case'keyup':case'input':case'submit':element.addEventListener(events[y],exec);break;default:}
switch(events[y].trim()){case'load':exec();break;case'none':break;case'click':case'change':case'keypress':case'keydown':case'keyup':case'input':case'submit':element.addEventListener(events[y],exec);break;default:document.addEventListener(events[y],exec);console.log('def',events[y].trim());}
if(debug)console.log('%cregistered: "'+events[y].trim()+'" ('+service+')','color:blue');}}});})(window);(function(window){"use strict";window.ls.container.get('view').add({'selector':'data-analytics-event','controller':function(element){var action=element.getAttribute('data-event-action')||'click';element.addEventListener(action,function(){var category=element.getAttribute('data-event-category')||'undefined';var label=element.getAttribute('data-event-label')||'undefined';if(!ga){console.error('Google Analytics ga object is not available');}
ga('send',{hitType:'event',eventCategory:category,eventAction:action,eventLabel:label});});}});})(window);(function(window){"use strict";window.ls.container.get('view').add({'selector':'data-analytics-pageview','controller':function(window,router){if(!ga){console.error('Google Analytics ga object is not available');}
var company=router.params['company']||null;if(!company){}
@ -2268,18 +2268,12 @@ for(var y=0;y<write.length;y++){formData.append('write[]',write[y]);}
sdk.storage.create(formData,onProgress).then(function(response){response=JSON.parse(response);response.map(function(obj){if(!Array.isArray(output)){throw new Error('Can\'t append new file to non array value');}
output[output.length]=obj['$uid'];});onComplete(message);render(output);},function(error){alerts.send({text:'An error occurred!',class:''},3000);onComplete(message);});input.disabled=true;});element.addEventListener('change',function(){if(!element.value){return;}
output=(multiple)?JSON.parse(element.value):[element.value];render(output);});upload.addEventListener('keypress',function(){input.click();});element.parentNode.insertBefore(wrapper,element);wrapper.appendChild(preview);wrapper.appendChild(progress);wrapper.appendChild(upload);if(multiple){wrapper.appendChild(count);}
upload.appendChild(input);render(output);}});})(window);(function(window){window.ls.container.get('view').add({'selector':'data-page-title','repeat':true,'controller':function(element,document,expression){document.title=expression.parse(element.getAttribute('data-page-title'))||document.title;}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-setup',controller:function(element,console,form){element.addEventListener('submit',function(event){event.preventDefault();let formData=form.toJson(element);delete formData.vault;delete formData.plan;formData['name']=formData['name']||(element.dataset['defaultName']||'');console.teams.create(formData['name']||'').then(function(data){let team=JSON.parse(data)['$uid'];formData=JSON.parse(JSON.stringify(formData).replace(new RegExp('{{teamId}}','g'),team));console.projects.create(formData['name'],team).then(function(data){let project=JSON.parse(data);window.location.href='/console?project='+project['$uid'];},function(){throw new Error('Failed to setup project');});},function(){throw new Error('Setup failed creating project team');});})}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-switch',controller:function(element,router,window,di){let debug=(element.dataset['debug']);let init=function(){if(debug){console.log('Changed: saved project for next redirect',element.value);}
window.localStorage.setItem('settings.project',element.value);di.reset();};let fallback=function(){if(debug){console.log('fallback init',element.value);}
if(router.getCurrent().view.scope!=='console'||!router.getCurrent().view.project){if(debug){console.log('Skip: not console state',element.value);}
return;}
if(router.params['project']){return;}
let project=window.localStorage.getItem('settings.project');if(project){di.reset();if(debug){console.log('last used project',project);}
return router.change('/console/home?project='+project,true);}
di.reset();if(debug){console.log('first project from list',element.options,element.$lsSkip);}
return router.change('/console/home?project='+element.options[0].value,true);};if(debug){console.log('switch init',element.options);}
element.addEventListener('change',function(){if(debug){console.log('change init',element.value);}
fallback();if(element.value&&element.value!==router.params['project']){if(debug){console.log('Changed: selected project from list');}
init();return router.change('/console/home?project='+element.value);}});fallback();init();}});})(window);(function(window){window.ls.container.get('view').add({repeat:true,selector:'data-ui-gravatar',controller:function(element,document,expression){let MD5=function(s){function L(k,d){return(k<<d)|(k>>>(32-d))}function K(G,k){let I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){let Z;let F=G.length;let x=F+8;let k=(x-(x%64))/64;let I=(k+1)*16;let aa=Array(I-1);let d=0;let H=0;while(H<F){Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=(aa[Z]|(G.charCodeAt(H)<<d));H++}Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=aa[Z]|(128<<d);aa[I-2]=F<<3;aa[I-1]=F>>>29;return aa}function B(x){let k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");let d="";for(let F=0;F<k.length;F++){let x=k.charCodeAt(F);if(x<128){d+=String.fromCharCode(x)}else{if((x>127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}let C=Array();let P,h,E,v,g,Y,X,W,V;let S=7,Q=12,N=17,M=22;let A=5,z=9,y=14,w=20;let o=4,m=11,l=16,j=23;let U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P<C.length;P+=16){h=Y;E=X;v=W;g=V;Y=u(Y,X,W,V,C[P+0],S,3614090360);V=u(V,Y,X,W,C[P+1],Q,3905402710);W=u(W,V,Y,X,C[P+2],N,606105819);X=u(X,W,V,Y,C[P+3],M,3250441966);Y=u(Y,X,W,V,C[P+4],S,4118548399);V=u(V,Y,X,W,C[P+5],Q,1200080426);W=u(W,V,Y,X,C[P+6],N,2821735955);X=u(X,W,V,Y,C[P+7],M,4249261313);Y=u(Y,X,W,V,C[P+8],S,1770035416);V=u(V,Y,X,W,C[P+9],Q,2336552879);W=u(W,V,Y,X,C[P+10],N,4294925233);X=u(X,W,V,Y,C[P+11],M,2304563134);Y=u(Y,X,W,V,C[P+12],S,1804603682);V=u(V,Y,X,W,C[P+13],Q,4254626195);W=u(W,V,Y,X,C[P+14],N,2792965006);X=u(X,W,V,Y,C[P+15],M,1236535329);Y=f(Y,X,W,V,C[P+1],A,4129170786);V=f(V,Y,X,W,C[P+6],z,3225465664);W=f(W,V,Y,X,C[P+11],y,643717713);X=f(X,W,V,Y,C[P+0],w,3921069994);Y=f(Y,X,W,V,C[P+5],A,3593408605);V=f(V,Y,X,W,C[P+10],z,38016083);W=f(W,V,Y,X,C[P+15],y,3634488961);X=f(X,W,V,Y,C[P+4],w,3889429448);Y=f(Y,X,W,V,C[P+9],A,568446438);V=f(V,Y,X,W,C[P+14],z,3275163606);W=f(W,V,Y,X,C[P+3],y,4107603335);X=f(X,W,V,Y,C[P+8],w,1163531501);Y=f(Y,X,W,V,C[P+13],A,2850285829);V=f(V,Y,X,W,C[P+2],z,4243563512);W=f(W,V,Y,X,C[P+7],y,1735328473);X=f(X,W,V,Y,C[P+12],w,2368359562);Y=D(Y,X,W,V,C[P+5],o,4294588738);V=D(V,Y,X,W,C[P+8],m,2272392833);W=D(W,V,Y,X,C[P+11],l,1839030562);X=D(X,W,V,Y,C[P+14],j,4259657740);Y=D(Y,X,W,V,C[P+1],o,2763975236);V=D(V,Y,X,W,C[P+4],m,1272893353);W=D(W,V,Y,X,C[P+7],l,4139469664);X=D(X,W,V,Y,C[P+10],j,3200236656);Y=D(Y,X,W,V,C[P+13],o,681279174);V=D(V,Y,X,W,C[P+0],m,3936430074);W=D(W,V,Y,X,C[P+3],l,3572445317);X=D(X,W,V,Y,C[P+6],j,76029189);Y=D(Y,X,W,V,C[P+9],o,3654602809);V=D(V,Y,X,W,C[P+12],m,3873151461);W=D(W,V,Y,X,C[P+15],l,530742520);X=D(X,W,V,Y,C[P+2],j,3299628645);Y=t(Y,X,W,V,C[P+0],U,4096336452);V=t(V,Y,X,W,C[P+7],T,1126891415);W=t(W,V,Y,X,C[P+14],R,2878612391);X=t(X,W,V,Y,C[P+5],O,4237533241);Y=t(Y,X,W,V,C[P+12],U,1700485571);V=t(V,Y,X,W,C[P+3],T,2399980690);W=t(W,V,Y,X,C[P+10],R,4293915773);X=t(X,W,V,Y,C[P+1],O,2240044497);Y=t(Y,X,W,V,C[P+8],U,1873313359);V=t(V,Y,X,W,C[P+15],T,4264355552);W=t(W,V,Y,X,C[P+6],R,2734768916);X=t(X,W,V,Y,C[P+13],O,1309151649);Y=t(Y,X,W,V,C[P+4],U,4149444226);V=t(V,Y,X,W,C[P+11],T,3174756917);W=t(W,V,Y,X,C[P+2],R,718787259);X=t(X,W,V,Y,C[P+9],O,3951481745);Y=K(Y,h);X=K(X,E);W=K(W,v);V=K(V,g)}let i=B(Y)+B(X)+B(W)+B(V);return i.toLowerCase()};let size=expression.parse(element.dataset['size']||'80');let empty=expression.parse(element.dataset['empty']||'');let email=expression.parse(element.dataset['uiGravatar']||empty);let name=expression.parse(element.dataset['name']||email);name=name.split(' ').map(function(n){if(!isNaN(parseFloat(n))&&isFinite(n)){return'';}
upload.appendChild(input);render(output);}});})(window);(function(window){window.ls.container.get('view').add({'selector':'data-page-title','repeat':true,'controller':function(element,document,expression){document.title=expression.parse(element.getAttribute('data-page-title'))||document.title;}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-setup',controller:function(element,console,form){element.addEventListener('submit',function(event){event.preventDefault();let formData=form.toJson(element);delete formData.vault;delete formData.plan;formData['name']=formData['name']||(element.dataset['defaultName']||'');console.teams.create(formData['name']||'').then(function(data){let team=JSON.parse(data)['$uid'];formData=JSON.parse(JSON.stringify(formData).replace(new RegExp('{{teamId}}','g'),team));console.projects.create(formData['name'],team).then(function(data){let project=JSON.parse(data);window.location.href='/console?project='+project['$uid'];},function(){throw new Error('Failed to setup project');});},function(){throw new Error('Setup failed creating project team');});})}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-switch',controller:function(element,router,window){let debug=(element.dataset['debug']);let project=router.params.project||null;if(project){if(debug){console.log('project-load-start-init');}
document.dispatchEvent(new CustomEvent('project-load'));}
document.addEventListener('state-changed',function(){if(router.params.project&&project!==router.params.project){if(debug){console.log('project-load-init');}
document.dispatchEvent(new CustomEvent('project-load'));project=router.params.project;}});element.addEventListener('change',function(){if(debug){console.log('change init',element.value);}
if(element.value&&element.value!==project){if(debug){console.log('Changed: selected project from list');}
return router.change('/console/home?project='+element.value);}});}});})(window);(function(window){window.ls.container.get('view').add({repeat:true,selector:'data-ui-gravatar',controller:function(element,document,expression){let MD5=function(s){function L(k,d){return(k<<d)|(k>>>(32-d))}function K(G,k){let I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){let Z;let F=G.length;let x=F+8;let k=(x-(x%64))/64;let I=(k+1)*16;let aa=Array(I-1);let d=0;let H=0;while(H<F){Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=(aa[Z]|(G.charCodeAt(H)<<d));H++}Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=aa[Z]|(128<<d);aa[I-2]=F<<3;aa[I-1]=F>>>29;return aa}function B(x){let k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");let d="";for(let F=0;F<k.length;F++){let x=k.charCodeAt(F);if(x<128){d+=String.fromCharCode(x)}else{if((x>127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}let C=Array();let P,h,E,v,g,Y,X,W,V;let S=7,Q=12,N=17,M=22;let A=5,z=9,y=14,w=20;let o=4,m=11,l=16,j=23;let U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P<C.length;P+=16){h=Y;E=X;v=W;g=V;Y=u(Y,X,W,V,C[P+0],S,3614090360);V=u(V,Y,X,W,C[P+1],Q,3905402710);W=u(W,V,Y,X,C[P+2],N,606105819);X=u(X,W,V,Y,C[P+3],M,3250441966);Y=u(Y,X,W,V,C[P+4],S,4118548399);V=u(V,Y,X,W,C[P+5],Q,1200080426);W=u(W,V,Y,X,C[P+6],N,2821735955);X=u(X,W,V,Y,C[P+7],M,4249261313);Y=u(Y,X,W,V,C[P+8],S,1770035416);V=u(V,Y,X,W,C[P+9],Q,2336552879);W=u(W,V,Y,X,C[P+10],N,4294925233);X=u(X,W,V,Y,C[P+11],M,2304563134);Y=u(Y,X,W,V,C[P+12],S,1804603682);V=u(V,Y,X,W,C[P+13],Q,4254626195);W=u(W,V,Y,X,C[P+14],N,2792965006);X=u(X,W,V,Y,C[P+15],M,1236535329);Y=f(Y,X,W,V,C[P+1],A,4129170786);V=f(V,Y,X,W,C[P+6],z,3225465664);W=f(W,V,Y,X,C[P+11],y,643717713);X=f(X,W,V,Y,C[P+0],w,3921069994);Y=f(Y,X,W,V,C[P+5],A,3593408605);V=f(V,Y,X,W,C[P+10],z,38016083);W=f(W,V,Y,X,C[P+15],y,3634488961);X=f(X,W,V,Y,C[P+4],w,3889429448);Y=f(Y,X,W,V,C[P+9],A,568446438);V=f(V,Y,X,W,C[P+14],z,3275163606);W=f(W,V,Y,X,C[P+3],y,4107603335);X=f(X,W,V,Y,C[P+8],w,1163531501);Y=f(Y,X,W,V,C[P+13],A,2850285829);V=f(V,Y,X,W,C[P+2],z,4243563512);W=f(W,V,Y,X,C[P+7],y,1735328473);X=f(X,W,V,Y,C[P+12],w,2368359562);Y=D(Y,X,W,V,C[P+5],o,4294588738);V=D(V,Y,X,W,C[P+8],m,2272392833);W=D(W,V,Y,X,C[P+11],l,1839030562);X=D(X,W,V,Y,C[P+14],j,4259657740);Y=D(Y,X,W,V,C[P+1],o,2763975236);V=D(V,Y,X,W,C[P+4],m,1272893353);W=D(W,V,Y,X,C[P+7],l,4139469664);X=D(X,W,V,Y,C[P+10],j,3200236656);Y=D(Y,X,W,V,C[P+13],o,681279174);V=D(V,Y,X,W,C[P+0],m,3936430074);W=D(W,V,Y,X,C[P+3],l,3572445317);X=D(X,W,V,Y,C[P+6],j,76029189);Y=D(Y,X,W,V,C[P+9],o,3654602809);V=D(V,Y,X,W,C[P+12],m,3873151461);W=D(W,V,Y,X,C[P+15],l,530742520);X=D(X,W,V,Y,C[P+2],j,3299628645);Y=t(Y,X,W,V,C[P+0],U,4096336452);V=t(V,Y,X,W,C[P+7],T,1126891415);W=t(W,V,Y,X,C[P+14],R,2878612391);X=t(X,W,V,Y,C[P+5],O,4237533241);Y=t(Y,X,W,V,C[P+12],U,1700485571);V=t(V,Y,X,W,C[P+3],T,2399980690);W=t(W,V,Y,X,C[P+10],R,4293915773);X=t(X,W,V,Y,C[P+1],O,2240044497);Y=t(Y,X,W,V,C[P+8],U,1873313359);V=t(V,Y,X,W,C[P+15],T,4264355552);W=t(W,V,Y,X,C[P+6],R,2734768916);X=t(X,W,V,Y,C[P+13],O,1309151649);Y=t(Y,X,W,V,C[P+4],U,4149444226);V=t(V,Y,X,W,C[P+11],T,3174756917);W=t(W,V,Y,X,C[P+2],R,718787259);X=t(X,W,V,Y,C[P+9],O,3951481745);Y=K(Y,h);X=K(X,E);W=K(W,v);V=K(V,g)}let i=B(Y)+B(X)+B(W)+B(V);return i.toLowerCase()};let size=expression.parse(element.dataset['size']||'80');let empty=expression.parse(element.dataset['empty']||'');let email=expression.parse(element.dataset['uiGravatar']||empty);let name=expression.parse(element.dataset['name']||email);name=name.split(' ').map(function(n){if(!isNaN(parseFloat(n))&&isFinite(n)){return'';}
return n[0];}).join('')||'--';let def='https://ui-avatars.com/api/'+encodeURIComponent(name)+'/'+size+'';element.src='//www.gravatar.com/avatar/'+MD5(email)+'.jpg?s='+size+'&d='+encodeURIComponent(def);}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,state,expression,document){let check=function(){let links=element.getElementsByTagName('a');let selected=null;let list=[];for(let i=0;i<links.length;i++){links[i].href=links[i].href||expression.parse(links[i].dataset['lsHref']||'');list.push(links[i]);}
list.sort(function(a,b){return a.pathname.length-b.pathname.length;});for(let i=0;i<list.length;i++){let href=list[i].href||expression.parse(list[i].dataset['lsHref']||'');if(list[i].pathname===window.location.pathname.substring(0,list[i].pathname.length)){list[i].classList.add('selected');if(selected!==null){list[selected].classList.remove('selected');}
selected=i;}

View file

@ -88,7 +88,7 @@ else{element.removeAttribute('checked');element.checked=false;}
if(bind){element.addEventListener('change',function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.checked,$as,$prefix);}});}}
return;}
if(element.value!==value){element.value=value;}
if(bind){element.addEventListener('input',sync);}}
if(bind){element.addEventListener('input',sync);element.addEventListener('change',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,true).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+' (resulted with: "'+result+'")": '+error);}
@ -277,7 +277,7 @@ if(!element){return;}
try{container.set(service.replace('.','-'),JSON.parse(data),true,true);if(debug)console.log('%cservice ready: "'+service.replace('.','-')+'"','color:green');if(debug)console.log('%cservice:','color:blue',container.get(service.replace('.','-')));}catch(e){container.set(service.replace('.','-'),{},true);}
element.$lsSkip=false;view.render(element);},function(exception){if(loaderId!==null){alerts.remove(loaderId);}
if(!element){return;}});};let events=event.trim().split(',');for(let y=0;y<events.length;y++){if(''===events[y]){continue;}
switch(events[y].trim()){case'load':exec();break;case'none':break;case'click':case'change':case'keypress':case'keydown':case'keyup':case'input':case'submit':element.addEventListener(events[y],exec);break;default:}
switch(events[y].trim()){case'load':exec();break;case'none':break;case'click':case'change':case'keypress':case'keydown':case'keyup':case'input':case'submit':element.addEventListener(events[y],exec);break;default:document.addEventListener(events[y],exec);console.log('def',events[y].trim());}
if(debug)console.log('%cregistered: "'+events[y].trim()+'" ('+service+')','color:blue');}}});})(window);(function(window){"use strict";window.ls.container.get('view').add({'selector':'data-analytics-event','controller':function(element){var action=element.getAttribute('data-event-action')||'click';element.addEventListener(action,function(){var category=element.getAttribute('data-event-category')||'undefined';var label=element.getAttribute('data-event-label')||'undefined';if(!ga){console.error('Google Analytics ga object is not available');}
ga('send',{hitType:'event',eventCategory:category,eventAction:action,eventLabel:label});});}});})(window);(function(window){"use strict";window.ls.container.get('view').add({'selector':'data-analytics-pageview','controller':function(window,router){if(!ga){console.error('Google Analytics ga object is not available');}
var company=router.params['company']||null;if(!company){}
@ -326,18 +326,12 @@ for(var y=0;y<write.length;y++){formData.append('write[]',write[y]);}
sdk.storage.create(formData,onProgress).then(function(response){response=JSON.parse(response);response.map(function(obj){if(!Array.isArray(output)){throw new Error('Can\'t append new file to non array value');}
output[output.length]=obj['$uid'];});onComplete(message);render(output);},function(error){alerts.send({text:'An error occurred!',class:''},3000);onComplete(message);});input.disabled=true;});element.addEventListener('change',function(){if(!element.value){return;}
output=(multiple)?JSON.parse(element.value):[element.value];render(output);});upload.addEventListener('keypress',function(){input.click();});element.parentNode.insertBefore(wrapper,element);wrapper.appendChild(preview);wrapper.appendChild(progress);wrapper.appendChild(upload);if(multiple){wrapper.appendChild(count);}
upload.appendChild(input);render(output);}});})(window);(function(window){window.ls.container.get('view').add({'selector':'data-page-title','repeat':true,'controller':function(element,document,expression){document.title=expression.parse(element.getAttribute('data-page-title'))||document.title;}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-setup',controller:function(element,console,form){element.addEventListener('submit',function(event){event.preventDefault();let formData=form.toJson(element);delete formData.vault;delete formData.plan;formData['name']=formData['name']||(element.dataset['defaultName']||'');console.teams.create(formData['name']||'').then(function(data){let team=JSON.parse(data)['$uid'];formData=JSON.parse(JSON.stringify(formData).replace(new RegExp('{{teamId}}','g'),team));console.projects.create(formData['name'],team).then(function(data){let project=JSON.parse(data);window.location.href='/console?project='+project['$uid'];},function(){throw new Error('Failed to setup project');});},function(){throw new Error('Setup failed creating project team');});})}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-switch',controller:function(element,router,window,di){let debug=(element.dataset['debug']);let init=function(){if(debug){console.log('Changed: saved project for next redirect',element.value);}
window.localStorage.setItem('settings.project',element.value);di.reset();};let fallback=function(){if(debug){console.log('fallback init',element.value);}
if(router.getCurrent().view.scope!=='console'||!router.getCurrent().view.project){if(debug){console.log('Skip: not console state',element.value);}
return;}
if(router.params['project']){return;}
let project=window.localStorage.getItem('settings.project');if(project){di.reset();if(debug){console.log('last used project',project);}
return router.change('/console/home?project='+project,true);}
di.reset();if(debug){console.log('first project from list',element.options,element.$lsSkip);}
return router.change('/console/home?project='+element.options[0].value,true);};if(debug){console.log('switch init',element.options);}
element.addEventListener('change',function(){if(debug){console.log('change init',element.value);}
fallback();if(element.value&&element.value!==router.params['project']){if(debug){console.log('Changed: selected project from list');}
init();return router.change('/console/home?project='+element.value);}});fallback();init();}});})(window);(function(window){window.ls.container.get('view').add({repeat:true,selector:'data-ui-gravatar',controller:function(element,document,expression){let MD5=function(s){function L(k,d){return(k<<d)|(k>>>(32-d))}function K(G,k){let I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){let Z;let F=G.length;let x=F+8;let k=(x-(x%64))/64;let I=(k+1)*16;let aa=Array(I-1);let d=0;let H=0;while(H<F){Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=(aa[Z]|(G.charCodeAt(H)<<d));H++}Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=aa[Z]|(128<<d);aa[I-2]=F<<3;aa[I-1]=F>>>29;return aa}function B(x){let k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");let d="";for(let F=0;F<k.length;F++){let x=k.charCodeAt(F);if(x<128){d+=String.fromCharCode(x)}else{if((x>127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}let C=Array();let P,h,E,v,g,Y,X,W,V;let S=7,Q=12,N=17,M=22;let A=5,z=9,y=14,w=20;let o=4,m=11,l=16,j=23;let U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P<C.length;P+=16){h=Y;E=X;v=W;g=V;Y=u(Y,X,W,V,C[P+0],S,3614090360);V=u(V,Y,X,W,C[P+1],Q,3905402710);W=u(W,V,Y,X,C[P+2],N,606105819);X=u(X,W,V,Y,C[P+3],M,3250441966);Y=u(Y,X,W,V,C[P+4],S,4118548399);V=u(V,Y,X,W,C[P+5],Q,1200080426);W=u(W,V,Y,X,C[P+6],N,2821735955);X=u(X,W,V,Y,C[P+7],M,4249261313);Y=u(Y,X,W,V,C[P+8],S,1770035416);V=u(V,Y,X,W,C[P+9],Q,2336552879);W=u(W,V,Y,X,C[P+10],N,4294925233);X=u(X,W,V,Y,C[P+11],M,2304563134);Y=u(Y,X,W,V,C[P+12],S,1804603682);V=u(V,Y,X,W,C[P+13],Q,4254626195);W=u(W,V,Y,X,C[P+14],N,2792965006);X=u(X,W,V,Y,C[P+15],M,1236535329);Y=f(Y,X,W,V,C[P+1],A,4129170786);V=f(V,Y,X,W,C[P+6],z,3225465664);W=f(W,V,Y,X,C[P+11],y,643717713);X=f(X,W,V,Y,C[P+0],w,3921069994);Y=f(Y,X,W,V,C[P+5],A,3593408605);V=f(V,Y,X,W,C[P+10],z,38016083);W=f(W,V,Y,X,C[P+15],y,3634488961);X=f(X,W,V,Y,C[P+4],w,3889429448);Y=f(Y,X,W,V,C[P+9],A,568446438);V=f(V,Y,X,W,C[P+14],z,3275163606);W=f(W,V,Y,X,C[P+3],y,4107603335);X=f(X,W,V,Y,C[P+8],w,1163531501);Y=f(Y,X,W,V,C[P+13],A,2850285829);V=f(V,Y,X,W,C[P+2],z,4243563512);W=f(W,V,Y,X,C[P+7],y,1735328473);X=f(X,W,V,Y,C[P+12],w,2368359562);Y=D(Y,X,W,V,C[P+5],o,4294588738);V=D(V,Y,X,W,C[P+8],m,2272392833);W=D(W,V,Y,X,C[P+11],l,1839030562);X=D(X,W,V,Y,C[P+14],j,4259657740);Y=D(Y,X,W,V,C[P+1],o,2763975236);V=D(V,Y,X,W,C[P+4],m,1272893353);W=D(W,V,Y,X,C[P+7],l,4139469664);X=D(X,W,V,Y,C[P+10],j,3200236656);Y=D(Y,X,W,V,C[P+13],o,681279174);V=D(V,Y,X,W,C[P+0],m,3936430074);W=D(W,V,Y,X,C[P+3],l,3572445317);X=D(X,W,V,Y,C[P+6],j,76029189);Y=D(Y,X,W,V,C[P+9],o,3654602809);V=D(V,Y,X,W,C[P+12],m,3873151461);W=D(W,V,Y,X,C[P+15],l,530742520);X=D(X,W,V,Y,C[P+2],j,3299628645);Y=t(Y,X,W,V,C[P+0],U,4096336452);V=t(V,Y,X,W,C[P+7],T,1126891415);W=t(W,V,Y,X,C[P+14],R,2878612391);X=t(X,W,V,Y,C[P+5],O,4237533241);Y=t(Y,X,W,V,C[P+12],U,1700485571);V=t(V,Y,X,W,C[P+3],T,2399980690);W=t(W,V,Y,X,C[P+10],R,4293915773);X=t(X,W,V,Y,C[P+1],O,2240044497);Y=t(Y,X,W,V,C[P+8],U,1873313359);V=t(V,Y,X,W,C[P+15],T,4264355552);W=t(W,V,Y,X,C[P+6],R,2734768916);X=t(X,W,V,Y,C[P+13],O,1309151649);Y=t(Y,X,W,V,C[P+4],U,4149444226);V=t(V,Y,X,W,C[P+11],T,3174756917);W=t(W,V,Y,X,C[P+2],R,718787259);X=t(X,W,V,Y,C[P+9],O,3951481745);Y=K(Y,h);X=K(X,E);W=K(W,v);V=K(V,g)}let i=B(Y)+B(X)+B(W)+B(V);return i.toLowerCase()};let size=expression.parse(element.dataset['size']||'80');let empty=expression.parse(element.dataset['empty']||'');let email=expression.parse(element.dataset['uiGravatar']||empty);let name=expression.parse(element.dataset['name']||email);name=name.split(' ').map(function(n){if(!isNaN(parseFloat(n))&&isFinite(n)){return'';}
upload.appendChild(input);render(output);}});})(window);(function(window){window.ls.container.get('view').add({'selector':'data-page-title','repeat':true,'controller':function(element,document,expression){document.title=expression.parse(element.getAttribute('data-page-title'))||document.title;}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-setup',controller:function(element,console,form){element.addEventListener('submit',function(event){event.preventDefault();let formData=form.toJson(element);delete formData.vault;delete formData.plan;formData['name']=formData['name']||(element.dataset['defaultName']||'');console.teams.create(formData['name']||'').then(function(data){let team=JSON.parse(data)['$uid'];formData=JSON.parse(JSON.stringify(formData).replace(new RegExp('{{teamId}}','g'),team));console.projects.create(formData['name'],team).then(function(data){let project=JSON.parse(data);window.location.href='/console?project='+project['$uid'];},function(){throw new Error('Failed to setup project');});},function(){throw new Error('Setup failed creating project team');});})}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-switch',controller:function(element,router,window){let debug=(element.dataset['debug']);let project=router.params.project||null;if(project){if(debug){console.log('project-load-start-init');}
document.dispatchEvent(new CustomEvent('project-load'));}
document.addEventListener('state-changed',function(){if(router.params.project&&project!==router.params.project){if(debug){console.log('project-load-init');}
document.dispatchEvent(new CustomEvent('project-load'));project=router.params.project;}});element.addEventListener('change',function(){if(debug){console.log('change init',element.value);}
if(element.value&&element.value!==project){if(debug){console.log('Changed: selected project from list');}
return router.change('/console/home?project='+element.value);}});}});})(window);(function(window){window.ls.container.get('view').add({repeat:true,selector:'data-ui-gravatar',controller:function(element,document,expression){let MD5=function(s){function L(k,d){return(k<<d)|(k>>>(32-d))}function K(G,k){let I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){let Z;let F=G.length;let x=F+8;let k=(x-(x%64))/64;let I=(k+1)*16;let aa=Array(I-1);let d=0;let H=0;while(H<F){Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=(aa[Z]|(G.charCodeAt(H)<<d));H++}Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=aa[Z]|(128<<d);aa[I-2]=F<<3;aa[I-1]=F>>>29;return aa}function B(x){let k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");let d="";for(let F=0;F<k.length;F++){let x=k.charCodeAt(F);if(x<128){d+=String.fromCharCode(x)}else{if((x>127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}let C=Array();let P,h,E,v,g,Y,X,W,V;let S=7,Q=12,N=17,M=22;let A=5,z=9,y=14,w=20;let o=4,m=11,l=16,j=23;let U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P<C.length;P+=16){h=Y;E=X;v=W;g=V;Y=u(Y,X,W,V,C[P+0],S,3614090360);V=u(V,Y,X,W,C[P+1],Q,3905402710);W=u(W,V,Y,X,C[P+2],N,606105819);X=u(X,W,V,Y,C[P+3],M,3250441966);Y=u(Y,X,W,V,C[P+4],S,4118548399);V=u(V,Y,X,W,C[P+5],Q,1200080426);W=u(W,V,Y,X,C[P+6],N,2821735955);X=u(X,W,V,Y,C[P+7],M,4249261313);Y=u(Y,X,W,V,C[P+8],S,1770035416);V=u(V,Y,X,W,C[P+9],Q,2336552879);W=u(W,V,Y,X,C[P+10],N,4294925233);X=u(X,W,V,Y,C[P+11],M,2304563134);Y=u(Y,X,W,V,C[P+12],S,1804603682);V=u(V,Y,X,W,C[P+13],Q,4254626195);W=u(W,V,Y,X,C[P+14],N,2792965006);X=u(X,W,V,Y,C[P+15],M,1236535329);Y=f(Y,X,W,V,C[P+1],A,4129170786);V=f(V,Y,X,W,C[P+6],z,3225465664);W=f(W,V,Y,X,C[P+11],y,643717713);X=f(X,W,V,Y,C[P+0],w,3921069994);Y=f(Y,X,W,V,C[P+5],A,3593408605);V=f(V,Y,X,W,C[P+10],z,38016083);W=f(W,V,Y,X,C[P+15],y,3634488961);X=f(X,W,V,Y,C[P+4],w,3889429448);Y=f(Y,X,W,V,C[P+9],A,568446438);V=f(V,Y,X,W,C[P+14],z,3275163606);W=f(W,V,Y,X,C[P+3],y,4107603335);X=f(X,W,V,Y,C[P+8],w,1163531501);Y=f(Y,X,W,V,C[P+13],A,2850285829);V=f(V,Y,X,W,C[P+2],z,4243563512);W=f(W,V,Y,X,C[P+7],y,1735328473);X=f(X,W,V,Y,C[P+12],w,2368359562);Y=D(Y,X,W,V,C[P+5],o,4294588738);V=D(V,Y,X,W,C[P+8],m,2272392833);W=D(W,V,Y,X,C[P+11],l,1839030562);X=D(X,W,V,Y,C[P+14],j,4259657740);Y=D(Y,X,W,V,C[P+1],o,2763975236);V=D(V,Y,X,W,C[P+4],m,1272893353);W=D(W,V,Y,X,C[P+7],l,4139469664);X=D(X,W,V,Y,C[P+10],j,3200236656);Y=D(Y,X,W,V,C[P+13],o,681279174);V=D(V,Y,X,W,C[P+0],m,3936430074);W=D(W,V,Y,X,C[P+3],l,3572445317);X=D(X,W,V,Y,C[P+6],j,76029189);Y=D(Y,X,W,V,C[P+9],o,3654602809);V=D(V,Y,X,W,C[P+12],m,3873151461);W=D(W,V,Y,X,C[P+15],l,530742520);X=D(X,W,V,Y,C[P+2],j,3299628645);Y=t(Y,X,W,V,C[P+0],U,4096336452);V=t(V,Y,X,W,C[P+7],T,1126891415);W=t(W,V,Y,X,C[P+14],R,2878612391);X=t(X,W,V,Y,C[P+5],O,4237533241);Y=t(Y,X,W,V,C[P+12],U,1700485571);V=t(V,Y,X,W,C[P+3],T,2399980690);W=t(W,V,Y,X,C[P+10],R,4293915773);X=t(X,W,V,Y,C[P+1],O,2240044497);Y=t(Y,X,W,V,C[P+8],U,1873313359);V=t(V,Y,X,W,C[P+15],T,4264355552);W=t(W,V,Y,X,C[P+6],R,2734768916);X=t(X,W,V,Y,C[P+13],O,1309151649);Y=t(Y,X,W,V,C[P+4],U,4149444226);V=t(V,Y,X,W,C[P+11],T,3174756917);W=t(W,V,Y,X,C[P+2],R,718787259);X=t(X,W,V,Y,C[P+9],O,3951481745);Y=K(Y,h);X=K(X,E);W=K(W,v);V=K(V,g)}let i=B(Y)+B(X)+B(W)+B(V);return i.toLowerCase()};let size=expression.parse(element.dataset['size']||'80');let empty=expression.parse(element.dataset['empty']||'');let email=expression.parse(element.dataset['uiGravatar']||empty);let name=expression.parse(element.dataset['name']||email);name=name.split(' ').map(function(n){if(!isNaN(parseFloat(n))&&isFinite(n)){return'';}
return n[0];}).join('')||'--';let def='https://ui-avatars.com/api/'+encodeURIComponent(name)+'/'+size+'';element.src='//www.gravatar.com/avatar/'+MD5(email)+'.jpg?s='+size+'&d='+encodeURIComponent(def);}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,state,expression,document){let check=function(){let links=element.getElementsByTagName('a');let selected=null;let list=[];for(let i=0;i<links.length;i++){links[i].href=links[i].href||expression.parse(links[i].dataset['lsHref']||'');list.push(links[i]);}
list.sort(function(a,b){return a.pathname.length-b.pathname.length;});for(let i=0;i<list.length;i++){let href=list[i].href||expression.parse(list[i].dataset['lsHref']||'');if(list[i].pathname===window.location.pathname.substring(0,list[i].pathname.length)){list[i].classList.add('selected');if(selected!==null){list[selected].classList.remove('selected');}
selected=i;}

View file

@ -88,7 +88,7 @@ catch(error){let handler=window.ls.container.resolve(this.error);handler(error);
if(bind){element.addEventListener('change',function(){for(let i=0;i<paths.length;i++){container.path(paths[i],element.checked,$as,$prefix);}});}}
return;}
if(element.value!==value){element.value=value;}
if(bind){element.addEventListener('input',sync);}}
if(bind){element.addEventListener('input',sync);element.addEventListener('change',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,true).replace(/(\r\n|\n|\r)/gm,' ')));}
catch(error){throw new Error('Failed to evaluate expression "'+syntax+' (resulted with: "'+result+'")": '+error);}

View file

@ -1,65 +1,33 @@
(function (window) {
window.ls.container.get('view').add({
selector: 'data-switch',
controller: function(element, router, window, di) {
controller: function(element, router, window) {
let debug = (element.dataset['debug']);
let init = function () {
if (debug) { console.log('Changed: saved project for next redirect', element.value); }
let project = router.params.project || null;
window.localStorage.setItem('settings.project', element.value); // save for next visit
if(project) {
if(debug) { console.log('project-load-start-init'); }
document.dispatchEvent(new CustomEvent('project-load'));
}
di.reset();
};
let fallback = function () {
if (debug) { console.log('fallback init', element.value); }
if(router.getCurrent().view.scope !== 'console' || !router.getCurrent().view.project) {
if (debug) { console.log('Skip: not console state', element.value); }
return;
}
if(router.params['project']) {
return;
}
let project = window.localStorage.getItem('settings.project');
if(project) { // check last used
di.reset();
if (debug) { console.log('last used project', project); }
return router.change('/console/home?project=' + project, true);
}
di.reset();
if (debug) { console.log('first project from list', element.options, element.$lsSkip); }
return router.change('/console/home?project=' + element.options[0].value, true);
};
if (debug) { console.log('switch init', element.options); }
document.addEventListener('state-changed', function () {
if(router.params.project && project !== router.params.project) {
if(debug) { console.log('project-load-init'); }
document.dispatchEvent(new CustomEvent('project-load'));
project = router.params.project;
}
});
element.addEventListener('change', function () {
if (debug) { console.log('change init', element.value); }
fallback();
if(element.value && element.value !== router.params['project']) {
if(element.value && element.value !== project) {
if (debug) { console.log('Changed: selected project from list');}
init ();
return router.change('/console/home?project=' + element.value);
}
});
fallback();
init();
}
});
})(window);

View file

@ -147,6 +147,8 @@
element.addEventListener(events[y], exec);
break;
default:
document.addEventListener(events[y], exec);
console.log('def', events[y].trim());
}
if (debug) console.log('%cregistered: "' + events[y].trim() + '" (' + service + ')', 'color:blue');