From ca13c83a1a33f066e8050184f308f6941f6a0cc9 Mon Sep 17 00:00:00 2001 From: Anand Chowdhary Date: Wed, 24 Feb 2021 19:29:34 +0530 Subject: [PATCH] :sparkles: Add scheduled maintenance events --- i18n.yml | 10 +++ src/components/ActiveScheduled.svelte | 100 ++++++++++++++++++++++++++ src/components/Incident.svelte | 78 ++++++++++++++------ src/components/Scheduled.svelte | 72 +++++++++++++++++++ src/routes/index.svelte | 36 +++++----- 5 files changed, 260 insertions(+), 36 deletions(-) create mode 100644 src/components/ActiveScheduled.svelte create mode 100644 src/components/Scheduled.svelte diff --git a/i18n.yml b/i18n.yml index f1852a8..d937977 100644 --- a/i18n.yml +++ b/i18n.yml @@ -44,3 +44,13 @@ errorTitle: An error occurred errorIntro: An error occurred in trying to get the latest status details. errorText: You can try again in a few moments. errorHome: Go to the homepage +pastScheduledMaintenance: Past Scheduled Maintenance +scheduledMaintenance: Scheduled Maintenance +scheduledMaintenanceSummaryStarted: Started at $DATE for $DURATION minutes +scheduledMaintenanceSummaryStarts: Starts at $DATE for $DURATION minutes +startedAt: Started at +startsAt: Starts at +duration: Duration +durationMin: $DURATION minutes +incidentCompleted: Completed +incidentScheduled: Scheduled diff --git a/src/components/ActiveScheduled.svelte b/src/components/ActiveScheduled.svelte new file mode 100644 index 0000000..f8b00e7 --- /dev/null +++ b/src/components/ActiveScheduled.svelte @@ -0,0 +1,100 @@ + + +{#if !incidents.length && !loading} +
✅   {config.i18n.allSystemsOperational}
+{/if} + +
+ {#if loading} + + {:else if incidents.length} +

{config.i18n.scheduledMaintenance}

+ {#each incidents as incident} + + {/each} + {/if} +
+ + diff --git a/src/components/Incident.svelte b/src/components/Incident.svelte index 60cbcb1..ed639a5 100644 --- a/src/components/Incident.svelte +++ b/src/components/Incident.svelte @@ -30,6 +30,17 @@ }) ) ).data; + incident.metadata = {}; + if (incident.body.includes("")[0]; + const lines = summary + .split("\n") + .filter((i) => i.trim()) + .filter((i) => i.includes(":")); + lines.forEach((i) => { + incident.metadata[i.split(/:(.+)/)[0].trim()] = i.split(/:(.+)/)[1].trim(); + }); + } } catch (error) { handleError(error); } @@ -51,23 +62,8 @@ }); - - - {config.i18n.incidentTitle.replace('$NUMBER', number)} + {config.i18n.incidentTitle.replace("$NUMBER", number)}

@@ -76,7 +72,13 @@ {:else} {incident.title} - {incident.state === 'closed' ? config.i18n.incidentFixed : config.i18n.incidentOngoing} + {incident.state === "closed" + ? incident.metadata.start + ? config.i18n.incidentCompleted + : config.i18n.incidentFixed + : incident.metadata.start + ? config.i18n.incidentScheduled + : config.i18n.incidentOngoing} {/if}

@@ -87,9 +89,30 @@ {:else}
-
{config.i18n.incidentOpenedAt}
-
{new Date(incident.created_at).toLocaleString()}
- {#if incident.closed_at} + {#if incident.metadata.start} +
+ {new Date(incident.metadata.start).getTime() < new Date().getTime() + ? config.i18n.startedAt + : config.i18n.startsAt} +
+
{new Date(incident.metadata.start).toLocaleString()}
+ {:else} +
{config.i18n.incidentOpenedAt}
+
{new Date(incident.created_at).toLocaleString()}
+ {/if} + {#if incident.metadata.start && incident.metadata.end} +
{config.i18n.duration}
+
+ {config.i18n.durationMin.replace( + /\$DURATION/g, + Math.floor( + (new Date(incident.metadata.end).getTime() - + new Date(incident.metadata.start).getTime()) / + 60000 + ) + )} +
+ {:else if incident.closed_at}
{config.i18n.incidentClosedAt}
{new Date(incident.closed_at).toLocaleString()}
{/if} @@ -126,3 +149,18 @@ + + diff --git a/src/components/Scheduled.svelte b/src/components/Scheduled.svelte new file mode 100644 index 0000000..8bd15ad --- /dev/null +++ b/src/components/Scheduled.svelte @@ -0,0 +1,72 @@ + + +
+ {#if loading} + + {:else if incidents.length} +

{config.i18n.pastScheduledMaintenance}

+ {#each incidents as incident} + {#if incident.showHeading} +

{new Date(incident.created_at).toLocaleDateString()}

+ {/if} + + {/each} + {/if} +
+ + diff --git a/src/routes/index.svelte b/src/routes/index.svelte index 3fa1b21..29b874a 100644 --- a/src/routes/index.svelte +++ b/src/routes/index.svelte @@ -1,9 +1,11 @@ - - {title}
- {#if config['status-website']} - {#if config['status-website'].introTitle} + {#if config["status-website"]} + {#if config["status-website"].introTitle}

- {@html snarkdown(config['status-website'].introTitle)} + {@html snarkdown(config["status-website"].introTitle)}

{/if} - {#if config['status-website'].introMessage} + {#if config["status-website"].introMessage}

- {@html snarkdown(config['status-website'].introMessage)} + {@html snarkdown(config["status-website"].introMessage)}

{/if} {/if}
+ + + +