Browse Source

Bug da função corrigido

Douglas Lima 6 years ago
parent
commit
365c3bc5a2

+ 10 - 5
css/ivprog-visual-1.0.css

@@ -383,7 +383,7 @@ div.buttons_manage_columns {
 .accordion {
 	margin: auto;
 }
-
+/*
 .global_container:hover, 
 .variable_container:hover {
 	border: 2px solid gray;
@@ -391,7 +391,7 @@ div.buttons_manage_columns {
 	padding-right: 8px;
 	padding-top: 5px;
 	padding-bottom: 4px;
-}
+}*/
 
 .ui.label.function_name_parameter:hover {
 	border: 2px solid gray;
@@ -402,9 +402,9 @@ div.buttons_manage_columns {
 	padding: 7px 8px 7px 8px;
 }
 
-.global_container:hover,  .variable_container:hover {
+/*.global_container:hover,  .variable_container:hover {
 	margin-bottom:  4px !important;
-}
+}*/
 
 .global_container .global_type, .editing_name_var, .global_container .span_value_variable,
 .variable_container .variable_type,  .variable_container .span_value_variable,
@@ -638,7 +638,12 @@ div.function_name_div_updated:active,
 	outline: dashed 2px blue;
 }
 
-button.ui.segment {
+button.ui.segment, .global_container.ui {
 	margin-bottom: 0.5em;
 	margin-top: 0.5em;
 }
+
+.global_container.ui {
+	padding-bottom: 0.5em;
+	padding-top: 0.5em;
+}

+ 3 - 1
index.html

@@ -88,9 +88,11 @@
 
               <div class="ui container list-group functions_labels">
               </div>
+
+            </div>
+            <div class="ui one column container segment ivprog_visual_panel loading">
               <div class="ui container list-group library_labels">
               </div>
-
             </div>
           </div>
 

+ 22 - 0
js/services/i18nHelper.js

@@ -0,0 +1,22 @@
+import line_i18n from "line-i18n";
+import { LocalizedStrings } from "./localizedStringsService";
+
+const StringTypes = line_i18n.StringTypes;
+
+export const i18nHelper = Object.freeze({
+  i18n: (identifier) => {
+    var opts = identifier.split(':');
+    var type = opts[0].toLowerCase();
+    var id = opts[1];
+    if (StringTypes.ERROR === type) {
+      return LocalizedStrings.getError(id);
+    } else if (StringTypes.MESSAGE === type) {
+      return LocalizedStrings.getMessage(id); 
+    } else if (StringTypes.UI === type) {
+      return LocalizedStrings.getUI(id);
+    } else {
+      console.warn("A string has been passed to the i18n helper function that was not in the form type:id -> " + identifier);
+      return LocalizedStrings.getString(identifier, type);
+    }
+  }
+});

+ 18 - 0
js/util/config.js

@@ -0,0 +1,18 @@
+class ConfigObject {
+
+  constructor () {
+    this.loopTimeout = 5000;
+    this.decimalPlaces = 5;
+    this.intConvertRoundMode = 2;
+  }
+
+  setConfig (opts) {
+    for (const key in opts) {
+      if(this.hasOwnProperty(key)){
+        this[key] = opts[key];
+      }
+    }
+  }
+}
+let config = new ConfigObject();
+export const Config = config;

+ 7 - 1
js/visualUI/commands/variable_value_menu.js

@@ -16,6 +16,8 @@ export function renderMenu (command, ref_object, dom_object, function_obj, size_
 
 	// Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros
 	// Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:
+
+
 	if (ref_object.function_called) {
 		if (ref_object.function_called.parameters_list) {
 
@@ -676,7 +678,10 @@ function addHandlers (command, ref_object, dom_object, menu_var_or_value, functi
 	if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
 		menu_var_or_value.dropdown({
 		  onChange: function(value, text, $selectedItem) {
-		  	console.log('S7');
+				console.log('S7');
+				console.log(value);
+				console.log(text);
+				console.log($selectedItem);
 		  	dom_object.find('.var_name').remove();
 		     switch ($selectedItem.data('option')) {
 		     	case VAR_OR_VALUE_TYPES.only_function:
@@ -788,6 +793,7 @@ function openInputToFunction (command, ref_object, dom_object, menu_var_or_value
 		context_menu.dropdown({
 			onChange: function(value, text, $selectedItem) {
 				console.log('S8');
+				console.log($selectedItem);
 		     if ($selectedItem.data('clear')) {
 		     	console.log('PP7');
 		     	dom_object.text('');

+ 44 - 26
js/visualUI/commands_sidebar.js

@@ -136,7 +136,7 @@ export function createFloatingCommand (function_obj, function_container, command
 }
 
 // before_after_inside: 1 -> before, 2 -> after, 3 -> inside
-export function renderCommand (command, element_reference, before_after_inside, function_obj) {
+export function renderCommand (command, element_reference, before_after_inside, function_obj, function_called = null) {
 	var createdElement;
 	switch (command.type) {
 		case Models.COMMAND_TYPES.comment:
@@ -202,6 +202,15 @@ export function renderCommand (command, element_reference, before_after_inside,
 			element_reference.append(createdElement);
 			break;
 	}
+	if (command.type == Models.COMMAND_TYPES.functioncall && function_called != null) {
+		var $div_items = createdElement.find('div.item');
+		for (var i = 0; i < $div_items.length; i++) {
+			if ($($div_items[i]).text().trim() == function_called.name) {
+				$($div_items[i]).trigger('click');
+				break;
+			}
+		}
+	}
 
 }
 
@@ -266,14 +275,23 @@ function preCreateCommand(command_type, function_called) {
 			return new Models.Attribution(new Models.VariableValueMenu(
 				VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),[exp]);
 		}
+		return genericCreateCommand(command_type);
 		var varM = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false);
 		varM.function_called = function_called;
 		var parameters = [];
 		for (var i = 0; i < function_called.parameters_list.length; i++) {
 			parameters.push(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
 		}
-		var functionCall = new Models.FunctionCall(varM, parameters);
+		//var functionCall = new Models.FunctionCall(varM, parameters);
+		var functionCall = new Models.FunctionCall(varM, null);
 		return functionCall;
+	} else if (command_type == 'attribution') {
+		var var_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);
+		//var_menu.function_called = function_called;
+		var exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.none,var_menu]);
+		//exp.function_called = function_called;
+		return new Models.Attribution(new Models.VariableValueMenu(
+			VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, function_called, null, null, false),[exp]);
 	}
 }
 
@@ -333,7 +351,7 @@ function manageCommand(function_obj, function_container, event, command_type, fu
 
 			el.data('fun').commands.push(new_cmd);
 
-			renderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj);
+			renderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj, function_called);
 
 		} else { // Entra nesse else, caso já existam outros comandos no bloco:
 
@@ -451,7 +469,7 @@ function insertCommandInBlockHierar(el, event, function_obj, command_type, hier_
 				var recentComand = preCreateCommand(command_type, function_called);
 				command_parent.commands_block.push(recentComand);
 
-				renderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);
+				renderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj, function_called);
 			} else { // Se já tem algum comando no bloco:
 				findNearbyCommandToAddInBlockScope(el, event, el, function_obj, command_type, command_parent, function_called);
 			}
@@ -502,7 +520,7 @@ function findNearbyCommandToAddInBlockScope(el, event, node_list_commands, funct
 
 		command_parent.commands_block.push(recentComand);
 		//
-		renderCommand(recentComand, node_list_commands, 3, function_obj);
+		renderCommand(recentComand, node_list_commands, 3, function_obj, function_called);
 
 	} else {
 
@@ -512,7 +530,7 @@ function findNearbyCommandToAddInBlockScope(el, event, node_list_commands, funct
 			command_parent.commands_block.splice(index, 0, recentComand);
 		}
 
-		renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);
+		renderCommand(recentComand, elemento_menor_distancia, 1, function_obj, function_called);
 	}
 }
 
@@ -620,7 +638,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 					var recentComand = preCreateCommand(command_type,function_called);
 						command_parent.commands_else.push(recentComand);
 
-					renderCommand(recentComand, el_jq, 3, function_obj);
+					renderCommand(recentComand, el_jq, 3, function_obj, function_called, function_called);
 				} else { // Se já tem algum comando no bloco:
 					findInBlockCorrectPlace(el_jq, event, function_obj, command_type, true, function_called);
 				}
@@ -644,7 +662,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 					var recentComand = preCreateCommand(command_type,function_called);
 					command_parent.commands_block.push(recentComand);
 
-					renderCommand(recentComand, el_jq, 3, function_obj);
+					renderCommand(recentComand, el_jq, 3, function_obj, function_called);
 				} else {
 					console.log('SSS5');
 					findInBlockCorrectPlace(el_jq, event, function_obj, command_type, false, function_called);
@@ -661,7 +679,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 				command_parent.commands_block.splice(index, 0, recentComand);
 			}
 
-			renderCommand(recentComand, el, 1, function_obj);
+			renderCommand(recentComand, el, 1, function_obj, function_called);
 		}
 
 
@@ -680,7 +698,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 					var recentComand = preCreateCommand(command_type,function_called);
 					command_parent.commands_else.push(recentComand);
 
-					renderCommand(recentComand, el_jq, 3, function_obj);
+					renderCommand(recentComand, el_jq, 3, function_obj, function_called);
 				} else { // Se já tem algum comando no bloco:
 					console.log('SSS2');
 					findInBlockCorrectPlace(el_jq, event, function_obj, command_type, true, function_called);
@@ -695,7 +713,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 				command_parent.commands_else.splice((index + 1), 0, recentComand);
 			}
 
-			renderCommand(recentComand, el, 2, function_obj);
+			renderCommand(recentComand, el, 2, function_obj, function_called);
 
 		} else {
 
@@ -707,7 +725,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 					var recentComand = preCreateCommand(command_type,function_called);
 					command_parent.commands_block.push(recentComand);
 					console.log('SSS6');
-					renderCommand(recentComand, el_jq, 3, function_obj);
+					renderCommand(recentComand, el_jq, 3, function_obj, function_called);
 				} else {
 					console.log('SSS7');
 					findInBlockCorrectPlace(el_jq, event, function_obj, command_type, false, function_called);
@@ -724,7 +742,7 @@ function findBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, comma
 				command_parent.commands_block.splice((index + 1), 0, recentComand);
 			}
 
-			renderCommand(recentComand, el, 2, function_obj);
+			renderCommand(recentComand, el, 2, function_obj, function_called);
 		}
 
 
@@ -747,7 +765,7 @@ function insertCommandInBlock(el, event, function_obj, command_type, function_ca
 
 			command_parent.commands_block.push(recentComand);
 
-			renderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);
+			renderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj, function_called);
 		} else { // Se já tem algum comando no bloco:
 			findInBlockCorrectPlace(el, event, function_obj, command_type, false, function_called);
 		}
