mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
[enh] display more lines and paste logs
This commit is contained in:
parent
2cda2ea697
commit
663cbe84d3
11 changed files with 111 additions and 68 deletions
|
@ -7,6 +7,7 @@
|
||||||
"bootstrap": "3.3.6",
|
"bootstrap": "3.3.6",
|
||||||
"font-awesome": "4.5.0",
|
"font-awesome": "4.5.0",
|
||||||
"handlebars": "1.3.0",
|
"handlebars": "1.3.0",
|
||||||
|
"handlebars-helper-intl": "1.1.2",
|
||||||
"sammy": "0.7.6",
|
"sammy": "0.7.6",
|
||||||
"js-cookie": "2.1.0",
|
"js-cookie": "2.1.0",
|
||||||
"source-sans-pro": "git://github.com/adobe-fonts/source-sans-pro.git#2.020R-ro/1.075R-it",
|
"source-sans-pro": "git://github.com/adobe-fonts/source-sans-pro.git#2.020R-ro/1.075R-it",
|
||||||
|
|
|
@ -41,6 +41,7 @@ gulp.task('js', function() {
|
||||||
'bower_components/jquery/dist/jquery.js',
|
'bower_components/jquery/dist/jquery.js',
|
||||||
'bower_components/js-cookie/src/js.cookie.js',
|
'bower_components/js-cookie/src/js.cookie.js',
|
||||||
'bower_components/handlebars/handlebars.js',
|
'bower_components/handlebars/handlebars.js',
|
||||||
|
'bower_components/handlebars-helper-intl/dist/handlebars-intl-with-locales.js',
|
||||||
'bower_components/sammy/lib/sammy.js',
|
'bower_components/sammy/lib/sammy.js',
|
||||||
'bower_components/sammy/lib/plugins/sammy.handlebars.js',
|
'bower_components/sammy/lib/plugins/sammy.handlebars.js',
|
||||||
'bower_components/sammy/lib/plugins/sammy.json.js',
|
'bower_components/sammy/lib/plugins/sammy.json.js',
|
||||||
|
|
|
@ -96,12 +96,11 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// Display journals list
|
// Display journals list
|
||||||
app.get('#/tools/journals', function (c) {
|
app.get('#/tools/logs', function (c) {
|
||||||
c.api("/journals", function(categories) {
|
c.api("/logs", function(categories) {
|
||||||
c.view('tools/tools_journals', {
|
c.view('tools/tools_logs', {
|
||||||
"data": categories,
|
"data": categories,
|
||||||
formatDate: function() {
|
formatDate: function() {
|
||||||
console.log("caca");
|
|
||||||
return this.started_at.getDate();
|
return this.started_at.getDate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -109,10 +108,26 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// One journal
|
// One journal
|
||||||
app.get('#/tools/journals/:file_name', function (c) {
|
app.get(/\#\/tools\/logs\/(.*)(\?number=(\d+))?/, function (c) {
|
||||||
c.api("/journals/" + c.params["file_name"], function(journal) {
|
var params = "?path=" + c.params["splat"][0];
|
||||||
c.view('tools/tools_journal', {
|
var number = (c.params["number"])?c.params["number"]:50;
|
||||||
"journal": journal,
|
params += "&number=" + number;
|
||||||
|
|
||||||
|
c.api("/logs/display" + params, function(log) {
|
||||||
|
if ('metadata' in log) {
|
||||||
|
if ('started_at' in log.metadata) {
|
||||||
|
log.metadata.started_at = Date.parse(log.metadata.started_at)
|
||||||
|
}
|
||||||
|
if ('ended_at' in log.metadata) {
|
||||||
|
log.metadata.ended_at = Date.parse(log.metadata.ended_at)
|
||||||
|
}
|
||||||
|
if (!'env' in log.metadata && 'args' in log.metadata) {
|
||||||
|
log.metadata.env = log.metadata.args
|
||||||
|
}
|
||||||
|
}
|
||||||
|
c.view('tools/tools_log', {
|
||||||
|
"log": log,
|
||||||
|
"next_number": log.logs.length == number ? number * 10:false
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -383,7 +383,7 @@
|
||||||
|
|
||||||
// Paste <pre>
|
// Paste <pre>
|
||||||
prePaste: function() {
|
prePaste: function() {
|
||||||
var pasteButtons = $('button[data-paste-content]');
|
var pasteButtons = $('button[data-paste-content],a[data-paste-content]');
|
||||||
pasteButtons.on('click', function(){
|
pasteButtons.on('click', function(){
|
||||||
// Get paste content element
|
// Get paste content element
|
||||||
var preElement = $($(this).data('paste-content'));
|
var preElement = $($(this).data('paste-content'));
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
// Plugins
|
// Plugins
|
||||||
sam.use('Handlebars', 'ms');
|
sam.use('Handlebars', 'ms');
|
||||||
|
window.HandlebarsIntl.registerWith(Handlebars);
|
||||||
|
|
||||||
Handlebars.registerHelper('ucwords', function(str) {
|
Handlebars.registerHelper('ucwords', function(str) {
|
||||||
return (str + '').replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function ($1) {
|
return (str + '').replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function ($1) {
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
{{#journal}}
|
|
||||||
<div class="btn-breadcrumb">
|
|
||||||
<a href="#/" ><i class="fa-home"></i><span class="sr-only">{{t 'home'}}</span></a>
|
|
||||||
<a href="#/tools">{{t 'tools'}}</a>
|
|
||||||
<a href="#/tools/journals">{{t 'journals'}}</a>
|
|
||||||
<a href="#/tools/journals/" + {{ file_name }}>{{ name }} - {{ started_at }}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="separator"></div>
|
|
||||||
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h2 class="panel-title"><span class="fa-fw fa-info-circle"></span> {{ name }}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<dl class="dl-horizontal">
|
|
||||||
<dt>{{t 'started_at'}}</dt> <dd>{{ started_at }}</dd>
|
|
||||||
<dt>{{t 'path'}}</dt> <dd>{{ path }}</dd>
|
|
||||||
{{#each metadata}}
|
|
||||||
<dt>{{@key}}</dt>
|
|
||||||
<dd>{{.}}</dd>
|
|
||||||
{{/each}}
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h2 class="panel-title"><span class="fa-fw fa-file-text"></span> {{t 'logs'}}</h2>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body overflow-auto">
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td> <!-- no indent because pre is sensible to whitespaces -->
|
|
||||||
<pre>{{#logs}}{{datetime}}
|
|
||||||
{{/logs}}</pre>
|
|
||||||
</td>
|
|
||||||
<td class="full-width"> <!-- no indent because pre is sensible to whitespaces -->
|
|
||||||
<pre class="full-width">{{#logs}}{{{line}}}
|
|
||||||
{{/logs}}</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/journal}}
|
|
|
@ -11,9 +11,9 @@
|
||||||
<span class="pull-right fa-chevron-right"></span>
|
<span class="pull-right fa-chevron-right"></span>
|
||||||
<h2 class="list-group-item-heading">{{t 'diagnosis'}}</h2>
|
<h2 class="list-group-item-heading">{{t 'diagnosis'}}</h2>
|
||||||
</a>
|
</a>
|
||||||
<a href="#/tools/journals" class="list-group-item slide clearfix">
|
<a href="#/tools/logs" class="list-group-item slide clearfix">
|
||||||
<span class="pull-right fa-chevron-right"></span>
|
<span class="pull-right fa-chevron-right"></span>
|
||||||
<h2 class="list-group-item-heading">{{t 'journals'}}</h2>
|
<h2 class="list-group-item-heading">{{t 'logs'}}</h2>
|
||||||
</a>
|
</a>
|
||||||
<a href="#/tools/monitor" class="list-group-item slide clearfix">
|
<a href="#/tools/monitor" class="list-group-item slide clearfix">
|
||||||
<span class="pull-right fa-chevron-right"></span>
|
<span class="pull-right fa-chevron-right"></span>
|
||||||
|
|
71
src/views/tools/tools_log.ms
Normal file
71
src/views/tools/tools_log.ms
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
<div class="btn-breadcrumb">
|
||||||
|
<a href="#/" ><i class="fa-home"></i><span class="sr-only">{{t 'home'}}</span></a>
|
||||||
|
<a href="#/tools">{{t 'tools'}}</a>
|
||||||
|
<a href="#/tools/logs">{{t 'logs'}}</a>
|
||||||
|
<a href="#/tools/logs/{{ log.log_path }}">{{ log.log_path }}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="actions-group">
|
||||||
|
<a data-paste-content="#log" class="btn btn-success">
|
||||||
|
<span class="fa-cloud-upload"></span> {{t 'upload'}}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="separator"></div>
|
||||||
|
|
||||||
|
{{#if log.metadata}}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title"><span class="fa-fw fa-info-circle"></span> {{ log.description }}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>{{t 'path'}}</dt> <dd>{{ log.log_path }}</dd>
|
||||||
|
{{#if log.metadata.started_at}}
|
||||||
|
<dt>{{t 'started_at'}}</dt>
|
||||||
|
<dd>{{formatTime log.metadata.started_at day="numeric" month="long" year="numeric" hour="numeric" minute="numeric"}}</dd>
|
||||||
|
{{/if}}
|
||||||
|
{{#if log.metadata.ended_at}}
|
||||||
|
<dt>{{t 'ended_at'}}</dt>
|
||||||
|
<dd>{{formatTime log.metadata.ended_at day="numeric" month="long" year="numeric" hour="numeric" minute="numeric"}}</dd>
|
||||||
|
{{/if}}
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#if log.metadata.env}}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading" role="tab" id="heading-context">
|
||||||
|
<h2 class="panel-title">
|
||||||
|
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-context" aria-expanded="true" aria-controls="collapse-context">
|
||||||
|
<span class="fa-fw fa-bug"></span>{{t 'Context'}}
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="collapse-context" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-context">
|
||||||
|
<div class="panel-body">
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
{{#each log.metadata.env}}
|
||||||
|
<dt>{{@key}}</dt>
|
||||||
|
<dd>{{.}}</dd>
|
||||||
|
{{/each}}
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{/if}}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title"><span class="fa-fw fa-file-text"></span> {{#if log.metadata}}{{t 'logs'}}{{else}}{{log.log_path}}{{/if}}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body overflow-auto">
|
||||||
|
{{#if log.metadata.error}}
|
||||||
|
<div class="alert alert-warning" role="alert"><span class="fas fa-exclamation-triangle"></span> <strong>{{t 'Error'}}</strong>: {{log.metadata.error}}</div>
|
||||||
|
{{/if}}
|
||||||
|
<!-- no indent because pre is sensible to whitespaces -->
|
||||||
|
{{#if next_number}}<a href="#/tools/logs/{{ log.log_path }}?number={{ next_number }}">MORE</a>{{/if}}
|
||||||
|
<pre id="log" class="full-width">{{#log.logs}}{{.}}
|
||||||
|
{{/log.logs}}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -1,30 +1,28 @@
|
||||||
<div class="btn-breadcrumb">
|
<div class="btn-breadcrumb">
|
||||||
<a href="#/" ><i class="fa-home"></i><span class="sr-only">{{t 'home'}}</span></a>
|
<a href="#/" ><i class="fa-home"></i><span class="sr-only">{{t 'home'}}</span></a>
|
||||||
<a href="#/tools">{{t 'tools'}}</a>
|
<a href="#/tools">{{t 'tools'}}</a>
|
||||||
<a href="#/tools/journals">{{t 'journals'}}</a>
|
<a href="#/tools/logs">{{t 'logs'}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator"></div>
|
<div class="separator"></div>
|
||||||
|
|
||||||
{{#if data}}
|
{{#if data}}
|
||||||
{{#data}}
|
{{#data}}
|
||||||
{{#categories}}
|
|
||||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading" role="tab" id="heading-{{ name }}">
|
<div class="panel-heading" role="tab" id="heading-uo">
|
||||||
<h2 class="panel-title">
|
<h2 class="panel-title">
|
||||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{ name }}" aria-expanded="true" aria-controls="collapse-{{ name }}">
|
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-uo" aria-expanded="true" aria-controls="collapse-uo">
|
||||||
<span class="fa-fw fa-info-circle"></span>{{ name }}
|
<span class="fa-fw fa-info-circle"></span>{{t 'unit_operation'}}
|
||||||
</a>
|
</a>
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapse-{{ name }}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-{{ name }}">
|
<div id="collapse-uo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-uo">
|
||||||
<div class="list-group">{{#journals}}
|
<div class="list-group">{{#operations}}
|
||||||
<a href="#/tools/journals/{{ file_name }}" class="list-group-item"><small>{{ started_at }}</small> {{ name }}</a>
|
<a href="#/tools/logs/{{ name }}" class="list-group-item"><small>{{ started_at }}</small> {{ name }}</a>
|
||||||
{{/journals}}</div>
|
{{/operations}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/categories}}
|
|
||||||
{{/data}}
|
{{/data}}
|
||||||
{{/if}}
|
{{/if}}
|
1
src/views/tools/tools_rebooting.ms
Normal file
1
src/views/tools/tools_rebooting.ms
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div class="alert alert-warning"><i class="fa-refresh"></i> {{t 'tools_rebooting'}}</div>
|
1
src/views/tools/tools_shuttingdown.ms
Normal file
1
src/views/tools/tools_shuttingdown.ms
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div class="alert alert-warning"><i class="fa-power-off"></i> {{t 'tools_shuttingdown'}}</div>
|
Loading…
Add table
Reference in a new issue