From 5d8e8105241eedc3e16fd58702a9e34dfdf528bd Mon Sep 17 00:00:00 2001 From: Hunter Long Date: Thu, 20 Sep 2018 21:17:24 -0700 Subject: [PATCH] service chart updates --- core/notifier/example_test.go | 2 +- core/notifier/notifiers_test.go | 2 +- core/sample.go | 6 +- handlers/services.go | 6 +- notifiers/twilio.go | 7 +- source/css/base.css | 533 ++++++++++++-------------------- source/tmpl/service.html | 52 +++- types/service.go | 1 - 8 files changed, 261 insertions(+), 348 deletions(-) diff --git a/core/notifier/example_test.go b/core/notifier/example_test.go index d64fa4ce..1da82efc 100644 --- a/core/notifier/example_test.go +++ b/core/notifier/example_test.go @@ -33,7 +33,7 @@ var example = &Example{&Notification{ Description: "Example Notifier", Author: "Hunter Long", AuthorUrl: "https://github.com/hunterlong", - Delay: time.Duration(1 * time.Second), + Delay: time.Duration(200 * time.Millisecond), Limits: 7, Form: []NotificationForm{{ Type: "text", diff --git a/core/notifier/notifiers_test.go b/core/notifier/notifiers_test.go index ed0ce74f..1ebdd245 100644 --- a/core/notifier/notifiers_test.go +++ b/core/notifier/notifiers_test.go @@ -232,7 +232,7 @@ func TestRunAllQueueAndStop(t *testing.T) { assert.Equal(t, 16, len(example.Queue)) go Queue(example) assert.Equal(t, 16, len(example.Queue)) - time.Sleep(15 * time.Second) + time.Sleep(6 * time.Second) assert.Equal(t, 6, len(example.Queue)) example.close() assert.False(t, example.IsRunning()) diff --git a/core/sample.go b/core/sample.go index eac9be6e..64c373c6 100644 --- a/core/sample.go +++ b/core/sample.go @@ -91,16 +91,16 @@ func InsertSampleData() error { // InsertSampleHits will create a couple new hits for the sample services func InsertSampleHits() error { - since := time.Now().Add(-24 * time.Hour) + since := time.Now().Add((-24 * 7) * time.Hour) for i := int64(1); i <= 5; i++ { service := SelectService(i) utils.Log(1, fmt.Sprintf("Adding %v sample hit records to service %v", 360, service.Name)) createdAt := since - for hi := int64(1); hi <= 360; hi++ { + for hi := int64(1); hi <= 860; hi++ { rand.Seed(time.Now().UnixNano()) latency := rand.Float64() - createdAt = createdAt.Add(2 * time.Minute) + createdAt = createdAt.Add(15 * time.Minute) hit := &types.Hit{ Service: service.Id, CreatedAt: createdAt, diff --git a/handlers/services.go b/handlers/services.go index 5ce205e0..1270ab65 100644 --- a/handlers/services.go +++ b/handlers/services.go @@ -42,7 +42,7 @@ func renderServiceChartHandler(w http.ResponseWriter, r *http.Request) { var start time.Time var end time.Time if startField == "" { - start = time.Now().Add(-24 * time.Hour).UTC() + start = time.Now().Add((-24 * 7) * time.Hour).UTC() } else { start = time.Unix(utils.StringInt(startField), 0).UTC() } @@ -70,7 +70,7 @@ func renderServiceChartsHandler(w http.ResponseWriter, r *http.Request) { var data []string end := time.Now() - start := end.Add(-24 * time.Hour) + start := end.Add(-(24 * 7) * time.Hour) for _, s := range services { d := core.GraphDataRaw(s, start, end).ToString() data = append(data, d) @@ -184,7 +184,7 @@ func servicesViewHandler(w http.ResponseWriter, r *http.Request) { } if startField == 0 || endField == 0 { - startField = time.Now().Add(-24 * time.Hour).UTC().Unix() + startField = time.Now().Add((-24 * 7) * time.Hour).UTC().Unix() endField = time.Now().UTC().Unix() } diff --git a/notifiers/twilio.go b/notifiers/twilio.go index 19f87f91..625955a2 100644 --- a/notifiers/twilio.go +++ b/notifiers/twilio.go @@ -106,11 +106,16 @@ func (u *twilio) Send(msg interface{}) error { func (u *twilio) OnFailure(s *types.Service, f *types.Failure) { msg := fmt.Sprintf("Your service '%v' is currently offline!", s.Name) u.AddQueue(msg) + u.Online = false } // OnSuccess will trigger successful service func (u *twilio) OnSuccess(s *types.Service) { - + if !u.Online { + msg := fmt.Sprintf("Your service '%v' is back online!", s.Name) + u.AddQueue(msg) + } + u.Online = true } // OnSave triggers when this notifier has been saved diff --git a/source/css/base.css b/source/css/base.css index a60583a6..39c640f1 100644 --- a/source/css/base.css +++ b/source/css/base.css @@ -39,65 +39,53 @@ /* Mobile Settings */ /* Mobile Service Container */ HTML, BODY { - background-color: #fcfcfc; -} + background-color: #fcfcfc; } .container { padding-top: 20px; padding-bottom: 20px; - max-width: 860px; -} + max-width: 860px; } .header-title { - color: #464646; -} + color: #464646; } .header-desc { - color: #939393; -} + color: #939393; } .btn { - border-radius: 0.2rem; -} + border-radius: 0.2rem; } .online_list .badge { - margin-top: 0.2rem; -} + margin-top: 0.2rem; } .navbar { - margin-bottom: 30px; -} + margin-bottom: 30px; } .btn-sm { line-height: 1.3; - font-size: 0.75rem; -} + font-size: 0.75rem; } .view_service_btn { position: absolute; bottom: -40px; - right: 40px; -} + right: 40px; } .service_lower_info { position: absolute; bottom: -40px; left: 40px; color: #d1ffca; - font-size: 0.85rem; -} + font-size: 0.85rem; } .lg_number { font-size: 2.3rem; font-weight: bold; display: block; - color: #4f4f4f; -} + color: #4f4f4f; } .stats_area { text-align: center; - color: #a5a5a5; -} + color: #a5a5a5; } .lower_canvas { height: 3.4rem; @@ -105,134 +93,104 @@ HTML, BODY { background-color: #48d338; padding: 15px 10px; margin-left: 0px !important; - margin-right: 0px !important; -} + margin-right: 0px !important; } .lower_canvas SPAN { font-size: 1rem; - color: #fff; -} + color: #fff; } .footer { text-decoration: none; - margin-top: 20px; -} + margin-top: 20px; } .footer A { color: #8d8d8d; - text-decoration: none; -} + text-decoration: none; } .footer A:HOVER { - color: #6d6d6d; -} + color: #6d6d6d; } .badge { color: white; - border-radius: 0.2rem; -} + border-radius: 0.2rem; } .btn-group { - height: 25px; -} -.btn-group A { - padding: 0.1rem 0.75rem; - font-size: 0.8rem; -} + height: 25px; } + .btn-group A { + padding: 0.1rem .75rem; + font-size: 0.8rem; } .card-body .badge { - color: #fff; -} + color: #fff; } .nav-pills .nav-link { - border-radius: 0.2rem; -} + border-radius: 0.2rem; } .form-control { - border-radius: 0.2rem; -} + border-radius: 0.2rem; } .card { background-color: #ffffff; - border: 1px solid rgba(0, 0, 0, 0.125); -} + border: 1px solid rgba(0, 0, 0, 0.125); } .card-body { - overflow: hidden; -} + overflow: hidden; } .card-body H4 A { color: #444444; - text-decoration: none; -} + text-decoration: none; } .chart-container { position: relative; height: 170px; - width: 100%; -} + width: 100%; } .btn-primary { background-color: #3e9bff; border-color: #006fe6; - color: white; -} -.btn-primary.dyn-dark { - background-color: #32a825 !important; - border-color: #2c9320 !important; -} -.btn-primary.dyn-light { - background-color: #75de69 !important; - border-color: #88e37e !important; -} + color: white; } + .btn-primary.dyn-dark { + background-color: #32a825 !important; + border-color: #2c9320 !important; } + .btn-primary.dyn-light { + background-color: #75de69 !important; + border-color: #88e37e !important; } .btn-success { - background-color: #47d337; -} -.btn-success.dyn-dark { - background-color: #32a825 !important; - border-color: #2c9320 !important; -} -.btn-success.dyn-light { - background-color: #75de69 !important; - border-color: #88e37e !important; -} + background-color: #47d337; } + .btn-success.dyn-dark { + background-color: #32a825 !important; + border-color: #2c9320 !important; } + .btn-success.dyn-light { + background-color: #75de69 !important; + border-color: #88e37e !important; } .btn-danger { - background-color: #dd3545; -} -.btn-danger.dyn-dark { - background-color: #b61f2d !important; - border-color: #a01b28 !important; -} -.btn-danger.dyn-light { - background-color: #e66975 !important; - border-color: #e97f89 !important; -} + background-color: #dd3545; } + .btn-danger.dyn-dark { + background-color: #b61f2d !important; + border-color: #a01b28 !important; } + .btn-danger.dyn-light { + background-color: #e66975 !important; + border-color: #e97f89 !important; } .bg-success { - background-color: #47d337 !important; -} + background-color: #47d337 !important; } .bg-danger { - background-color: #dd3545 !important; -} + background-color: #dd3545 !important; } .bg-success .dyn-dark { - background-color: #35b027 !important; -} + background-color: #35b027 !important; } .bg-danger .dyn-dark { - background-color: #bf202f !important; -} + background-color: #bf202f !important; } .nav-pills .nav-link.active, .nav-pills .show > .nav-link { - background-color: #13a00d; -} + background-color: #13a00d; } .nav-pills A { - color: #424242; -} + color: #424242; } .CodeMirror { /* Bootstrap Settings */ @@ -252,26 +210,23 @@ HTML, BODY { border: 1px solid #ccc; border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; /* Code Mirror Settings */ font-family: monospace; position: relative; overflow: hidden; - height: 80vh; -} + height: 80vh; } .CodeMirror-focused { /* Bootstrap Settings */ border-color: #66afe9; outline: 0; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -} + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } .switch { font-size: 1rem; - position: relative; -} + position: relative; } .switch input { position: absolute; @@ -282,8 +237,7 @@ HTML, BODY { clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; - padding: 0; -} + padding: 0; } .switch input + label { position: relative; @@ -296,26 +250,23 @@ HTML, BODY { outline: none; user-select: none; vertical-align: middle; - text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem); -} + text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem); } .switch input + label::before, .switch input + label::after { - content: ""; + content: ''; position: absolute; top: 0; left: 0; width: calc(calc(2.375rem * .8) * 2); bottom: 0; - display: block; -} + display: block; } .switch input + label::before { right: 0; background-color: #dee2e6; border-radius: calc(2.375rem * .8); - transition: 0.2s all; -} + transition: 0.2s all; } .switch input + label::after { top: 2px; @@ -324,154 +275,120 @@ HTML, BODY { height: calc(calc(2.375rem * .8) - calc(2px * 2)); border-radius: 50%; background-color: white; - transition: 0.2s all; -} + transition: 0.2s all; } .switch input:checked + label::before { - background-color: #08d; -} + background-color: #08d; } .switch input:checked + label::after { - margin-left: calc(2.375rem * .8); -} + margin-left: calc(2.375rem * .8); } .switch input:focus + label::before { outline: none; - box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25); -} + box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25); } .switch input:disabled + label { color: #868e96; - cursor: not-allowed; -} + cursor: not-allowed; } .switch input:disabled + label::before { - background-color: #e9ecef; -} + background-color: #e9ecef; } .switch.switch-sm { - font-size: 0.875rem; -} + font-size: 0.875rem; } .switch.switch-sm input + label { min-width: calc(calc(1.9375rem * .8) * 2); height: calc(1.9375rem * .8); line-height: calc(1.9375rem * .8); - text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem); -} + text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem); } .switch.switch-sm input + label::before { - width: calc(calc(1.9375rem * .8) * 2); -} + width: calc(calc(1.9375rem * .8) * 2); } .switch.switch-sm input + label::after { width: calc(calc(1.9375rem * .8) - calc(2px * 2)); - height: calc(calc(1.9375rem * .8) - calc(2px * 2)); -} + height: calc(calc(1.9375rem * .8) - calc(2px * 2)); } .switch.switch-sm input:checked + label::after { - margin-left: calc(1.9375rem * .8); -} + margin-left: calc(1.9375rem * .8); } .switch.switch-lg { - font-size: 1.25rem; -} + font-size: 1.25rem; } .switch.switch-lg input + label { min-width: calc(calc(3rem * .8) * 2); height: calc(3rem * .8); line-height: calc(3rem * .8); - text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem); -} + text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem); } .switch.switch-lg input + label::before { - width: calc(calc(3rem * .8) * 2); -} + width: calc(calc(3rem * .8) * 2); } .switch.switch-lg input + label::after { width: calc(calc(3rem * .8) - calc(2px * 2)); - height: calc(calc(3rem * .8) - calc(2px * 2)); -} + height: calc(calc(3rem * .8) - calc(2px * 2)); } .switch.switch-lg input:checked + label::after { - margin-left: calc(3rem * .8); -} + margin-left: calc(3rem * .8); } .switch + .switch { - margin-left: 1rem; -} + margin-left: 1rem; } @keyframes pulse_animation { 0% { - transform: scale(1); - } + transform: scale(1); } 30% { - transform: scale(1); - } + transform: scale(1); } 40% { - transform: scale(1.02); - } + transform: scale(1.02); } 50% { - transform: scale(1); - } + transform: scale(1); } 60% { - transform: scale(1); - } + transform: scale(1); } 70% { - transform: scale(1.05); - } + transform: scale(1.05); } 80% { - transform: scale(1); - } + transform: scale(1); } 100% { - transform: scale(1); - } -} + transform: scale(1); } } .pulse { animation-name: pulse_animation; animation-duration: 1500ms; transform-origin: 70% 70%; animation-iteration-count: infinite; - animation-timing-function: linear; -} + animation-timing-function: linear; } @keyframes glow-grow { 0% { opacity: 0; - transform: scale(1); - } + transform: scale(1); } 80% { - opacity: 1; - } + opacity: 1; } 100% { transform: scale(2); - opacity: 0; - } -} + opacity: 0; } } .pulse-glow { animation-name: glow-grown; animation-duration: 100ms; transform-origin: 70% 30%; animation-iteration-count: infinite; - animation-timing-function: linear; -} + animation-timing-function: linear; } .pulse-glow:before, .pulse-glow:after { position: absolute; - content: ""; + content: ''; height: 0.5rem; width: 1.75rem; top: 1.2rem; right: 2.15rem; border-radius: 0; box-shadow: 0 0 7px #47d337; - animation: glow-grow 2s ease-out infinite; -} + animation: glow-grow 2s ease-out infinite; } .sortable_drag { - background-color: #0000000f; -} + background-color: #0000000f; } .drag_icon { cursor: move; @@ -485,38 +402,32 @@ HTML, BODY { margin-right: 5px; margin-left: -10px; text-align: center; - color: #b1b1b1; -} + color: #b1b1b1; } /* (Optional) Apply a "closed-hand" cursor during drag operation. */ .drag_icon:active { cursor: grabbing; cursor: -moz-grabbing; - cursor: -webkit-grabbing; -} + cursor: -webkit-grabbing; } .switch_btn { float: right; margin: -1px 0px 0px 0px; - display: block; -} + display: block; } #start_container { position: absolute; z-index: 99999; - margin-top: 20px; -} + margin-top: 20px; } #end_container { position: absolute; z-index: 99999; margin-top: 20px; - right: 0; -} + right: 0; } .pointer { - cursor: pointer; -} + cursor: pointer; } /*! * Pikaday @@ -530,47 +441,38 @@ HTML, BODY { background: #fff; border: 1px solid #ccc; border-bottom-color: #bbb; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -.pika-single.is-hidden { - display: none; -} -.pika-single.is-bound { - position: absolute; - box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); -} + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } + .pika-single.is-hidden { + display: none; } + .pika-single.is-bound { + position: absolute; + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); } .pika-single { - *zoom: 1; -} -.pika-single:before, .pika-single:after { - content: " "; - display: table; -} -.pika-single:after { - clear: both; -} + *zoom: 1; } + .pika-single:before, .pika-single:after { + content: " "; + display: table; } + .pika-single:after { + clear: both; } .pika-lendar { float: left; width: 240px; - margin: 8px; -} + margin: 8px; } .pika-title { position: relative; - text-align: center; -} -.pika-title select { - cursor: pointer; - position: absolute; - z-index: 9998; - margin: 0; - left: 0; - top: 5px; - filter: alpha(opacity=0); - opacity: 0; -} + text-align: center; } + .pika-title select { + cursor: pointer; + position: absolute; + z-index: 9998; + margin: 0; + left: 0; + top: 5px; + filter: alpha(opacity=0); + opacity: 0; } .pika-label { display: inline-block; @@ -584,8 +486,7 @@ HTML, BODY { line-height: 20px; font-weight: bold; color: #333; - background-color: #fff; -} + background-color: #fff; } .pika-prev, .pika-next { @@ -604,61 +505,51 @@ HTML, BODY { background-position: center center; background-repeat: no-repeat; background-size: 75% 75%; - opacity: 0.5; + opacity: .5; *position: absolute; - *top: 0; -} -.pika-prev:hover, -.pika-next:hover { - opacity: 1; -} -.pika-prev.is-disabled, -.pika-next.is-disabled { - cursor: default; - opacity: 0.2; -} + *top: 0; } + .pika-prev:hover, + .pika-next:hover { + opacity: 1; } + .pika-prev.is-disabled, + .pika-next.is-disabled { + cursor: default; + opacity: .2; } .pika-prev, .is-rtl .pika-next { float: left; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg=="); - *left: 0; -} + *left: 0; } .pika-next, .is-rtl .pika-prev { float: right; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII="); - *right: 0; -} + *right: 0; } .pika-select { display: inline-block; - *display: inline; -} + *display: inline; } .pika-table { width: 100%; border-collapse: collapse; border-spacing: 0; - border: 0; -} -.pika-table th, -.pika-table td { - width: 14.2857142857%; - padding: 0; -} -.pika-table th { - color: #999; - font-size: 12px; - line-height: 25px; - font-weight: bold; - text-align: center; -} -.pika-table abbr { - border-bottom: none; - cursor: help; -} + border: 0; } + .pika-table th, + .pika-table td { + width: 14.285714285714286%; + padding: 0; } + .pika-table th { + color: #999; + font-size: 12px; + line-height: 25px; + font-weight: bold; + text-align: center; } + .pika-table abbr { + border-bottom: none; + cursor: help; } .pika-button { cursor: pointer; @@ -674,60 +565,49 @@ HTML, BODY { font-size: 12px; line-height: 15px; text-align: right; - background: #f5f5f5; -} -.is-today .pika-button { - color: #33aaff; - font-weight: bold; -} -.is-selected .pika-button { - color: #fff; - font-weight: bold; - background: #33aaff; - box-shadow: inset 0 1px 3px #178fe5; - border-radius: 3px; -} -.is-disabled .pika-button, .is-outside-current-month .pika-button { - color: #999; - opacity: 0.3; -} -.is-disabled .pika-button { - pointer-events: none; - cursor: default; -} -.pika-button:hover { - color: #fff; - background: #ff8000; - box-shadow: none; - border-radius: 3px; -} -.pika-button .is-selection-disabled { - pointer-events: none; - cursor: default; -} + background: #f5f5f5; } + .is-today .pika-button { + color: #33aaff; + font-weight: bold; } + .is-selected .pika-button { + color: #fff; + font-weight: bold; + background: #33aaff; + box-shadow: inset 0 1px 3px #178fe5; + border-radius: 3px; } + .is-disabled .pika-button, .is-outside-current-month .pika-button { + color: #999; + opacity: .3; } + .is-disabled .pika-button { + pointer-events: none; + cursor: default; } + .pika-button:hover { + color: #fff; + background: #ff8000; + box-shadow: none; + border-radius: 3px; } + .pika-button .is-selection-disabled { + pointer-events: none; + cursor: default; } .pika-week { font-size: 11px; - color: #999; -} + color: #999; } .is-inrange .pika-button { - background: #D5E9F7; -} + background: #D5E9F7; } .is-startrange .pika-button { color: #fff; background: #6CB31D; box-shadow: none; - border-radius: 3px; -} + border-radius: 3px; } .is-endrange .pika-button { color: #fff; background: #33aaff; box-shadow: none; - border-radius: 3px; -} + border-radius: 3px; } /*! * Statup @@ -747,84 +627,67 @@ HTML, BODY { */ @media (max-width: 767px) { HTML, BODY { - background-color: #fcfcfc; - } + background-color: #fcfcfc; } .sm-container { margin-top: 40px !important; - padding: 0 !important; - } + padding: 0 !important; } .list-group-item H5 { - font-size: 0.9rem; - } + font-size: 0.9rem; } .container { - padding: 0 !important; - } + padding: 0 !important; } .navbar { margin-left: 0px; margin-top: 0px; width: 100%; - margin-bottom: 0; - } + margin-bottom: 0; } .btn-sm { line-height: 0.9rem; - font-size: 0.65rem; - } + font-size: 0.65rem; } .full-col-12 { padding-left: 0px; - padding-right: 0px; - } + padding-right: 0px; } .card { border: 0; border-radius: 0rem; padding: 0; - background-color: #ffffff; - } + background-color: #ffffff; } .card-body { font-size: 6pt; - padding: 5px 5px; - } + padding: 5px 5px; } .lg_number { - font-size: 7.8vw; - } + font-size: 7.8vw; } .stats_area { margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } + margin-bottom: 1.5rem !important; } .stats_area .col-4 { padding-left: 0; padding-right: 0; - font-size: 0.6rem; - } + font-size: 0.6rem; } .list-group-item { border-top: 1px solid #e4e4e4; - border: 0px; - } + border: 0px; } .list-group-item:first-child { border-top-left-radius: 0; - border-top-right-radius: 0; - } + border-top-right-radius: 0; } .list-group-item:last-child { border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } + border-bottom-left-radius: 0; } .list-group-item P { - font-size: 0.7rem; - } -} + font-size: 0.7rem; } } /*# sourceMappingURL=base.css.map */ diff --git a/source/tmpl/service.html b/source/tmpl/service.html index 97d932eb..4d5bdf59 100644 --- a/source/tmpl/service.html +++ b/source/tmpl/service.html @@ -58,7 +58,7 @@
- +
@@ -247,6 +247,54 @@ {{end}} - - diff --git a/types/service.go b/types/service.go index 15f604d7..8b5f761c 100644 --- a/types/service.go +++ b/types/service.go @@ -47,7 +47,6 @@ type Service struct { DnsLookup float64 `gorm:"-" json:"dns_lookup_time"` Failures []interface{} `gorm:"-" json:"failures,omitempty"` Checkins []*Checkin `gorm:"-" json:"checkins,omitempty"` - Range [2]time.Time `gorm:"-" json:"-"` } type ServiceInterface interface {