Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/views/admin/nodes/view/index.blade.php
7461 views
1
@extends('layouts.admin')
2
3
@section('title')
4
{{ $node->name }}
5
@endsection
6
7
@section('content-header')
8
<h1>{{ $node->name }}<small>A quick overview of your node.</small></h1>
9
<ol class="breadcrumb">
10
<li><a href="{{ route('admin.index') }}">Admin</a></li>
11
<li><a href="{{ route('admin.nodes') }}">Nodes</a></li>
12
<li class="active">{{ $node->name }}</li>
13
</ol>
14
@endsection
15
16
@section('content')
17
<div class="row">
18
<div class="col-xs-12">
19
<div class="nav-tabs-custom nav-tabs-floating">
20
<ul class="nav nav-tabs">
21
<li class="active"><a href="{{ route('admin.nodes.view', $node->id) }}">About</a></li>
22
<li><a href="{{ route('admin.nodes.view.settings', $node->id) }}">Settings</a></li>
23
<li><a href="{{ route('admin.nodes.view.configuration', $node->id) }}">Configuration</a></li>
24
<li><a href="{{ route('admin.nodes.view.allocation', $node->id) }}">Allocation</a></li>
25
<li><a href="{{ route('admin.nodes.view.servers', $node->id) }}">Servers</a></li>
26
</ul>
27
</div>
28
</div>
29
</div>
30
<div class="row">
31
<div class="col-sm-8">
32
<div class="row">
33
<div class="col-xs-12">
34
<div class="box box-primary">
35
<div class="box-header with-border">
36
<h3 class="box-title">Information</h3>
37
</div>
38
<div class="box-body table-responsive no-padding">
39
<table class="table table-hover">
40
<tr>
41
<td>Daemon Version</td>
42
<td><code data-attr="info-version"><i class="fa fa-refresh fa-fw fa-spin"></i></code> (Latest: <code>{{ $version->getDaemon() }}</code>)</td>
43
</tr>
44
<tr>
45
<td>System Information</td>
46
<td data-attr="info-system"><i class="fa fa-refresh fa-fw fa-spin"></i></td>
47
</tr>
48
<tr>
49
<td>Total CPU Threads</td>
50
<td data-attr="info-cpus"><i class="fa fa-refresh fa-fw fa-spin"></i></td>
51
</tr>
52
</table>
53
</div>
54
</div>
55
</div>
56
@if ($node->description)
57
<div class="col-xs-12">
58
<div class="box box-default">
59
<div class="box-header with-border">
60
Description
61
</div>
62
<div class="box-body table-responsive">
63
<pre>{{ $node->description }}</pre>
64
</div>
65
</div>
66
</div>
67
@endif
68
<div class="col-xs-12">
69
<div class="box box-danger">
70
<div class="box-header with-border">
71
<h3 class="box-title">Delete Node</h3>
72
</div>
73
<div class="box-body">
74
<p class="no-margin">Deleting a node is a irreversible action and will immediately remove this node from the panel. There must be no servers associated with this node in order to continue.</p>
75
</div>
76
<div class="box-footer">
77
<form action="{{ route('admin.nodes.view.delete', $node->id) }}" method="POST">
78
{!! csrf_field() !!}
79
{!! method_field('DELETE') !!}
80
<button type="submit" class="btn btn-danger btn-sm pull-right" {{ ($node->servers_count < 1) ?: 'disabled' }}>Yes, Delete This Node</button>
81
</form>
82
</div>
83
</div>
84
</div>
85
</div>
86
</div>
87
<div class="col-sm-4">
88
<div class="box box-primary">
89
<div class="box-header with-border">
90
<h3 class="box-title">At-a-Glance</h3>
91
</div>
92
<div class="box-body">
93
<div class="row">
94
@if($node->maintenance_mode)
95
<div class="col-sm-12">
96
<div class="info-box bg-orange">
97
<span class="info-box-icon"><i class="ion ion-wrench"></i></span>
98
<div class="info-box-content" style="padding: 23px 10px 0;">
99
<span class="info-box-text">This node is under</span>
100
<span class="info-box-number">Maintenance</span>
101
</div>
102
</div>
103
</div>
104
@endif
105
<div class="col-sm-12">
106
<div class="info-box bg-{{ $stats['disk']['css'] }}">
107
<span class="info-box-icon"><i class="ion ion-ios-folder-outline"></i></span>
108
<div class="info-box-content" style="padding: 15px 10px 0;">
109
<span class="info-box-text">Disk Space Allocated</span>
110
<span class="info-box-number">{{ $stats['disk']['value'] }} / {{ $stats['disk']['max'] }} MiB</span>
111
<div class="progress">
112
<div class="progress-bar" style="width: {{ $stats['disk']['percent'] }}%"></div>
113
</div>
114
</div>
115
</div>
116
</div>
117
<div class="col-sm-12">
118
<div class="info-box bg-{{ $stats['memory']['css'] }}">
119
<span class="info-box-icon"><i class="ion ion-ios-barcode-outline"></i></span>
120
<div class="info-box-content" style="padding: 15px 10px 0;">
121
<span class="info-box-text">Memory Allocated</span>
122
<span class="info-box-number">{{ $stats['memory']['value'] }} / {{ $stats['memory']['max'] }} MiB</span>
123
<div class="progress">
124
<div class="progress-bar" style="width: {{ $stats['memory']['percent'] }}%"></div>
125
</div>
126
</div>
127
</div>
128
</div>
129
<div class="col-sm-12">
130
<div class="info-box bg-blue">
131
<span class="info-box-icon"><i class="ion ion-social-buffer-outline"></i></span>
132
<div class="info-box-content" style="padding: 23px 10px 0;">
133
<span class="info-box-text">Total Servers</span>
134
<span class="info-box-number">{{ $node->servers_count }}</span>
135
</div>
136
</div>
137
</div>
138
</div>
139
</div>
140
</div>
141
</div>
142
</div>
143
@endsection
144
145
@section('footer-scripts')
146
@parent
147
<script>
148
function escapeHtml(str) {
149
var div = document.createElement('div');
150
div.appendChild(document.createTextNode(str));
151
return div.innerHTML;
152
}
153
154
(function getInformation() {
155
$.ajax({
156
method: 'GET',
157
url: '/admin/nodes/view/{{ $node->id }}/system-information',
158
timeout: 5000,
159
}).done(function (data) {
160
$('[data-attr="info-version"]').html(escapeHtml(data.version));
161
$('[data-attr="info-system"]').html(escapeHtml(data.system.type) + ' (' + escapeHtml(data.system.arch) + ') <code>' + escapeHtml(data.system.release) + '</code>');
162
$('[data-attr="info-cpus"]').html(data.system.cpus);
163
}).fail(function (jqXHR) {
164
165
}).always(function() {
166
setTimeout(getInformation, 10000);
167
});
168
})();
169
</script>
170
@endsection
171
172