'use strict';
'require baseclass';
'require ui';
'require view.ruantiblock.log-base as base';
document.head.append(E('style', {'type': 'text/css'},
`
#logTable {
width: calc(100% - 4px);
}
.log-entry-time-cell {
min-width: 14em !important;
}
.log-entry-host-cell {
min-width: 10em !important;
overflow-wrap: anywhere !important;
}
.log-entry-message-cell {
min-width: 20em !important;
white-space: pre-wrap !important;
overflow-wrap: anywhere !important;
}
.log-entry-text-nowrap {
white-space: nowrap !important;
};
`));
return baseclass.extend({
view: base.view.extend({
filterHighlightFunc(match) {
return `${match}`;
},
makeLogArea(logdataArray) {
let lines = `
| ${_('No entries available...')} |
`;
let logTable = E('table', { 'id': 'logTable', 'class': 'table' });
for(let level of Object.keys(this.logLevels)) {
this.logLevelsStat[level] = 0;
};
if(logdataArray.length > 0) {
lines = [];
logdataArray.forEach((e, i) => {
if(e[4] in this.logLevels) {
this.logLevelsStat[e[4]] = this.logLevelsStat[e[4]] + 1;
};
lines.push(
`| ${e[0]} | ` +
((e[1]) ? `${e[1]} | ` : '') +
((e[2]) ? `${e[2]} | ` : '') +
((e[3]) ? `${e[3]} | ` : '') +
((e[4]) ? `${e[4]} | ` : '') +
((e[5]) ? `${e[5]} | ` : '') +
'
'
);
});
lines = lines.join('');
logTable.append(
E('tr', { 'class': 'tr table-titles' }, [
E('th', { 'class': 'th left log-entry-text-nowrap' }, '#'),
(logdataArray[0][1]) ?
E('th', { 'class': 'th left log-entry-text-nowrap' }, _('Timestamp')) : '',
(logdataArray[0][2]) ?
E('th', { 'class': 'th left log-entry-text-nowrap' }, _('Host')) : '',
(logdataArray[0][3]) ?
E('th', { 'class': 'th left log-entry-text-nowrap' }, _('Facility')) : '',
(logdataArray[0][4]) ?
E('th', { 'class': 'th left log-entry-text-nowrap' }, _('Level')) : '',
(logdataArray[0][5]) ?
E('th', { 'class': 'th left log-entry-text-nowrap' }, _('Message')) : '',
])
);
};
try {
logTable.insertAdjacentHTML('beforeend', lines);
} catch(err) {
if(err.name === 'SyntaxError') {
ui.addNotification(null,
E('p', {}, _('HTML/XML error') + ': ' + err.message), 'error');
};
throw err;
};
let levelsStatString = '';
if((Object.values(this.logLevelsStat).reduce((s,c) => s + c, 0)) > 0) {
Object.entries(this.logLevelsStat).forEach(e => {
if(e[0] in this.logLevels && e[1] > 0) {
levelsStatString += `${e[1]}`;
};
});
};
return E([
E('div', { 'class': 'log-entries-count' },
`${_('Entries')}: ${logdataArray.length} / ${this.totalLogLines}${levelsStatString}`
),
logTable,
]);
},
}),
});