projects
/
project
/
luci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #7101 from dannil/mod-status-poll-logs
[project/luci.git]
/
modules
/
luci-mod-status
/
htdocs
/
luci-static
/
resources
/
view
/
status
/
syslog.js
diff --git
a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js
b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js
index 6ef7d09c70bd7ff94343515a29cd38bd5d853e36..2e3d705c222059609dba6918f1b15b9d82b4bd86 100644
(file)
--- a/
modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js
+++ b/
modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js
@@
-1,27
+1,42
@@
'use strict';
'require view';
'require fs';
'use strict';
'require view';
'require fs';
+'require poll';
'require ui';
return view.extend({
'require ui';
return view.extend({
-
load:
function() {
+
retrieveLog: async
function() {
return Promise.all([
L.resolveDefault(fs.stat('/sbin/logread'), null),
L.resolveDefault(fs.stat('/usr/sbin/logread'), null)
]).then(function(stat) {
var logger = stat[0] ? stat[0].path : stat[1] ? stat[1].path : null;
return Promise.all([
L.resolveDefault(fs.stat('/sbin/logread'), null),
L.resolveDefault(fs.stat('/usr/sbin/logread'), null)
]).then(function(stat) {
var logger = stat[0] ? stat[0].path : stat[1] ? stat[1].path : null;
- return fs.exec_direct(logger, [ '-e', '^' ]).catch(function(err) {
+ return fs.exec_direct(logger, [ '-e', '^' ]).then(logdata => {
+ const loglines = logdata.trim().split(/\n/);
+ return { value: loglines.join('\n'), rows: loglines.length + 1 };
+ }).catch(function(err) {
ui.addNotification(null, E('p', {}, _('Unable to load log data: ' + err.message)));
return '';
});
});
},
ui.addNotification(null, E('p', {}, _('Unable to load log data: ' + err.message)));
return '';
});
});
},
- render: function(logdata) {
- var loglines = logdata.trim().split(/\n/);
+ pollLog: async function() {
+ const element = document.getElementById('syslog');
+ if (element) {
+ const log = await this.retrieveLog();
+ element.value = log.value;
+ element.rows = log.rows;
+ }
+ },
+ load: async function() {
+ poll.add(this.pollLog.bind(this));
+ return await this.retrieveLog();
+ },
+ render: function(loglines) {
var scrollDownButton = E('button', {
'id': 'scrollDownButton',
'class': 'cbi-button cbi-button-neutral'
var scrollDownButton = E('button', {
'id': 'scrollDownButton',
'class': 'cbi-button cbi-button-neutral'
@@
-49,8
+64,8
@@
return view.extend({
'style': 'font-size:12px',
'readonly': 'readonly',
'wrap': 'off',
'style': 'font-size:12px',
'readonly': 'readonly',
'wrap': 'off',
- 'rows': loglines.
length + 1
- }, [ loglines.
join('\n')
]),
+ 'rows': loglines.
rows,
+ }, [ loglines.
value
]),
E('div', {'style': 'padding-bottom: 20px'}, [scrollUpButton])
])
]);
E('div', {'style': 'padding-bottom: 20px'}, [scrollUpButton])
])
]);