implemented table

This commit is contained in:
Dorian Zedler 2019-07-14 21:38:37 +02:00
parent e0e810bd6b
commit a5d7aa63c7
2 changed files with 81 additions and 13 deletions

View file

@ -121,17 +121,24 @@
<span data-feather="calendar"></span> <span data-feather="calendar"></span>
</button> </button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton"> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<form class="px-4 py-3"> <!--form class="px-4 py-3">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(86400)">Today</button> <button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(86400)">Today</button>
<button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(604800)">This <button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(604800)">This
Week</button> Week</button>
<button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(18144000)">This <button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(2678400)">This
Month</button> Month</button>
<button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(18144000)">This <button type="button" class="btn btn-light" onclick="dashboard.setTimeRange(18144000)">This
Year</button> Year</button>
</div> </div>
</form> </form-->
<a class="dropdown-item" href="#" onclick="dashboard.setTimeRange(86400)">Today</a>
<a class="dropdown-item" href="#" onclick="dashboard.setTimeRange(604800)">This
Week</a>
<a class="dropdown-item" href="#" onclick="dashboard.setTimeRange(2678400)">This
Month</a>
<a class="dropdown-item" href="#" onclick="dashboard.setTimeRange(31536000)">This
Year</a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -18,7 +18,6 @@ class BlueWeatherDashboard {
this.restoreParms(this.params) this.restoreParms(this.params)
this.setTimeRange()
this.loadDashboard(this.params) this.loadDashboard(this.params)
this.initDone = true this.initDone = true
} }
@ -46,9 +45,24 @@ class BlueWeatherDashboard {
if (page === -1) { if (page === -1) {
dashboard.setPageTitle("Dashboard") dashboard.setPageTitle("Dashboard")
// create widget row
var firstRow = document.createElement("div") var firstRow = document.createElement("div")
firstRow.classList.add("card-deck") firstRow.classList.add("card-deck")
// create table
var tableContainer = document.createElement("div")
tableContainer.style = "overflow-x:auto;margin-top:20px;"
var table = document.createElement("table")
tableContainer.appendChild(table)
table.classList.add("table", "table-hover")
// create forst row of table
var tableHead = document.createElement("thead")
table.appendChild(tableHead)
tableHead.innerHTML = "<tr><th>Sensor</th><th>Minimum</th><th>Maximum</th><th>Average</th></tr>"
var tableBody = document.createElement("tbody")
table.appendChild(tableBody)
for (var i = 0; i < locationData.sensors.length; i++) { for (var i = 0; i < locationData.sensors.length; i++) {
var sensor = locationData.sensors[i] var sensor = locationData.sensors[i]
@ -65,11 +79,21 @@ class BlueWeatherDashboard {
// get all relevant meassurement values // get all relevant meassurement values
var vals = [] var vals = []
var sum = 0
var min
var max
for (s = 0; s < locationData["measvalues"].length; s++) { for (s = 0; s < locationData["measvalues"].length; s++) {
var thisValue = locationData["measvalues"][s] var thisValue = locationData["measvalues"][s]
if (parseInt(thisValue['sensorid']) === parseInt(sensor.id)) { if (parseInt(thisValue['sensorid']) === parseInt(sensor.id)) {
vals.push(thisValue) vals.push(thisValue)
sum += thisValue.measvalue
if(thisValue.measvalue < min || min === undefined) {
min = thisValue.measvalue
}
if(thisValue.measvalue > max || max === undefined) {
max = thisValue.measvalue
}
} }
} }
@ -81,9 +105,14 @@ class BlueWeatherDashboard {
return b.timestamp - a.timestamp return b.timestamp - a.timestamp
}) })
// create table col
var tableRow = document.createElement("tr")
tableRow.innerHTML = "<td>" + sensor.sensorname + " (" + valueType.valuetype + ", " + valueType.valueunit + ")" + "</td><td>" + min + "</td><td>" + max + "</td><td>" + (Math.round((sum / vals.length)*100)/100) + "</td>"
tableBody.appendChild(tableRow)
// - create widget card -
var latestVal = vals[0] var latestVal = vals[0]
// - create html widget -
// create card // create card
var thisWidget = document.createElement("div") var thisWidget = document.createElement("div")
thisWidget.classList.add("card") thisWidget.classList.add("card")
@ -152,8 +181,11 @@ class BlueWeatherDashboard {
firstRow.appendChild(thisWidget) firstRow.appendChild(thisWidget)
} }
mainContent.innerHTML = ""; mainContent.innerHTML = "";
mainContent.appendChild(firstRow) mainContent.appendChild(firstRow)
mainContent.appendChild(tableContainer)
} }
else if (page !== -1) { else if (page !== -1) {
dashboard.loadDiagram("mainContent", locationData, page) dashboard.loadDiagram("mainContent", locationData, page)
@ -177,6 +209,7 @@ class BlueWeatherDashboard {
Object.assign(this.params, newParams) Object.assign(this.params, newParams)
window.history.pushState("object or string", "Title", this.buildUrl({ "params": JSON.stringify(this.params) }));
this.loadDashboard() this.loadDashboard()
} }
@ -337,14 +370,42 @@ class BlueWeatherDashboard {
stepSize: (data.range.to - data.range.from) / 10, stepSize: (data.range.to - data.range.from) / 10,
userCallback: function (label, index, labels) { userCallback: function (label, index, labels) {
var d = new Date(parseInt(label) * 1000); var d = new Date(parseInt(label) * 1000);
var datestr = var datestr = "";
// ("0" + d.getDate()).slice(-2) + "-" +
// ("0"+(d.getMonth()+1)).slice(-2) + "-" + var to = data.range.to
// d.getFullYear() + " " + var from = data.range.from
if(to === ""){
to = new Date().getTime()
}
var range = data.range.to - data.range.from
if(range <= 60 * 60 * 24){
// covers one day or less
datestr = ("0" + d.getHours()).slice(-2) + ":" +
("0" + d.getMinutes()).slice(-2) + ":" +
("0" + d.getSeconds()).slice(-2)
}
else if(range <= 60 * 60 * 24 * 31){
// covers one month or less
datestr = ("0" + d.getDate()).slice(-2) + "-" +
("0"+(d.getMonth()+1)).slice(-2) + " " +
("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getHours()).slice(-2) + ":" +
("0" + d.getMinutes()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2) + ":" +
("0" + d.getSeconds()).slice(-2) ("0" + d.getSeconds()).slice(-2)
; }
else {
// covers more than a month
datestr =
d.getFullYear() + "-" +
("0" + d.getDate()).slice(-2) + "-" +
("0"+(d.getMonth()+1)).slice(-2)
}
return datestr; return datestr;
} }
}, },
@ -372,9 +433,9 @@ class BlueWeatherDashboard {
var d = new Date(time * 1000); var d = new Date(time * 1000);
var datestr = var datestr =
// ("0" + d.getDate()).slice(-2) + "-" + d.getFullYear() + "-" +
// ("0"+(d.getMonth()+1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2) + "-" +
// d.getFullYear() + " " + ("0"+(d.getMonth()+1)).slice(-2) + " " +
("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getHours()).slice(-2) + ":" +
("0" + d.getMinutes()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2) + ":" +
("0" + d.getSeconds()).slice(-2) ("0" + d.getSeconds()).slice(-2)