@@ -785,7 +803,7 @@ function insertCommandInBlock(el, event, function_obj, command_type, function_ca
 				var recentComand = preCreateCommand(command_type,function_called);
 				command_parent.commands_block.push(recentComand);
 
-				renderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj);
+				renderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj, function_called, function_called);
 			} else { // Se já tem algum comando no bloco:
 				findInBlockCorrectPlace(el_jq.find('.commands_if'), event, function_obj, command_type, false, function_called);
 			}
@@ -833,7 +851,7 @@ function addCommandToSwitchCase(event, function_obj, command_type) {
 
 		var recentComand = preCreateCommand(command_type,function_called);
 		which_case.commands_block.push(recentComand);
-		renderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj);
+		renderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj, function_called);
 	} else {
 		findInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type, function_called);
 	}
@@ -874,7 +892,7 @@ function findInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, functi
 
 		which_case.commands_block.push(recentComand);
 
-		renderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj);
+		renderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj, function_called);
 
 	} else {
 
@@ -884,7 +902,7 @@ function findInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, functi
 
 		if (index > -1) {
 			which_case.commands_block.splice(index, 0, recentComand);
-			renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);
+			renderCommand(recentComand, elemento_menor_distancia, 1, function_obj, function_called);
 		}
 	}
 }
@@ -934,13 +952,13 @@ function findInBlockCorrectPlace(el, event, function_obj, command_type, is_in_el
 			console.log("$(el_jq.find('.commands_else')[0]):: ");
 			console.log($(el_jq.find('.commands_else')[0]));
 
-			renderCommand(recentComand, el_jq, 3, function_obj);
+			renderCommand(recentComand, el_jq, 3, function_obj, function_called);
 
 		} else {
 			console.log('QQ16');
 			command_parent.commands_block.push(recentComand);
 
-			renderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj);
+			renderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj, function_called);
 		}
 
 	} else {
@@ -957,7 +975,7 @@ function findInBlockCorrectPlace(el, event, function_obj, command_type, is_in_el
 
 			if (index > -1) {
 				command_parent.commands_else.splice(index, 0, recentComand);
-				renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);
+				renderCommand(recentComand, elemento_menor_distancia, 1, function_obj, function_called);
 			}
 
 		} else {
@@ -965,7 +983,7 @@ function findInBlockCorrectPlace(el, event, function_obj, command_type, is_in_el
 
 			if (index > -1) {
 				command_parent.commands_block.splice(index, 0, recentComand);
-				renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);
+				renderCommand(recentComand, elemento_menor_distancia, 1, function_obj, function_called);
 			}
 
 		}
