1
0
Fork 0
mirror of synced 2024-06-01 10:29:48 +12:00

Fixed data binding for elements

This commit is contained in:
eldadfux 2019-05-12 16:03:30 +03:00
parent d34a23ab71
commit 221b6cf083
7 changed files with 146 additions and 138 deletions

View file

@ -1,148 +1,146 @@
<div data-ls-rerender="project.load">
<div class="cover margin-bottom-small">
<div class="zone xl margin-bottom-large margin-top-small">
<h1 class="margin-bottom-small">
<span class="title" data-ls-bind="{{console-project.name}}">&nbsp;</span>&nbsp;&nbsp;<span class="tag focus" style="vertical-align: middle">Beta Plan</span>
</h1>
<div class="cover margin-bottom-small">
<div class="zone xl margin-bottom-large margin-top-small">
<h1 class="margin-bottom-small">
<span class="title" data-ls-bind="{{console-project.name}}">&nbsp;</span>&nbsp;&nbsp;<span class="tag focus" style="vertical-align: middle">Beta Plan</span>
</h1>
<p data-ls-bind="{{console-project.description}}" class="note text-one-liner margin-bottom-large">&nbsp;</p>
<p data-ls-bind="{{console-project.description}}" class="note text-one-liner margin-bottom-large">&nbsp;</p>
<ul class="margin-top margin-bottom-large clear">
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings?project={{router.params.project}}"><i class="icon-cog"></i> &nbsp;Settings</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/keys?project={{router.params.project}}"><i class="icon-key-inv"></i> &nbsp;API Keys</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/webhooks?project={{router.params.project}}"><i class="icon-link"></i> &nbsp;Webhooks</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/tasks?project={{router.params.project}}"><i class="icon-clock"></i> &nbsp;Tasks</a> &nbsp;&nbsp;</li>
</ul>
</div>
<ul class="margin-top margin-bottom-large clear">
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings?project={{router.params.project}}"><i class="icon-cog"></i> &nbsp;Settings</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/keys?project={{router.params.project}}"><i class="icon-key-inv"></i> &nbsp;API Keys</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/webhooks?project={{router.params.project}}"><i class="icon-link"></i> &nbsp;Webhooks</a> &nbsp;&nbsp;</li>
<li class="pull-start margin-end"><a data-ls-attrs="href=/console/settings/tasks?project={{router.params.project}}"><i class="icon-clock"></i> &nbsp;Tasks</a> &nbsp;&nbsp;</li>
</ul>
</div>
</div>
<div class="zone xxl margin-top-negative-large">
<div>
<div class="box margin-bottom dashboard"
data-service="projects.getProjectUsage"
data-event="load"
data-name="usage"
data-param-project-id="{{router.params.project}}"
data-success="render,trigger"
data-error="render"
data-success-triggers="usage.load">
<div class="row responsive">
<div class="col span-9">
<div class="pull-start margin-end">
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.requests.total|statsTotal}}">N/A</span></div>
<div class="metric margin-bottom-small">Requests <span class="tooltip" data-tooltip="Total number of API requests this month"><i class="icon-info-circled"></i></span></div>
<div class="range">Current Month</div>
</div>
<div class="chart">
<div class="content" data-ls-ui-chart></div>
</div>
</div>
<div class="col span-3">
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.network.total|humanFileSize}}" data-default="0">0</span></div>
<div class="metric margin-bottom-small">Bandwidth</div>
<div class="range">Current Month</div>
<div class="margin-top dev-feature">
<a href="">Full Usage Report <i class="icon-right-open"></i></a>
</div>
</div>
</div>
<hr />
<div>
<div class="zone xxl margin-top-negative-large">
<div>
<div class="box margin-bottom dashboard"
data-service="projects.getProjectUsage"
data-event="load"
data-name="usage"
data-param-project-id="{{router.params.project}}"
data-success="render,trigger"
data-error="render"
data-success-triggers="usage.load">
<div class="row responsive">
<div class="col span-9">
<div class="pull-start margin-end">
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.requests.total|statsTotal}}">N/A</span></div>
<div class="metric margin-bottom-small">Requests <span class="tooltip" data-tooltip="Total number of API requests this month"><i class="icon-info-circled"></i></span></div>
<div class="range">Current Month</div>
</div>
<div class="chart">
<div class="content" data-ls-ui-chart></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.documents.total|statsTotal}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Documents</b></div>
</div>
<div class="col span-3">
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.network.total|humanFileSize}}" data-default="0">0</span></div>
<div class="metric margin-bottom-small">Bandwidth</div>
<div class="range">Current Month</div>
<div class="margin-top dev-feature">
<a href="">Full Usage Report <i class="icon-right-open"></i></a>
</div>
<div class="value"><span class="sum" data-ls-bind="{{usage.storage.total|humanFileSize}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Storage</b></div>
</div>
</div>
<hr />
<div>
<div class="row responsive">
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.documents.total|statsTotal}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Documents</b></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.storage.total|humanFileSize}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Storage</b></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.users.total}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Users</b></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.tasks.total}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Tasks</b></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.users.total}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Users</b></div>
</div>
<div class="col span-3">
<div class="value"><span class="sum" data-ls-bind="{{usage.tasks.total}}" data-default="0">0</span></div>
<div class="margin-top-small"><b class="text-size-small unit">Tasks</b></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="zone xl margin-top-xl clear">
<h2 class="margin-bottom">Platforms</h2>
<div class="zone xl margin-top-xl clear">
<h2 class="margin-bottom">Platforms</h2>
<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">
<div data-debug="1" 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">
<div data-ui-modal class="modal close" data-button-text="Update" data-button-class="pull-end">
<button type="button" class="close pull-end" data-ls-trigger="modal-close"><i class="icon-cancel"></i></button>
<div data-ui-modal class="modal close" data-button-text="Update" data-button-class="pull-end">
<button type="button" class="close pull-end" data-ls-trigger="modal-close"><i class="icon-cancel"></i></button>
<h1>Update Platform</h1>
<h1>Update Platform</h1>
<div data-ls-template="template-{{platform.type}}-update" data-type="script"></div>
</div>
<div data-ls-template="template-{{platform.type}}-update" data-type="script"></div>
</div>
<form class="pull-end margin-end"
data-service="projects.platforms.delete"
data-scope="console"
data-event="submit"
data-confirm="Are you sure you want to delete this platform?"
data-success="alert,trigger"
data-success-alert="Deleted platform successfully"
data-success-triggers="platform.delete"
data-error="alert"
data-error-alert="Failed to delete platform">
<form class="pull-end margin-end"
data-service="projects.platforms.delete"
data-scope="console"
data-event="submit"
data-confirm="Are you sure you want to delete this platform?"
data-success="alert,trigger"
data-success-alert="Deleted platform successfully"
data-success-triggers="platform.delete"
data-error="alert"
data-error-alert="Failed to delete platform">
<input type="hidden" name="projectId" data-ls-bind="{{console-project.$uid}}">
<input type="hidden" name="platformId" data-ls-bind="{{platform.$uid}}">
<input type="hidden" name="projectId" data-ls-bind="{{console-project.$uid}}">
<input type="hidden" name="platformId" data-ls-bind="{{platform.$uid}}">
<button class="reverse danger">Delete</button>
</form>
<button class="reverse danger">Delete</button>
</form>
<div class="margin-bottom-tiny">
<img src="" data-ls-attrs="src=/images/clients/{{platform.type}}.png" class="avatar pull-start margin-end" />
<span data-ls-bind="{{platform.name}}"></span>
</div>
<div class="margin-bottom-tiny">
<img src="" data-ls-attrs="src=/images/clients/{{platform.type}}.png" class="avatar pull-start margin-end" />
<span data-ls-bind="{{platform.name}}"></span>
</div>
<p class="note margin-bottom-no"><span data-ls-bind="{{platform.domains.0}}"></span></p>
</li>
</ul>
<p class="note margin-bottom-no"><span data-ls-bind="{{platform.domains.0}}"></span></p>
</li>
</ul>
</div>
<div data-ls-if="!!({{console-project.platforms}})" class="box dashboard margin-bottom" style="display: none;">
<div class="margin-bottom margin-top-small margin-end margin-start">
<h3 class="margin-bottom">No Platforms Added to Your Project</h3>
<p class="margin-bottom-no">Add your first platform to start building your new application.</p>
</div>
</div>
<div data-ls-if="0 === {{console-project.platforms.length}} || undefined === {{console-project.platforms}}" class="box dashboard margin-bottom" style="display: none;">
<div class="margin-bottom margin-top-small margin-end margin-start">
<h3 class="margin-bottom">No Platforms Added to Your Project</h3>
<a data-ls-attrs="href=/console/settings/keys?project={{router.params.project}}" class="pull-end">Manage Your API Keys</a>
<p class="margin-bottom-no">Add your first platform to start building your new application.</p>
</div>
</div>
<a data-ls-attrs="href=/console/settings/keys?project={{router.params.project}}" class="pull-end">Manage Your API Keys</a>
<div class="drop-list pull-start" data-ls-ui-open="" data-button-text="Add Platform" data-button-class="button" tabindex="1">
<ul>
<li>
<div class="link" id="web-new"><img src="/images/clients/web.png" alt="Web Platform Logo" class="avatar xs margin-end" /> New Website</div>
</li>
<li class="disabled">
<div class="link" id="ios-new"><img src="/images/clients/ios.png" alt="iOS Platform Logo" class="avatar xs margin-end" /> New iOS App <span class="note">(soon)</span></div>
</li>
<li class="disabled">
<div class="link" id="android-new"><img src="/images/clients/android.png" alt="Android Platform Logo" class="avatar xs margin-end" /> New Android App <span class="note">(soon)</span></div>
</li>
<li class="disabled">
<div class="link" id="unity-new"><img src="/images/clients/unity.png" alt="Unity Platform Logo" class="avatar xs margin-end" /> New Unity Game <span class="note">(soon)</span></div>
</li>
</ul>
</div>
<div class="drop-list pull-start" data-ls-ui-open="" data-button-text="Add Platform" data-button-class="button" tabindex="1">
<ul>
<li>
<div class="link" id="web-new"><img src="/images/clients/web.png" alt="Web Platform Logo" class="avatar xs margin-end" /> New Website</div>
</li>
<li class="disabled">
<div class="link" id="ios-new"><img src="/images/clients/ios.png" alt="iOS Platform Logo" class="avatar xs margin-end" /> New iOS App <span class="note">(soon)</span></div>
</li>
<li class="disabled">
<div class="link" id="android-new"><img src="/images/clients/android.png" alt="Android Platform Logo" class="avatar xs margin-end" /> New Android App <span class="note">(soon)</span></div>
</li>
<li class="disabled">
<div class="link" id="unity-new"><img src="/images/clients/unity.png" alt="Unity Platform Logo" class="avatar xs margin-end" /> New Unity Game <span class="note">(soon)</span></div>
</li>
</ul>
</div>
</div>

