mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* Iterate in javascript and separate processing * Widget refresh/destroy events * Remove old dom and unbind events * fix whitespace * Fix up bootgrid tables, they inserted a div before the first div breaking event propagation switch to regular js function to scope variables instead of jquery * Handle settings the same way as the normal widget * Use standard init_map and add layer control * May need L.Control.Locate now * Set maxZoom for marker cluster * Try setMaxZoom * worldmap size 100 and resize on refresh/widget resize * Add resize event (and throttle it a bit) * Further worldmap cleanup * Move most javascript to common js, will cause js errors until page is reloaded, but better in the long run
88 lines
3.9 KiB
PHP
88 lines
3.9 KiB
PHP
<div id="alerts_container-{{ $id }}" data-reload="false">
|
|
<div class="table-responsive">
|
|
<table id="alerts-{{ $id }}" class="table table-hover table-condensed alerts">
|
|
<thead>
|
|
<tr>
|
|
<th data-column-id="severity"></th>
|
|
<th data-column-id="timestamp">{{ __('Timestamp') }}</th>
|
|
<th data-column-id="rule">{{ __('Rule') }}</th>
|
|
<th data-column-id="details" data-sortable="false"></th>
|
|
<th data-column-id="hostname">{{ __('Hostname') }}</th>
|
|
<th data-column-id="location" data-visible="{{ $location ? 'true' : 'false' }}">{{ __('Location') }}</th>
|
|
<th data-column-id="ack_ico" data-sortable="false">{{ __('ACK') }}</th>
|
|
<th data-column-id="notes" data-sortable="false">{{ __('Notes') }}</th>
|
|
<th data-column-id="proc" data-sortable="false" data-visible="{{ $proc ? 'true' : 'false' }}">URL</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function () {
|
|
var alerts_grid = $("#alerts-{{ $id }}").bootgrid({
|
|
ajax: true,
|
|
requestHandler: request => ({
|
|
...request,
|
|
id: "alerts",
|
|
acknowledged: '{{ $acknowledged }}',
|
|
unreachable: '{{ $unreachable }}',
|
|
fired: '{{ $fired }}',
|
|
min_severity: '{{ $min_severity }}',
|
|
group: '{{ $device_group }}',
|
|
proc: '{{ $proc }}',
|
|
sort: '{{ $sort }}',
|
|
uncollapse_key_count: '{{ $uncollapse_key_count }}',
|
|
device_id: '{{ $device }}'
|
|
}),
|
|
responseHandler: response => {
|
|
$("#widget_title_counter_{{ $id }}").text(response.total ? ` (${response.total})` : '')
|
|
|
|
return response
|
|
},
|
|
url: "ajax_table.php",
|
|
navigation: ! {{ $hidenavigation }},
|
|
rowCount: [50, 100, 250, -1]
|
|
}).on("loaded.rs.jquery.bootgrid", function() {
|
|
alerts_grid = $(this);
|
|
alerts_grid.find(".incident-toggle").each( function() {
|
|
$(this).parent().addClass('incident-toggle-td');
|
|
}).on("click", function(e) {
|
|
var target = $(this).data("target");
|
|
$(target).collapse('toggle');
|
|
$(this).toggleClass('fa-plus fa-minus');
|
|
});
|
|
alerts_grid.find(".incident").each( function() {
|
|
$(this).parent().addClass('col-lg-4 col-md-4 col-sm-4 col-xs-4');
|
|
$(this).parent().parent().on("mouseenter", function() {
|
|
$(this).find(".incident-toggle").fadeIn(200);
|
|
}).on("mouseleave", function() {
|
|
$(this).find(".incident-toggle").fadeOut(200);
|
|
});
|
|
});
|
|
alerts_grid.find(".command-ack-alert").on("click", function(e) {
|
|
e.preventDefault();
|
|
var alert_state = $(this).data("alert_state");
|
|
var alert_id = $(this).data('alert_id');
|
|
$('#ack_alert_id').val(alert_id);
|
|
$('#ack_alert_state').val(alert_state);
|
|
$('#ack_msg').val('');
|
|
$("#alert_ack_modal").modal('show');
|
|
});
|
|
alerts_grid.find(".command-alert-note").on("click", function(e) {
|
|
e.preventDefault();
|
|
var alert_id = $(this).data('alert_id');
|
|
$('#alert_id').val(alert_id);
|
|
$("#alert_notes_modal").modal('show');
|
|
});
|
|
});
|
|
|
|
$('#alerts_container-{{ $id }}').on('refresh', function (event) {
|
|
alerts_grid.bootgrid('reload');
|
|
});
|
|
$('#alerts_container-{{ $id }}').on('destroy', function (event) {
|
|
alerts_grid.bootgrid('destroy');
|
|
delete alerts_grid;
|
|
});
|
|
})();
|
|
</script>
|