1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-24 16:55:22 +03:00

Render table and bind events

This commit is contained in:
Pawel Spychalski (DzikuVx) 2019-03-13 19:32:23 +01:00
parent 9e6e1aec11
commit 233f3c560e
4 changed files with 87 additions and 13 deletions

View file

@ -86,7 +86,64 @@ let LogicCondition = function (enabled, operation, operandAType, operandAValue,
self.renderOperand(1);
};
self.renderOperandType = function ($container, type, value) {
self.onOperatorTypeChange = function (event) {
let $cT = $(event.currentTarget),
operand = $cT.data("operand"),
$container = $cT.parent(),
operandMetadata = FC.getOperandTypes()[$cT.val()];
if (operand == 0) {
self.setOperandAType($cT.val());
self.setOperandAValue(operandMetadata.default);
} else {
self.setOperandBType($cT.val());
self.setOperandBValue(operandMetadata.default);
}
self.renderOperandValue($container, operandMetadata, operand, operandMetadata.default);
};
self.onOperatorValueChange = function (event) {
let $cT = $(event.currentTarget),
operand = $cT.data("operand");
if (operand == 0) {
self.setOperandAValue($cT.val());
} else {
self.setOperandBValue($cT.val());
}
};
self.renderOperandValue = function ($container, operandMetadata, operand, value) {
$container.find('.logic_element__operand--value').remove();
switch (operandMetadata.type) {
case "value":
$container.append('<input type="number" class="logic_element__operand--value" data-operand="' + operand + '" step="' + operandMetadata.step + '" min="' + operandMetadata.min + '" max="' + operandMetadata.max + '" value="' + value + '" />');
break;
case "range":
case "dictionary":
$container.append('<select class="logic_element__operand--value" data-operand="' + operand + '"></select>');
let $t = $container.find('.logic_element__operand--value');
if (operandMetadata.type == "range") {
for (let i = operandMetadata.range[0]; i <= operandMetadata.range[1]; i++) {
$t.append('<option value="' + i + '">' + i + '</option>');
}
} else if (operandMetadata.type == "dictionary") {
for (let k in operandMetadata.values) {
if (operandMetadata.values.hasOwnProperty(k)) {
$t.append('<option value="' + k + '">' + operandMetadata.values[k] + '</option>');
}
}
}
$t.val(value);
break;
}
$container.find('.logic_element__operand--value').change(self.onOperatorValueChange);
};
@ -105,26 +162,32 @@ let LogicCondition = function (enabled, operation, operandAType, operandAValue,
$container.html('');
if (self.hasOperand(operand)) {
$container.append('<select class="logic_element__operand--type" data-operand="0"></select>');
$container.append('<select class="logic_element__operand--type" data-operand="' + operand + '"></select>');
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 (type == k) {
$t.append('<option value="' + k + '" selected>' + op.name + '</option>');
/*
* Render value element depending on type
*/
self.renderOperandValue($container, op, operand, value);
} else {
$t.append('<option value="' + k + '">' + op.name + '</option>');
}
//TODO bind to event
/*
* Render value element depending on type
*/
}
}
/*
* Bind events
*/
$t.change(self.onOperatorTypeChange);
}
}