From e3ec4803de67ae4594f2d9eb8ad18730f15d5777 Mon Sep 17 00:00:00 2001 From: Mike Shoup Date: Tue, 23 Oct 2018 21:51:19 -0600 Subject: [PATCH] Move append logic to separate function Fixes #15 --- html/js/thermostat.js | 226 +++++++++++++++++++++--------------------- main.go | 2 +- 2 files changed, 116 insertions(+), 112 deletions(-) diff --git a/html/js/thermostat.js b/html/js/thermostat.js index 2489491..d51013c 100644 --- a/html/js/thermostat.js +++ b/html/js/thermostat.js @@ -60,6 +60,120 @@ function fahrenheitToCelsius(degree) { return (degree - 32) * 5 / 9; }; +function appendData(data) { + // Title of thermostat + var titleh = $("

").text(data.alias); + var titlediv = $("
").addClass("row").append(titleh); + + // Thermostat status + var rowdiv = $("
"); + rowdiv.addClass("row"); + + // Display temperature + if (jsconfig.fahrenheit) { + var temp = celsiusToFahrenheit(parseFloat(data.temp)).toFixed(1) + "°F"; + } else { + var temp = parseFloat(data.temp).toFixed(1) + "°C"; + } + var temph = $("

").text(temp); + var tempdiv = $("
").addClass("two columns").append(temph); + rowdiv.append(tempdiv); + + // Display status + if (data.cooling) { + var statustext = "Cooling" + } else if (data.heating) { + var statustext = "Heating" + } else { + var statustext = "Idle" + } + var statusp = $("

").html(statustext); + var statusdiv = $("
").addClass("two columns").append(statusp); + rowdiv.append(statusdiv); + + // Display sensor config + $.ajax({ + url: jsconfig.baseurl + "/api/config/sensors/" + data.alias, + beforeSend: authHeaders + }).then(function(configData){ + if (jsconfig.fahrenheit) { + var degUnit = "°F"; + var hightemp = celsiusToFahrenheit(parseFloat(configData.hightemp)).toFixed(1); + var lowtemp = celsiusToFahrenheit(parseFloat(configData.lowtemp)).toFixed(1); + } else { + var hightemp = parseFloat(configData.hightemp).toFixed(1); + var lowtemp = parseFloat(configData.lowtemp).toFixed(1); + } + + rp = '[0-9]+(\.[0-9]+)?' + + var cmIn = $("").attr("id", "cm" + configData.alias).val(configData.coolminutes).attr("size", "2").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); + var htIn = $("").attr("id", "ht" + configData.alias).val(hightemp).attr("size", "4").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); + var hmIn = $("").attr("id", "hm" + configData.alias).val(configData.heatminutes).attr("size", "2").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); + var ltIn = $("").attr("id", "lt" + configData.alias).val(lowtemp).attr("size", "4").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); + + var configp = $("

") + if (!configData.cooldisable) { + configp.append("Chills for ").append(cmIn).append(" minutes when > ").append(htIn).append(degUnit); + } + + if (!configData.cooldisable && !configData.heatdisable){ + configp.append($("
")); + } + + if (!configData.heatdisable) { + configp.append("Heats for ").append(hmIn).append(" minutes when < ").append(ltIn).append(degUnit); + } + + var configdiv = $("
").addClass("five columns").append(configp); + rowdiv.append(configdiv); + + var yesButton = $("").addClass("button button-primary").text("✔").css("margin-right", "5px").click(function() { + if (jsconfig.fahrenheit) { + var newHT = fahrenheitToCelsius(parseFloat(htIn.val())); + var newLT = fahrenheitToCelsius(parseFloat(ltIn.val())); + } else { + var newHT = parseFloat(htIn.val()); + var newLT = parseFloat(ltIn.val()); + } + $.ajax({ + type: "POST", + url: jsconfig.baseurl + "/api/config/sensors", + beforeSend: authHeaders, + data: JSON.stringify([{ + "id": configData.id, + "alias": configData.alias, + "hightemp": newHT, + "lowtemp": newLT, + "heatgpio": configData.heatgpio, + "heatinvert": configData.heatInvert, + "heatminutes": parseFloat(hmIn.val()), + "coolgpio": configData.coolgpio, + "coolinvert": configData.coolinvert, + "coolminutes": parseFloat(cmIn.val()), + "verbose": configData.verbose + }]) + }) + window.setInterval(renderThermostats, 60000); + renderThermostats(); + }); + + var noButton = $("").addClass("button").text("✘").click(function() { + window.setInterval(renderThermostats, 60000); + renderThermostats(); + }); + + if (!configData.heatdisable || !configData.cooldisable) { + var buttonDiv = $("
").addClass("three columns").append(yesButton).append(noButton); + rowdiv.append(buttonDiv); + } + + // Add things back to the thermostat list + $("#thermostats").append(titlediv); + $("#thermostats").append(rowdiv); + }); +} + function renderThermostats() { $.ajax({ url: jsconfig.baseurl + "/api/status/", @@ -67,117 +181,7 @@ function renderThermostats() { }).then(function(data) { $("#thermostats").empty(); for (var key in data) { - // Title of thermostat - var titleh = $("

