statping/source/tmpl/services.gohtml

140 lines
5.7 KiB
Go
Raw Normal View History

2018-12-04 04:17:29 +00:00
{{define "title"}}Statping | Services{{end}}
2018-10-02 06:21:14 +00:00
{{define "content"}}
2018-06-24 11:51:07 +00:00
<div class="container col-md-7 col-sm-12 mt-md-5 bg-light">
2018-06-11 03:41:02 +00:00
{{template "nav"}}
2018-06-10 01:31:13 +00:00
2018-06-22 04:02:57 +00:00
<div class="col-12">
2018-12-31 11:41:19 +00:00
{{if ne (len .Services) 0}}
2018-06-10 03:44:47 +00:00
<h3>Services</h3>
2018-10-02 06:21:14 +00:00
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col" class="d-none d-md-table-cell">Status</th>
<th scope="col" class="d-none d-md-table-cell">Visibility</th>
<th scope="col" class="d-none d-md-table-cell">Group</th>
2018-10-02 06:21:14 +00:00
<th scope="col"></th>
</tr>
</thead>
2018-11-13 19:28:21 +00:00
<tbody class="sortable" id="services_table">
2018-12-31 11:41:19 +00:00
{{range .Services}}
2018-11-29 05:25:21 +00:00
<tr id="service_{{.Id}}" data-id="{{.Id}}">
2018-10-21 16:22:26 +00:00
<td><span class="drag_icon d-none d-md-inline"><i class="fas fa-bars"></i></span> {{.Name}}</td>
<td class="d-none d-md-table-cell">{{if .Online}}<span class="badge badge-success">ONLINE</span>{{else}}<span class="badge badge-danger">OFFLINE</span>{{end}}
<i class="toggle-service fas {{if .IsRunning}}fa-toggle-on text-success{{else}}fa-toggle-off text-muted{{end}}" data-online="{{if .IsRunning}}true{{else}}false{{end}}" data-id="{{.Id}}"></i>
</td>
2019-01-03 21:09:11 +00:00
<td class="d-none d-md-table-cell">{{if .Public.Bool}}<span class="badge badge-primary">PUBLIC</span>{{else}}<span class="badge badge-secondary">PRIVATE</span>{{end}}</td>
<td class="d-none d-md-table-cell">{{if ne .GroupId 0}}<span class="badge badge-secondary">{{(Group .GroupId).Name}}</span>{{end}}</td>
2018-10-02 06:21:14 +00:00
<td class="text-right">
<div class="btn-group">
2019-02-06 18:51:30 +00:00
<a href="/service/{{ServiceLink .}}" class="btn btn-outline-secondary"><i class="fas fa-chart-area"></i> View</a>
{{if Auth}}<a href="/api/services/{{.Id}}" class="ajax_delete btn btn-danger" data-method="DELETE" data-obj="service_{{.Id}}" data-id="{{.Id}}"><i class="fas fa-times"></i></a>{{end}}
2018-06-10 03:44:47 +00:00
</div>
2018-10-02 06:21:14 +00:00
</td>
</tr>
{{end}}
</tbody>
</table>
2018-11-13 19:28:21 +00:00
{{end}}
{{if Auth}}
<h3>Create Service</h3>
{{template "form_service" NewService}}
{{end}}
2018-10-02 06:21:14 +00:00
</div>
2018-12-31 11:41:19 +00:00
2019-01-03 17:36:30 +00:00
<div class="col-12 mt-3">
2018-12-31 11:41:19 +00:00
<h3>Groups</h3>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
2019-01-03 19:13:48 +00:00
<th scope="col">Services</th>
2019-01-03 21:09:11 +00:00
<th scope="col">Visibility</th>
2018-12-31 11:41:19 +00:00
<th scope="col"></th>
</tr>
</thead>
2019-02-20 02:11:40 +00:00
<tbody class="sortable_groups" id="groups_table">
2019-01-03 21:09:11 +00:00
{{range Groups false}}
2018-12-31 21:36:58 +00:00
<tr id="group_{{.Id}}" data-id="{{.Id}}">
2019-02-20 02:11:40 +00:00
<td><span class="drag_icon d-none d-md-inline"><i class="fas fa-bars"></i></span>{{.Name}}</td>
2019-01-03 19:13:48 +00:00
<td>{{len .Services}}</td>
2019-01-03 21:09:11 +00:00
<td>{{if .Public.Bool}}<span class="badge badge-primary">PUBLIC</span>{{else}}<span class="badge badge-secondary">PRIVATE</span>{{end}}</td>
2018-12-31 11:41:19 +00:00
<td class="text-right">
<div class="btn-group">
2019-03-22 05:34:52 +00:00
<a href="/group/{{.Id}}" class="btn btn-outline-secondary"><i class="fas fa-chart-area"></i> Edit</a>
2019-01-03 17:36:30 +00:00
{{if Auth}}<a href="/api/groups/{{.Id}}" class="ajax_delete btn btn-danger" data-method="DELETE" data-obj="group_{{.Id}}" data-id="{{.Id}}"><i class="fas fa-times"></i></a>{{end}}
2018-12-31 11:41:19 +00:00
</div>
</td>
</tr>
{{end}}
</tbody>
</table>
{{if Auth}}
2018-12-31 21:36:58 +00:00
<h3>Create Group</h3>
{{template "form_group" NewGroup}}
2018-12-31 11:41:19 +00:00
{{end}}
</div>
2018-10-02 06:21:14 +00:00
</div>
{{end}}
{{define "extra_scripts"}}
{{if USE_CDN}}
2018-12-04 05:57:11 +00:00
<script src="https://assets.statping.com/sortable.min.js"></script>
{{ else }}
<script src="/js/sortable.min.js"></script>
{{end}}
<script>
// drag and drop sorting for Services
sortable('.sortable', {
forcePlaceholderSize: true,
2018-08-23 07:28:48 +00:00
hoverClass: 'sortable_drag',
handle: '.drag_icon'
});
sortable('.sortable')[0].addEventListener('sortupdate', function(e) {
var i = 0;
var newOrder = [];
var dest = e.detail.destination.items;
dest.forEach(function(d) {
i++;
2018-11-29 05:25:21 +00:00
var dId = $(d).attr('data-id');
var o = {service: parseInt(dId), order: i};
newOrder.push(o);
});
2018-11-29 16:26:42 +00:00
$.ajax({
url: "/api/reorder/services",
type: "POST",
2019-02-20 02:11:40 +00:00
data: JSON.stringify(newOrder),
contentType: "application/json",
dataType: "json",
success: function(data) { }
});
});
// drag and drop sorting for Groups
2019-02-20 02:11:40 +00:00
sortable('.sortable_groups', {
forcePlaceholderSize: true,
hoverClass: 'sortable_drag',
handle: '.drag_icon'
});
sortable('.sortable_groups')[0].addEventListener('sortupdate', function(e) {
var i = 0;
var newOrder = [];
var dest = e.detail.destination.items;
dest.forEach(function(d) {
i++;
var dId = $(d).attr('data-id');
var o = {group: parseInt(dId), order: i};
newOrder.push(o);
});
$.ajax({
url: "/api/reorder/groups",
type: "POST",
2018-11-29 16:26:42 +00:00
data: JSON.stringify(newOrder),
contentType: "application/json",
dataType: "json",
2018-11-29 17:14:59 +00:00
success: function(data) { }
});
});
</script>
2018-10-02 06:21:14 +00:00
{{end}}