@@ -1008,7 +1026,7 @@ function findBeforeOrAfterCommandToAdd(el, event, function_obj, command_type, fu
 			function_obj.commands.splice(index, 0, recentComand);
 		}
 
-		renderCommand(recentComand, el, 1, function_obj);
+		renderCommand(recentComand, el, 1, function_obj, function_called);
 
 	} else {
 		var recentComand = preCreateCommand(command_type,function_called);
@@ -1019,7 +1037,7 @@ function findBeforeOrAfterCommandToAdd(el, event, function_obj, command_type, fu
 			function_obj.commands.splice((index + 1), 0, recentComand);
 		}
 
-		renderCommand(recentComand, el, 2, function_obj);
+		renderCommand(recentComand, el, 2, function_obj, function_called);
 	}
 }
 
@@ -1055,7 +1073,7 @@ function findNearbyCommandToAddInFunctionScope(el, event, node_list_commands, fu
 
 		function_obj.commands.push(recentComand);
 		//
-		renderCommand(recentComand, node_list_commands, 3, function_obj);
+		renderCommand(recentComand, node_list_commands, 3, function_obj, function_called);
 
 	} else {
 
@@ -1065,7 +1083,7 @@ function findNearbyCommandToAddInFunctionScope(el, event, node_list_commands, fu
 			function_obj.commands.splice(index, 0, recentComand);
 		}
 
-		renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);
+		renderCommand(recentComand, elemento_menor_distancia, 1, function_obj, function_called);
 	}
 }
 