").text(data[key].alias); - var titlediv = $("
").addClass("row").append(titleh); - - // Thermostat status - var rowdiv = $("
"); - rowdiv.addClass("row"); - - // Display temperature - if (jsconfig.fahrenheit) { - var temp = celsiusToFahrenheit(parseFloat(data[key].temp)).toFixed(1) + "°F"; - } else { - var temp = parseFloat(data[key].temp).toFixed(1) + "°C"; - } - var temph = $("

").text(temp); - var tempdiv = $("
").addClass("two columns").append(temph); - rowdiv.append(tempdiv); - - // Display status - if (data[key].cooling) { - var statustext = "Cooling" - } else if (data[key].heating) { - var statustext = "Heating" - } else { - var statustext = "Idle" - } - var statusp = $("

").html(statustext); - var statusdiv = $("
").addClass("two columns").append(statusp); - rowdiv.append(statusdiv); - - // Display sensor config - $.ajax({ - url: jsconfig.baseurl + "/api/config/sensors/" + data[key].alias, - beforeSend: authHeaders - }).then(function(configData){ - if (jsconfig.fahrenheit) { - var degUnit = "°F"; - var hightemp = celsiusToFahrenheit(parseFloat(configData.hightemp)).toFixed(1); - var lowtemp = celsiusToFahrenheit(parseFloat(configData.lowtemp)).toFixed(1); - } else { - var hightemp = parseFloat(configData.hightemp).toFixed(1); - var lowtemp = parseFloat(configData.lowtemp).toFixed(1); - } - - rp = '[0-9]+(\.[0-9]+)?' - - var cmIn = $("").attr("id", "cm" + configData.alias).val(configData.coolminutes).attr("size", "2").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); - var htIn = $("").attr("id", "ht" + configData.alias).val(hightemp).attr("size", "4").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); - var hmIn = $("").attr("id", "hm" + configData.alias).val(configData.heatminutes).attr("size", "2").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); - var ltIn = $("").attr("id", "lt" + configData.alias).val(lowtemp).attr("size", "4").attr("pattern", rp).on('input', function(){window.clearInterval(rtHandle)}); - - var configp = $("

") - if (!configData.cooldisable) { - configp.append("Chills for ").append(cmIn).append(" minutes when > ").append(htIn).append(degUnit); - } - - if (!configData.cooldisable && !configData.heatdisable){ - configp.append($("
")); - } - - if (!configData.heatdisable) { - configp.append("Heats for ").append(hmIn).append(" minutes when < ").append(ltIn).append(degUnit); - } - - var configdiv = $("
").addClass("five columns").append(configp); - rowdiv.append(configdiv); - - var yesButton = $("").addClass("button button-primary").text("✔").css("margin-right", "5px").click(function() { - if (jsconfig.fahrenheit) { - var newHT = fahrenheitToCelsius(parseFloat(htIn.val())); - var newLT = fahrenheitToCelsius(parseFloat(ltIn.val())); - } else { - var newHT = parseFloat(htIn.val()); - var newLT = parseFloat(ltIn.val()); - } - $.ajax({ - type: "POST", - url: jsconfig.baseurl + "/api/config/sensors", - beforeSend: authHeaders, - data: JSON.stringify([{ - "id": configData.id, - "alias": configData.alias, - "hightemp": newHT, - "lowtemp": newLT, - "heatgpio": configData.heatgpio, - "heatinvert": configData.heatInvert, - "heatminutes": parseFloat(hmIn.val()), - "coolgpio": configData.coolgpio, - "coolinvert": configData.coolinvert, - "coolminutes": parseFloat(cmIn.val()), - "verbose": configData.verbose - }]) - }) - window.setInterval(renderThermostats, 60000); - renderThermostats(); - }); - - var noButton = $("").addClass("button").text("✘").click(function() { - window.setInterval(renderThermostats, 60000); - renderThermostats(); - }); - - if (!configData.heatdisable || !configData.cooldisable) { - var buttonDiv = $("
").addClass("three columns").append(yesButton).append(noButton); - rowdiv.append(buttonDiv); - } - - // Add things back to the thermostat list - $("#thermostats").append(titlediv); - $("#thermostats").append(rowdiv); - }); + appendData(data[key]) }; }); }; diff --git a/main.go b/main.go index bbe2392..1b88920 100644 --- a/main.go +++ b/main.go @@ -8,7 +8,7 @@ import ( ) // Version is the current code version of tempgopher -const Version = "0.3.0" +const Version = "0.3.1-dev" func main() { var args struct {