(function () { var originalStringsSelect; $(document).ready(function () { setInverterInputsVisibility(); $("#inverter_brand_id").change(submitInverterBrandForm); $("#inverter_quantity").change(setInverterInputsVisibility); $("#add_new_power_station").click(function () { showAddNewPowerStationForm(); }); $('#add_standalone_inverter').click(function () { showAddStandaloneInverterForm(); }); $('#add_supervisor_monitor').click(function () { showAddSupervisorMonitorForm(); }); for (var i = 1; i <= 4; i++) { var currentTarget = $("#inverter_" + i + "-model"); currentTarget[0] && setInverterStringsOptions(currentTarget[0]); currentTarget.change(setInverterStringsOptionsFromEvent); } setInverterStringsOptions($("#inverter-model")[0]); $("#inverter-model").change(function (event) { setStandaloneInverterStringLimits(); setInverterStringsOptions($("#inverter-model")[0]); }); setupEditButtonHandlers('power_station', editPowerStation); setupEditButtonHandlers('standalone_inverter', editStandaloneInverter); setupEditButtonHandlers('supervisor_monitor', editSupervisorMonitor); }); function submitInverterBrandForm() { $('form[name="inverter_brand_form"]').submit(); } function setInverterInputsVisibility() { inverterQuantity = $('#inverter_quantity').val(); for (var i = 1; i <= 4; i++) { if (i <= inverterQuantity) { $("#inverter_" + i + "_row").show(); } else { $("#inverter_" + i + "_row").hide(); } } } function setInverterStringsOptionsFromEvent(event) { setInverterStringsOptions(event.currentTarget); } function setStandaloneInverterStringLimits() { var inverterStringsPerInverterForm = $('#inverter-strings_per_inverter_row'); var inverterStringsPerInverter = $('#inverter-strings_per_inverter'); var inverterStringsPerInverterValue = inverterStringsPerInverter.val(); var inverterModel = $('#inverter-model'); var selectedStrings = inverterModel.val(); var stringOptions = standaloneInverterStringLimits[selectedStrings]; originalStringsSelect = originalStringsSelect || inverterStringsPerInverter.clone(); inverterStringsPerInverter.empty(); if (stringOptions && stringOptions.length) { originalStringsSelect .find('option') .each(function(i, opt) { if (stringOptions.indexOf(parseInt(opt.value)) > -1) { inverterStringsPerInverter.append($(opt).clone()) } }); inverterStringsPerInverter.val(inverterStringsPerInverterValue); inverterStringsPerInverterForm.css('display', 'block'); } else { inverterStringsPerInverter.append($('')); inverterStringsPerInverterForm.css('display', 'none'); } } function setInverterStringsOptions(currentTarget) { var defaultStringValue = standaloneInverterStringDefaults[currentTarget.value]; if (defaultStringValue) { var currentStringValue = defaultStringValue; var stringsId = currentTarget.id.replace("-model", "-strings_per_inverter"); var stringsField = $("#" + stringsId); var options = stringsField[0].options; for (var i = 0; i < options.length; i++) { if (parseInt(options[i].value) <= parseInt(defaultStringValue)) { currentStringValue = options[i].value; } else { break; } } stringsField.val(currentStringValue); } } function setupEditButtonHandlers(name, editFunction) { var tableRowSelector = "." + name + "_table tr"; var formId = "#" + name + "_form"; var deleteLinkPrefix = '/delete_' + name + '/'; $(tableRowSelector).each(function () { var table_row = $(this); var editButton = table_row.find("i.icon-pencil"); if (editButton.length > 0) { var uuid = editButton.attr('id').split("edit_")[1]; editButton.click(function () { $(tableRowSelector).each(function () { $(this).removeClass('selected'); }); table_row.addClass('selected'); var deleteButton = $(formId + ' .delete_button'); deleteButton.removeClass('hidden'); deleteButton.attr('href', deleteLinkPrefix + uuid); editFunction(uuid); }) } }); } function editPowerStation(uuid) { var data = getObjectByUuid(uuid, powerStationData, 'power_station_id'); if (data) { $('#power_station_id').val(uuid); $('#power_station_description').val(data['power_station_description']); $('#power_station_quantity').val(data['power_station_quantity']); $('#aux_plug').prop('checked', data['aux_plug']); $('#ac_run_length').val(data['ac_run_length']); $('#inverter_quantity').val(data['inverter_quantity']); setInverterInputsVisibility(); var inverters = data['inverters']; for (var idx = 0; idx < inverters.length; idx++) { var inverter = inverters[idx]; var prefix = '#inverter_' + (idx + 1); fillInverterData(inverter, prefix); $(prefix + '-model').val(inverter['model']); $(prefix + '-strings_per_inverter').val(inverter['strings_per_inverter']); $(prefix + '-sunshade').prop('checked', inverter['sunshade']); $(prefix + '-dc_switch').prop('checked', inverter['dc_switch']); } $('.ebom_form .submit input').val('Save'); } showAddNewPowerStationForm(); } function editStandaloneInverter(uuid) { data = getObjectByUuid(uuid, standaloneInverterData, 'standalone_inverter_id'); if (data) { $('#standalone_inverter_id').val(uuid); $('#standalone_ac_run_length').val(data['ac_run_length']); var attach_point = data['attachment_point'][1]; $('#attachment_point option[value=' + attach_point + ']').attr('selected','selected'); fillInverterData(data, '#inverter'); $('#standalone_inverter_form .submit input').val('Save'); $('#inverter-quantity_row').addClass('hidden'); } showAddStandaloneInverterForm(); } function editSupervisorMonitor(uuid) { data = getObjectByUuid(uuid, supervisorMonitorData, 'monitor_id'); if (data) { $('#supervisor_monitor_form #monitor_id').val(uuid); var power_source = data['power_source']; if (power_source[0] !== 'Switch Gear/External') { $('#power_source').append($('