diff options
Diffstat (limited to 'modules-available/systemstatus/templates')
8 files changed, 338 insertions, 108 deletions
diff --git a/modules-available/systemstatus/templates/_page.html b/modules-available/systemstatus/templates/_page.html index 3d0f9dfb..dedcf01a 100644 --- a/modules-available/systemstatus/templates/_page.html +++ b/modules-available/systemstatus/templates/_page.html @@ -1,12 +1,12 @@ <h1>{{lang_moduleHeading}}</h1> -{{#rebootTask}} -<div data-tm-id="{{rebootTask}}" data-tm-log="messages">Reboot...</div> -{{/rebootTask}} +{{#taskid}} +<div data-tm-id="{{taskid}}" data-tm-log="messages">{{taskname}}</div> +{{/taskid}} <ul class="nav nav-tabs tabs-up"> <li class="active"> - <a href="#id-default_pane" id="id-default" class="active" data-toggle="tab" role="tab"> + <a href="#id-default_pane" id="id-default" class="ajax-tab" data-toggle="tab" role="tab"> {{lang_overview}} </a> </li> @@ -14,6 +14,9 @@ {{^enabled}} <li class="disabled"> <a> + {{#important}} + <span class="glyphicon glyphicon-warning-sign text-danger"></span> + {{/important}} {{name}} </a> </li> @@ -21,6 +24,9 @@ {{#enabled}} <li> <a href="#id-{{type}}_pane" class="ajax-tab" id="id-{{type}}" data-toggle="tab" role="tab"> + {{#important}} + <span class="glyphicon glyphicon-warning-sign text-danger"></span> + {{/important}} {{name}} </a> </li> @@ -100,7 +106,16 @@ </button> <div class="hidden" id="confirm-reboot">{{lang_areYouSureReboot}}</div> </form> - <div id="dmsd-users"></div> + <div id="dmsd-users"> + {{lang_runningUploads}}: <span class="uploads">??</span>, + {{lang_runningDownloads}}: <span class="downloads">??</span> + <div class="alert alert-warning collapse">{{lang_dmsdUnreachable}}</div> + </div> + <div> + {{#packages}} + {{lang_updatedPackages}}: {{packages}} + {{/packages}} + </div> </div> </div> </div> @@ -119,20 +134,48 @@ <script type="text/javascript"><!-- document.addEventListener("DOMContentLoaded", function() { - $('#diskstat').load('?do=SystemStatus&action=DiskStat'); - $('#addresses').load('?do=SystemStatus&action=AddressList'); - $('#systeminfo').load('?do=SystemStatus&action=SystemInfo'); - $('#services').load('?do=SystemStatus&action=Services'); - $('#dmsd-users').load('?do=SystemStatus&action=DmsdUsers'); var slxDone = {}; - $('.ajax-tab').on('shown.bs.tab', function (e) { + var loadTab = function (e) { var $this = $(this); var w = $this.attr('id'); if (!slxDone[w]) { slxDone[w] = true; var $pane = $('#' + w + '_pane'); - $pane.load('?do=SystemStatus&action=' + w.substring(3)); + var tab = w.substring(3); + if (tab === 'default') { + $('#diskstat').load('?do=SystemStatus&action=DiskStat'); + $('#addresses').load('?do=SystemStatus&action=AddressList'); + $('#systeminfo').load('?do=SystemStatus&action=SystemInfo'); + $('#services').load('?do=SystemStatus&action=Services'); + } else { + $pane.load('?do=SystemStatus&action=' + tab, function() { + $(this).find('button[data-confirm]').click(slxModalConfirmHandler); + }); + } } + }; + $('.ajax-tab').on('shown.bs.tab', loadTab); + // Need a better solution for this -- there is already code handling tabs in slx-fixes, maybe put this in there? + if (location.hash === '' || location.hash === '#' || location.hash === '#id-default_pane') { + history.replaceState(null, null, '#id-default_pane'); + loadTab.call($('#id-default')); + } + var $dmsd = $('#dmsd-users'); + $.ajax({ + url: '?do=dozmod§ion=special&action=dmsd-status', + timeout: 3000, + dataType: 'json' + }).done(function (data) { + if (!data || data.error) { + $dmsd.find('.alert').show(); + } else { + if (data.downloads !== null) $dmsd.find('.downloads').text(data.downloads); + if (data.uploads !== null) $dmsd.find('.uploads').text(data.uploads); + } + }).fail(function () { + $dmsd.find('.alert').show(); }); }, false); //--></script> + +<div class="hidden" id="confirm-restart">{{lang_confirmRestart}}</div>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/ajax-journal.html b/modules-available/systemstatus/templates/ajax-journal.html new file mode 100644 index 00000000..5b476d9c --- /dev/null +++ b/modules-available/systemstatus/templates/ajax-journal.html @@ -0,0 +1,20 @@ +<form method="post" action="?do=systemstatus"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="service-restart"> + {{#modules}} + <div class="slx-space"> + <div class="pull-right"> + <button class="btn btn-warning btn-sm pull-right" name="service" value="{{service}}" + data-confirm="#confirm-restart" {{restart_disabled}}> + <span class="glyphicon glyphicon-refresh"></span> + {{lang_restart}} + </button> + </div> + <h4>{{name}}</h4> + <div data-tm-id="{{task.id}}" data-tm-log="messages">{{service}}</div> + </div> + {{/modules}} +</form> +<script> + tmInit(); +</script>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/ajax-reboot.html b/modules-available/systemstatus/templates/ajax-reboot.html deleted file mode 100644 index a1aaf1e6..00000000 --- a/modules-available/systemstatus/templates/ajax-reboot.html +++ /dev/null @@ -1,14 +0,0 @@ -<div> - {{^dmsd_error}} - {{lang_uploads}}: {{uploads}}, - {{lang_downloads}}: {{downloads}} - {{/dmsd_error}} - {{#dmsd_error}} - <div class="alert alert-warning">{{lang_dmsdUnreachable}}</div> - {{/dmsd_error}} -</div> -<div> - {{#packages}} - {{lang_updatedPackages}}: {{packages}} - {{/packages}} -</div>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/diskstat.html b/modules-available/systemstatus/templates/diskstat.html index 528d9792..1cb8a3ef 100644 --- a/modules-available/systemstatus/templates/diskstat.html +++ b/modules-available/systemstatus/templates/diskstat.html @@ -1,6 +1,7 @@ <div class="slx-storechart"> {{#system}} <b>{{lang_systemPartition}}</b> + <span class="glyphicon glyphicon-info-sign" title={{filesystem}}/> <div id="circles-system"></div> <div>{{lang_capacity}}: {{size}}</div> <div>{{lang_free}}: {{free}}</div> @@ -12,6 +13,7 @@ <div class="slx-storechart"> {{#store}} <b>{{lang_vmStore}}</b> + <span class="glyphicon glyphicon-info-sign" title={{filesystem}}/> <div id="circles-store"></div> <div>{{lang_capacity}}: {{size}}</div> <div>{{lang_free}}: {{free}}</div> diff --git a/modules-available/systemstatus/templates/services.html b/modules-available/systemstatus/templates/services.html index 29b33687..2614fca9 100644 --- a/modules-available/systemstatus/templates/services.html +++ b/modules-available/systemstatus/templates/services.html @@ -1,20 +1,20 @@ +<form method="post" action="?do=systemstatus"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="service-start"> + <table class="table"> {{#services}} - {{#unknown}} - <div class="alert alert-warning"> - {{name}}: {{lang_unknownState}} - </div> - {{/unknown}} - {{^unknown}} + <tr class="bg-{{#fail}}danger{{/fail}}{{^fail}}success{{/fail}}"> + <td> {{#fail}} - <div class="alert alert-danger"> - {{name}}: <b>{{lang_failure}}</b> - {{#data.messages}}<pre>{{data.messages}}</pre>{{/data.messages}} - </div> + <button class="btn btn-default btn-xs pull-right" name="service" value="{{service}}"> + {{lang_restart}} + </button> {{/fail}} - {{^fail}} - <div class="alert alert-success"> - {{name}}: {{lang_OK}} - </div> - {{/fail}} - {{/unknown}} + {{name}}: {{#fail}}{{lang_failure}}{{/fail}}{{^fail}}{{lang_OK}}{{/fail}} + <div class="clearfix"></div> + {{#error}}<pre>{{error}}</pre>{{/error}} + </td> + </tr> {{/services}} + </table> +</form>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/sys-update-main.html b/modules-available/systemstatus/templates/sys-update-main.html new file mode 100644 index 00000000..ca502ddb --- /dev/null +++ b/modules-available/systemstatus/templates/sys-update-main.html @@ -0,0 +1,118 @@ +<div class="panel panel-default"> + <div class="panel-body"> + <div class="pull-right"> + <form action="?do=systemstatus" method="post"> + <input type="hidden" name="token" value="{{token}}"> + <div> + <button type="submit" class="btn btn-success" name="action" + value="apt-update" {{perm.apt.update.disabled}}> + <span class="glyphicon glyphicon-refresh"></span> + {{lang_checkForUpdates}} + </button> + </div> + <div class="slx-smallspace"></div> + <div class="btn-group dropdown"> + <button type="submit" class="btn btn-primary" name="action" + value="apt-upgrade" {{perm.apt.upgrade.disabled}}> + <span class="glyphicon glyphicon-play"></span> + {{lang_runUpdate}} + </button> + <button type="button" class="btn btn-primary dropdown-toggle" + data-toggle="dropdown" aria-haspopup="true"> + <span class="caret"></span> + <span class="sr-only">Toggle Dropdown</span> + </button> + <div class="dropdown-menu" style="padding:0"> + <div class="btn-group-vertical"> + <button type="submit" name="action" value="apt-full-upgrade" class="btn btn-primary" + style="text-align: left !important" {{perm.apt.upgrade.disabled}}> + <span class="glyphicon glyphicon-play"></span> + {{lang_runFullUpdate}} + </button> + <button type="submit" name="action" value="apt-autoremove" class="btn btn-primary" + style="text-align: left !important" {{perm.apt.autoremove.disabled}}> + <span class="glyphicon glyphicon-trash"></span> + {{lang_removeUnusedPackages}} + </button> + <button type="submit" name="action" value="apt-fix" class="btn btn-primary" + style="text-align: left !important" {{perm.apt.fix.disabled}}> + <span class="glyphicon glyphicon-wrench"></span> + {{lang_fixDependencies}} + </button> + </div> + </div> + </div> + </form> + </div> + <table> + <tr> + <td>{{lang_lastestUpdate}}: </td> + <td>{{lastChanged}}</td> + <tr> + <tr> + <td>{{lang_lastUpdateCheck}}: </td> + <td>{{lastDownload}}</td> + </tr> + <tr> + <td>{{lang_lastPackageInstall}}: </td> + <td>{{lastInstalled}}</td> + <tr> + </table> + {{#list_old}} + <div class="slx-smallspace"></div> + <div class="text-danger"> + {{lang_listOldWarning}} + </div> + {{/list_old}} + </div> +</div> + +{{#task.packages.0}} + <table class="table table-condensed"> + <thead> + <tr> + <th>{{lang_package}}</th> + <th colspan="3">{{lang_versionFromTo}}</th> + </tr> + </thead> + {{#task.packages}} + <tr class="{{row_class}}"> + <td><strong>{{name}}</strong><span class="text-muted">/{{source}}</span></td> + <td class="slx-smallcol">{{oldVersion}}</td> + <td class="slx-smallcol">→</td> + <td class="slx-smallcol">{{newVersion}}</td> + </tr> + {{/task.packages}} + </table> +{{/task.packages.0}} + +{{^task.packages}} + {{^task.error}} + <div class="alert alert-success"> + <span class="glyphicon glyphicon-ok"></span> + {{lang_everythingUpToDate}} + </div> + {{/task.error}} +{{/task.packages}} + +{{#needReboot}} + <div class="alert alert-warning"> + <span class="glyphicon glyphicon-exclamation-sign"></span> + {{lang_packagesNeedingReboot}}: + <a href="#id-default_pane"> + {{.}} + </a> + </div> +{{/needReboot}} + +{{#task.error}} + <div class="alert alert-warning">{{task.error}}</div> +{{/task.error}} + +<div> + <a href="https://www.bwlehrpool.de/wiki/doku.php/satellite/system_updates" target="_blank"> + {{lang_updatesWikiLink}} + <span class="glyphicon glyphicon-new-window"></span> + </a> +</div> +<div class="clearfix"></div>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/sys-update-update.html b/modules-available/systemstatus/templates/sys-update-update.html new file mode 100644 index 00000000..7be4e648 --- /dev/null +++ b/modules-available/systemstatus/templates/sys-update-update.html @@ -0,0 +1,35 @@ +<div id="apt-output" data-tm-id="{{taskid}}" data-tm-log="output" + data-tm-callback="aptUpdate">{{lang_aptOutput}}</div> + +<div class="buttonbar pull-right" id="btn-bar"> + <a id="fail-button" href="?do=systemstatus&rnd={{rnd}}#id-ListUpgradable_pane" class="btn btn-warning collapse"> + <span class="glyphicon glyphicon-arrow-left"></span> + {{lang_backToPackagelist}} + </a> + <a id="success-button" href="?do=systemstatus&rnd={{rnd}}#id-ListUpgradable_pane" class="btn btn-success + collapse"> + <span class="glyphicon glyphicon-arrow-right"></span> + {{lang_showPackageList}} + </a> +</div> +<div class="clearfix"></div> + +<script> + function aptUpdate(task) { + if (task.statusCode === 'TASK_ERROR') { + if (task.data && task.data.error) { + $('#apt-output').append($('<pre class="text-danger slx-bold">').text(task.data.error)); + } + $('#fail-button').show(); + } + if (task.statusCode === 'TASK_FINISHED') { + $('#success-button').show(); + } + } + + tmInit(); + $('#btn-bar a').click(function () { + window.location.reload(); + return false; + }); +</script>
\ No newline at end of file diff --git a/modules-available/systemstatus/templates/systeminfo.html b/modules-available/systemstatus/templates/systeminfo.html index ed4a1532..2489bcaa 100644 --- a/modules-available/systemstatus/templates/systeminfo.html +++ b/modules-available/systemstatus/templates/systeminfo.html @@ -1,6 +1,6 @@ -<div> - {{lang_uptimeOS}}: {{uptime}} -</div> +<div>{{lang_uptimeOS}}: <b>{{uptime}}</b></div> +<div>{{lang_distribution}}: <b>{{distribution}}</b></div> +<div>{{lang_kernel}}: <b>{{kernel}}</b></div> <div class="slx-storechart"> <b>{{lang_cpuLoad}}</b> @@ -48,68 +48,94 @@ {{/swapWarning}} <script type="text/javascript"> - {{#cpuLoadOk}} - var cpuCircle = Circles.create({ - id: 'circles-cpuload', - radius: 60, - value: {{{cpuLoad}}}, - maxValue: 100, - width: 10, - text: function(value){return value + '%'; }, - colors: ['#dbc', '#33f'], - duration: 400, - wrpClass: 'circles-wrp', - textClass: 'circles-text' - }); - var lastCpuTotal = {{CpuTotal}}; - var lastCpuIdle = {{CpuIdle}}; - var lastCpuPercent = {{cpuLoad}}; - {{/cpuLoadOk}} - {{#memTotal}} - var memCircle = Circles.create({ - id: 'circles-mem', - radius: 60, - value: {{{memPercent}}}, - maxValue: 100, - width: 10, - text: function(value){return value + '%'; }, - colors: ['#dbc', '#33f'], - duration: 400, - wrpClass: 'circles-wrp', - textClass: 'circles-text' - }); - var swapCircle = Circles.create({ - id: 'circles-swap', - radius: 60, - value: {{{swapPercent}}}, - maxValue: 100, - width: 10, - text: function(value){return value + '%'; }, - colors: ['#dbc', '#f33'], - duration: 400, - wrpClass: 'circles-wrp', - textClass: 'circles-text' - }); - {{/memTotal}} - function updateSystem() { - if (!cpuCircle && !memCircle) return; - $.post('?do=SystemStatus&action=SysPoll', { token: TOKEN }, function(data) { - if (memCircle && data.MemPercent) memCircle.update(data.MemPercent); - if (swapCircle && data.SwapPercent) swapCircle.update(data.SwapPercent); - if (cpuCircle && data.CpuIdle) { - var total = data.CpuTotal - lastCpuTotal; - var load = total - (data.CpuIdle - lastCpuIdle); - var percent = Math.round(100 * load / total); - cpuCircle.update(percent, Math.abs(percent - lastCpuPercent) < 5 ? 0 : 250); - lastCpuTotal = data.CpuTotal; - lastCpuIdle = data.CpuIdle; - lastCpuPercent = percent; + (function () { + var hiddenProp; + if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support + hiddenProp = "hidden"; + } else if (typeof document.msHidden !== "undefined") { + hiddenProp = "msHidden"; + } else if (typeof document.webkitHidden !== "undefined") { + hiddenProp = "webkitHidden"; + } else { + hiddenProp = null; + } + + {{#cpuLoadOk}} + var cpuCircle = Circles.create({ + id: 'circles-cpuload', + radius: 60, + value: {{{cpuLoad}}}, + maxValue: 100, + width: 10, + text: function (value) { + return value + '%'; + }, + colors: ['#dbc', '#33f'], + duration: 400, + wrpClass: 'circles-wrp', + textClass: 'circles-text' + }); + var $cpu = $(cpuCircle._el); + var lastCpuTotal = {{CpuTotal}}; + var lastCpuIdle = {{CpuIdle}}; + var lastCpuPercent = {{cpuLoad}}; + {{/cpuLoadOk}} + {{#memTotal}} + var memCircle = Circles.create({ + id: 'circles-mem', + radius: 60, + value: {{{memPercent}}}, + maxValue: 100, + width: 10, + text: function (value) { + return value + '%'; + }, + colors: ['#dbc', '#33f'], + duration: 400, + wrpClass: 'circles-wrp', + textClass: 'circles-text' + }); + var swapCircle = Circles.create({ + id: 'circles-swap', + radius: 60, + value: {{{swapPercent}}}, + maxValue: 100, + width: 10, + text: function (value) { + return value + '%'; + }, + colors: ['#dbc', '#f33'], + duration: 400, + wrpClass: 'circles-wrp', + textClass: 'circles-text' + }); + {{/memTotal}} + + function updateSystem() { + if (!cpuCircle && !memCircle) return; + if (!$cpu.is(':visible') || (hiddenProp && document[hiddenProp])) { + setTimeout(updateSystem, 2500); + return; } - }, 'json').fail(function(data) { - console.log(data); - }).always(function() { - setTimeout(updateSystem, 1200); - }); - } - setTimeout(updateSystem, 1000); + $.post('?do=SystemStatus&action=SysPoll', {token: TOKEN}, function (data) { + if (memCircle && data.MemPercent) memCircle.update(data.MemPercent); + if (swapCircle && data.SwapPercent) swapCircle.update(data.SwapPercent); + if (cpuCircle && data.CpuIdle) { + var total = data.CpuTotal - lastCpuTotal; + var load = total - (data.CpuIdle - lastCpuIdle); + var percent = Math.round(100 * load / total); + cpuCircle.update(percent, Math.abs(percent - lastCpuPercent) < 5 ? 0 : 250); + lastCpuTotal = data.CpuTotal; + lastCpuIdle = data.CpuIdle; + lastCpuPercent = percent; + } + }, 'json').fail(function (data) { + console.log(data); + }).always(function () { + setTimeout(updateSystem, 1200); + }); + } + + setTimeout(updateSystem, 1000); + })(); </script> |