Browse Source

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

Indentation
leo 2 years 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 * as Models from '../ivprog_elements';
 import { LocalizedStrings } from '../../services/localizedStringsService';
 import { LocalizedStrings } from '../../services/localizedStringsService';
 import * as VariableValueMenuManagement from './variable_value_menu';
 import * as VariableValueMenuManagement from './variable_value_menu';
 
 
-
 export function renderExpression (command, expression, function_obj, initial_el_to_render) {
 export function renderExpression (command, expression, function_obj, initial_el_to_render) {
-
+  //D console.log("src/ivprog/js/visualUI/commands/conditional_expression.js: renderExpression(.): command=" +
-	expression.dom_object = initial_el_to_render;
+  //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) {
+
-
+  if (expression.expression == null || expression.expression.length < 1) {
-		renderStartMenu(command, expression, function_obj, initial_el_to_render);
+    renderStartMenu(command, expression, function_obj, initial_el_to_render);
-
+  } else {
-	} else {
+    var main_div = $('<div class="expression_elements"></div>');
-		
+
-		var main_div = $('<div class="expression_elements"></div>');
+    switch (expression.expression.type) {
-
+      case Models.EXPRESSION_TYPES.exp_logic:
-		switch (expression.expression.type) {
+        renderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);
-			case Models.EXPRESSION_TYPES.exp_logic:
+        break;
-				renderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);
+      case Models.EXPRESSION_TYPES.exp_arithmetic:
-				break;
+        renderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);
-			case Models.EXPRESSION_TYPES.exp_arithmetic:
+        break;
-				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(main_div);	
+    initial_el_to_render.append(restartMenu);  
-		var restartMenu = $('<div class="ui restart_expression"><i class="ui icon undo"></i></div>');
+    restartMenu.on('click', function(e){
-		initial_el_to_render.append(restartMenu);	
+      expression.expression = null;
-		restartMenu.on('click', function(e){
+      initial_el_to_render.empty();
-	    	expression.expression = null;
+      renderExpression(command, expression, function_obj, initial_el_to_render);
-	    	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) {
 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>');
-	var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
+  menu_operator.dropdown({
-	menu_operator.dropdown({
+    values: [
-	    values: [
+      { name     : '>',
-	      {
+        value    : Models.ARITHMETIC_COMPARISON.greater_than,
-	        name     : '>',
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)
-	        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.less_than,
+      { name     : '==',
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)
+        value    : Models.ARITHMETIC_COMPARISON.equals_to,
-	      },
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)
-	      {
+        },
-	        name     : '==',
+      { name     : '!=',
-	        value    : Models.ARITHMETIC_COMPARISON.equals_to,
+        value    : Models.ARITHMETIC_COMPARISON.not_equals_to,
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)
-	      },
+        },
-	      {
+      { name     : '>=',
-	        name     : '!=',
+        value    : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,
-	        value    : Models.ARITHMETIC_COMPARISON.not_equals_to,
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)
+        },
-	      },
+      { name     : '<=',
-	      {
+        value    : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,
-	        name     : '>=',
+        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)
-	        value    : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,
+        }
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)
+      ],
-	      },
+    onChange: function(value, text, $selectedItem) {
-	      {
+      expression_arithmetic.operator = value;
-	        name     : '<=',
+      }
-	        value    : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,
+    });
-	        selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)
+
-	      }
+  element_to_append.append(menu_operator);
-	    ],
+  }
-	    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) {
 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>');
+  var menu_operator = $('<div class="ui dropdown"><div class="text"></div><i class="dropdown icon"></i></div>');
-	menu_operator.dropdown({
+  menu_operator.dropdown({
-	    values: [
+    values: [
-	      {
+      { name     : '==',
-	        name     : '==',
+        value    : Models.LOGIC_COMPARISON.equals_to,
-	        value    : Models.LOGIC_COMPARISON.equals_to,
+        selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)
+        },
-	      },
+      { name     : '!=',
-	      {
+        value    : Models.LOGIC_COMPARISON.not_equals_to,
-	        name     : '!=',
+        selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)
-	        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.and,
+      { name     : '||',
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.and)
+        value    : Models.LOGIC_COMPARISON.or,
-	      },
+        selected : (logic_operator == Models.LOGIC_COMPARISON.or)
-	      {
+        }
-	        name     : '||',
+      ],
-	        value    : Models.LOGIC_COMPARISON.or,
+    onChange: function(value, text, $selectedItem) {
-	        selected : (logic_operator == Models.LOGIC_COMPARISON.or)
+      if ($selectedItem) {
-	      }
+        expression_logic.operator = value;
-	    ],
+        if (expression_logic.second_operand == null) {
-	    onChange: function(value, text, $selectedItem) {
+          expression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);
-	    	if ($selectedItem) {
+          initial_el_to_render.empty();
-		    	expression_logic.operator = value;
+          renderExpression(command, all_expression, function_obj, initial_el_to_render);
-		    	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);
-	    }
+  }
-	  });
-
-	element_to_append.append(menu_operator);
-
-}
 
 
 
 
 function renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {
 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_par_1 = $(' <span class="span_command_spec"> </span> ');
+  var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
-	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_operand = $('<div class="expression_element"></div>');
+  var exp_el_expr_el_2 = $('<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> ');
-	var exp_el_par_2 = $(' <span class="span_command_spec"> </span> ');
+
-
+  if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-	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);
-		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) {
-	} 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);
-		renderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);
+  } else {
-	} else {
+    VariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);
-		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_par_1);
+  element_to_append.append(exp_el_expr_el_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);
-	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);
-	element_to_append.append(exp_el_expr_operand);
+
-
+  if (expression_logic.second_operand) {
-	if (expression_logic.second_operand) {
+    if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
-		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);
-			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) {
-		} 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);
-			renderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);
+    } else {
-		} else {
+      VariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);
-			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_expr_el_2);
+  element_to_append.append(exp_el_par_2);
-	}
+  }
-
-	element_to_append.append(exp_el_par_2);
-
-}
 
 
 function renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {
 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_par_1 = $(' <span class="span_command_spec"> </span> ');
+  var exp_el_expr_el_1 = $('<div class="expression_element"></div>');
-	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_operand = $('<div class="expression_element"></div>');
+  var exp_el_expr_el_2 = $('<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> ');
-	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);
-	if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+  } else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-		renderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
+    renderArithmeticExpression(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) {
+  } else {
-		renderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);
+    VariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);
-	} 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);
-	if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {
+  } else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {
-		renderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
+    renderArithmeticExpression(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) {
+  } else {
-		renderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);
+    VariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);
-	} 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);
-
+
-	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_par_1);
+  element_to_append.append(exp_el_expr_operand);
-	element_to_append.append(exp_el_expr_el_1);
+  element_to_append.append(exp_el_expr_el_2);
-	element_to_append.append(exp_el_expr_operand);
+  element_to_append.append(exp_el_par_2);
-	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) {
 function renderStartMenu (command, expression, function_obj, initial_el_to_render) {
-	var start_menu = '';
+  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="ui dropdown menu_start_rendered"><div class="text"><i>' +
-	start_menu += '<div class="item" data-exp="'+Models.EXPRESSION_TYPES.exp_logic+'">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';
+    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_arithmetic+'">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';
+  start_menu += '<div class="item" data-exp="' + Models.EXPRESSION_TYPES.exp_logic + '">' +
-	start_menu += '</div></div>';
+    LocalizedStrings.getUI('text_logic_expression') + ' (EL == EL and EL)</div>';
-	start_menu = $(start_menu);
+  start_menu += '<div class="item" data-exp="' + Models.EXPRESSION_TYPES.exp_arithmetic + '">' +
-
+    LocalizedStrings.getUI('text_arithmetic_expression') + ' (EA < EA)</div>';
-	start_menu.dropdown({
+  start_menu += '</div></div>';
-		onChange: function(value, text, $selectedItem) {
+  start_menu = $(start_menu);
-			switch ($selectedItem.data('exp')) {
+
-				case Models.EXPRESSION_TYPES.exp_logic:
+  start_menu.dropdown({
-					expression.expression = 
+    onChange: function(value, text, $selectedItem) {
-						new Models.LogicExpression(false, 
+      switch ($selectedItem.data('exp')) {
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
+        case Models.EXPRESSION_TYPES.exp_logic:
-					break;
+          expression.expression = 
-				case Models.EXPRESSION_TYPES.exp_arithmetic:
+            new Models.LogicExpression(false, 
-					expression.expression = 
+              new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
-						new Models.ArithmeticExpression(
+          break;
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
+        case Models.EXPRESSION_TYPES.exp_arithmetic:
-							new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), 
+          expression.expression = 
-							Models.ARITHMETIC_COMPARISON.less_than);
+            new Models.ArithmeticExpression(
-					break;
+              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);
-			initial_el_to_render.html('');
+          break;
-
+        }
-			renderExpression(command, expression, function_obj, initial_el_to_render);
+      initial_el_to_render.html('');
-    	},
+      renderExpression(command, expression, function_obj, initial_el_to_render);
-    	selectOnKeydown: false
+      },
-	});
+      selectOnKeydown: false
-
+    });
-	initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
+
-	
+  initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
-	initial_el_to_render.append(start_menu);
+  initial_el_to_render.append(start_menu);
-
+  initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
-	initial_el_to_render.append(' <span class="span_command_spec"> </span> ');
+  }
-}