Browse Source

Update 'js/visualUI/commands/conditional_expression.js'

Indentation
leo 1 year ago
parent
commit
a9b337f3fe
1 changed files with 199 additions and 219 deletions
  1. 199 219
      js/visualUI/commands/conditional_expression.js

+ 199 - 219
js/visualUI/commands/conditional_expression.js

@@ -1,236 +1,216 @@
+// iVProg - www.usp.br/line/ivprog
+// LInE - Free Education, Private Data
+
 import * as Models from '../ivprog_elements';
 import { LocalizedStrings } from '../../services/localizedStringsService';
 import * as VariableValueMenuManagement from './variable_value_menu';
 
-
 export function renderExpression (command, expression, function_obj, initial_el_to_render) {
-
-	expression.dom_object = initial_el_to_render;
-
-	if (expression.expression == null || expression.expression.length < 1) {
-
-		renderStartMenu(command, expression, function_obj, initial_el_to_render);
-
-	} else {
-		
-		var main_div = $('<div class="expression_elements"></div>');
-
-		switch (expression.expression.type) {
-			case Models.EXPRESSION_TYPES.exp_logic:
-				renderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);
-				break;
-			case Models.EXPRESSION_TYPES.exp_arithmetic:
-				renderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);
-				break;
-		}
-
-		initial_el_to_render.append(main_div);	
-		var restartMenu = $('<div class="ui restart_expression"><i class="ui icon undo"></i></div>');
-		initial_el_to_render.append(restartMenu);	
-		restartMenu.on('click', function(e){
-	    	expression.expression = null;
-	    	initial_el_to_render.empty();
-	    	renderExpression(command, expression, function_obj, initial_el_to_render);
-	  	});
-	}
-}
+  //D console.log("src/ivprog/js/visualUI/commands/conditional_expression.js: renderExpression(.): command=" +
+  //D   JSON.stringify(command) + "\nexpression=" + JSON.stringify(expression) + "\nfunction_obj=||" + JSON.stringify(function_obj) + "||\n");
+  expression.dom_object = initial_el_to_render;
+
+  if (expression.expression == null || expression.expression.length < 1) {
+    renderStartMenu(command, expression, function_obj, initial_el_to_render);
+  } else {
+    var main_div = $('<div class="expression_elements"></div>');
+
+    switch (expression.expression.type) {
+      case Models.EXPRESSION_TYPES.exp_logic:
+        renderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);
+        break;
+      case Models.EXPRESSION_TYPES.exp_arithmetic:
+        renderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);
+        break;
+      }
+
+    initial_el_to_render.append(main_div);  
+    var restartMenu = $('<div class="ui restart_expression"><i class="ui icon undo"></i></div>');
+    initial_el_to_render.append(restartMenu);  
+    restartMenu.on('click', function(e){
+      expression.expression = null;
+      initial_el_to_render.empty();
+      renderExpression(command, expression, function_obj, initial_el_to_render);
+      });
+    }
+  }
 
 function renderArithmeticOperator (command, all_expression, expression_arithmetic, arithmetic_operator, function_obj, element_to_append) {
-
-	var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
-	menu_operator.dropdown({
-	    values: [
-	      {
-	        name     : '>',
-	        value    : Models.ARITHMETIC_COMPARISON.greater_than,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)
-	      },
-	      {
-	        name     : '<',
-	        value    : Models.ARITHMETIC_COMPARISON.less_than,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)
-	      },
-	      {
-	        name     : '==',
-	        value    : Models.ARITHMETIC_COMPARISON.equals_to,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)
-	      },
-	      {
-	        name     : '!=',
-	        value    : Models.ARITHMETIC_COMPARISON.not_equals_to,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)
-	      },
-	      {
-	        name     : '>=',
-	        value    : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)
-	      },
-	      {
-	        name     : '<=',
-	        value    : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)
-	      }
-	    ],
-	    onChange: function(value, text, $selectedItem) {
-	    	expression_arithmetic.operator = value;
-	    }
-	  })
-	;
-
-	element_to_append.append(menu_operator);
-}
+  var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
+  menu_operator.dropdown({
+    values: [
+      { name     : '>',
+        value    : Models.ARITHMETIC_COMPARISON.greater_than,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)
+        },
+      { name     : '<',
+        value    : Models.ARITHMETIC_COMPARISON.less_than,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)
+        },
+      { name     : '==',
+        value    : Models.ARITHMETIC_COMPARISON.equals_to,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)
+        },
+      { name     : '!=',
+        value    : Models.ARITHMETIC_COMPARISON.not_equals_to,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)
+        },
+      { name     : '>=',
+        value    : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)
+        },
+      { name     : '<=',
+        value    : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)
+        }
+      ],
+    onChange: function(value, text, $selectedItem) {
+      expression_arithmetic.operator = value;
+      }
+    });
+
+  element_to_append.append(menu_operator);
+  }
 
 function renderLogicOperator (command, all_expression, expression_logic, logic_operator, function_obj, element_to_append, initial_el_to_render) {
 
-	var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
-	menu_operator.dropdown({
-	    values: [
-	      {
-	        name     : '==',
-	        value    : Models.LOGIC_COMPARISON.equals_to,
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)
-	      },
-	      {
-	        name     : '!=',
-	        value    : Models.LOGIC_COMPARISON.not_equals_to,
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)
-	      },
-	      {
-	        name     : '&&',
-	        value    : Models.LOGIC_COMPARISON.and,
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.and)
-	      },
-	      {
-	        name     : '||',
-	        value    : Models.LOGIC_COMPARISON.or,
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.or)
-	      }
-	    ],
-	    onChange: function(value, text, $selectedItem) {
-	    	if ($selectedItem) {
-		    	expression_logic.operator = value;
-		    	if (expression_logic.second_operand == null) {
-		    		expression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);
-		    		initial_el_to_render.empty();
-		    		renderExpression(command, all_expression, function_obj, initial_el_to_render);
-		    	}
-	    	}
-	    }
-	  });
-
-	element_to_append.append(menu_operator);
-
-}
+  var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
+  menu_operator.dropdown({
+    values: [
+      { name     : '==',
+        value    : Models.LOGIC_COMPARISON.equals_to,
+        selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)
+        },
+      { name     : '!=',
+        value    : Models.LOGIC_COMPARISON.not_equals_to,
+        selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)
+        },
+      { name     : '&&',
+        value    : Models.LOGIC_COMPARISON.and,
+        selected : (logic_operator == Models.LOGIC_COMPARISON.and)
+        },
+      { name     : '||',
+        value    : Models.LOGIC_COMPARISON.or,
+        selected : (logic_operator == Models.LOGIC_COMPARISON.or)
+        }
+      ],
+    onChange: function(value, text, $selectedItem) {
+      if ($selectedItem) {
+        expression_logic.operator = value;
+        if (expression_logic.second_operand == null) {
+          expression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);
+          initial_el_to_render.empty();
+          renderExpression(command, all_expression, function_obj, initial_el_to_render);
+          }
+        }
+      }
+    });
+
+  element_to_append.append(menu_operator);
+  }
 
 
 function renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {
-
-	var exp_el_par_1 = $(' <span class="span_command_spec"> </span> ');
-	var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
-	var exp_el_expr_operand = $('<div class="expression_element"></div>');
-	var exp_el_expr_el_2 = $('<div class="expression_element"></div>');
-	var exp_el_par_2 = $(' <span class="span_command_spec"> </span> ');
-
-	if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-		renderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);
-	} else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-		renderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);
-	} else {
-		VariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);
-	}
-
-	element_to_append.append(exp_el_par_1);
-	element_to_append.append(exp_el_expr_el_1);
-
-	renderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);
-
-	element_to_append.append(exp_el_expr_operand);
-
-	if (expression_logic.second_operand) {
-		if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-			renderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);
-		} else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-			renderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);
-		} else {
-			VariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);
-		}
-
-		element_to_append.append(exp_el_expr_el_2);
-	}
-
-	element_to_append.append(exp_el_par_2);
-
-}
+  var exp_el_par_1 = $(' <span class="span_command_spec"> </span> ');
+  var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
+  var exp_el_expr_operand = $('<div class="expression_element"></div>');
+  var exp_el_expr_el_2 = $('<div class="expression_element"></div>');
+  var exp_el_par_2 = $(' <span class="span_command_spec"> </span> ');
+
+  if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+    renderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);
+  } else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
+    renderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);
+  } else {
+    VariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);
+    }
+
+  element_to_append.append(exp_el_par_1);
+  element_to_append.append(exp_el_expr_el_1);
+
+  renderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);
+
+  element_to_append.append(exp_el_expr_operand);
+
+  if (expression_logic.second_operand) {
+    if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+      renderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);
+    } else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
+      renderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);
+    } else {
+      VariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);
+      }
+    element_to_append.append(exp_el_expr_el_2);
+    }
+  element_to_append.append(exp_el_par_2);
+  }
 
 function renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {
-
-	var exp_el_par_1 = $(' <span class="span_command_spec"> </span> ');
-	var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
-	var exp_el_expr_operand = $('<div class="expression_element"></div>');
-	var exp_el_expr_el_2 = $('<div class="expression_element"></div>');
-	var exp_el_par_2 = $(' <span class="span_command_spec"> </span> ');
-
-
-	if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-		renderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
-	} else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-		renderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
-	} else {
-		VariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);
-	}
-
-	if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-		renderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
-	} else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-		renderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
-	} else {
-		VariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);
-	}
-
-	renderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);
-
-	element_to_append.append(exp_el_par_1);
-	element_to_append.append(exp_el_expr_el_1);
-	element_to_append.append(exp_el_expr_operand);
-	element_to_append.append(exp_el_expr_el_2);
-	element_to_append.append(exp_el_par_2);
-}
+  var exp_el_par_1 = $(' <span class="span_command_spec"> </span> ');
+  var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
+  var exp_el_expr_operand = $('<div class="expression_element"></div>');
+  var exp_el_expr_el_2 = $('<div class="expression_element"></div>');
+  var exp_el_par_2 = $(' <span class="span_command_spec"> </span> ');
+
+  if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+    renderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
+  } else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
+    renderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
+  } else {
+    VariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);
+    }
+
+  if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+    renderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
+  } else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
+    renderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
+  } else {
+    VariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);
+    }
+
+  renderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);
+
+  element_to_append.append(exp_el_par_1);
+  element_to_append.append(exp_el_expr_el_1);
+  element_to_append.append(exp_el_expr_operand);
+  element_to_append.append(exp_el_expr_el_2);
+  element_to_append.append(exp_el_par_2);
+  }
 
 function renderStartMenu (command, expression, function_obj, initial_el_to_render) {
-	var start_menu = '';
-	start_menu += '<div class="ui dropdown menu_start_rendered"><div class="text"><i>'+LocalizedStrings.getUI('expression_menu_select')+'</i></div><i class="dropdown icon"></i><div class="menu">';
-	start_menu += '<div class="item" data-exp="'+Models.EXPRESSION_TYPES.exp_logic+'">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';
-	start_menu += '<div class="item" data-exp="'+Models.EXPRESSION_TYPES.exp_arithmetic+'">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';
-	start_menu += '</div></div>';
-	start_menu = $(start_menu);
-
-	start_menu.dropdown({
-		onChange: function(value, text, $selectedItem) {
-			switch ($selectedItem.data('exp')) {
-				case Models.EXPRESSION_TYPES.exp_logic:
-					expression.expression = 
-						new Models.LogicExpression(false, 
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
-					break;
-				case Models.EXPRESSION_TYPES.exp_arithmetic:
-					expression.expression = 
-						new Models.ArithmeticExpression(
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
-							Models.ARITHMETIC_COMPARISON.less_than);
-					break;
-			}
-
-			initial_el_to_render.html('');
-
-			renderExpression(command, expression, function_obj, initial_el_to_render);
-    	},
-    	selectOnKeydown: false
-	});
-
-	initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
-	
-	initial_el_to_render.append(start_menu);
-
-	initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
-}
+  var start_menu = '';
+  start_menu += '<div class="ui dropdown menu_start_rendered"><div class="text"><i>' +
+    LocalizedStrings.getUI('expression_menu_select') + '</i></div><i class="dropdown icon"></i><div class="menu">';
+  start_menu += '<div class="item" data-exp="' + Models.EXPRESSION_TYPES.exp_logic + '">' +
+    LocalizedStrings.getUI('text_logic_expression') + ' (EL == EL and EL)</div>';
+  start_menu += '<div class="item" data-exp="' + Models.EXPRESSION_TYPES.exp_arithmetic + '">' +
+    LocalizedStrings.getUI('text_arithmetic_expression') + ' (EA < EA)</div>';
+  start_menu += '</div></div>';
+  start_menu = $(start_menu);
+
+  start_menu.dropdown({
+    onChange: function(value, text, $selectedItem) {
+      switch ($selectedItem.data('exp')) {
+        case Models.EXPRESSION_TYPES.exp_logic:
+          expression.expression = 
+            new Models.LogicExpression(false, 
+              new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
+          break;
+        case Models.EXPRESSION_TYPES.exp_arithmetic:
+          expression.expression = 
+            new Models.ArithmeticExpression(
+              new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
+              new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
+              Models.ARITHMETIC_COMPARISON.less_than);
+          break;
+        }
+      initial_el_to_render.html('');
+      renderExpression(command, expression, function_obj, initial_el_to_render);
+      },
+      selectOnKeydown: false
+    });
+
+  initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
+  initial_el_to_render.append(start_menu);
+  initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
+  }