File diff suppressed because it is too large
+ 315 - 405
js/visualUI/functions_sidebar.js


+ 52 - 30
js/visualUI/globals_sidebar.js

@@ -401,9 +401,31 @@ function addHandlers (global_container) {
 
 	global_container
 	.on('dragstart', function(e) {
-		e.originalEvent.dataTransfer.setData("text",JSON.stringify({type:"var",content:global_var}));
+		program_obj.dataTransfer = {type:"var",content:global_var};
 	})
 
+	global_container
+	.on('click', function (evt) {
+		$(this).trigger('dragstart');
+		if(window.ghostNode) {
+			$(window.ghostNode).remove();
+			$(document).off('mousemove');
+		}
+		window.ghostNode = $(this).clone();
+		ghostNode.outerWidth($(this).outerWidth());
+		ghostNode.draggable().appendTo('body');
+		ghostNode.css('position', 'absolute');
+		ghostNode.css('left', evt.pageX);
+		ghostNode.css('top', evt.pageY);
+		evt.type = 'drag';
+		evt.target = ghostNode[0];
+		ghostNode.trigger(evt);
+		$(document).on('mousemove', function (evt) {
+			ghostNode.css('left', evt.pageX);
+			ghostNode.css('top', evt.pageY);
+		});
+	});
+
 }
 
 function updateColumnsAndRowsText (global_container, global_var) {
@@ -446,21 +468,21 @@ export function renderGlobal (global_var) {
   		element += '<div class="item ' + (global_var.type == tm.toLowerCase() ? ' selected ' : '') + '" data-type="'+tm+'" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';
 	}
 
-  	for (var tm in Types) {
-  		if (tm == Types.VOID.toUpperCase()) {
-  			continue;
-  		}
-  		element += '<div class="item">'
-	    	+ '<i class="dropdown icon"></i>'
-	    	+  LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())
-	      	+  '<div class="menu">'
-		        + '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] " data-type="'+tm+'" data-dimensions="1">[ ]</div>'
-		        + '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] " data-type="'+tm+'" data-dimensions="2">[ ] [ ] </div>'
-	      	+  '</div>'
-	    	+ '</div>';	
-  	}
+	for (var tm in Types) {
+		if (tm == Types.VOID.toUpperCase()) {
+			continue;
+		}
+		element += '<div class="item">'
+			+ '<i class="dropdown icon"></i>'
+			+  LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())
+				+  '<div class="menu">'
+					+ '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] " data-type="'+tm+'" data-dimensions="1">[ ]</div>'
+					+ '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] " data-type="'+tm+'" data-dimensions="2">[ ] [ ] </div>'
+				+  '</div>'
+			+ '</div>';	
+	}
 
