Logging Web Interface

**Work in progress**
This commit is contained in:
Thorsten 2015-02-26 18:29:42 +01:00
parent fa90dac953
commit ea02452abc
5 changed files with 118 additions and 12 deletions

View File

@ -0,0 +1,31 @@
package DeviceDatabase
import (
"gopkg.in/mgo.v2/bson"
)
func ReadCustom(timeRange, logLevel, logCategory, logImpact, logSeverity, logMessageName, logSender, logPage string) (events []LogDBEntry) {
//
// TODO => Is currently stub
//
query := logDBCollection.Find(bson.D{}).Sort(`-TimeUTC`).Limit(26)
count := 26
if n, err := query.Count(); err == nil {
count = n
}
iter := query.Iter()
entry := LogDBEntry{}
pos := 0
events = make([]LogDBEntry, count)
for iter.Next(&entry) {
events[pos] = entry
pos++
}
return
}

View File

@ -8,6 +8,7 @@ import (
"github.com/SommerEngineering/Ocean/MimeTypes"
"github.com/SommerEngineering/Ocean/Shutdown"
"net/http"
"strings"
)
func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
@ -34,7 +35,49 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
} else {
// Custom view
data.Events = readCustom(request.FormValue(`timeRange`), request.FormValue(`Level`), request.FormValue(`Category`), request.FormValue(`Impact`), request.FormValue(`Severity`), request.FormValue(`MSGName`), request.FormValue(`Sender`), request.FormValue(`CurrentPage`))
currentLevel := request.FormValue(`Level`)
currentTimeRange := request.FormValue(`timeRange`)
currentCategory := request.FormValue(`Category`)
currentImpact := request.FormValue(`Impact`)
currentSeverity := request.FormValue(`Severity`)
currentMessageName := request.FormValue(`MSGName`)
currentSender := request.FormValue(`Sender`)
currentPage := request.FormValue(`CurrentPage`)
currentLiveView := request.FormValue(`LiveView`)
data.Events = readCustom(currentTimeRange, currentLevel, currentCategory, currentImpact, currentSeverity, currentMessageName, currentSender, currentPage)
if strings.ToLower(currentLiveView) == `true` {
data.SetLiveView = true
}
if currentLevel != `` {
data.CurrentLevel = currentLevel
} else {
data.CurrentLevel = `*`
}
if currentTimeRange != `` {
data.CurrentTimeRange = currentTimeRange
} else {
data.CurrentTimeRange = `*`
}
if currentCategory != `` {
data.CurrentCategory = currentCategory
} else {
data.CurrentCategory = `*`
}
if currentImpact != `` {
data.CurrentImpact = currentImpact
} else {
data.CurrentImpact = `*`
}
//
// TODO
//
}
MimeTypes.Write2HTTP(response, MimeTypes.TypeWebHTML)

View File

@ -1,13 +1,30 @@
package Web
import (
"fmt"
"github.com/SommerEngineering/Ocean/Log/DeviceDatabase"
"github.com/SommerEngineering/Ocean/Log/Web/Scheme"
"strings"
)
func readCustom(timeRange, logLevel, logCategory, logImpact, logSeverity, logMessageName, logSender, logPage string) (events []Scheme.LogEvent) {
// data.Events = make([]Scheme.LogEvent, 3)
// data.Events[0].AB = Scheme.A
// data.Events[0].LogLevel = Scheme.LogINFO
// data.Events[0].LogLine = `hello world`
eventsFromDB := DeviceDatabase.ReadCustom(timeRange, logLevel, logCategory, logImpact, logSeverity, logMessageName, logSender, logPage)
count := len(eventsFromDB)
events = make([]Scheme.LogEvent, count)
for n := 0; n < count; n++ {
eventFromDB := eventsFromDB[n]
events[n] = Scheme.LogEvent{}
events[n].LogLine = eventFromDB.Format()
events[n].LogLevel = fmt.Sprintf("log%s", strings.ToLower(eventFromDB.Level[2:]))
if n%2 == 0 {
events[n].AB = Scheme.B
} else {
events[n].AB = Scheme.A
}
}
return
}

View File

@ -1,11 +1,19 @@
package Scheme
type Viewer struct {
Title string
SetLiveView bool
MessageNames []string
Sender []string
Events []LogEvent
Title string
SetLiveView bool
CurrentLevel string
CurrentTimeRange string
CurrentCategory string
CurrentImpact string
CurrentSeverity string
CurrentMessageName string
CurrentSender string
CurrentPage string
MessageNames []string
Sender []string
Events []LogEvent
}
// <li class="logline loga logwarn">

View File

@ -10,7 +10,7 @@ var Viewer string = `
<meta charset="utf-8">
<title>{{.Title}}</title>
{{if .SetLiveView}}
<meta http-equiv="refresh" content="30; URL=/log">
<meta http-equiv="refresh" content="30; URL=/log?LiveView={{.SetLiveView}}">
{{end}}
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Webflow">
@ -27,7 +27,14 @@ var Viewer string = `
<div class="w-row">
<div class="w-col w-col-6">
<h2 class="headercontrol">Options</h2>
<div class="options"><a class="button optionbuttons" href="#">Enable live view</a>
<div class="options">
<a class="button optionbuttons" href="#">
{{if .SetLiveView}}
Disable live view
{{else}}
Enable live view
{{end}}
</a>
</div>
</div>
<div class="w-col w-col-6">