Updated storage and users navigator
This commit is contained in:
parent
21759964cc
commit
89c0b9e330
14 changed files with 274 additions and 138 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
/vendor/
|
/vendor/
|
||||||
/node_modules/
|
/node_modules/
|
||||||
|
/storage/uploads/
|
||||||
/.idea/
|
/.idea/
|
||||||
.DS_Store
|
.DS_Store
|
|
@ -139,7 +139,7 @@ $utopia->get('/v1/storage/files')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$results = array_map(function ($value) { /* @var $value \Database\Document */
|
$results = array_map(function ($value) { /* @var $value \Database\Document */
|
||||||
return $value->getArrayCopy(['$uid', '$permissions', 'name', 'signature', 'mimeType', 'sizeOriginal']);
|
return $value->getArrayCopy(['$uid', '$permissions', 'name', 'dateCreated', 'signature', 'mimeType', 'sizeOriginal']);
|
||||||
}, $results);
|
}, $results);
|
||||||
|
|
||||||
$response->json(['sum' => $projectDB->getSum(), 'files' => $results]);
|
$response->json(['sum' => $projectDB->getSum(), 'files' => $results]);
|
||||||
|
@ -161,7 +161,7 @@ $utopia->get('/v1/storage/files/:fileId')
|
||||||
throw new Exception('File not found', 404);
|
throw new Exception('File not found', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->json($file->getArrayCopy(['$uid', '$permissions', 'name', 'signature', 'mimeType', 'sizeOriginal']));
|
$response->json($file->getArrayCopy(['$uid', '$permissions', 'name', 'dateCreated', 'signature', 'mimeType', 'sizeOriginal']));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ const APP_SOCIAL_GITHUB = 'https://github.com/appwrite';
|
||||||
const APP_SOCIAL_DISCORD = 'https://discord.gg/GSeTUeA';
|
const APP_SOCIAL_DISCORD = 'https://discord.gg/GSeTUeA';
|
||||||
const APP_MODE_ADMIN = 'admin';
|
const APP_MODE_ADMIN = 'admin';
|
||||||
const APP_LOCALES = ['en', 'he'];
|
const APP_LOCALES = ['en', 'he'];
|
||||||
|
const APP_PAGING_LIMIT = 15;
|
||||||
|
|
||||||
$register = new Registry();
|
$register = new Registry();
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
|
|
|
@ -1,19 +1,151 @@
|
||||||
<?php
|
<?php
|
||||||
use Utopia\Locale\Locale;
|
use Utopia\Locale\Locale;
|
||||||
|
|
||||||
$providers = $this->getParam('providers', []);
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="cover margin-bottom-large">
|
<div class="cover margin-bottom-large">
|
||||||
<h1 class="zone xl margin-bottom-large margin-top">
|
<h1 class="zone xl margin-bottom-large margin-top">
|
||||||
<a data-ls-attrs="href=/console/openings/new?company={{router.params.company}}" class="button icon margin-top-tiny pull-end"><i class="icon-plus"></i> Upload</a>
|
|
||||||
|
|
||||||
<?php echo Locale::getText('console.storage.title'); ?>
|
<?php echo Locale::getText('console.storage.title'); ?>
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="zone xl">
|
<div class="zone xl">
|
||||||
|
<div data-ui-modal class="box modal close" data-button-text="" data-button-class="fly round" data-button-icon="icon-plus">
|
||||||
|
<button type="button" class="close pull-end" data-ui-modal-close=""><i class="icon-cancel"></i></button>
|
||||||
|
|
||||||
|
<h1>Upload File</h1>
|
||||||
|
|
||||||
|
<form data-debug="1"
|
||||||
|
data-service="storage.createFile"
|
||||||
|
data-event="submit"
|
||||||
|
data-scope="sdk"
|
||||||
|
data-success="alert,trigger,reset"
|
||||||
|
data-success-param-alert-text="Created user successfully"
|
||||||
|
data-success-param-trigger-events="user-create,modal-close"
|
||||||
|
data-failure="alert"
|
||||||
|
data-failure-param-alert-text="Failed to create user"
|
||||||
|
data-failure-param-alert-classname="error">
|
||||||
|
<input type="hidden" name="folderId" id="files-folderId" data-cast-to="int" value="1">
|
||||||
|
|
||||||
|
<label for="file-read">Files</label>
|
||||||
|
<input type="file" name="files" id="file-files" require>
|
||||||
|
|
||||||
|
<label for="file-read">Read Permissions</label>
|
||||||
|
<input type="text" class="full-width" id="file-read" name="read" required autocomplete="off" data-cast-to="array" value="*" />
|
||||||
|
|
||||||
|
<label for="file-write">Write Permissions</label>
|
||||||
|
<input type="text" class="full-width" id="file-write" name="write" required autocomplete="off" data-cast-to="array" value="*" />
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<button type="submit">Create</button> <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form class="box padding-small margin-bottom search"
|
||||||
|
data-service="storage.listFiles"
|
||||||
|
data-event="submit"
|
||||||
|
data-param-search="{{router.params.search}}"
|
||||||
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
|
data-param-offset=""
|
||||||
|
data-param-order-type="DESC"
|
||||||
|
data-scope="sdk"
|
||||||
|
data-name="project-files"
|
||||||
|
data-success="state"
|
||||||
|
data-success-param-state-keys="search,offset">
|
||||||
|
<div class="row responsive">
|
||||||
|
<div class="col span-10">
|
||||||
|
<input name="search" id="searchFiles" type="search" autocomplete="off" placeholder="Search" class="margin-bottom-no" data-ls-bind="{{router.params.search}}">
|
||||||
|
</div>
|
||||||
|
<div class="col span-2">
|
||||||
|
<button class="fill">Search</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div
|
||||||
|
data-service="storage.listFiles"
|
||||||
|
data-event="load,user-create,user-update,user-delete"
|
||||||
|
data-param-search="{{router.params.search}}"
|
||||||
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
|
data-param-offset="{{router.params.offset}}"
|
||||||
|
data-param-order-type="DESC"
|
||||||
|
data-scope="sdk"
|
||||||
|
data-name="project-files">
|
||||||
|
|
||||||
|
<div data-ls-if="0 == {{project-files.sum}}" class="box margin-bottom">
|
||||||
|
<h3 class="margin-bottom">No Files Found</h3>
|
||||||
|
|
||||||
|
<p class="margin-bottom-no">Upload your first file to get started</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-ls-if="0 != {{project-files.sum}}" style="display: none;">
|
||||||
|
<div class="note margin-bottom-small margin-end-small text-align-end text-size-small"><span data-ls-bind="{{project-files.sum}}"></span> results found</div>
|
||||||
|
|
||||||
|
<div class="box margin-bottom">
|
||||||
|
<table class="vertical">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="60"></th>
|
||||||
|
<th width="220">Name</th>
|
||||||
|
<th width="180">Type</th>
|
||||||
|
<th>Size</th>
|
||||||
|
<th width="100">Created</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody data-ls-loop="project-files.files" data-ls-as="file">
|
||||||
|
<tr>
|
||||||
|
<td class="hide">
|
||||||
|
<img src="" data-ls-attrs="src=//{{env.DOMAIN}}/v1/storage/files/{{file.$uid}}/preview?width=100&height=100&project={{router.params.project}}&mode=admin" class="pull-start avatar" />
|
||||||
|
</td>
|
||||||
|
<td data-title="Name: ">
|
||||||
|
<span data-ls-bind="{{file.name}}" class="note"></span>
|
||||||
|
</td>
|
||||||
|
<td data-title="Type: ">
|
||||||
|
<span data-ls-bind="{{file.mimeType}}" class="note tag"></span>
|
||||||
|
</td>
|
||||||
|
<td data-title="Status: ">
|
||||||
|
<span data-ls-bind="{{file.sizeOriginal|humanFileSize}}" class="note"></span>
|
||||||
|
</td>
|
||||||
|
<td data-title="Created: ">
|
||||||
|
<span data-ls-bind="{{file.dateCreated|date-text}}" class="note"></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clear text-align-center paging">
|
||||||
|
<form
|
||||||
|
data-service="storage.listFiles"
|
||||||
|
data-event="submit"
|
||||||
|
data-param-search="{{router.params.search}}"
|
||||||
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
|
data-param-order-type="DESC"
|
||||||
|
data-scope="sdk"
|
||||||
|
data-name="project-files"
|
||||||
|
data-success="state"
|
||||||
|
data-success-param-state-keys="search,offset">
|
||||||
|
<button name="offset" data-paging-back data-offset="{{router.params.offset}}" data-sum="{{project-files.sum}}" class="margin-end round small" aria-label="Back"><i class="icon-left-open"></i></button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<span data-ls-bind="{{router.params.offset|pageCurrent}} / {{project-files.sum|pageTotal}}"></span>
|
||||||
|
|
||||||
|
<form
|
||||||
|
data-service="storage.listFiles"
|
||||||
|
data-event="submit"
|
||||||
|
data-param-search="{{router.params.search}}"
|
||||||
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
|
data-param-order-type="DESC"
|
||||||
|
data-scope="sdk"
|
||||||
|
data-name="project-files"
|
||||||
|
data-success="state"
|
||||||
|
data-success-param-state-keys="search,offset">
|
||||||
|
<button name="offset" data-paging-next data-offset="{{router.params.offset}}" data-sum="{{project-files.sum}}" class="margin-start round small" aria-label="Next"><i class="icon-right-open"></i></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
<div>
|
<div>
|
||||||
<form class="row clear margin-bottom-tiny" data-forms-filter="filter-files" data-event="init">
|
<form class="row clear margin-bottom-tiny" data-forms-filter="filter-files" data-event="init">
|
||||||
<div class="col span-4">
|
<div class="col span-4">
|
||||||
|
@ -79,5 +211,5 @@ $providers = $this->getParam('providers', []);
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
$providers = $this->getParam('providers', []);
|
$providers = $this->getParam('providers', []);
|
||||||
$limit = 3;
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="cover">
|
<div class="cover">
|
||||||
|
@ -49,7 +48,7 @@ $limit = 3;
|
||||||
data-service="users.listUsers"
|
data-service="users.listUsers"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-offset=""
|
data-param-offset=""
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
|
@ -70,7 +69,7 @@ $limit = 3;
|
||||||
data-service="users.listUsers"
|
data-service="users.listUsers"
|
||||||
data-event="load,user-create,user-update,user-delete"
|
data-event="load,user-create,user-update,user-delete"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-offset="{{router.params.offset}}"
|
data-param-offset="{{router.params.offset}}"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
|
@ -132,7 +131,7 @@ $limit = 3;
|
||||||
data-service="users.listUsers"
|
data-service="users.listUsers"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
data-name="project-users"
|
data-name="project-users"
|
||||||
|
@ -147,7 +146,7 @@ $limit = 3;
|
||||||
data-service="users.listUsers"
|
data-service="users.listUsers"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
data-name="project-users"
|
data-name="project-users"
|
||||||
|
@ -188,7 +187,7 @@ $limit = 3;
|
||||||
data-service="teams.listTeams"
|
data-service="teams.listTeams"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-offset=""
|
data-param-offset=""
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
|
@ -209,7 +208,7 @@ $limit = 3;
|
||||||
data-service="teams.listTeams"
|
data-service="teams.listTeams"
|
||||||
data-event="load,team-create,team-update,team-delete"
|
data-event="load,team-create,team-update,team-delete"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-offset="{{router.params.offset}}"
|
data-param-offset="{{router.params.offset}}"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
|
@ -275,7 +274,7 @@ $limit = 3;
|
||||||
data-service="teams.listTeams"
|
data-service="teams.listTeams"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
data-name="project-teams"
|
data-name="project-teams"
|
||||||
|
@ -290,7 +289,7 @@ $limit = 3;
|
||||||
data-service="teams.listTeams"
|
data-service="teams.listTeams"
|
||||||
data-event="submit"
|
data-event="submit"
|
||||||
data-param-search="{{router.params.search}}"
|
data-param-search="{{router.params.search}}"
|
||||||
data-param-limit="<?php echo $limit; ?>"
|
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
|
||||||
data-param-order-type="DESC"
|
data-param-order-type="DESC"
|
||||||
data-scope="sdk"
|
data-scope="sdk"
|
||||||
data-name="project-teams"
|
data-name="project-teams"
|
||||||
|
|
|
@ -51,7 +51,8 @@ $env = $this->getParam('env', '');
|
||||||
PROJECT: '<?php echo $project; ?>',
|
PROJECT: '<?php echo $project; ?>',
|
||||||
LOCALE: '<?php echo $this->escape(Locale::getText('settings.locale')); ?>',
|
LOCALE: '<?php echo $this->escape(Locale::getText('settings.locale')); ?>',
|
||||||
PREFIX: '<?php echo $this->escape($this->getParam('prefix')); ?>',
|
PREFIX: '<?php echo $this->escape($this->getParam('prefix')); ?>',
|
||||||
ROLES: <?PHP echo json_encode($this->getParam('roles', [])); ?>
|
ROLES: <?PHP echo json_encode($this->getParam('roles', [])); ?>,
|
||||||
|
PAGING_LIMIT: <?PHP echo APP_PAGING_LIMIT; ?>
|
||||||
};
|
};
|
||||||
|
|
||||||
<?php if($litespeed): ?>
|
<?php if($litespeed): ?>
|
||||||
|
|
|
@ -47,6 +47,8 @@ services:
|
||||||
clamav:
|
clamav:
|
||||||
image: appwrite/clamav:1.0.4
|
image: appwrite/clamav:1.0.4
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./storage:/storage:rw
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:5.0
|
image: redis:5.0
|
||||||
|
|
14
public/dist/scripts/app-all.js
vendored
14
public/dist/scripts/app-all.js
vendored
|
@ -10,9 +10,8 @@ if(typeof headers!=='object'){throw new Error('var headers must be of type objec
|
||||||
for(i=0;i<globalParams.length;i++){path=addParam(path,globalParams[i].key,globalParams[i].value);}
|
for(i=0;i<globalParams.length;i++){path=addParam(path,globalParams[i].key,globalParams[i].value);}
|
||||||
for(let key in globalHeaders){if(globalHeaders.hasOwnProperty(key)){if(!headers[globalHeaders[key].key]){headers[globalHeaders[key].key]=globalHeaders[key].value;}}}
|
for(let key in globalHeaders){if(globalHeaders.hasOwnProperty(key)){if(!headers[globalHeaders[key].key]){headers[globalHeaders[key].key]=globalHeaders[key].value;}}}
|
||||||
if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=addParam(path,key,params[key]);}}}
|
if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=addParam(path,key,params[key]);}}}
|
||||||
switch(headers['content-type']){case'application/json':params=JSON.stringify(params);break;case'multipart/form-data':let formData=new FormData();for(let param in params){if(param.hasOwnProperty(key)){formData.append(key,param[key]);}}
|
switch(headers['content-type']){case'application/json':params=JSON.stringify(params);break;case'multipart/form-data':console.log(params);let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param);});params=formData;break;}
|
||||||
params=formData;break;}
|
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=true;request.open(method,path,true);for(key in headers){if(key==='content-type')continue;if(headers.hasOwnProperty(key)){request.setRequestHeader(key,headers[key]);}}
|
||||||
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=true;request.open(method,path,true);for(key in headers){if(headers.hasOwnProperty(key)){request.setRequestHeader(key,headers[key]);}}
|
|
||||||
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;}
|
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;}
|
||||||
resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);}
|
resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);}
|
||||||
request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}}
|
request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}}
|
||||||
|
@ -131,7 +130,7 @@ if(security===undefined){throw new Error('Missing required parameter: "security"
|
||||||
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');}
|
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');}
|
||||||
if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');}
|
if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');}
|
||||||
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');}
|
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');}
|
||||||
let path='/storage/files';return http.post(path,{'content-type':'application/json'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files';return http.post(path,{'content-type':'multipart/form-data'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
|
@ -2329,6 +2328,7 @@ else if(undefined!==element.value){if('SELECT'===element.tagName&&element.childr
|
||||||
else if('radio'===type){if(element.checked){json[name]=element.value;}}
|
else if('radio'===type){if(element.checked){json[name]=element.value;}}
|
||||||
else if('checkbox'===type){if(!Array.isArray(json[name])){json[name]=[];}
|
else if('checkbox'===type){if(!Array.isArray(json[name])){json[name]=[];}
|
||||||
if(element.checked){json[name].push(element.value);}}
|
if(element.checked){json[name].push(element.value);}}
|
||||||
|
else if('file'===type){console.log('form2json file:',element.files);json[name]=element.files[0];}
|
||||||
else if(undefined!==element.value){if((json[name]!==undefined)&&(!Array.isArray(json[name]))){json[name]=[json[name]];}
|
else if(undefined!==element.value){if((json[name]!==undefined)&&(!Array.isArray(json[name]))){json[name]=[json[name]];}
|
||||||
if(Array.isArray(json[name])){json[name].push(element.value);}
|
if(Array.isArray(json[name])){json[name].push(element.value);}
|
||||||
else{json[name]=element.value;}}
|
else{json[name]=element.value;}}
|
||||||
|
@ -2345,7 +2345,7 @@ return n[0];}).join('')||'--';let background=themes[theme[theme.length-1]]['back
|
||||||
(hours?hours+"h ":"")+
|
(hours?hours+"h ":"")+
|
||||||
(minutes?minutes+"m ":"")+
|
(minutes?minutes+"m ":"")+
|
||||||
Number.parseFloat(seconds).toFixed(0)+"s";}
|
Number.parseFloat(seconds).toFixed(0)+"s";}
|
||||||
return"< 1s";}).add('markdown',function($value,markdown){return markdown.render($value);}).add('pageCurrent',function($value){return Math.ceil(parseInt($value||0)/3)+1;}).add('pageTotal',function($value){let total=Math.ceil(parseInt($value||0)/3);return(total)?total:1;}).add('humanFileSize',function($value){if(!$value){return 0;}
|
return"< 1s";}).add('markdown',function($value,markdown){return markdown.render($value);}).add('pageCurrent',function($value,env){return Math.ceil(parseInt($value||0)/env.PAGING_LIMIT)+1;}).add('pageTotal',function($value,env){let total=Math.ceil(parseInt($value||0)/env.PAGING_LIMIT);return(total)?total:1;}).add('humanFileSize',function($value){if(!$value){return 0;}
|
||||||
let thresh=1000;if(Math.abs($value)<thresh){return $value+' B';}
|
let thresh=1000;if(Math.abs($value)<thresh){return $value+' B';}
|
||||||
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{$value/=thresh;++u;}while(Math.abs($value)>=thresh&&u<units.length-1);return $value.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function($value){if(!$value){return 0;}
|
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{$value/=thresh;++u;}while(Math.abs($value)>=thresh&&u<units.length-1);return $value.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);}
|
$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);}
|
||||||
|
@ -2454,8 +2454,8 @@ 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.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);}
|
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');}
|
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({selector:'data-paging-back',controller:function(element,container,expression){let paths=[];let limit=3;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset-limit)<0){element.disabled=true;}
|
return router.change('/console/home?project='+element.value);}});}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-back',controller:function(element,container,expression,env){let paths=[];let limit=env.PAGING_LIMIT;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());if((offset-limit)<0){element.disabled=true;}
|
||||||
else{element.disabled=false;element.value=offset-limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-next',controller:function(element,container,expression){let paths=[];let limit=3;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset+limit)>=sum){element.disabled=true;}
|
else{element.disabled=false;element.value=offset-limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-next',controller:function(element,container,expression,env){let paths=[];let limit=env.PAGING_LIMIT;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset+limit)>=sum){element.disabled=true;}
|
||||||
else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,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]);}
|
else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,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');}
|
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;}
|
selected=i;}
|
||||||
|
|
7
public/dist/scripts/app-dep.js
vendored
7
public/dist/scripts/app-dep.js
vendored
|
@ -10,9 +10,8 @@ if(typeof headers!=='object'){throw new Error('var headers must be of type objec
|
||||||
for(i=0;i<globalParams.length;i++){path=addParam(path,globalParams[i].key,globalParams[i].value);}
|
for(i=0;i<globalParams.length;i++){path=addParam(path,globalParams[i].key,globalParams[i].value);}
|
||||||
for(let key in globalHeaders){if(globalHeaders.hasOwnProperty(key)){if(!headers[globalHeaders[key].key]){headers[globalHeaders[key].key]=globalHeaders[key].value;}}}
|
for(let key in globalHeaders){if(globalHeaders.hasOwnProperty(key)){if(!headers[globalHeaders[key].key]){headers[globalHeaders[key].key]=globalHeaders[key].value;}}}
|
||||||
if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=addParam(path,key,params[key]);}}}
|
if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=addParam(path,key,params[key]);}}}
|
||||||
switch(headers['content-type']){case'application/json':params=JSON.stringify(params);break;case'multipart/form-data':let formData=new FormData();for(let param in params){if(param.hasOwnProperty(key)){formData.append(key,param[key]);}}
|
switch(headers['content-type']){case'application/json':params=JSON.stringify(params);break;case'multipart/form-data':console.log(params);let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param);});params=formData;break;}
|
||||||
params=formData;break;}
|
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=true;request.open(method,path,true);for(key in headers){if(key==='content-type')continue;if(headers.hasOwnProperty(key)){request.setRequestHeader(key,headers[key]);}}
|
||||||
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=true;request.open(method,path,true);for(key in headers){if(headers.hasOwnProperty(key)){request.setRequestHeader(key,headers[key]);}}
|
|
||||||
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;}
|
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;}
|
||||||
resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);}
|
resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);}
|
||||||
request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}}
|
request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}}
|
||||||
|
@ -131,7 +130,7 @@ if(security===undefined){throw new Error('Missing required parameter: "security"
|
||||||
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');}
|
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');}
|
||||||
if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');}
|
if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');}
|
||||||
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');}
|
let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');}
|
||||||
let path='/storage/files';return http.post(path,{'content-type':'application/json'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files';return http.post(path,{'content-type':'multipart/form-data'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');}
|
||||||
|
|
7
public/dist/scripts/app.js
vendored
7
public/dist/scripts/app.js
vendored
|
@ -236,6 +236,7 @@ else if(undefined!==element.value){if('SELECT'===element.tagName&&element.childr
|
||||||
else if('radio'===type){if(element.checked){json[name]=element.value;}}
|
else if('radio'===type){if(element.checked){json[name]=element.value;}}
|
||||||
else if('checkbox'===type){if(!Array.isArray(json[name])){json[name]=[];}
|
else if('checkbox'===type){if(!Array.isArray(json[name])){json[name]=[];}
|
||||||
if(element.checked){json[name].push(element.value);}}
|
if(element.checked){json[name].push(element.value);}}
|
||||||
|
else if('file'===type){console.log('form2json file:',element.files);json[name]=element.files[0];}
|
||||||
else if(undefined!==element.value){if((json[name]!==undefined)&&(!Array.isArray(json[name]))){json[name]=[json[name]];}
|
else if(undefined!==element.value){if((json[name]!==undefined)&&(!Array.isArray(json[name]))){json[name]=[json[name]];}
|
||||||
if(Array.isArray(json[name])){json[name].push(element.value);}
|
if(Array.isArray(json[name])){json[name].push(element.value);}
|
||||||
else{json[name]=element.value;}}
|
else{json[name]=element.value;}}
|
||||||
|
@ -252,7 +253,7 @@ return n[0];}).join('')||'--';let background=themes[theme[theme.length-1]]['back
|
||||||
(hours?hours+"h ":"")+
|
(hours?hours+"h ":"")+
|
||||||
(minutes?minutes+"m ":"")+
|
(minutes?minutes+"m ":"")+
|
||||||
Number.parseFloat(seconds).toFixed(0)+"s";}
|
Number.parseFloat(seconds).toFixed(0)+"s";}
|
||||||
return"< 1s";}).add('markdown',function($value,markdown){return markdown.render($value);}).add('pageCurrent',function($value){return Math.ceil(parseInt($value||0)/3)+1;}).add('pageTotal',function($value){let total=Math.ceil(parseInt($value||0)/3);return(total)?total:1;}).add('humanFileSize',function($value){if(!$value){return 0;}
|
return"< 1s";}).add('markdown',function($value,markdown){return markdown.render($value);}).add('pageCurrent',function($value,env){return Math.ceil(parseInt($value||0)/env.PAGING_LIMIT)+1;}).add('pageTotal',function($value,env){let total=Math.ceil(parseInt($value||0)/env.PAGING_LIMIT);return(total)?total:1;}).add('humanFileSize',function($value){if(!$value){return 0;}
|
||||||
let thresh=1000;if(Math.abs($value)<thresh){return $value+' B';}
|
let thresh=1000;if(Math.abs($value)<thresh){return $value+' B';}
|
||||||
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{$value/=thresh;++u;}while(Math.abs($value)>=thresh&&u<units.length-1);return $value.toFixed(1)+'<span class="text-size-small unit">'+units[u]+'</span>';}).add('statsTotal',function($value){if(!$value){return 0;}
|
let units=['kB','MB','GB','TB','PB','EB','ZB','YB'];let u=-1;do{$value/=thresh;++u;}while(Math.abs($value)>=thresh&&u<units.length-1);return $value.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);}
|
$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);}
|
||||||
|
@ -361,8 +362,8 @@ 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.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);}
|
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');}
|
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({selector:'data-paging-back',controller:function(element,container,expression){let paths=[];let limit=3;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset-limit)<0){element.disabled=true;}
|
return router.change('/console/home?project='+element.value);}});}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-back',controller:function(element,container,expression,env){let paths=[];let limit=env.PAGING_LIMIT;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());if((offset-limit)<0){element.disabled=true;}
|
||||||
else{element.disabled=false;element.value=offset-limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-next',controller:function(element,container,expression){let paths=[];let limit=3;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset+limit)>=sum){element.disabled=true;}
|
else{element.disabled=false;element.value=offset-limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-paging-next',controller:function(element,container,expression,env){let paths=[];let limit=env.PAGING_LIMIT;let check=function(){let offset=parseInt(expression.parse(element.dataset['offset'])||'0');paths=paths.concat(expression.getPaths());let sum=parseInt(expression.parse(element.dataset['sum'])||'0');paths=paths.concat(expression.getPaths());if((offset+limit)>=sum){element.disabled=true;}
|
||||||
else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,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]);}
|
else{element.disabled=false;element.value=offset+limit;}};check();for(let i=0;i<paths.length;i++){let path=paths[i].split('.');while(path.length){container.bind(element,path.join('.'),check);path.pop();}}}});})(window);(function(window){window.ls.container.get('view').add({selector:'data-ui-highlight',controller:function(element,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');}
|
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;}
|
selected=i;}
|
||||||
|
|
|
@ -69,11 +69,11 @@ window.ls.filter
|
||||||
.add('markdown', function ($value, markdown) {
|
.add('markdown', function ($value, markdown) {
|
||||||
return markdown.render($value);
|
return markdown.render($value);
|
||||||
})
|
})
|
||||||
.add('pageCurrent', function ($value) {
|
.add('pageCurrent', function ($value, env) {
|
||||||
return Math.ceil(parseInt($value || 0) / 3) + 1;
|
return Math.ceil(parseInt($value || 0) / env.PAGING_LIMIT) + 1;
|
||||||
})
|
})
|
||||||
.add('pageTotal', function ($value) {
|
.add('pageTotal', function ($value, env) {
|
||||||
let total = Math.ceil(parseInt($value || 0) / 3);
|
let total = Math.ceil(parseInt($value || 0) / env.PAGING_LIMIT);
|
||||||
return (total) ? total : 1;
|
return (total) ? total : 1;
|
||||||
})
|
})
|
||||||
.add('humanFileSize', function ($value) {
|
.add('humanFileSize', function ($value) {
|
||||||
|
|
|
@ -1,115 +1,119 @@
|
||||||
(function (window) {
|
(function (window) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
window.ls.container.set('form', function() {
|
window.ls.container.set('form', function () {
|
||||||
|
|
||||||
function cast(value, to) {
|
function cast(value, to) {
|
||||||
switch (to) {
|
switch (to) {
|
||||||
case 'int':
|
case 'int':
|
||||||
case 'integer':
|
case 'integer':
|
||||||
value = parseInt(value);
|
value = parseInt(value);
|
||||||
break;
|
break;
|
||||||
case 'string':
|
case 'string':
|
||||||
value = value.toString();
|
value = value.toString();
|
||||||
break;
|
break;
|
||||||
case 'json':
|
case 'json':
|
||||||
value = (value) ? JSON.parse(value) : [];
|
value = (value) ? JSON.parse(value) : [];
|
||||||
break;
|
break;
|
||||||
case 'array':
|
case 'array':
|
||||||
value = (value.constructor === Array) ? value : [value];
|
value = (value.constructor === Array) ? value : [value];
|
||||||
break;
|
break;
|
||||||
case 'array-empty':
|
case 'array-empty':
|
||||||
value = [];
|
value = [];
|
||||||
break;
|
break;
|
||||||
case 'bool':
|
case 'bool':
|
||||||
case 'boolean':
|
case 'boolean':
|
||||||
value = (value === 'false') ? false : value;
|
value = (value === 'false') ? false : value;
|
||||||
value = !!value;
|
value = !!value;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
function toJson(element, json) {
|
||||||
}
|
json = json || {};
|
||||||
|
let name = element.getAttribute('name');
|
||||||
|
let type = element.getAttribute('type');
|
||||||
|
let castTo = element.getAttribute('data-cast-to');
|
||||||
|
let ref = json;
|
||||||
|
|
||||||
function toJson(element, json) {
|
if (name && 'FORM' !== element.tagName) {
|
||||||
json = json || {};
|
if ('FIELDSET' === element.tagName) { // Fieldset Array / Object
|
||||||
let name = element.getAttribute('name');
|
if (castTo === 'object') {
|
||||||
let type = element.getAttribute('type');
|
|
||||||
let castTo = element.getAttribute('data-cast-to');
|
|
||||||
let ref = json;
|
|
||||||
|
|
||||||
if(name && 'FORM' !== element.tagName) {
|
if (json[name] === undefined) {
|
||||||
if('FIELDSET' === element.tagName) { // Fieldset Array / Object
|
json[name] = {};
|
||||||
if(castTo === 'object') {
|
}
|
||||||
|
|
||||||
if(json[name] === undefined) {
|
ref = json[name];
|
||||||
json[name] = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
ref = json[name];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(!Array.isArray(json[name])) {
|
|
||||||
json[name] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
json[name].push({});
|
|
||||||
|
|
||||||
ref = json[name][json[name].length - 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (undefined !== element.value) {
|
|
||||||
if ('SELECT' === element.tagName && element.children > 0) { // Select
|
|
||||||
json[name] = element.children[element.selectedIndex].value;
|
|
||||||
}
|
|
||||||
else if ('radio' === type) { // Radio
|
|
||||||
if(element.checked) {
|
|
||||||
json[name] = element.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ('checkbox' === type) { // Checkbox
|
|
||||||
if(!Array.isArray(json[name])) {
|
|
||||||
json[name] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(element.checked) {
|
|
||||||
json[name].push(element.value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (undefined !== element.value) { // Normal
|
|
||||||
|
|
||||||
if ((json[name] !== undefined) && (!Array.isArray(json[name]))) { // Support for list array when name is repeating more than once
|
|
||||||
json[name] = [json[name]];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Array.isArray(json[name])) {
|
|
||||||
json[name].push(element.value);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
json[name] = element.value;
|
if (!Array.isArray(json[name])) {
|
||||||
|
json[name] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
json[name].push({});
|
||||||
|
|
||||||
|
ref = json[name][json[name].length - 1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (undefined !== element.value) {
|
||||||
|
if ('SELECT' === element.tagName && element.children > 0) { // Select
|
||||||
|
json[name] = element.children[element.selectedIndex].value;
|
||||||
|
}
|
||||||
|
else if ('radio' === type) { // Radio
|
||||||
|
if (element.checked) {
|
||||||
|
json[name] = element.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ('checkbox' === type) { // Checkbox
|
||||||
|
if (!Array.isArray(json[name])) {
|
||||||
|
json[name] = [];
|
||||||
|
}
|
||||||
|
|
||||||
json[name] = cast(json[name], castTo);
|
if (element.checked) {
|
||||||
|
json[name].push(element.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ('file' === type) { // File upload
|
||||||
|
console.log('form2json file:', element.files);
|
||||||
|
json[name] = element.files[0];
|
||||||
|
}
|
||||||
|
else if (undefined !== element.value) { // Normal
|
||||||
|
|
||||||
|
if ((json[name] !== undefined) && (!Array.isArray(json[name]))) { // Support for list array when name is repeating more than once
|
||||||
|
json[name] = [json[name]];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(json[name])) {
|
||||||
|
json[name].push(element.value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
json[name] = element.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
json[name] = cast(json[name], castTo); // Apply casting
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < element.children.length; i++) {
|
||||||
|
if (Array.isArray(ref)) {
|
||||||
|
ref.push({});
|
||||||
|
toJson(element.children[i], ref[ref.length]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
toJson(element.children[i], ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < element.children.length; i++) {
|
return {
|
||||||
if(Array.isArray(ref)) {
|
'toJson': toJson
|
||||||
ref.push({});
|
|
||||||
toJson(element.children[i], ref[ref.length]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
toJson(element.children[i], ref);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}, true, false);
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
'toJson': toJson
|
|
||||||
}
|
|
||||||
}, true, false);
|
|
||||||
|
|
||||||
})(window);
|
})(window);
|
|
@ -1,19 +1,15 @@
|
||||||
(function (window) {
|
(function (window) {
|
||||||
window.ls.container.get('view').add({
|
window.ls.container.get('view').add({
|
||||||
selector: 'data-paging-back',
|
selector: 'data-paging-back',
|
||||||
controller: function(element, container, expression) {
|
controller: function(element, container, expression, env) {
|
||||||
let paths = [];
|
let paths = [];
|
||||||
let limit = 3;
|
let limit = env.PAGING_LIMIT;
|
||||||
|
|
||||||
let check = function () {
|
let check = function () {
|
||||||
let offset = parseInt(expression.parse(element.dataset['offset']) || '0');
|
let offset = parseInt(expression.parse(element.dataset['offset']) || '0');
|
||||||
|
|
||||||
paths = paths.concat(expression.getPaths());
|
paths = paths.concat(expression.getPaths());
|
||||||
|
|
||||||
let sum = parseInt(expression.parse(element.dataset['sum']) || '0');
|
|
||||||
|
|
||||||
paths = paths.concat(expression.getPaths());
|
|
||||||
|
|
||||||
if((offset - limit) < 0) {
|
if((offset - limit) < 0) {
|
||||||
element.disabled = true;
|
element.disabled = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
(function (window) {
|
(function (window) {
|
||||||
window.ls.container.get('view').add({
|
window.ls.container.get('view').add({
|
||||||
selector: 'data-paging-next',
|
selector: 'data-paging-next',
|
||||||
controller: function(element, container, expression) {
|
controller: function(element, container, expression, env) {
|
||||||
let paths = [];
|
let paths = [];
|
||||||
let limit = 3;
|
let limit = env.PAGING_LIMIT;
|
||||||
|
|
||||||
let check = function () {
|
let check = function () {
|
||||||
let offset = parseInt(expression.parse(element.dataset['offset']) || '0');
|
let offset = parseInt(expression.parse(element.dataset['offset']) || '0');
|
||||||
|
|
Loading…
Reference in a new issue