-    element += '</div></div> <div class="editing_name_var"> <span class="span_name_variable enable_edit_name_parameter">'+global_var.name+'</span> </div> <span class="character_equals"> = </span> ';
+	element += '</div></div> <div class="editing_name_var"> <span class="span_name_variable enable_edit_name_parameter">'+global_var.name+'</span> </div> <span class="character_equals"> = </span> ';
 
 	element += '<div class="ui div_valor_var">'+global_var.value+'</div>';    
 
@@ -865,7 +887,7 @@ $.fn.textWidth = function(text, font) {
 
 renderGlobal = function (global_var) {
 
-	var element = '<div class="ui container segment global_container"><div class="global_const">const: ';
+	var element = '<div class="ui segment global_container" draggable="true"><div class="global_const">const: ';
 
 	element += '<i class="ui icon toggle '+(global_var.is_constant?"on":"off")+' alternate_constant"></i></div><span class="span_name_variable enable_edit_name_parameter">'+global_var.name+'</span> <i class="icon small pencil alternate enable_edit_name_parameter"></i>';
 
@@ -889,21 +911,21 @@ renderGlobal = function (global_var) {
   		element += '<div class="item ' + (global_var.type == tm.toLowerCase() ? ' selected ' : '') + '" data-type="'+tm+'" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';
 	}
 
-  	for (var tm in Types) {
-  		if (tm == Types.VOID.toUpperCase()) {
-  			continue;
-  		}
-  		element += '<div class="item">'
-	    	+ '<i class="dropdown icon"></i>'
-	    	+  LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())
-	      	+  '<div class="menu">'
-		        + '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] " data-type="'+tm+'" data-dimensions="1">[ ]</div>'
-		        + '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] " data-type="'+tm+'" data-dimensions="2">[ ] [ ] </div>'
-	      	+  '</div>'
-	    	+ '</div>';
-  	}
+	for (var tm in Types) {
+		if (tm == Types.VOID.toUpperCase()) {
+			continue;
+		}
+		element += '<div class="item">'
+			+ '<i class="dropdown icon"></i>'
+			+  LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())
+				+  '<div class="menu">'
+					+ '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] " data-type="'+tm+'" data-dimensions="1">[ ]</div>'
+					+ '<div class="item" data-text="'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] " data-type="'+tm+'" data-dimensions="2">[ ] [ ] </div>'
+				+  '</div>'
+			+ '</div>';
+	}
 
-    element += '</div></div>  = ';
+	element += '</div></div>  = ';
 
 	element += '<div class="ui div_valor_var">'+global_var.value+'</div>';
 

+ 4 - 0
js/visualUI/ivprog_elements_sidebar.js

@@ -256,6 +256,10 @@ export class Program {
       AlgorithmManagement.renderAlgorithm();
     }, 1);
 
+    WatchJS.watch(function_to_add, "return_type", function(){
+      AlgorithmManagement.renderAlgorithm();
+    }, 1);
+
     this.functions.push(function_to_add);
   }
 

+ 10 - 7
observacoes

@@ -2,19 +2,22 @@
 
 OK botar assinatura das funções funcao(tipo,tipo,tipo)
 
-blocos com funções específicas
+OK blocos com funções específicas
 
-corrigir bug da função
+OK corrigir bug da função
 
-trocar nos parâmetros da função tipo na frente e rótulo depois
+OK trocar nos parâmetros da função tipo na frente e rótulo depois
 
-clique pega clique solta
+OK clique pega clique solta
 
-tornar tipo como botão e não dropdown
+OK tornar tipo como botão e não dropdown
 
 (-) arraste de globais e solta uma atribuição
 
-comentário descritivo sobre a assinatura da função
+(dependo do igor) comentário descritivo sobre a assinatura da função 
 
-quando tiver retorno, atribuicao. Quando vazio, chamada de função
+OK quando tiver retorno, atribuicao. Quando vazio, chamada de função
 
+Não gera texto
+
+Não gera arquivo