From ffcd35ff3f5690960f71ca8d6bf1e32a35701ef7 Mon Sep 17 00:00:00 2001 From: Alexander O'Mara Date: Mon, 10 Apr 2023 15:15:02 -0400 Subject: [PATCH] Use a data attribute to find existing rows, avoiding special character problems --- .../widgets/services_status.widget.php | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/www/widgets/widgets/services_status.widget.php b/src/www/widgets/widgets/services_status.widget.php index 1099838b8..bef9af4f3 100644 --- a/src/www/widgets/widgets/services_status.widget.php +++ b/src/www/widgets/widgets/services_status.widget.php @@ -52,18 +52,23 @@ if (isset($_POST['servicestatusfilter'])) { function fetch_services() { ajaxGet('/api/core/service/search', {}, function(data, status) { if (data['rows'] !== undefined) { + let $table = $('#service_widget_table'); + let items = {}; + $table.find('tr[data-service-widget-id]').each(function() { + let $item = $(this); + items[$item.attr('data-service-widget-id')] = $item; + }); $.each(data['rows'], function(key, value) { - /* does not like the slash in the element id */ - value.key = value.id.split('/').join('__'); - let $item = $("#service_widget_id_" + value.key); - if ($item.length == 0) { - $item = $("").attr('id', "service_widget_id_" + value.key); + let $item = items.hasOwnProperty(value.id) ? items[value.id] : null; + if (!$item) { + $item = $('').attr('data-service-widget-id', value.id); $item.append($('')); $item.append($('')); - $item.append($('')); - $item.append($('')); + $item.append($('')); + $item.append($('')); $item.hide(); - $("#service_widget_table").append($item); + $table.append($item); + items[value.id] = $item; } $item.find('td:eq(0)').text(value.name); $item.find('td:eq(1)').text(value.description);