/*global $,FC*/ 'use strict'; let GlobalFunction = function (enabled, conditionId, action, operandType, operandValue, flags) { let self = {}; let $row; self.getEnabled = function () { return !!enabled; } self.setEnabled = function (data) { enabled = !!data; } self.getConditionId = function () { return conditionId; } self.setConditionId = function (data) { conditionId = data; } self.getAction = function () { return action; } self.setAction = function (data) { action = data; } self.getOperandType = function () { return operandType; } self.setOperandType = function (data) { operandType = data; } self.getOperandValue = function () { return operandValue; } self.setOperandValue = function (data) { operandValue = data; } self.getFlags = function () { return flags; }; self.setFlags = function (data) { flags = data; }; self.onOperatorValueChange = function (event) { let $cT = $(event.currentTarget); self.setOperandValue($cT.val()); }; self.onOperatorTypeChange = function (event) { let $cT = $(event.currentTarget), operand = $cT.data("operand"), $container = $cT.parent(), operandMetadata = FC.getOperandTypes()[$cT.val()]; self.setOperandType($cT.val()); self.setOperandValue(operandMetadata.default); GUI.renderOperandValue($container, operandMetadata, operand, operandMetadata.default, self.onOperatorValueChange); }; self.onEnabledChange = function (event) { let $cT = $(event.currentTarget), $parent = $cT.closest('tr'); self.setEnabled(!!$cT.prop('checked')); self.renderAction($parent); self.renderOperand($parent); self.renderLogicId($parent); }; self.onLogicIdChange = function(event) { let $cT = $(event.currentTarget); self.setConditionId($cT.val()); }; self.onActionChange = function (event) { let $cT = $(event.currentTarget); self.setAction($cT.val()); self.renderOperand($cT.closest('tr')); }; self.hasOperand = function () { let actions = FC.getFunctionActions(); if (!self.getEnabled()) { return false; } return actions[self.getAction()].hasOperand; }; self.renderOperand = function ($row) { let $container; $container = $row.find('.function_cell__operand'); $container.html(''); if (self.hasOperand()) { $container.append(''); let $t = $container.find('.logic_element__operand--type'); for (let k in FC.getOperandTypes()) { if (FC.getOperandTypes().hasOwnProperty(k)) { let op = FC.getOperandTypes()[k]; if (operandType == k) { $t.append(''); /* * Render value element depending on type */ GUI.renderOperandValue($container, op, 0, operandValue, self.onOperatorValueChange); } else { $t.append(''); } } } /* * Bind events */ $t.change(self.onOperatorTypeChange); } } self.renderAction = function ($row) { if (self.getEnabled()) { $row.find('.function_cell__action').html(""); let $t = $row.find(".function__action"); for (let k in FC.getFunctionActions()) { if (FC.getFunctionActions().hasOwnProperty(k)) { let o = FC.getFunctionActions()[k]; if (self.getAction() == parseInt(k, 10)) { $t.append(''); } else { $t.append(''); } } } $t.change(self.onActionChange); } else { $row.find('.function_cell__action').html(""); } }; self.renderLogicId = function($row) { if (self.getEnabled()) { $row.find('.function_cell__logicId').html(""); let $t = $row.find(".function__logicId"); let count = LOGIC_CONDITIONS.getCount(); console.log(self.getConditionId()); for (let i = 0; i < count ; i++) { if (i == self.getConditionId()) { $t.append(''); } else { $t.append(''); } } $t.change(self.onLogicIdChange); } else { $row.find('.function_cell__logicId').html(""); } } self.render = function (index, $container) { $container.find('tbody').append('\ \ \ \ \ \ \
\ \ '); $row = $container.find('tr:last'); $row.find('.function_cell__index').html(index); $row.find('.function_cell__enabled').html(""); $row.find('.function_element__enabled'). prop('checked', self.getEnabled()). change(self.onEnabledChange); self.renderLogicId($row); self.renderAction($row); self.renderOperand($row); } return self; }