Refactored we pages

Former-commit-id: a64def61acdcbf63bf4792b9084a48dded9eb41a
This commit is contained in:
Ziver Koc 2015-12-10 21:30:37 +01:00
parent c669cca664
commit 84fd5adb5e
12 changed files with 421 additions and 424 deletions

View file

@ -1,136 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Power;Challenge</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Power;Challenge</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Ziver</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li><a href="/">Overview</a></li>
<li><a href="heatmap">Heat Map</a></li>
<li><a href="#">Statistics</a></li>
<li class="active"><a href="configure">Configuration <span class="sr-only">(current)</span></a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Configuration</h1>
<div class="panel panel-default">
<div class="panel-heading">Profile Information</div>
<div class="panel-body">
<form>
<hidden id="id" value="{{user.getId()}}">
<div class="form-group col-md-4">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" value="{{user.username}}">
</div>
<div class="form-group col-md-8">
<label for="address">Address</label>
<input type="text" class="form-control" id="username" value="{{user.address}}">
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-default">Save</button>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Local Sensors</div>
<div class="panel-body">
This is a local list of sensors connected to this node.
</div>
<table class="table table-hover">
<tr>
<th>Name</th>
<th>Type</th>
<th>Configuration</th>
</tr>
{{#localSensor}}
<tr>
<td>{{.name}}</td>
<td>{{.type}}</td>
<td>{{.config}}</td>
</tr>
{{/localSensor}}
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading">External Users</div>
<div class="panel-body">
Add or remove users that you want to synchronized data with.
</div>
<table class="table table-hover">
<tr>
<th>Username</th>
<th>Address</th>
<th>Hostname</th>
<th>Port</th>
</tr>
{{#extUsers}}
<tr>
<td>{{.username}}</td>
<td>{{.address}}</td>
<td>{{.hostname}}</td>
<td>{{.port}}</td>
</tr>
{{/extUsers}}
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading">External Sensors</div>
<div class="panel-body">
This is a read only list of synchronized sensors from external users.
</div>
<table class="table table-hover">
<tr>
<th>Name</th>
<th>Type</th>
<th>Configuration</th>
</tr>
{{#extSensor}}
<tr>
<td>{{.name}}</td>
<td>{{.type}}</td>
<td>{{.config}}</td>
</tr>
{{/extSensor}}
</table>
</div>
</div>
</div>
</div>
</body>
</html>

86
web-resource/configure.tmpl Executable file
View file

@ -0,0 +1,86 @@
<h1 class="page-header">Configuration</h1>
<div class="panel panel-default">
<div class="panel-heading">Profile Information</div>
<div class="panel-body">
<form>
<hidden id="id" value="{{user.getId()}}">
<div class="form-group col-md-4">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" value="{{user.username}}">
</div>
<div class="form-group col-md-8">
<label for="address">Address</label>
<input type="text" class="form-control" id="address" value="{{user.address}}">
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-default">Save</button>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Local Sensors</div>
<div class="panel-body">
This is a local list of sensors connected to this node.
</div>
<table class="table table-hover">
<tr>
<th>Name</th>
<th>Type</th>
<th>Configuration</th>
</tr>
{{#localSensor}}
<tr>
<td>{{.name}}</td>
<td>{{.type}}</td>
<td>{{.config}}</td>
</tr>
{{/localSensor}}
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading">External Users</div>
<div class="panel-body">
Add or remove users that you want to synchronized data with.
</div>
<table class="table table-hover">
<tr>
<th>Username</th>
<th>Address</th>
<th>Hostname</th>
<th>Port</th>
</tr>
{{#extUsers}}
<tr>
<td>{{.username}}</td>
<td>{{.address}}</td>
<td>{{.hostname}}</td>
<td>{{.port}}</td>
</tr>
{{/extUsers}}
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading">External Sensors</div>
<div class="panel-body">
This is a read only list of synchronized sensors from external users.
</div>
<table class="table table-hover">
<tr>
<th>Name</th>
<th>Type</th>
<th>Configuration</th>
</tr>
{{#extSensor}}
<tr>
<td>{{.name}}</td>
<td>{{.type}}</td>
<td>{{.config}}</td>
</tr>
{{/extSensor}}
</table>
</div>

View file

@ -1,88 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Power;Challenge</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
var mapProp = {
center:new google.maps.LatLng(59.329323,18.068581),
zoom:12,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var home = new google.maps.Circle({
center: {lat: 59.365954, lng: 17.975351},
radius:2000,
strokeColor:"#00FF00",
strokeOpacity:0.8,
strokeWeight:2,
fillColor:"#00FF00",
fillOpacity:0.4,
map: map
});
var external = new google.maps.Circle({
center: {lat: 59.275638, lng: 18.024362},
radius:2000,
strokeColor:"#FF0000",
strokeOpacity:0.8,
strokeWeight:2,
fillColor:"#FF0000",
fillOpacity:0.4,
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Power;Challenge</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Ziver</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li><a href="/">Overview</a></li>
<li class="active"><a href="heatmap">Heat Map <span class="sr-only">(current)</span></a></li>
<li><a href="#">Statistics</a></li>
<li><a href="configure">Configuration</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Heat Map</h1>
<div id="googleMap" style="width: 95%;height: 800px;"></div>
</div>
</div>
</div>
</body>
</html>

39
web-resource/heatmap.tmpl Executable file
View file

@ -0,0 +1,39 @@
<h1 class="page-header">Heat Map</h1>
<div id="googleMap" style="width: 95%;height: 800px;"></div>
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
var mapProp = {
center:new google.maps.LatLng(59.329323,18.068581),
zoom:12,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var home = new google.maps.Circle({
center: {lat: 59.365954, lng: 17.975351},
radius:2000,
strokeColor:"#00FF00",
strokeOpacity:0.8,
strokeWeight:2,
fillColor:"#00FF00",
fillOpacity:0.4,
map: map
});
var external = new google.maps.Circle({
center: {lat: 59.275638, lng: 18.024362},
radius:2000,
strokeColor:"#FF0000",
strokeOpacity:0.8,
strokeWeight:2,
fillColor:"#FF0000",
fillOpacity:0.4,
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>

View file

@ -1,111 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Power;Challenge</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/morris.min.js"></script>
<script>
$(function(){
chartData("min-power-chart",
[
{ y: (Date.now()-24*60*60*1000) },
{{#minData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/minData}}
{ y: Date.now() }
]
);
chartData("hour-power-chart",
[
{ y: (Date.now()-3*24*60*60*1000) },
{{#hourData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/hourData}}
{ y: (Date.now()-24*60*60*1000) }
]
);
chartData("day-power-chart",
[{{#dayData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/dayData}}
{ y: (Date.now()-3*24*60*60*1000) }
]
);
});
var userArray = [ {{#username}} '{{.}}', {{/username}} ];
function chartData(elementId, data){
Morris.Line({
element: elementId,
data: data,
xkey: 'y',
ykeys: userArray,
labels: userArray,
continuousLine: false,
pointSize: 1,
postUnits: 'kWh',
resize: true
});
}
</script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Power;Challenge</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Ziver</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="/">Overview <span class="sr-only">(current)</span></a></li>
<li><a href="heatmap">Heat Map</a></li>
<li><a href="#">Statistics</a></li>
<li><a href="configure">Configuration</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Overview</h1>
<div class="row placeholders">
<H1>Last 24 hours (kWh/5min)</H1>
<div id="min-power-chart" style="height:450px;"></div>
</div>
<div class="row placeholders">
<H1>Previous two days (kWh/h)</H1>
<div id="hour-power-chart" style="height:450px;"></div>
</div>
<div class="row placeholders">
<H1>Long term (kWh/day)</H1>
<div id="day-power-chart" style="height:450px;"></div>
</div>
</div>
</div>
</div>
</body>
</html>

51
web-resource/index.tmpl Executable file
View file

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Power;Challenge</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Power;Challenge</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">{{user.username}}</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<!-- <li class="active"><a href="/">Overview</a></li> -->
{{#navigation}}
<li><a href="{{.getURL()}}">{{.getName()}}</a></li>
{{/navigation}}
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
{{content}}
</div>
</div>
</div>
</body>
</html>

63
web-resource/overview.tmpl Executable file
View file

@ -0,0 +1,63 @@
<h1 class="page-header">Overview</h1>
<div class="row placeholders">
<H1>Last 24 hours (kWh/5min)</H1>
<div id="min-power-chart" style="height:450px;"></div>
</div>
<div class="row placeholders">
<H1>Previous two days (kWh/h)</H1>
<div id="hour-power-chart" style="height:450px;"></div>
</div>
<div class="row placeholders">
<H1>Long term (kWh/day)</H1>
<div id="day-power-chart" style="height:450px;"></div>
</div>
<script src="js/raphael-min.js"></script>
<script src="js/morris.min.js"></script>
<script>
$(function(){
chartData("min-power-chart",
[
{ y: (Date.now()-24*60*60*1000) },
{{#minData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/minData}}
{ y: Date.now() }
]
);
chartData("hour-power-chart",
[
{ y: (Date.now()-3*24*60*60*1000) },
{{#hourData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/hourData}}
{ y: (Date.now()-24*60*60*1000) }
]
);
chartData("day-power-chart",
[{{#dayData}}
{ y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/dayData}}
{ y: (Date.now()-3*24*60*60*1000) }
]
);
});
var userArray = [ {{#username}} '{{.}}', {{/username}} ];
function chartData(elementId, data){
Morris.Line({
element: elementId,
data: data,
xkey: 'y',
ykeys: userArray,
labels: userArray,
continuousLine: false,
pointSize: 1,
postUnits: 'kWh',
resize: true
});
}
</script>