[enh] display more lines and paste logs

This commit is contained in:
ljf 2018-05-26 03:18:32 +02:00
parent 2cda2ea697
commit 663cbe84d3
11 changed files with 111 additions and 68 deletions

View file

@ -7,6 +7,7 @@
"bootstrap": "3.3.6",
"font-awesome": "4.5.0",
"handlebars": "1.3.0",
"handlebars-helper-intl": "1.1.2",
"sammy": "0.7.6",
"js-cookie": "2.1.0",
"source-sans-pro": "git://github.com/adobe-fonts/source-sans-pro.git#2.020R-ro/1.075R-it",

View file

@ -41,6 +41,7 @@ gulp.task('js', function() {
'bower_components/jquery/dist/jquery.js',
'bower_components/js-cookie/src/js.cookie.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/plugins/sammy.handlebars.js',
'bower_components/sammy/lib/plugins/sammy.json.js',

View file

@ -96,12 +96,11 @@
});
// Display journals list
app.get('#/tools/journals', function (c) {
c.api("/journals", function(categories) {
c.view('tools/tools_journals', {
app.get('#/tools/logs', function (c) {
c.api("/logs", function(categories) {
c.view('tools/tools_logs', {
"data": categories,
formatDate: function() {
console.log("caca");
return this.started_at.getDate();
}
});
@ -109,10 +108,26 @@
});
// One journal
app.get('#/tools/journals/:file_name', function (c) {
c.api("/journals/" + c.params["file_name"], function(journal) {
c.view('tools/tools_journal', {
"journal": journal,
app.get(/\#\/tools\/logs\/(.*)(\?number=(\d+))?/, function (c) {
var params = "?path=" + c.params["splat"][0];
var number = (c.params["number"])?c.params["number"]:50;
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
});
});
});

View file

@ -383,7 +383,7 @@
// Paste <pre>
prePaste: function() {
var pasteButtons = $('button[data-paste-content]');
var pasteButtons = $('button[data-paste-content],a[data-paste-content]');
pasteButtons.on('click', function(){
// Get paste content element
var preElement = $($(this).data('paste-content'));

View file

@ -10,6 +10,7 @@
// Plugins
sam.use('Handlebars', 'ms');
window.HandlebarsIntl.registerWith(Handlebars);
Handlebars.registerHelper('ucwords', function(str) {
return (str + '').replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function ($1) {
@ -122,4 +123,4 @@
app.run('#/');
});
})();
})();

View file

@ -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}}

View file

@ -11,9 +11,9 @@
<span class="pull-right fa-chevron-right"></span>
<h2 class="list-group-item-heading">{{t 'diagnosis'}}</h2>
</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>
<h2 class="list-group-item-heading">{{t 'journals'}}</h2>
<h2 class="list-group-item-heading">{{t 'logs'}}</h2>
</a>
<a href="#/tools/monitor" class="list-group-item slide clearfix">
<span class="pull-right fa-chevron-right"></span>

View 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>

View file

@ -1,30 +1,28 @@
<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/logs">{{t 'logs'}}</a>
</div>
<div class="separator"></div>
{{#if data}}
{{#data}}
{{#categories}}
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<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">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{ name }}" aria-expanded="true" aria-controls="collapse-{{ name }}">
<span class="fa-fw fa-info-circle"></span>{{ 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>{{t 'unit_operation'}}
</a>
</h2>
</div>
<div id="collapse-{{ name }}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-{{ name }}">
<div class="list-group">{{#journals}}
<a href="#/tools/journals/{{ file_name }}" class="list-group-item"><small>{{ started_at }}</small> {{ name }}</a>
{{/journals}}</div>
<div id="collapse-uo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-uo">
<div class="list-group">{{#operations}}
<a href="#/tools/logs/{{ name }}" class="list-group-item"><small>{{ started_at }}</small> {{ name }}</a>
{{/operations}}</div>
</div>
</div>
</div>
{{/categories}}
{{/data}}
{{/if}}

View file

@ -0,0 +1 @@
<div class="alert alert-warning"><i class="fa-refresh"></i> {{t 'tools_rebooting'}}</div>

View file

@ -0,0 +1 @@
<div class="alert alert-warning"><i class="fa-power-off"></i> {{t 'tools_shuttingdown'}}</div>