From 44c99c3308967bc4edb42c5d23b6106ad9dff0ea Mon Sep 17 00:00:00 2001 From: Rumburaq2 Date: Wed, 19 Feb 2025 21:20:11 +0100 Subject: [PATCH 01/31] [ADD] init commit - passing data to svelte --- .../pages/alerts/templates/alerts.html | 1 + ui/src/pages/ProgressBar.svelte | 143 +++++++++++++++ ui/src/pages/SLA.js | 27 +++ ui/src/pages/SLAbar.svelte | 173 ++++++++++++++++++ ui/src/pages/SLAcontainer.svelte | 11 ++ ui/src/pages/alerts.js | 7 + 6 files changed, 362 insertions(+) create mode 100644 ui/src/pages/ProgressBar.svelte create mode 100644 ui/src/pages/SLA.js create mode 100644 ui/src/pages/SLAbar.svelte create mode 100644 ui/src/pages/SLAcontainer.svelte diff --git a/source/app/blueprints/pages/alerts/templates/alerts.html b/source/app/blueprints/pages/alerts/templates/alerts.html index b2532cf7c..ecb135872 100644 --- a/source/app/blueprints/pages/alerts/templates/alerts.html +++ b/source/app/blueprints/pages/alerts/templates/alerts.html @@ -368,6 +368,7 @@ + {% endblock javascripts %} diff --git a/ui/src/pages/ProgressBar.svelte b/ui/src/pages/ProgressBar.svelte new file mode 100644 index 000000000..c28cfab31 --- /dev/null +++ b/ui/src/pages/ProgressBar.svelte @@ -0,0 +1,143 @@ + + +
+
+

{startDateTime} - {endDateTime}