View file

@ -25,6 +25,12 @@
data-error-rerender=""
data-success-triggers="projects.load">
<div data-ls-if="0 == {{console-projects.sum}}" class="box margin-bottom" style="display: none">
<h3 class="margin-bottom">No Projects Found</h3>
<p class="margin-bottom-no">Create your first project to get started</p>
</div>
<ul data-ls-loop="console-projects" data-ls-as="project" data-ls-append="" class="tiles cell-3">
<li class="margin-bottom">
<a data-ls-attrs="href=/console/home?project={{project.$uid}}" class="box">

View file

@ -130,10 +130,8 @@ $scopes = [ // TODO sync with project list
<label for="legalName">Legal Name</label>
<input name="legalName" id="legalName" type="text" autocomplete="off" data-ls-bind="{{console-project.legalName}}" data-forms-text-direction>
<div data-ls-rerender="geo-countries-load">
<label for="legalCountry">Country</label>
<select id="legalCountry" name="legalCountry" data-ls-options="{{geo-countries}}" data-ls-bind="{{console-project.legalCountry}}"></select>
</div>
<label for="legalCountry">Country</label>
<select id="legalCountry" name="legalCountry" data-ls-options="{{geo-countries}}" data-ls-bind="{{console-project.legalCountry}}"></select>
<label for="legalCity">City</label>
<input name="legalCity" id="legalCity" type="text" autocomplete="off" data-ls-bind="{{console-project.legalCity}}" data-forms-text-direction>

View file

@ -1,20 +1,18 @@
<?php
use Utopia\Locale\Locale;
$providers = $this->getParam('providers', []);
?>
<div class="cover">
<h1 class="zone xl margin-bottom-large margin-top">
<?php echo Locale::getText('console.users.title'); ?>
Users
</h1>
</div>
<span data-ls-bind="{{project-users.sum}}">xxxxx</span>
<div class="zone xl" data-ls-rerender="project.load">
<div class="zone xl">
<ul class="phases clear" data-ui-phases data-selected="{{router.params.tab}}">
<li data-state="/console/users?project={{router.params.project}}">
<h2><?php echo Locale::getText('console.users.section.users.title'); ?></h2>
<h2>Users</h2>
<div>
<div class="row responsive force-reverse clear margin-bottom-tiny">
@ -138,7 +136,7 @@ $providers = $this->getParam('providers', []);
</div>
</li>
<li data-state="/console/users/teams?project={{router.params.project}}">
<h2><?php echo Locale::getText('console.users.section.teams.title'); ?></h2>
<h2>Teams</h2>
<div>
<div class="row responsive force-reverse clear margin-bottom-tiny">
@ -262,7 +260,7 @@ $providers = $this->getParam('providers', []);
</div>
</li>
<li data-state="/console/users/providers?project={{router.params.project}}">
<h2><?php echo Locale::getText('console.users.section.providers.title'); ?></h2>
<h2>Providers</h2>
<div class="box margin-bottom margin-top-large">
<ul class="list">
@ -325,7 +323,7 @@ $providers = $this->getParam('providers', []);
</div>
</li>
<li data-state="/console/users/templates?project={{router.params.project}}">
<h2><?php echo Locale::getText('console.users.section.templates.title'); ?></h2>
<h2>Templates</h2>
</li>
</ul>
</div>

View file

@ -2191,7 +2191,7 @@ element.innerHTML='';element.appendChild(child);container.set('chart',new Chart(
if(element.dataset['param'+value.charAt(0).toUpperCase()+value.slice(1)]){result=expression.parse(element.dataset['param'+value.charAt(0).toUpperCase()+value.slice(1)]);}
if(data[value]){result=data[value];}
if(!result){result='';}
if(debug)console.log('%c[param resolved]: ('+service+') '+value+'='+result,'color:#808080');return result;}));};let exec=function(event){if(debug)console.log('%c[executed]: '+scope+'.'+action,'color:yellow',event,element,document.body.contains(element));if(!document.body.contains(element)){element=undefined;return false;}
if(debug)console.log('%c[param resolved]: ('+service+') '+value+'='+result,'color:#808080');return result;}));};let exec=function(event){element.$lsSkip=true;if(debug)console.log('%c[executed]: '+scope+'.'+action,'color:yellow',event,element,document.body.contains(element));if(!document.body.contains(element)){element=undefined;return false;}
if(event){event.preventDefault();}
if(confirm){if(window.confirm(confirm)!==true){return false;}}
if(loading){loaderId=alerts.send({text:loading,class:''},0);}
@ -2199,7 +2199,8 @@ let method=container.path(scope+'.'+action);if(!method){throw new Error('Method
let result=resolve(method);if(!result){return;}
result.then(function(data){if(loaderId!==null){alerts.remove(loaderId);}
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);}},function(exception){if(loaderId!==null){alerts.remove(loaderId);}
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:}
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');}

View file

@ -249,7 +249,7 @@ element.innerHTML='';element.appendChild(child);container.set('chart',new Chart(
if(element.dataset['param'+value.charAt(0).toUpperCase()+value.slice(1)]){result=expression.parse(element.dataset['param'+value.charAt(0).toUpperCase()+value.slice(1)]);}
if(data[value]){result=data[value];}
if(!result){result='';}
if(debug)console.log('%c[param resolved]: ('+service+') '+value+'='+result,'color:#808080');return result;}));};let exec=function(event){if(debug)console.log('%c[executed]: '+scope+'.'+action,'color:yellow',event,element,document.body.contains(element));if(!document.body.contains(element)){element=undefined;return false;}
if(debug)console.log('%c[param resolved]: ('+service+') '+value+'='+result,'color:#808080');return result;}));};let exec=function(event){element.$lsSkip=true;if(debug)console.log('%c[executed]: '+scope+'.'+action,'color:yellow',event,element,document.body.contains(element));if(!document.body.contains(element)){element=undefined;return false;}
if(event){event.preventDefault();}
if(confirm){if(window.confirm(confirm)!==true){return false;}}
if(loading){loaderId=alerts.send({text:loading,class:''},0);}
@ -257,7 +257,8 @@ let method=container.path(scope+'.'+action);if(!method){throw new Error('Method
let result=resolve(method);if(!result){return;}
result.then(function(data){if(loaderId!==null){alerts.remove(loaderId);}
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);}},function(exception){if(loaderId!==null){alerts.remove(loaderId);}
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:}
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');}

View file

@ -57,6 +57,8 @@
};
let exec = function(event) {
element.$lsSkip = true;
if (debug) console.log('%c[executed]: ' + scope + '.' + action, 'color:yellow', event, element, document.body.contains(element));
if(!document.body.contains(element)) {
@ -102,11 +104,15 @@
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('.', '-')));
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) { // Remove loader if needed
alerts.remove(loaderId);