%PDF- %PDF-
| Direktori : /backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Core/ |
| Current File : //backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Core/service.volt |
{#
# Copyright (c) 2023 Deciso B.V.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#}
<script>
'use strict';
$( document ).ready(function () {
let grid_service = $("#grid-service").UIBootgrid({
search:'/api/core/service/search',
options:{
multiSelect: false,
rowSelect: true,
selection: false,
formatters:{
commands: function (column, row) {
if (row['locked']) {
return '<button type="button" class="btn btn-xs btn-default command-restart" data-toggle="tooltip" title="{{ lang._('Restart') }}" data-row-id="' + row.id + '"><span class="fa fa-repeat fa-fw"></span></button>';
} else if (row['running']) {
return '<button type="button" class="btn btn-xs btn-default command-restart" data-toggle="tooltip" title="{{ lang._('Restart') }}" data-row-id="' + row.id + '"><span class="fa fa-repeat fa-fw"></span></button>' +
'<button type="button" class="btn btn-xs btn-default command-stop" data-toggle="tooltip" title="{{ lang._('Stop') }}" data-row-id="' + row.id + '"><span class="fa fa-stop fa-fw"></span></button>';
} else {
return '<button type="button" class="btn btn-xs btn-default command-start" data-toggle="tooltip" title="{{ lang._('Start') }}" data-row-id="' + row.id + '"><span class="fa fa-play fa-fw"></span></button>';
}
},
status: function (column, row) {
if (row['running']) {
return '<span class="label label-opnsense label-opnsense-xs label-success pull-right" data-toggle="tooltip" title="{{ lang._('Running') }}"><i class="fa fa-play fa-fw"></i></span>';
} else {
return '<span class="label label-opnsense label-opnsense-xs label-danger pull-right" data-toggle="tooltip" title="{{ lang._('Stopped') }}"><i class="fa fa-stop fa-fw"></i></span>';
}
}
}
}
});
grid_service.on('loaded.rs.jquery.bootgrid', function () {
$('[data-toggle="tooltip"]').tooltip();
let ids = $("#grid-service").bootgrid("getCurrentRows");
if (ids.length > 0) {
$("#grid-service").bootgrid('select', [ids[0].name]);
}
$('.command-stop').click(function () {
$(this).toggleClass('disabled');
$(this).children().toggleClass('fa-stop fa-spinner fa-pulse');
ajaxCall("/api/core/service/stop/" + $(this).data('row-id'), {}, function () {
$('#grid-service').bootgrid('reload');
});
});
$('.command-start').click(function () {
$(this).toggleClass('disabled');
$(this).children().toggleClass('fa-start fa-spinner fa-pulse');
ajaxCall("/api/core/service/start/" + $(this).data('row-id'), {}, function () {
$('#grid-service').bootgrid('reload');
});
});
$('.command-restart').click(function () {
$(this).toggleClass('disabled');
$(this).children().toggleClass('fa-repeat fa-spinner fa-pulse');
ajaxCall("/api/core/service/restart/" + $(this).data('row-id'), {}, function () {
$('#grid-service').bootgrid('reload');
});
});
});
});
</script>
<div class="tab-content content-box __mb">
<table id="grid-service" class="table table-condensed table-hover table-striped table-responsive">
<thead>
<tr>
<th data-column-id="id" data-type="string" data-sortable="false" data-identifier="true" data-visible="false">{{ lang._('ID') }}</th>
<th data-column-id="pad" data-type="string" data-sortable="false" data-width="1em"></th>
<th data-column-id="name" data-type="string">{{ lang._('Name') }}</th>
<th data-column-id="description" data-type="string">{{ lang._('Description') }}</th>
<th data-column-id="locked" data-type="string" data-sortable="false" data-visible="false"></th>
<th data-column-id="running" data-type="string" data-width="3em" data-formatter="status" data-sortable="false"></th>
<th data-column-id="commands" data-width="5em" data-formatter="commands" data-sortable="false"></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>