diff --git a/Log/DeviceDatabase/ReadCustom.go b/Log/DeviceDatabase/ReadCustom.go new file mode 100644 index 0000000..04a7045 --- /dev/null +++ b/Log/DeviceDatabase/ReadCustom.go @@ -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 +} diff --git a/Log/Web/HandlerLog.go b/Log/Web/HandlerLog.go index 713f105..7d90658 100644 --- a/Log/Web/HandlerLog.go +++ b/Log/Web/HandlerLog.go @@ -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) diff --git a/Log/Web/ReadCustom.go b/Log/Web/ReadCustom.go index 3ada196..fec3b43 100644 --- a/Log/Web/ReadCustom.go +++ b/Log/Web/ReadCustom.go @@ -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 } diff --git a/Log/Web/Scheme/Scheme.go b/Log/Web/Scheme/Scheme.go index 52dc75f..f0c16c4 100644 --- a/Log/Web/Scheme/Scheme.go +++ b/Log/Web/Scheme/Scheme.go @@ -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 } //