2022-10-12 16:00:41 +02:00
|
|
|
<div class="container">
|
2018-11-15 19:59:24 +01:00
|
|
|
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<h1>
|
|
|
|
|
{{ 'system.title' | tr }}
|
|
|
|
|
<a class="btn btn-default pull-right" href="/logs.html?id=box" target="_blank">{{ 'main.action.logs' | tr }}</a>
|
|
|
|
|
<button class="btn btn-default pull-right" ng-click="$parent.reboot.show()">{{ 'main.action.reboot' | tr }}</button>
|
|
|
|
|
</h1>
|
|
|
|
|
</div>
|
2020-03-05 18:26:58 -08:00
|
|
|
</div>
|
|
|
|
|
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
|
|
|
|
|
<h3 class="graphs-toolbar">
|
|
|
|
|
Graphs
|
|
|
|
|
<div class="graphs-toolbar-actions">
|
|
|
|
|
<button class="btn btn-sm btn-default" style="margin-right: 5px;" ng-click="graphs.refresh()" ng-disabled="graphs.busy"><i class="fas fa-sync-alt" ng-class="{ 'fa-spin': graphs.busy }"></i></button>
|
|
|
|
|
<div class="dropdown">
|
|
|
|
|
<button class="btn btn-sm btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
|
|
|
|
|
{{ graphs.period | trKeyFromPeriod | tr }}
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu">
|
|
|
|
|
<li><a href="" ng-click="graphs.setPeriod(6)">{{ 6 | trKeyFromPeriod | tr }}</a></li>
|
|
|
|
|
<li><a href="" ng-click="graphs.setPeriod(12)">{{ 12 | trKeyFromPeriod | tr }}</a></li>
|
|
|
|
|
<li><a href="" ng-click="graphs.setPeriod(24)">{{ 24 | trKeyFromPeriod | tr }}</a></li>
|
|
|
|
|
<li><a href="" ng-click="graphs.setPeriod(24*7)">{{ 24*7 | trKeyFromPeriod | tr }}</a></li>
|
|
|
|
|
<li><a href="" ng-click="graphs.setPeriod(24*30)">{{ 24*30 | trKeyFromPeriod | tr }}</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</h3>
|
|
|
|
|
|
|
|
|
|
<div class="card" style="min-height: 300px;">
|
|
|
|
|
<label>{{ 'system.cpuUsage.title' | tr }}</label>
|
|
|
|
|
<canvas id="graphsCPUChart" style="width: 100%;"></canvas>
|
2022-10-13 23:22:17 +02:00
|
|
|
<div class="text-muted text-center text-small">{{ 'system.cpuUsage.graphSubtext' | tr:{ threshold: '20 %'} }}</div>
|
2022-10-12 16:00:41 +02:00
|
|
|
|
2022-10-11 21:22:56 +02:00
|
|
|
<br/>
|
2022-10-12 16:00:41 +02:00
|
|
|
|
|
|
|
|
<label>{{ 'system.systemMemory.title' | tr }}</label>
|
|
|
|
|
<canvas id="graphsSystemMemoryChart" style="width: 100%;"></canvas>
|
2022-10-13 23:22:17 +02:00
|
|
|
<div class="text-muted text-center text-small">{{ 'system.systemMemory.graphSubtext' | tr:{ threshold: '1 GiB'} }}</div>
|
2022-10-11 21:22:56 +02:00
|
|
|
</div>
|
2022-10-12 16:00:41 +02:00
|
|
|
</div>
|
2022-10-11 21:22:56 +02:00
|
|
|
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="col-md-6">
|
|
|
|
|
<h3 class="graphs-toolbar">
|
|
|
|
|
{{ 'system.diskUsage.title' | tr }}
|
2022-10-12 17:05:45 +02:00
|
|
|
<span class="small disks-last-updated" ng-show="!disks.busy && disks.ts">Last updated: {{ disks.ts | prettyDate }}</span>
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="graphs-toolbar-actions">
|
2022-10-12 17:05:45 +02:00
|
|
|
<button class="btn btn-sm btn-default" style="margin-right: 5px;" ng-click="disks.refresh()" ng-disabled="disks.busy || disks.busyRefresh"><i class="fas fa-sync-alt" ng-class="{ 'fa-spin': disks.busyRefresh }"></i></button>
|
2022-10-12 16:00:41 +02:00
|
|
|
</div>
|
|
|
|
|
</h3>
|
2022-10-11 21:22:56 +02:00
|
|
|
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="card">
|
|
|
|
|
<div class="row" ng-show="disks.busy">
|
2020-05-13 21:18:34 +02:00
|
|
|
<div class="col-md-12 text-center">
|
2022-10-13 02:19:38 +02:00
|
|
|
<h2 style="margin: 60px 0;"><i class="fa fa-circle-notch fa-spin"></i></h2>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row" ng-show="!disks.busy && !disks.ts">
|
|
|
|
|
<div class="col-md-12 text-center">
|
|
|
|
|
<button class="btn btn-primary" style="margin: 60px 0;" ng-click="disks.refresh()" ng-disabled="disks.busyRefresh"><i class="fas fa-sync-alt fa-spin" ng-show="disks.busyRefresh"></i> Analyze Disk</button>
|
2020-05-13 21:18:34 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-10-12 16:27:19 +02:00
|
|
|
<div ng-hide="disks.busy" class="ng-hide">
|
2022-10-12 16:00:41 +02:00
|
|
|
<div class="row" ng-repeat="disk in disks.disks" style="margin-bottom: 20px;">
|
2020-05-13 21:18:34 +02:00
|
|
|
<div class="col-md-12">
|
2022-11-04 12:05:21 +01:00
|
|
|
<div style="display: flex; align-items: baseline; justify-content: space-between;">
|
|
|
|
|
<h3 class="no-wrap" style="font-size: 20px;" ng-bind-html="'system.diskUsage.mountedAt' | tr:{ filesystem: disk.filesystem, mountpoint: disk.mountpoint }"></h3>
|
|
|
|
|
<div class="text-muted" style="white-space:nowrap;" ng-show="disk.available && disk.size" ng-bind-html="'system.diskUsage.usedInfo' | tr:{ used: (disk.used | prettyDiskSize), size: (disk.size | prettyDiskSize) }"></div>
|
|
|
|
|
<div class="text-muted" style="white-space:nowrap;" ng-hide="disk.available && disk.size">{{ 'system.diskUsage.notAvailableYet' | tr }}</div>
|
|
|
|
|
</div>
|
2020-05-13 21:18:34 +02:00
|
|
|
<div class="progress">
|
2022-10-12 16:26:09 +02:00
|
|
|
<div class="progress-bar" ng-repeat="content in disk.contents" style="width: {{ content.usage / disk.size * 100 }}%; background-color: {{ content.color }};" uib-tooltip="{{ content.label + ' ' + (content.usage | prettyDiskSize) }}"></div>
|
2022-11-04 12:50:19 +01:00
|
|
|
<div class="text-center text-muted">{{ disk.available | prettyDiskSize }}</div>
|
2020-05-13 21:18:34 +02:00
|
|
|
</div>
|
|
|
|
|
<br/>
|
2020-11-12 23:13:52 +01:00
|
|
|
<p>{{ 'system.diskUsage.diskContent' | tr:{ filesystem: disk.filesystem, mountpoint: disk.mountpoint } }}:</p>
|
2022-10-12 16:47:25 +02:00
|
|
|
<div ng-repeat="content in disk.contents" class="disk-content">
|
|
|
|
|
<span class="color-indicator" style="background-color: {{ content.color }};"> </span>
|
|
|
|
|
<span ng-show="content.type === 'standard'">{{ content.label || content.id }}</span>
|
2022-10-14 12:31:45 +02:00
|
|
|
<span ng-show="content.type === 'app'">
|
|
|
|
|
<a href="https://{{ content.app.fqdn }}" target="_blank" ng-hide="content.uninstalled">{{ content.app.label || content.app.fqdn }}</a>
|
|
|
|
|
<span ng-show="content.uninstalled">{{ 'system.diskUsage.uninstalledApp' | tr }}</span>
|
|
|
|
|
</span>
|
2022-10-12 16:47:25 +02:00
|
|
|
<span ng-show="content.type === 'volume'"><a href="/#/volumes">{{ content.volume.name }}</a></span>
|
|
|
|
|
<small class="text-muted">{{ content.usage | prettyDiskSize }}</small>
|
|
|
|
|
</div>
|
2020-05-13 21:18:34 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-10-12 16:00:41 +02:00
|
|
|
</div>
|
2020-05-13 21:18:34 +02:00
|
|
|
|
Fix SI and Decimal unit usage
SI: For 1000, it is kB, MB, GB
IEC: For 1024, it is KiB, MiB, GiB
JEDEC: For 1024, it is KB, MB (conflicts with SI, of course)
Ultimately, what we decided is for RAM use IEC and for Disk use SI.
This is what docker does and also suggested here -
https://stackoverflow.com/questions/8632269/displaying-file-size-1000b-1kb-or-1024b-1kb
2022-10-13 21:48:03 +02:00
|
|
|
</div>
|