From 31b355f38133e32caa569dcf7f98ebed7dc5140a Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sat, 15 Oct 2016 15:58:41 +0200 Subject: [PATCH 01/12] ui and settings ready --- android/FarmAlarm/.idea/vcs.xml | 6 ++ app/.meteor/packages | 1 + app/.meteor/versions | 8 +++ app/client/alarm/alarm.html | 14 +++++ app/client/alarm/alarm.js | 41 ++++++++++++++ app/client/alarm/alarm_settings.html | 84 ++++++++++++++++++++++++++++ app/client/alarm/alarm_settings.js | 43 ++++++++++++++ app/client/app.html | 2 +- app/client/app.js | 24 ++++++++ app/client/app.less | 4 ++ app/client/settings.js | 14 ----- app/client/startup.js | 14 ++++- app/client/tabs.html | 16 ++++++ app/client/tabs.js | 7 +++ app/server/api.js | 7 +++ 15 files changed, 269 insertions(+), 16 deletions(-) create mode 100644 android/FarmAlarm/.idea/vcs.xml create mode 100644 app/client/alarm/alarm.html create mode 100644 app/client/alarm/alarm.js create mode 100644 app/client/alarm/alarm_settings.html create mode 100644 app/client/alarm/alarm_settings.js diff --git a/android/FarmAlarm/.idea/vcs.xml b/android/FarmAlarm/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/android/FarmAlarm/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.meteor/packages b/app/.meteor/packages index 0e0dbf0..26572e0 100644 --- a/app/.meteor/packages +++ b/app/.meteor/packages @@ -28,3 +28,4 @@ fortawesome:fontawesome mfpierre:chartist-js standard-minifier-css standard-minifier-js +iron:router diff --git a/app/.meteor/versions b/app/.meteor/versions index 3243f0e..7e24b5d 100644 --- a/app/.meteor/versions +++ b/app/.meteor/versions @@ -39,6 +39,14 @@ http@1.1.4 huttonr:bootstrap3@3.3.6_10 huttonr:bootstrap3-assets@3.3.6_3 id-map@1.0.6 +iron:controller@1.0.12 +iron:core@1.0.11 +iron:dynamic-template@1.0.12 +iron:layout@1.0.12 +iron:location@1.0.11 +iron:middleware-stack@1.1.0 +iron:router@1.0.13 +iron:url@1.0.11 jquery@1.11.7 launch-screen@1.0.10 less@2.5.7 diff --git a/app/client/alarm/alarm.html b/app/client/alarm/alarm.html new file mode 100644 index 0000000..a22ee6b --- /dev/null +++ b/app/client/alarm/alarm.html @@ -0,0 +1,14 @@ + diff --git a/app/client/alarm/alarm.js b/app/client/alarm/alarm.js new file mode 100644 index 0000000..805d5c5 --- /dev/null +++ b/app/client/alarm/alarm.js @@ -0,0 +1,41 @@ +function sensor_data_collection() { + var controllerId = Session.get('controller_id'); + return SensorData.find({ + controllerId: controllerId + }, { + sort: { + created_at: -1 + }, + limit: 3 + }); +} + +function last_sensor_reading() { + var controller = Session.get('controller_id'); + var result = null; + if (controller) { + result = sensor_data_collection(); + } + if (result && result.count() > 0) { + return result.fetch()[0]; + } else { + return {} + } +} + +Template.alarm.helpers({ + last_reading: last_sensor_reading, + pretty_time: function(time) { + return moment(time).format("DD.MM.YYYY, HH:mm") + } +}); + +Template.alarm.events({ + 'click #run_alarm_settings': function() { + Modal.show('alarm_settings'); + } +}); + +Template.alarm.helpers({ + +}); diff --git a/app/client/alarm/alarm_settings.html b/app/client/alarm/alarm_settings.html new file mode 100644 index 0000000..f6706ad --- /dev/null +++ b/app/client/alarm/alarm_settings.html @@ -0,0 +1,84 @@ + diff --git a/app/client/alarm/alarm_settings.js b/app/client/alarm/alarm_settings.js new file mode 100644 index 0000000..6b7118d --- /dev/null +++ b/app/client/alarm/alarm_settings.js @@ -0,0 +1,43 @@ + +Template.settings.helpers({ + timeSelected: function(time) { + var config = controller_state().config; + return config.automaticTimeOfDay == time; + }, + + dayChecked: function(day) { + var config = controller_state().config; + var days = config.automaticDaysOfWeek || []; + return days.includes(day) + }, + + manualInflowChecked: function(day) { + var config = controller_state().config; + return config.manualInflow; + } + + +}); + +Template.settings.events({ + 'click #save_settings': function() { + var instance = Template.instance(); + selectedTime = instance.$('#time_of_day').val(); + selectedDays = []; + instance.$('.day_checkbox').each(function() { + if (this.checked) { + selectedDays.push(instance.$(this).val()); + } + }); + var manualInflow = instance.$('#manual_inflow').is(':checked'); + console.log("MI ", manualInflow); + var controller_id = Session.get('controller_id'); + Meteor.call('saveControllerConfig', controller_id, selectedTime, selectedDays, manualInflow); + } +}); + +Template.sensorData.helpers({ + created_at_formatted: function() { + return moment(this.created_at).format("DD.MM.YYYY, HH:mm") + } +}); diff --git a/app/client/app.html b/app/client/app.html index c9acb5a..6a310ba 100644 --- a/app/client/app.html +++ b/app/client/app.html @@ -12,7 +12,7 @@ {{> tabs}}
- {{> Template.dynamic template=template_name }} + {{> Template.dynamic template=template_name }}
diff --git a/app/client/app.js b/app/client/app.js index a54400f..77bfb8c 100644 --- a/app/client/app.js +++ b/app/client/app.js @@ -6,3 +6,27 @@ Template.body.helpers({ return Session.get("templateName"); } }); + +controller_state = function() { + var controller = Session.get('controller_id'); + var result = {} + if (controller) { + result = ControllerState.findOne({ + controller_id: controller + }); + } + + if (!result) { + result = {} + }; + return result; +}; + +accessible = function(feature) { + var controller = controller_state(); + + console.log('cotnroller ', controller); + if (!controller.features) return false; + + return controller.features[feature] === true; +} diff --git a/app/client/app.less b/app/client/app.less index 19a102c..d0eab3f 100644 --- a/app/client/app.less +++ b/app/client/app.less @@ -6,6 +6,10 @@ padding-top: 10px; } +.huge_text { + font-size: 3em; +} + @media all and (orientation: portrait) { #bucket_image { width: 90%; diff --git a/app/client/settings.js b/app/client/settings.js index 6d7bb6b..6b7118d 100644 --- a/app/client/settings.js +++ b/app/client/settings.js @@ -1,17 +1,3 @@ -function controller_state() { - var controller = Session.get('controller_id'); - var result = {} - if (controller) { - result = ControllerState.findOne({ - controller_id: controller - }); - } - - if (!result) { - result = {} - }; - return result; -}; Template.settings.helpers({ timeSelected: function(time) { diff --git a/app/client/startup.js b/app/client/startup.js index e4d6914..862d092 100644 --- a/app/client/startup.js +++ b/app/client/startup.js @@ -1,4 +1,4 @@ -Tracker.autorun(function () { +Tracker.autorun(function() { var id = Session.get('controller_id'); if (id) { Meteor.subscribe("sensor_data", id); @@ -6,3 +6,15 @@ Tracker.autorun(function () { Meteor.subscribe('pictures', id); } }); + +Router.route('/', function() { + if (accessible('start')) { + Session.set('templateName', 'start'); + } else { + Session.set('templateName', 'no_access') + } +}); + +Router.route('/farmalarm', function() { + +}); diff --git a/app/client/tabs.html b/app/client/tabs.html index accaac7..f313608 100644 --- a/app/client/tabs.html +++ b/app/client/tabs.html @@ -1,10 +1,26 @@