From b3b41f58fa8cfa53eae5ffc0b4cc91e681e29049 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Mon, 13 Apr 2020 04:17:09 -0700 Subject: [PATCH] incidents, UX --- CHANGELOG.md | 3 + frontend/src/API.js | 14 +- frontend/src/assets/scss/base.scss | 29 +++- .../Dashboard/DashboardMessages.vue | 2 +- .../Dashboard/DashboardServices.vue | 9 +- .../components/Dashboard/DashboardUsers.vue | 2 +- .../src/components/Dashboard/ServicesList.vue | 2 +- .../components/Index/GroupServiceFailures.vue | 15 +- .../src/components/Index/IncidentsBlock.vue | 34 +++-- .../src/components/Index/UpdatesBlock.vue | 50 +++++++ .../src/components/Service/ServiceBlock.vue | 26 +++- .../src/components/Service/ServiceInfo.vue | 101 +++++++------ frontend/src/components/Service/StatsGen.vue | 8 +- frontend/src/forms/Incident.vue | 79 +--------- frontend/src/forms/IncidentUpdates.vue | 43 ++++-- frontend/src/forms/Service.vue | 8 +- frontend/src/forms/Setup.vue | 2 +- frontend/src/pages/Checkins.vue | 105 ++++++++++++++ frontend/src/pages/Failures.vue | 93 ++++++++++++ frontend/src/pages/Incidents.vue | 109 ++++++++++++++ frontend/src/pages/Index.vue | 2 +- frontend/src/pages/Service.vue | 120 +++++++++++++--- frontend/src/routes.js | 27 +++- handlers/routes.go | 3 +- handlers/services.go | 136 ++++++++++++++++++ types/services/struct.go | 2 +- 26 files changed, 827 insertions(+), 197 deletions(-) create mode 100644 frontend/src/components/Index/UpdatesBlock.vue create mode 100644 frontend/src/pages/Checkins.vue create mode 100644 frontend/src/pages/Failures.vue create mode 100644 frontend/src/pages/Incidents.vue diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f35740f..0147aadb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ - Modified UI to show user the response for a Notifier. - Modified some Notifiers title's - Added more Cypress e2e testing +- Modified Incidents form and UX. +- Added /api/services/{id}/uptime_data API endpoint to show online/offline durations as a series for charts. +- Modified index page to automatically refresh Service details on interval # 0.90.24 - Fixed login form from not showing diff --git a/frontend/src/API.js b/frontend/src/API.js index 28ad0a36..8d31d009 100644 --- a/frontend/src/API.js +++ b/frontend/src/API.js @@ -56,6 +56,10 @@ class Api { return axios.get('api/services/' + id + '/failure_data?start=' + start + '&end=' + end + '&group=' + group + '&fill=' + fill).then(response => (response.data)) } + async service_uptime(id) { + return axios.get('api/services/' + id + '/uptime_data').then(response => (response.data)) + } + async service_heatmap(id, start, end, group) { return axios.get('api/services/' + id + '/heatmap').then(response => (response.data)) } @@ -118,7 +122,7 @@ class Api { } async incident_updates(incident) { - return axios.post('api/incidents/'+incident.id+'/updates', data).then(response => (response.data)) + return axios.get('api/incidents/'+incident.id+'/updates').then(response => (response.data)) } async incident_update_create(update) { @@ -129,12 +133,12 @@ class Api { return axios.delete('api/incidents/'+update.incident+'/updates/'+update.id).then(response => (response.data)) } - async incidents_service(service) { - return axios.get('api/services/'+service.id+'/incidents').then(response => (response.data)) + async incidents_service(id) { + return axios.get('api/services/'+id+'/incidents').then(response => (response.data)) } - async incident_create(service, data) { - return axios.post('api/services/'+service.id+'/incidents', data).then(response => (response.data)) + async incident_create(service_id, data) { + return axios.post('api/services/'+service_id+'/incidents', data).then(response => (response.data)) } async incident_delete(incident) { diff --git a/frontend/src/assets/scss/base.scss b/frontend/src/assets/scss/base.scss index 18446832..c9e6b98e 100644 --- a/frontend/src/assets/scss/base.scss +++ b/frontend/src/assets/scss/base.scss @@ -28,8 +28,8 @@ HTML,BODY { background-color: white; margin: 6px; height: 26px; - font-size: 10pt; - padding: 3px 7px; + font-size: 8pt; + padding: 5px 7px; border: 1px solid #a7a7a7; border-radius: 4px !important; } @@ -344,10 +344,33 @@ HTML,BODY { background-color: #ffbbbb; } + .btn-white { + background-color: white; + border: 1px solid #d8d8d8; + color: #767676; + } + + .btn-white:hover { + background-color: #fcfcfc; + border: 1px solid #bdbdbd; + color: #767676; + } + + .braker { + border-top: 1px solid rgba(0, 0, 0, 0.10); + width: 98%; + display: block; + margin: 0 auto; + } + + .text-dim { + color: #a0a0a0; + } + .card { background-color: $service-background; border: $service-border; - //box-shadow: 0px 2px 11px 1px rgba(0, 0, 0, 0.13); + box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.08); } .card-body { diff --git a/frontend/src/components/Dashboard/DashboardMessages.vue b/frontend/src/components/Dashboard/DashboardMessages.vue index feabe5b7..37c014e3 100644 --- a/frontend/src/components/Dashboard/DashboardMessages.vue +++ b/frontend/src/components/Dashboard/DashboardMessages.vue @@ -2,7 +2,7 @@
Annoucements
-
+
diff --git a/frontend/src/components/Dashboard/DashboardServices.vue b/frontend/src/components/Dashboard/DashboardServices.vue index 8dd85d75..1e80b275 100644 --- a/frontend/src/components/Dashboard/DashboardServices.vue +++ b/frontend/src/components/Dashboard/DashboardServices.vue @@ -3,16 +3,17 @@
Services - Create -
-
+ Create + +
+
Groups
-
+
diff --git a/frontend/src/components/Dashboard/DashboardUsers.vue b/frontend/src/components/Dashboard/DashboardUsers.vue index a1d7c175..bb43a2fe 100644 --- a/frontend/src/components/Dashboard/DashboardUsers.vue +++ b/frontend/src/components/Dashboard/DashboardUsers.vue @@ -2,7 +2,7 @@
Users
-
+
diff --git a/frontend/src/components/Dashboard/ServicesList.vue b/frontend/src/components/Dashboard/ServicesList.vue index 78f8fc36..5c17b95d 100644 --- a/frontend/src/components/Dashboard/ServicesList.vue +++ b/frontend/src/components/Dashboard/ServicesList.vue @@ -9,7 +9,7 @@ - +
diff --git a/frontend/src/components/Index/GroupServiceFailures.vue b/frontend/src/components/Index/GroupServiceFailures.vue index a1c5637d..e05c5009 100644 --- a/frontend/src/components/Index/GroupServiceFailures.vue +++ b/frontend/src/components/Index/GroupServiceFailures.vue @@ -4,8 +4,11 @@
-
30 Days Ago
-
Today
+
30 Days Ago
+
+ {{service_txt}} +
+
Today
@@ -28,6 +31,14 @@ export default { type: Object, required: true } + }, + computed: { + service_txt() { + if (!this.service.online) { + return `Offline for ${this.ago(this.service.last_success)}` + } + return `${this.service.online_24_hours}% Uptime` + } }, mounted () { this.lastDaysFailures() diff --git a/frontend/src/components/Index/IncidentsBlock.vue b/frontend/src/components/Index/IncidentsBlock.vue index 188bbea2..d2491554 100644 --- a/frontend/src/components/Index/IncidentsBlock.vue +++ b/frontend/src/components/Index/IncidentsBlock.vue @@ -1,27 +1,27 @@ diff --git a/frontend/src/components/Index/UpdatesBlock.vue b/frontend/src/components/Index/UpdatesBlock.vue new file mode 100644 index 00000000..cb5a5dab --- /dev/null +++ b/frontend/src/components/Index/UpdatesBlock.vue @@ -0,0 +1,50 @@ + + + + + + diff --git a/frontend/src/components/Service/ServiceBlock.vue b/frontend/src/components/Service/ServiceBlock.vue index 088979b4..9a91c820 100644 --- a/frontend/src/components/Service/ServiceBlock.vue +++ b/frontend/src/components/Service/ServiceBlock.vue @@ -63,6 +63,7 @@ diff --git a/frontend/src/forms/IncidentUpdates.vue b/frontend/src/forms/IncidentUpdates.vue index 8ac50c0d..466c4b82 100644 --- a/frontend/src/forms/IncidentUpdates.vue +++ b/frontend/src/forms/IncidentUpdates.vue @@ -1,6 +1,22 @@ + + + diff --git a/frontend/src/pages/Failures.vue b/frontend/src/pages/Failures.vue new file mode 100644 index 00000000..94b9e2a9 --- /dev/null +++ b/frontend/src/pages/Failures.vue @@ -0,0 +1,93 @@ + + + + + + diff --git a/frontend/src/pages/Incidents.vue b/frontend/src/pages/Incidents.vue new file mode 100644 index 00000000..9c467f17 --- /dev/null +++ b/frontend/src/pages/Incidents.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/frontend/src/pages/Index.vue b/frontend/src/pages/Index.vue index 96812930..f551a7c9 100644 --- a/frontend/src/pages/Index.vue +++ b/frontend/src/pages/Index.vue @@ -26,7 +26,7 @@
- +
diff --git a/frontend/src/pages/Service.vue b/frontend/src/pages/Service.vue index 5dc0e844..f0facaee 100644 --- a/frontend/src/pages/Service.vue +++ b/frontend/src/pages/Service.vue @@ -1,5 +1,5 @@