+ + +
{elapsed.toFixed(1)}s
+
+ + {#if duration === elapsed} +

SLA breached!

+ {/if} + + + +
\ No newline at end of file diff --git a/ui/src/pages/SLA.js b/ui/src/pages/SLA.js new file mode 100644 index 000000000..2703e1e60 --- /dev/null +++ b/ui/src/pages/SLA.js @@ -0,0 +1,27 @@ +import App from './SLAcontainer.svelte'; + +export let app; // Declare at the top level + +document.addEventListener('alertRendered', (event) => { + console.log('alertRendered event received'); + const containers = document.querySelectorAll('.SLAcontainer'); + console.log(containers); + if (containers) { + containers.forEach((container) => { + // Check if the container already has the "mounted" class + if (container.classList.contains("mounted")) { + console.log('SLA component already mounted on this container'); + return; + } + app = new App({ + target: container, + props: { + IRIStime: event.detail.IRIStime + } + }); + console.log('Svelte component mounted:', app); + // Mark the container by adding a "mounted" class so we don't mount again. + container.classList.add("mounted"); + }); + } +}); \ No newline at end of file diff --git a/ui/src/pages/SLAbar.svelte b/ui/src/pages/SLAbar.svelte new file mode 100644 index 000000000..21aa5ef4b --- /dev/null +++ b/ui/src/pages/SLAbar.svelte @@ -0,0 +1,173 @@ + + +
+
+

Input Date and Time: {startDateTime}

+ {#if result === true} +

The provided time is within working hours.

+ + {:else} +

The closest working time is: {result}

+ + {/if} +
+ + +
\ No newline at end of file diff --git a/ui/src/pages/SLAcontainer.svelte b/ui/src/pages/SLAcontainer.svelte new file mode 100644 index 000000000..fbd7a73a4 --- /dev/null +++ b/ui/src/pages/SLAcontainer.svelte @@ -0,0 +1,11 @@ + + +
+
+ +
+
\ No newline at end of file diff --git a/ui/src/pages/alerts.js b/ui/src/pages/alerts.js index 33dfb5600..96fbd09f1 100644 --- a/ui/src/pages/alerts.js +++ b/ui/src/pages/alerts.js @@ -1215,6 +1215,10 @@ function renderAlert(alert, expanded=false, modulesOptionsAlertReq, ` : "" } +

SLA

+
+
+
@@ -1405,6 +1409,9 @@ async function updateAlerts(page, per_page, filters = {}, paging=false){ modulesOptionsIocReq.data); alertElement.html(alertHtml); alertsContainer.append(alertElement); + console.log("alert Tile: "+alert.alert_source_event_time); + // Dispatch a custom event when done: + document.dispatchEvent(new CustomEvent('alertRendered', { detail: { IRIStime: alert.alert_source_event_time }})); }); } From e2e0ad627464b73fa37837efa3b35fa26261ae4b Mon Sep 17 00:00:00 2001 From: Rumburaq2 Date: Wed, 19 Feb 2025 21:56:18 +0100 Subject: [PATCH 02/31] [IMP] passing data - shift due to timezones not yet fixed --- ui/src/pages/SLAbar.svelte | 22 +++++++++++++++++++++- ui/src/pages/alerts.js | 4 ++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ui/src/pages/SLAbar.svelte b/ui/src/pages/SLAbar.svelte index 21aa5ef4b..320a7ec90 100644 --- a/ui/src/pages/SLAbar.svelte +++ b/ui/src/pages/SLAbar.svelte @@ -3,6 +3,7 @@ //setting up startDateTime value let startDateTime = "01/02/2025 14:30";//defalut value //calculate timestamp DD/MM/YYYY HH:MM of current time + /* const now = new Date(); const day = String(now.getDate()).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0'); // Months are zero-based @@ -10,9 +11,28 @@ const hours = String(now.getHours()).padStart(2, '0'); const minutes = String(now.getMinutes()).padStart(2, '0'); startDateTime = `${day}/${month}/${year} ${hours}:${minutes}`; + */ + //startDateTime = "06/02/2025 20:58"; export let IRIStime; console.log("IRIStimeFromSvelte: "+IRIStime); + + const date = new Date(IRIStime); + + // Get day, month, year, hours, and minutes with proper padding + const day = String(date.getDate()).padStart(2, '0'); + const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based + const year = date.getFullYear(); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + + startDateTime = `${day}/${month}/${year} ${hours}:${minutes}`; + + + + + + //setting up severity const SEVERITY ={ LOW: 12, @@ -56,7 +76,7 @@ secondsEpoch += SEVERITY.MEDIUM * 3600; } else if (severity === SEVERITY.HIGH) { - secondsEpoch = secondsEpoch+1200; + secondsEpoch = secondsEpoch+4800; } // Return the formatted date-time string return getFormattedDateFromTimestamp(secondsEpoch); diff --git a/ui/src/pages/alerts.js b/ui/src/pages/alerts.js index 96fbd09f1..51cd1a9b6 100644 --- a/ui/src/pages/alerts.js +++ b/ui/src/pages/alerts.js @@ -1409,9 +1409,9 @@ async function updateAlerts(page, per_page, filters = {}, paging=false){ modulesOptionsIocReq.data); alertElement.html(alertHtml); alertsContainer.append(alertElement); - console.log("alert Tile: "+alert.alert_source_event_time); + console.log("alert Tile: "+formatTime(alert.alert_creation_time)); // Dispatch a custom event when done: - document.dispatchEvent(new CustomEvent('alertRendered', { detail: { IRIStime: alert.alert_source_event_time }})); + document.dispatchEvent(new CustomEvent('alertRendered', { detail: { IRIStime: alert.alert_creation_time }})); }); } From d28c2292dd2d635afe4768beb09e669acfc322ea Mon Sep 17 00:00:00 2001 From: Rumburaq2 Date: Thu, 20 Feb 2025 00:09:05 +0100 Subject: [PATCH 03/31] debug cosole.logs --- ui/src/pages/ProgressBar.svelte | 6 ++++++ ui/src/pages/SLAbar.svelte | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ui/src/pages/ProgressBar.svelte b/ui/src/pages/ProgressBar.svelte index c28cfab31..c9019d7d4 100644 --- a/ui/src/pages/ProgressBar.svelte +++ b/ui/src/pages/ProgressBar.svelte @@ -28,6 +28,12 @@ import { onDestroy } from 'svelte'; //console.log(currTimeEpoch); //console.log(Math.floor((Date.now()) / (1000 * 60)) * 60); elapsed = currTimeEpoch - startTimeEpoch + oldElapsedTime; + console.log("-----------"); + console.log("startTimeEpoch: "+startTimeEpoch); + console.log("duration: "+duration); + console.log("elapsed: "+elapsed); + console.log("currentTimeEpoch: "+currTimeEpoch); + console.log("-----------"); if (elapsed > duration) { elapsed = duration clearInterval(interval) diff --git a/ui/src/pages/SLAbar.svelte b/ui/src/pages/SLAbar.svelte index 320a7ec90..b32b2c94a 100644 --- a/ui/src/pages/SLAbar.svelte +++ b/ui/src/pages/SLAbar.svelte @@ -19,6 +19,8 @@ const date = new Date(IRIStime); + date.setHours(date.getHours() + 1); + // Get day, month, year, hours, and minutes with proper padding const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based @@ -48,7 +50,7 @@ //setting up SLA params const workingHours = { start: 8, // 8:00 AM - end: 21 // 8:00 PM + end: 23 // 8:00 PM }; const workingDays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']; let result; @@ -76,7 +78,7 @@ secondsEpoch += SEVERITY.MEDIUM * 3600; } else if (severity === SEVERITY.HIGH) { - secondsEpoch = secondsEpoch+4800; + secondsEpoch = secondsEpoch+1200; } // Return the formatted date-time string return getFormattedDateFromTimestamp(secondsEpoch); From ad9e3eddb74038904afb117261a4d010110c397c Mon Sep 17 00:00:00 2001 From: Rumburaq2 Date: Thu, 20 Feb 2025 15:33:22 +0100 Subject: [PATCH 04/31] [ADD] working persistence of SLA elapsed time --- ui/src/pages/ProgressBar.svelte | 29 +++++++++++++++++++++++++++-- ui/src/pages/SLAbar.svelte | 9 +++++---- ui/src/pages/persistentStore.js | 15 +++++++++++++++ 3 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 ui/src/pages/persistentStore.js diff --git a/ui/src/pages/ProgressBar.svelte b/ui/src/pages/ProgressBar.svelte index c9019d7d4..ffff6926d 100644 --- a/ui/src/pages/ProgressBar.svelte +++ b/ui/src/pages/ProgressBar.svelte @@ -1,10 +1,16 @@
-
-

{startDateTime} - {endDateTime}

- - -
{elapsed.toFixed(1)}s
+
+
+
+

{startDateTime} - {endDateTime}

+
+ +
+ Elapsed time: +
+ + + + +
+

{elapsed.toFixed(1)}s

+
+
{#if duration === elapsed} @@ -184,4 +196,45 @@ import { onDestroy } from 'svelte';
-

Local store: {$myStore}

\ No newline at end of file +

Local store: {$myStore}

+ + \ No newline at end of file diff --git a/ui/src/pages/SLAbar.svelte b/ui/src/pages/SLAbar.svelte index 1f87b9f3c..20c788f18 100644 --- a/ui/src/pages/SLAbar.svelte +++ b/ui/src/pages/SLAbar.svelte @@ -181,7 +181,6 @@
-

Input Date and Time: {startDateTime}

{#if result === true}

The provided time is within working hours.

@@ -190,7 +189,5 @@

The closest working time is: {result}

{/if} -
-
\ No newline at end of file diff --git a/ui/src/pages/alerts.js b/ui/src/pages/alerts.js index d4c0aac37..014b7cf1a 100644 --- a/ui/src/pages/alerts.js +++ b/ui/src/pages/alerts.js @@ -1026,7 +1026,7 @@ function renderAlert(alert, expanded=false, modulesOptionsAlertReq,
` : ''} - ${alert.alert_creation_time ? `
+ ${alert.alert_creation_time ? `
IRIS Creation Time:
${formatTime(alert.alert_creation_time)} UTC @@ -1037,6 +1037,14 @@ function renderAlert(alert, expanded=false, modulesOptionsAlertReq,
` : ''}
+ +

SLA

+
+
+
+ +
+

Alert note

${alert.alert_note}
@@ -1215,10 +1223,6 @@ function renderAlert(alert, expanded=false, modulesOptionsAlertReq,
` : "" } -

SLA

-
-
-
From 5700772ec7ab1113264dccb32b49dc876f5088de Mon Sep 17 00:00:00 2001 From: Rumburaq2 Date: Fri, 21 Feb 2025 17:38:51 +0100 Subject: [PATCH 07/31] [IMP] persistence of completed state --- ui/src/pages/ProgressBar.svelte | 34 ++++++++++++++++++++++++++------- ui/src/pages/SLAbar.svelte | 7 ++++++- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/ui/src/pages/ProgressBar.svelte b/ui/src/pages/ProgressBar.svelte index c442f8e08..5d8a2bdf3 100644 --- a/ui/src/pages/ProgressBar.svelte +++ b/ui/src/pages/ProgressBar.svelte @@ -5,19 +5,21 @@ import { onDestroy } from 'svelte'; export let myStore; + //$: ({ elapsed_saved, state } = $myStore); + const MyState ={ NEW: 0, RUNNING: 1, PAUSED: 2, }; - let currstate = MyState.RUNNING; + let currstate = $myStore.state; //let { startDateTime = "01/02/2025 14:30", endDateTime = "01/02/2025 14:31" } = $props(); export let startDateTime = "01/02/2025 14:30"; export let endDateTime = "01/02/2025 14:30"; let timecomputed = calculateDuration(); //calculate duration betwwen two timestamps in seconds //let elapsed = $state(0); - $: elapsed = 0; + $: elapsed = $myStore.elapsed_saved; //let duration = $state(timecomputed); $: duration = timecomputed; let interval: number @@ -34,11 +36,12 @@ import { onDestroy } from 'svelte'; //startTimeEpoch = getSecondsSinceEpoch(startDateTime); //console.log(currTimeEpoch); //console.log(Math.floor((Date.now()) / (1000 * 60)) * 60); - if($myStore < 0){ + if($myStore.elapsed_saved < 0){ elapsed = currTimeEpoch - startTimeEpoch + oldElapsedTime; + console.log("elapsed: "+elapsed); } else { - elapsed = $myStore; + elapsed = $myStore.elapsed_saved; } /* @@ -55,7 +58,7 @@ import { onDestroy } from 'svelte'; clearInterval(interval) } if (elapsed < 0){ - currstate = MyState.NEW; + //currstate = MyState.NEW; } } }, 1000) @@ -79,6 +82,18 @@ import { onDestroy } from 'svelte'; $myStore = newValue; } + + // Alternatively, if you want to set a property to a new absolute value: + function setValue(property, newValue) { + myStore.update(current => ({ + ...current, + [property]: newValue + })); + } + + + + function complete() { //elapsed = 0 @@ -87,7 +102,11 @@ import { onDestroy } from 'svelte'; if (elapsed < 0){ elapsed = 0; } - changeValue(elapsed); + //changeValue(elapsed); + console.log("elapsedFromComplete "+elapsed); + setValue('elapsed_saved', elapsed); + setValue('state', 2); + @@ -196,7 +215,8 @@ import { onDestroy } from 'svelte'; -

Local store: {$myStore}

+

Local store elapsed_saved: {$myStore.elapsed_saved}

+

Local store state: {$myStore.state}