summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Schlaeger <chris@linux.com>2017-01-31 21:53:28 +0100
committerChris Schlaeger <chris@linux.com>2017-01-31 21:53:28 +0100
commit996894cf8e2426d3387f83cec1e95020f0cb120b (patch)
tree69d9425397ae824babb79fb5050460ca7c74924c
parent4d13ae284d799c7947d34762579d0054ecac6a1c (diff)
downloadpostrunner-996894cf8e2426d3387f83cec1e95020f0cb120b.zip
First attempt to show monitoring data in browser.
-rw-r--r--lib/postrunner/DailyMonitoringView.rb85
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/postrunner/DailyMonitoringView.rb b/lib/postrunner/DailyMonitoringView.rb
new file mode 100644
index 0000000..e062b98
--- /dev/null
+++ b/lib/postrunner/DailyMonitoringView.rb
@@ -0,0 +1,85 @@
+#!/usr/bin/env ruby -w
+# encoding: UTF-8
+#
+# = DailyMonitoringView.rb -- PostRunner - Manage the data from your Garmin sport devices.
+#
+# Copyright (c) 2016 by Chris Schlaeger <cs@taskjuggler.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+
+require 'fit4ruby'
+
+require 'postrunner/View'
+require 'postrunner/MonitoringStatistics'
+
+module PostRunner
+
+ class DailyMonitoringView < View
+
+ attr_reader :file_name
+
+ def initialize(db, date, monitoring_files)
+ @db = db
+ @ffs = db['file_store']
+ views = @ffs.views
+ views.current_page = nil
+ @date = date
+ @monitoring_files = monitoring_files
+
+ @file_name = File.join(@db['config']['html_dir'], "#{date}.html")
+
+ pages = PagingButtons.new([ date ])
+ #pages.current_page = "#{date}.html"
+
+ super("PostRunner Daily Monitoring: #{date}", views, pages)
+ generate_html(@doc)
+ write(@file_name)
+ end
+
+ private
+
+ def generate_html(doc)
+ doc.unique(:dailymonitoringview_style) {
+ doc.head {
+ [ 'jquery/jquery-2.1.1.min.js', 'flot/jquery.flot.js',
+ 'flot/jquery.flot.time.js' ].each do |js|
+ doc.script({ 'language' => 'javascript',
+ 'type' => 'text/javascript', 'src' => js })
+ end
+ doc.style(style)
+ }
+ }
+ #doc.meta({ 'name' => 'viewport',
+ # 'content' => 'width=device-width, ' +
+ # 'initial-scale=1.0, maximum-scale=1.0, ' +
+ # 'user-scalable=0' })
+
+ body {
+ doc.body {
+ doc.div({ :class => 'main' }) {
+ MonitoringStatistics.new(@monitoring_files).daily_html(@date, doc)
+ }
+ }
+ }
+ end
+
+ def style
+ <<EOT
+body {
+ font-family: verdana,arial,sans-serif;
+ margin: 0px;
+}
+.main {
+ width: 550px;
+ margin: 0 auto;
+}
+EOT
+ end
+
+ end
+
+end
+