Advertisement
Guest User

Untitled

a guest
Dec 10th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 9.07 KB | None | 0 0
  1.  
  2. // 12 volt div
  3. var input_12_volt = $('.12_volt_wrapper').html();
  4. var count_12_volt = 1;
  5. // Initialise remove button to hidden
  6. var remove_hidden_12 = true;
  7. $('.remove-12').css("display", "none");
  8.  
  9. // 240 volt div
  10. var input_240_volt = $('.240_volt_wrapper').html();
  11. var count_240_volt = 1;
  12. // Initialise remove button to hidden
  13. var remove_hidden_240 = true;
  14. $('.remove-240').css("display", "none");
  15.  
  16. // usb appliance div variables
  17. var input_USB = $('.USB_appliance_wrapper').html();
  18. var count_USB = 1;
  19. // Initialise remove button to hidden
  20. var remove_hidden_USB = true;
  21. $('.remove-USB').css("display", "none");
  22.  
  23. /**
  24.  * Master Button Controls
  25.  */
  26.  
  27. // clear inputs
  28. $('#clear_button').on('click', function() {
  29.     $('#input_batterySize_AH').val(0);
  30.     $('#input_batterySize_WH').val(0);
  31.     $('#dropdown_batterySize').val("");
  32.     $('#input_solarSize').val(0);
  33.     $('#input_sunlight').val(0);
  34.     $('#dropdown_sunlight').val("");
  35.     $(document).find('input[name="input_12_volt"]').val(0);
  36.     $(document).find('input[name="input_12_volt_runtime"]').val(0);
  37.     $(document).find('input[name="input_240_volt"]').val(0);
  38.     $(document).find('input[name="input_240_volt_runtime"]').val(0);
  39.     $(document).find('input[name="input_USB"]').val(0);
  40.     $(document).find('input[name="input_USB_runtime"]').val(0);
  41.     update();
  42. });
  43.  
  44. // scroll to top of page
  45. $('#scroll_to_top').on('click', function() {
  46.     $(document).scrollTop(0);
  47. });
  48.  
  49. /**
  50.  * 12 Volt Appliance Button Controls
  51.  */
  52.  
  53.  // add div [+]
  54. $('#row_12_volt_controls .btn-success').on('click', function() {  
  55.     $( input_12_volt ).appendTo( ".12_volt_wrapper" );
  56.     count_12_volt++;
  57.     if (remove_hidden_12) {
  58.         remove_hidden_12 = false;
  59.         $(document).find(".remove-12").css("display", "block");
  60.     }
  61. });
  62.  
  63. // remove div [-]
  64. $(document).on('click', ".remove-12", function() {
  65.     if (count_12_volt > 1) {
  66.         $(this).closest('.vertical-align').remove();
  67.         count_12_volt--;
  68.     }  
  69.     if (count_12_volt == 1) {
  70.         $(document).find(".remove-12").css("display", "none");
  71.         remove_hidden_12 = true;
  72.     }
  73. });
  74.  
  75. /**
  76.  * 240 Volt Appliance Button Controls
  77.  */
  78.  
  79. // add div [+]
  80. $('#row_240_volt_controls .btn-success').on('click', function() {  
  81.     $( input_240_volt ).appendTo( ".240_volt_wrapper" );
  82.     count_240_volt++;
  83.     if (remove_hidden_240) {
  84.         remove_hidden_240 = false;
  85.         $(document).find(".remove-240").css("display", "block");
  86.     }
  87. });
  88.  
  89. // remove div [-]
  90. $(document).on('click', ".remove-240", function() {
  91.     if (count_240_volt > 1) {
  92.         $(this).closest('.vertical-align').remove();
  93.         count_240_volt--;
  94.     }  
  95.     if (count_240_volt == 1) {
  96.         $(document).find(".remove-240").css("display", "none");
  97.         remove_hidden_240 = true;
  98.     }
  99. });
  100.  
  101. /**
  102.  * USB Appliance Button Controls
  103.  */
  104.  
  105. // add div [+]
  106. $('#row_USB_controls .btn-success').on('click', function() {  
  107.     $( input_USB ).appendTo( ".USB_appliance_wrapper" );
  108.     count_USB++;
  109.     if (remove_hidden_USB) {
  110.         remove_hidden_USB = false;
  111.         $(document).find(".remove-USB").css("display", "block");
  112.     }
  113. });
  114.  
  115. // remove div [-]
  116. $(document).on('click', ".remove-USB", function() {
  117.     if (count_USB > 1) {
  118.         $(this).closest('.vertical-align').remove();
  119.         count_USB--;
  120.     }  
  121.     if (count_USB == 1) {
  122.         $(document).find(".remove-USB").css("display", "none");
  123.         remove_hidden_USB = true;
  124.     }
  125. });
  126.  
  127. /**
  128.  * Input functions
  129.  */
  130.  
  131. function validateInput(el, min) {
  132.     if (!$.isNumeric(el.val())) {
  133.         el.val(0);
  134.         return;
  135.     }
  136.     if (el.val() < 0) {
  137.         el.val(0);
  138.     }
  139. }
  140.  
  141. function validateInput(el, min, max) {
  142.     if (!$.isNumeric(el.val())) {
  143.         el.val(0);
  144.         return;
  145.     }
  146.     if (el.val() < min) {
  147.         el.val(0);
  148.         return;
  149.     }
  150.     if (el.val() > max) {
  151.         el.val(max);
  152.     }
  153. }
  154.  
  155. // battery size dropdown selection
  156. // value for each option has two numbers
  157. // seperated by a ',' (amp hours, watt hours)
  158. $('#dropdown_batterySize').on('change', function() {
  159.     var arr = $(this).val().split(",");
  160.     $('#input_batterySize_AH').val(arr[0]);
  161.     $('#input_batterySize_WH').val(arr[1]);
  162.     update();
  163. });
  164.  
  165. // solar size dropdown selection
  166. $('#dropdown_solarSize').on('change', function() {
  167.     $('#input_solarSize').val($(this).val());
  168.     update();
  169. });
  170.  
  171. // If user manually enters solar size wattage
  172. // reset dropdown selection,
  173. // then validate input,
  174. $('#input_solarSize').on('change', function() {
  175.     $('#dropdown_solarSize').val("");
  176.     validateInput($(this), 0);
  177.     update();
  178. });
  179.  
  180. // daily sunlight dropdown selection
  181. $('#dropdown_sunlight').on('change', function() {
  182.     $('#input_sunlight').val($(this).val());
  183.     update();
  184. });
  185.  
  186. // If user manually enters sunlight hours
  187. // reset dropdown selection,
  188. // then validate input
  189. $('#input_sunlight').on('change', function() {
  190.     $('#dropdown_sunlight').val("");
  191.     validateInput($(this), 0, 11);
  192.     update();
  193. });
  194.  
  195. // 12V appliance dropdown selection
  196. $(document).on('change', 'select[name="dropdown_12_volt"]', function() {
  197.     $(this).closest('.row').find('input[name="input_12_volt"]').val($(this).val());
  198.     update();
  199. });
  200.  
  201. // If user manually enters 12V appliance wattage
  202. // reset dropdown selection,
  203. // then validate input
  204. $(document).on('change', 'input[name="input_12_volt"]', function() {
  205.     $(this).closest('.row').find('select[name="dropdown_12_volt"]').val("");
  206.     validateInput($(this), 0);
  207.     update();
  208. });
  209.  
  210. // Validate 12V runtime input
  211. $(document).on('change', 'input[name="input_12_volt_runtime"]', function() {
  212.     validateInput($(this), 0, 24);
  213.     update();
  214. });
  215.  
  216. // 240V appliance dropdown selection
  217. $(document).on('change', 'select[name="dropdown_240_volt"]', function() {
  218.     $(this).closest('.row').find('input[name="input_240_volt"]').val($(this).val());
  219.     update();
  220. });
  221.  
  222. // If user manually enters 240V appliance wattage
  223. // reset dropdown selection,
  224. // then validate input
  225. $(document).on('change', 'input[name="input_240_volt"]', function() {
  226.     $(this).closest('.row').find('select[name="dropdown_240_volt"]').val("");
  227.     validateInput($(this), 0);
  228.     update();
  229. });
  230.  
  231. // Validate 240V runtime input
  232. $(document).on('change', 'input[name="input_240_volt_runtime"]', function() {
  233.     validateInput($(this), 0, 24);
  234.     update();
  235. });
  236.  
  237. // USB appliance dropdown selection
  238. $(document).on('change', 'select[name="dropdown_USB"]', function() {
  239.     $(this).closest('.row').find('input[name="input_USB"]').val($(this).val());
  240.     update();
  241. });
  242.  
  243. // If user manually enters USB appliance wattage
  244. // reset dropdown selection,
  245. // then validate input
  246. $(document).on('change', 'input[name="input_USB"]', function() {
  247.     $(this).closest('.row').find('select[name="dropdown_USB"]').val("");
  248.     validateInput($(this), 0);
  249.     update();
  250. });
  251.  
  252. // Validate USB runtime input
  253. $(document).on('change', 'input[name="input_USB_runtime"]', function() {
  254.     validateInput($(this), 0, 24);
  255.     update();
  256. });
  257.  
  258. /**
  259.  * Result Calculation
  260.  */
  261.  
  262. function update() {
  263.  
  264.     // OUTPUT VAR
  265.     var powerDemandWatts = $('#power_demand_watts');
  266.     var powerDemandAH = $('#power_demand_AH');
  267.     var solarPerDay = $('#solar_per_day');
  268.     var recSolarSize = $('#recommended_solar_size');
  269.     var recBatWatts = $('#rec_battery_watts');
  270.     var recBatAH = $('#rec_battery_AH');
  271.  
  272.     // INPUT VAR
  273.     var batteryWH = $('#input_batterySize_WH').val();
  274.     var batteryAH = $('#input_batterySize_AH').val();
  275.  
  276.     var solarWattage = $('#input_solarSize').val();
  277.     var dailySun = $('#input_sunlight').val();
  278.  
  279.     var wattage12v = 0;
  280.     var ampHour12v = 0;
  281.     var wattage240v = 0;
  282.     var ampHour240v = 0;
  283.     var wattageUSB = 0;
  284.     var ampHourUSB = 0;
  285.  
  286.     $(document).find('input[name="input_12_volt"]').each(function() {
  287.         var runtime = $(this).closest('.row').find('input[name="input_12_volt_runtime"]').val();
  288.         wattage12v += $(this).val() * runtime;
  289.         ampHour12v += wattage12v / 12;
  290.     });
  291.  
  292.     $(document).find('input[name="input_240_volt"]').each(function() {
  293.         var runtime = $(this).closest('.row').find('input[name="input_240_volt_runtime"]').val();
  294.         wattage240v += $(this).val() * runtime;
  295.         ampHour240v += wattage240v / 240;
  296.     });
  297.  
  298.     $(document).find('input[name="input_USB"]').each(function() {
  299.         var runtime = $(this).closest('.row').find('input[name="input_USB_runtime"]').val();
  300.         wattageUSB += $(this).val() * runtime;
  301.         ampHourUSB += wattageUSB / 5;
  302.     });
  303.  
  304.     var wattDemand = (wattage12v + wattage240v + wattageUSB).toFixed(2);
  305.     var ampDemand = (ampHour12v + ampHour240v + ampHourUSB).toFixed(2);
  306.     var spd = (solarWattage*dailySun).toFixed(2);
  307.     var rss = (wattDemand/dailySun).toFixed(2);
  308.     var rbw = (wattDemand - batteryWH).toFixed(2);
  309.     var rbah = (ampDemand - batteryAH).toFixed(2);
  310.  
  311.     powerDemandWatts.html(wattDemand);
  312.     powerDemandAH.html(ampDemand);
  313.     solarPerDay.html(spd);
  314.     recSolarSize.html(rss);
  315.     recBatWatts.html(rbw);
  316.     recBatAH.html(rbah);
  317.  
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement