import $ from 'jquery'; import { Types } from './types'; import * as Models from './ivprog_elements'; import { LocalizedStrings } from './../services/localizedStringsService'; import * as GlobalsManagement from './globals'; import * as VariablesManagement from './variables'; import * as CommandsManagement from './commands'; var counter_new_functions = 0; var counter_new_parameters = 0; const program = new Models.Program(); const mainFunction = new Models.Function(LocalizedStrings.getUI("start"), Types.VOID, 0, [], true, false, []); mainFunction.function_comment = new Models.Comment(LocalizedStrings.getUI('text_comment_main')); program.addFunction(mainFunction); window.program_obj = program; function addFunctionHandler () { var new_function = new Models.Function(LocalizedStrings.getUI("new_function") + "_" + counter_new_functions, Types.VOID, 0, [], false, false, [], new Models.Comment(LocalizedStrings.getUI('text_comment_start'))); program.addFunction(new_function); counter_new_functions ++; renderFunction(new_function); } function addParameter (function_obj, function_container) { if (function_obj.parameters_list == null) { function_obj.parameters_list = []; } var new_parameter = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI("new_parameter") + "_" + counter_new_parameters); function_obj.parameters_list.push(new_parameter); counter_new_parameters ++; renderParameter(function_obj, new_parameter, function_container); } function updateReturnType (function_obj, new_type, new_dimensions = 0) { function_obj.return_type = new_type; function_obj.return_dimensions = new_dimensions; } function removeFunction (function_obj) { var index = program.functions.indexOf(function_obj); if (index > -1) { program.functions.splice(index, 1); } } function minimizeFunction (function_obj) { function_obj.is_hidden = !function_obj.is_hidden; } function addHandlers (function_obj, function_container) { $( function_container ).find('.ui.dropdown.function_return').dropdown({ onChange: function(value, text, $selectedItem) { if ($($selectedItem).data('dimensions')) { updateReturnType(function_obj, Types[$($selectedItem).data('type')], $($selectedItem).data('dimensions')); } else { updateReturnType(function_obj, Types[$($selectedItem).data('type')]); } } }); $( function_container ).find( ".name_function_updated" ).on('click', function(e){ enableNameFunctionUpdate(function_obj, function_container); }); $( function_container ).find( ".add_parameter_button" ).on('click', function(e){ addParameter(function_obj, function_container); }); $( function_container ).find('.menu_commands').dropdown(); $( function_container ).find('.menu_commands a').on('click', function(evt){ CommandsManagement.createFloatingCommand(function_obj, function_container, $(this).data('command'), evt); }); $( function_container ).find('.add_var_button_function').on('click', function(e){ VariablesManagement.addVariable(function_obj, function_container); }); $( function_container ).find('.remove_function_button').on('click', function(e){ removeFunction(function_obj); $(function_container).slideUp(400); }); $( function_container ).find('.minimize_function_button').on('click', function(e){ minimizeFunction(function_obj); $(function_container).find(".function_area").toggle(); }); } // Essa função imprime o tipo de retorno da função e cria o menu do tipo 'select' para alteração function renderFunctionReturn (function_obj, function_element) { var ret = '