Implemented the logging viewer

This commit is contained in:
Thorsten Sommer 2015-06-22 20:54:38 +02:00
parent 71aa99a5e3
commit 37c901636c
3 changed files with 66 additions and 7 deletions

View File

@ -16,6 +16,9 @@ type LoggingViewer struct {
CurrentMessageName string
CurrentSender string
CurrentPage string
NextPage string
PreviousPage string
LastPage string
MessageNames []MessageNames
Sender []Sender
Events []LogEvent

View File

@ -46,7 +46,9 @@ var LoggingViewer string = `
<h2 class="headercontrol">Filtering</h2>
<div class="filters">
<div class="w-form">
<form class="filterformcontainer" id="wf-form-Filters" name="wf-form-Filters" data-name="Filters">
<form class="filterformcontainer" id="wf-form-Filters" name="wf-form-Filters" data-name="Filters" method="post" action="/log">
<input type="hidden" name="LiveView" value="{{.SetLiveView}}">
<input type="hidden" name="CurrentPage" value="{{.CurrentPage}}">
<div class="w-row">
<div class="w-col w-col-6">
<div class="columns">
@ -144,13 +146,23 @@ var LoggingViewer string = `
{{end}}
</ul>
</div>
<div class="w-container pagecontainer"><a class="button changepagebutton" href="#">First</a><a class="button changepagebutton" href="#">-1</a>
<div class="w-container pagecontainer">
<a class="button changepagebutton" href="/log?Level={{.CurrentLevel}}&TimeRange={{.CurrentTimeRange}}&Category={{.CurrentCategory}}&Impact={{.CurrentImpact}}&Severity={{.CurrentSeverity}}&MSGName={{.CurrentMessageName}}&Sender={{.CurrentSender}}&CurrentPage=1&LiveView={{.SetLiveView}}">First</a>
<a class="button changepagebutton" href="/log?Level={{.CurrentLevel}}&TimeRange={{.CurrentTimeRange}}&Category={{.CurrentCategory}}&Impact={{.CurrentImpact}}&Severity={{.CurrentSeverity}}&MSGName={{.CurrentMessageName}}&Sender={{.CurrentSender}}&CurrentPage={{.PreviousPage}}&LiveView={{.SetLiveView}}">-1</a>
<div class="w-hidden-main w-hidden-medium newlineblock"></div>
<div class="w-form formpageswrapper">
<form class="formpages" id="wf-form-Pages" name="wf-form-Pages" data-name="Pages" method="post">
<form class="formpages" id="wf-form-Pages" name="wf-form-Pages" data-name="Pages" method="post" action="/log">
<input type="hidden" name="Level" value="{{.CurrentLevel}}">
<input type="hidden" name="TimeRange" value="{{.CurrentTimeRange}}">
<input type="hidden" name="Category" value="{{.CurrentCategory}}">
<input type="hidden" name="Impact" value="{{.CurrentImpact}}">
<input type="hidden" name="Severity" value="{{.CurrentSeverity}}">
<input type="hidden" name="MSGName" value="{{.CurrentMessageName}}">
<input type="hidden" name="Sender" value="{{.CurrentSender}}">
<input type="hidden" name="LiveView" value="{{.SetLiveView}}">
<label class="formfield" for="CurrentPage">Page</label>
<input class="w-input currentpage" id="CurrentPage" type="text" placeholder="1" name="CurrentPage" required="required" data-name="CurrentPage">
<div class="textcountpages">of 1000 pages</div>
<input class="w-input currentpage" id="CurrentPage" type="text" placeholder="{{.CurrentPage}}" name="CurrentPage" required="required" data-name="CurrentPage">
<div class="textcountpages">of {{.LastPage}} pages</div>
<div class="w-hidden-main w-hidden-medium w-hidden-small newlineblock"></div>
<input class="w-button button changepagebutton pagechangesubmit" type="submit" value="Change page" data-wait="Please wait...">
</form>
@ -161,7 +173,9 @@ var LoggingViewer string = `
<p>Oops! Something went wrong while submitting the form :(</p>
</div>
</div>
<div class="w-hidden-main w-hidden-medium newlineblock"></div><a class="button changepagebutton" href="#">+1</a><a class="button changepagebutton" href="#">Last</a>
<div class="w-hidden-main w-hidden-medium newlineblock"></div>
<a class="button changepagebutton" href="/log?Level={{.CurrentLevel}}&TimeRange={{.CurrentTimeRange}}&Category={{.CurrentCategory}}&Impact={{.CurrentImpact}}&Severity={{.CurrentSeverity}}&MSGName={{.CurrentMessageName}}&Sender={{.CurrentSender}}&CurrentPage={{.NextPage}}&LiveView={{.SetLiveView}}">+1</a>
<a class="button changepagebutton" href="/log?Level={{.CurrentLevel}}&TimeRange={{.CurrentTimeRange}}&Category={{.CurrentCategory}}&Impact={{.CurrentImpact}}&Severity={{.CurrentSeverity}}&MSGName={{.CurrentMessageName}}&Sender={{.CurrentSender}}&CurrentPage={{.LastPage}}&LiveView={{.SetLiveView}}">Last</a>
</div>
<script type="text/javascript" src="/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/admin/js/webflow.js"></script>

View File

@ -1,6 +1,7 @@
package Web
import (
"fmt"
"github.com/SommerEngineering/Ocean/Admin"
"github.com/SommerEngineering/Ocean/Admin/Scheme"
"github.com/SommerEngineering/Ocean/Log"
@ -9,6 +10,7 @@ import (
"github.com/SommerEngineering/Ocean/MimeTypes"
"github.com/SommerEngineering/Ocean/Shutdown"
"net/http"
"strconv"
"strings"
)
@ -25,6 +27,12 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
request.ParseForm()
countParameters := len(request.Form)
// The current page as number:
currentPageNumber := 1
// The max. page as number:
lastPageNumber := 1
// Setup the data for the HTML template:
data := Scheme.LoggingViewer{}
data.Title = `Logging Viewer`
@ -36,6 +44,15 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
// Initial view => first page (latest logs)
data.Events = readLatest()
data.SetLiveView = true
data.CurrentPage = `1`
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = `2`
}
data.PreviousPage = `1`
} else {
// Case: Custom view
currentLevel := request.FormValue(`Level`)
@ -98,9 +115,34 @@ func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
}
if currentPage != `` {
if number, err := strconv.Atoi(currentPage); err != nil {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityNone, LM.ImpactNone, LM.MessageNameEXECUTE, `Was not able to parse the page number.`, err.Error())
} else {
currentPageNumber = number
data.CurrentPage = fmt.Sprintf("%d", currentPageNumber)
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = fmt.Sprintf("%d", currentPageNumber+1)
}
if currentPageNumber > 1 {
data.PreviousPage = fmt.Sprintf("%d", currentPageNumber-1)
} else {
data.PreviousPage = `1`
}
}
data.CurrentPage = currentPage
} else {
data.CurrentPage = `*`
data.CurrentPage = `1`
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = `2`
}
data.PreviousPage = `1`
}
}