12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535 |
- // iVProg - www.usp.br/line/ivprog
- // LInE - Free Education, Private Data
- import * as Models from "../ivprog_elements";
- import { LocalizedStrings } from "../../services/localizedStringsService";
- import * as AttribuitionsManagement from "./attribution";
- import * as RepeatNTimesManagement from "./repeatNtimes";
- export const VAR_OR_VALUE_TYPES = Object.freeze({
- only_variable: 1,
- only_value: 2,
- only_function: 3,
- variable_and_function: 4,
- variable_and_value_opt: 5,
- value_and_function: 6,
- all: 7,
- });
- export function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) {
- // Verificar se o objeto atual trata-se de uma chamada de funcao e conferir se possui a quantidade correta de parametros
- // Caso nao possua, tem que adicionar as variaveis que servirao de parametros:
- if (ref_object.function_called) {
- if (ref_object.function_called.parameters_list) {
- while (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) {
- if (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) {
- ref_object.parameters_list.pop();
- } else {
- ref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true));
- }
- }
- }
- }
- // Verificar agora, quando trata-se de chamada de funcao, se a passagem de parametro e'
- // por referencia ou por copia:
- var index_references = [];
- if (ref_object.function_called) {
- if (ref_object.function_called.parameters_list) {
- for (var i = 0; i < ref_object.function_called.parameters_list.length; i++) {
- if (ref_object.function_called.parameters_list[i].reference) {
- index_references.push(i)
- ref_object.parameters_list[i].reference = true
- ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.only_variable;
- if (ref_object.parameters_list[i].column)
- ref_object.parameters_list[i].column.reference_parent = true
- if (ref_object.parameters_list[i].row)
- ref_object.parameters_list[i].row.reference_parent = true
- }
- else {
- ref_object.parameters_list[i].reference = false;
- ref_object.parameters_list[i].variable_and_value = VAR_OR_VALUE_TYPES.all;
- if (ref_object.parameters_list[i].column)
- ref_object.parameters_list[i].column.reference_parent = false
- if (ref_object.parameters_list[i].row)
- ref_object.parameters_list[i].row.reference_parent = false
- }
- ref_object.parameters_list[i].reference_dimensions = ref_object.function_called.parameters_list[i].dimensions
- }
- }
- }
- let menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom" data-varmenu="true"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {
- menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom" data-varmenu="true"><div class="text"></div><i class="dropdown icon"></i><div class="menu menu_only_vars">';
- menu_var_or_value += "</div>";
- }
- if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||
- ref_object.variable_and_value ==
- VAR_OR_VALUE_TYPES.variable_and_value_opt ||
- ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all) {
- menu_var_or_value +=
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_variable +
- '"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("variable");
- menu_var_or_value += '<div class="menu menu_only_vars">';
- menu_var_or_value += "</div></div>";
- }
- if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {
- menu_var_or_value =
- '<input type="text" class="width-dynamic" size="' +
- size_field +
- '" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />';
- }
- if (ref_object.variable_and_value ==VAR_OR_VALUE_TYPES.variable_and_value_opt ||
- ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||
- ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all) {
- menu_var_or_value +=
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_value +
- '">' +
- LocalizedStrings.getUI("text_value") +
- "</div>";
- }
- if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {
- menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom" data-varmenu="true"><div class="text"></div><i class="dropdown icon"></i><div class="menu menu_only_functions">';
- menu_var_or_value += "</div>";
- }
- if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||
- ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||
- ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all) {
- menu_var_or_value +=
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_function +
- '"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("btn_function");
- menu_var_or_value += '<div class="menu menu_only_functions">';
- menu_var_or_value += "</div></div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- menu_var_or_value += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- menu_var_or_value += '<div class="menu">';
- menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- menu_var_or_value += '</div></div>';
- }*/
- }
- menu_var_or_value += "</div></div>";
- menu_var_or_value = $(menu_var_or_value);
- menu_var_or_value.find('.width-dynamic').on('input', function() {
- var input_field = $(this);
- var inputWidth = input_field.textWidth()+10;
- inputWidth = inputWidth<50?50:inputWidth;
- input_field.css({width: inputWidth})
- }).trigger('input');
- dom_object.append(menu_var_or_value);
- ref_object.dom_object = menu_var_or_value;
- addHandlers(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);
- addVariablesToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
- addFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
- addIVProgFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
- //D console.log("./ivprog/js/visualUI/commands/variable_value_menu.js: renderMenu(.): ref_object.content=" + ref_object.content);
- //leo ATTENTION: if constant with value 0 does not pass in "if ((ref_object.content)"
- if (ref_object.content || ref_object.content==0 || ref_object.function_called) {
- if (ref_object.content || ref_object.content==0) { //leo
- // Verificar se a variavel ainda existe:
- const variable_fun = isVarInProgram(ref_object.content, function_obj);
- if (variable_fun) {
- ref_object.content = variable_fun;
- renderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);
- } else {
- if ((ref_object.content || ref_object.content==0) && ref_object.content.type) { //leo
- ref_object.content = null;
- appendSelectText(ref_object, menu_var_or_value);
- } else {
- renderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);
- }
- }
- } else if (ref_object.function_called) {
- // Verificar se a funcao ainda existe:
- const ret_function = isFunctionInProgram(ref_object.function_called);
- if (ret_function) {
- ref_object.function_called = ret_function;
- renderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);
- } else {
- ref_object.content = null;
- ref_object.row = null;
- ref_object.column = null;
- delete ref_object.function_called;
- delete ref_object.parameters_list;
- appendSelectText(ref_object, menu_var_or_value);
- }
- }
- } // if (ref_object.content || ref_object.content==0)
- else {
- appendSelectText(ref_object, menu_var_or_value);
- }
- }
- function appendSelectText (ref_object, menu_var_or_value) {
- // if (ref_object.reference_parent) { menu_var_or_value.find(".text").append("<i>Opcional</i>"); return; }
- switch (ref_object.variable_and_value) {
- case VAR_OR_VALUE_TYPES.only_variable:
- menu_var_or_value.find(".text").append("<i>" + LocalizedStrings.getUI("var_menu_select_var") + "</i>");
- break;
- case VAR_OR_VALUE_TYPES.all:
- menu_var_or_value.find(".text").append("<i>" + LocalizedStrings.getUI("var_menu_select_all") + "</i>");
- break;
- case VAR_OR_VALUE_TYPES.variable_and_function:
- menu_var_or_value.find(".text").append("<i>" + LocalizedStrings.getUI("var_menu_select_all") + "</i>");
- break;
- case VAR_OR_VALUE_TYPES.only_function:
- menu_var_or_value.find(".text").append("<i>" + LocalizedStrings.getUI("var_menu_select_function") + "</i>");
- break;
- }
- } // function appendSelectText(ref_object, menu_var_or_value)
- function isFunctionInProgram (function_called_obj) {
- if (function_called_obj.name) {
- if (window.program_obj.functions) {
- for (var i = 0; i < window.program_obj.functions.length; i++) {
- if (window.program_obj.functions[i] == function_called_obj) {
- return window.program_obj.functions[i];
- }
- }
- for (var i = 0; i < window.program_obj.functions.length; i++) {
- if (window.program_obj.functions[i].name == function_called_obj.name) {
- return window.program_obj.functions[i];
- }
- }
- }
- } else if (function_called_obj.identifier) {
- for (var i = 0; i < window.system_functions.length; i++) {
- if (window.system_functions[i].identifier == function_called_obj.identifier) {
- return window.system_functions[i];
- }
- }
- }
- return null;
- } // function isFunctionInProgram(function_called_obj)
- function isVarInProgram (var_obj, function_obj) {
- // Verify in locals:
- if (function_obj.variables_list) {
- for (var i = 0; i < function_obj.variables_list.length; i++) {
- if (function_obj.variables_list[i] == var_obj) {
- return function_obj.variables_list[i];
- }
- }
- }
- // Verify in parameters:
- if (function_obj.parameters_list) {
- for (var i = 0; i < function_obj.parameters_list.length; i++) {
- if (function_obj.parameters_list[i] == var_obj) {
- return function_obj.parameters_list[i];
- }
- }
- }
- // Verify in globals:
- if (window.program_obj.globals) {
- for (var i = 0; i < window.program_obj.globals.length; i++) {
- if (window.program_obj.globals[i] == var_obj) {
- return window.program_obj.globals[i];
- }
- }
- }
- // If not found, verify if the reference was lost
- if (var_obj) {
- if (function_obj.variables_list) {
- for (var i = 0; i < function_obj.variables_list.length; i++) {
- if (function_obj.variables_list[i].name == var_obj.name) {
- return function_obj.variables_list[i];
- }
- }
- }
- if (function_obj.parameters_list) {
- for (var i = 0; i < function_obj.parameters_list.length; i++) {
- if (function_obj.parameters_list[i].name == var_obj.name) {
- return function_obj.parameters_list[i];
- }
- }
- }
- if (window.program_obj.globals) {
- for (var i = 0; i < window.program_obj.globals.length; i++) {
- if (window.program_obj.globals[i].name == var_obj.name) {
- return window.program_obj.globals[i];
- }
- }
- }
- }
- return null;
- }
- function renderPreviousContent (function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element) {
- if (ref_object.function_called) {
- menu_var_or_value.remove();
- variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
- } else if (ref_object.content.type) {
- menu_var_or_value.remove();
- variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
- } else {
- menu_var_or_value.remove();
- variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
- }
- }
- function variableValueMenuCode (command, variable_obj, dom_object, function_obj, menu_var_or_value, expression_element) {
- if (variable_obj.content || variable_obj.function_called) {
- // Verificar se a variavel ainda existe:
- const var_fun = isVarInProgram(variable_obj.content, function_obj);
- if (var_fun) {
- variable_obj.content = var_fun;
- } else {
- if (variable_obj.content && variable_obj.content.type) {
- variable_obj.content = null;
- appendSelectText(variable_obj, menu_var_or_value);
- }
- }
- } else {
- appendSelectText(variable_obj, menu_var_or_value);
- }
- if (variable_obj.content == null && variable_obj.function_called == null) {
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- return;
- }
- const ret = "";
- if (variable_obj.function_called) {
- if (variable_obj.function_called.parameters_list == null || variable_obj.function_called.length == 0) {
- menu_var_or_value.find(".text").text(" ");
- dom_object.find(".menu_var_or_value_dom").remove();
- var parameters_menu;
- if (variable_obj.function_called.name) {
- parameters_menu =
- '<div class="parameters_function_called"> ' +
- variable_obj.function_called.name +
- " <span> ( </span>";
- } else {
- parameters_menu =
- '<div class="parameters_function_called"> <i>' +
- LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier, variable_obj.function_called.category) +
- "</i> <span> ( </span>";
- }
- parameters_menu += "<span> ) </span></div>";
- parameters_menu = $(parameters_menu);
- dom_object.append(parameters_menu);
- var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu += '<div class="item" data-clear="true">' + LocalizedStrings.getUI("btn_clear") + "</div>"; // Clear
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- context_menu.insertAfter(dom_object.find(".parameters_function_called"));
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- } else {
- menu_var_or_value.find(".text").text(" ");
- dom_object.find(".menu_var_or_value_dom").remove();
- var parameters_menu;
- if (variable_obj.function_called.name) {
- parameters_menu =
- '<div class="parameters_function_called"> ' +
- variable_obj.function_called.name +
- " <span> ( </span>";
- } else {
- parameters_menu =
- '<div class="parameters_function_called"> <i>' +
- LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier, variable_obj.function_called.category) +
- "</i> <span> ( </span>";
- }
- for (let j = 0; j < variable_obj.function_called.parameters_list.length; j++) {
- parameters_menu += '<div class="render_style_param parameter_' + j + '"></div>';
- if (j + 1 != variable_obj.function_called.parameters_list.length) {
- parameters_menu += " , ";
- }
- }
- parameters_menu += "<span> ) </span></div>";
- parameters_menu = $(parameters_menu);
- dom_object.append(parameters_menu);
- for (let j = 0; j < variable_obj.function_called.parameters_list.length; j++) {
- renderMenu(command, variable_obj.parameters_list[j], parameters_menu.find(".parameter_" + j), function_obj, 2, expression_element);
- }
- let context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- context_menu.insertAfter(parameters_menu);
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- }
- } else if (variable_obj.content.type) {
- let variable_render = "";
- if (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {
- variable_render =
- '<div class="variable_rendered"> <span class="var_name">' +
- variable_obj.content.name +
- "</span>";
- if (variable_obj.reference_dimensions >= 1)
- variable_render += '';
- else
- variable_render +=
- ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
- variable_render += "</div>";
- variable_render = $(variable_render);
- dom_object.append(variable_render);
- let context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- variable_render.append(context_menu);
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- if (!variable_obj.column) {
- var temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
- if (variable_obj.reference)
- temp.reference_parent = true
- variable_obj.column = temp;
- }
- variableValueMenuCode(command, variable_obj.column, $(variable_render.find(".column_container")), function_obj, menu_var_or_value, expression_element);
- } else if (
- variable_obj.content.dimensions == 2 &&
- variable_obj.dimensions != 2
- ) {
- variable_render =
- '<div class="variable_rendered"> <span class="var_name">' +
- variable_obj.content.name +
- "</span>";
-
- variable_render +=
- ' <span>[ </span> <div class="row_container"></div> <span> ]</span>';
- if (variable_obj.reference_dimensions == 0)
- variable_render +=
- ' <span>[ </span> <div class="column_container"></div> <span> ] </span>';
- variable_render += "</div>";
- variable_render = $(variable_render);
- dom_object.append(variable_render);
- let context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- variable_render.append(context_menu);
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(
- command,
- variable_obj,
- dom_object,
- menu_var_or_value,
- function_obj,
- $selectedItem,
- expression_element
- );
- }
- },
- selectOnKeydown: false,
- });
- if (!variable_obj.column) {
- var temp = new Models.VariableValueMenu(
- VAR_OR_VALUE_TYPES.all,
- null,
- null,
- null,
- true
- );
- if (variable_obj.reference)
- temp.reference_parent = true
- variable_obj.column = temp
- }
- if (!variable_obj.row) {
- var temp = new Models.VariableValueMenu(
- VAR_OR_VALUE_TYPES.all,
- null,
- null,
- null,
- true
- );
- if (variable_obj.reference)
- temp.reference_parent = true
- variable_obj.row = temp
- }
- variableValueMenuCode(
- command,
- variable_obj.row,
- $(variable_render.find(".row_container")),
- function_obj,
- menu_var_or_value,
- expression_element
- );
- if (variable_obj.reference_dimensions == 1) {
- variable_obj.column = null
- } else {
- variableValueMenuCode(
- command,
- variable_obj.column,
- $(variable_render.find(".column_container")),
- function_obj,
- menu_var_or_value,
- expression_element
- );
- }
- } else {
- variable_render =
- '<div class="variable_rendered"> <span class="var_name">' +
- variable_obj.content.name +
- "</span>";
- variable_render += "</div>";
- variable_render = $(variable_render);
- dom_object.append(variable_render);
- let context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {
- console.log('dom_object6');
- console.log(dom_object);
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- variable_render.append(context_menu);
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- }
- } else {
- let variable_render;
- variable_render =
- '<div class="variable_rendered"> <span class="var_name">';
- if (isNaN(variable_obj.content)) {
- variable_render += variable_obj.content.split(" ").join(" ");
- } else {
- variable_render += variable_obj.content;
- }
- variable_render += "</span>";
- variable_render += "</div>";
- variable_render = $(variable_render);
- dom_object.append(variable_render);
- var context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- if (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
- context_menu.insertAfter(variable_render);
- }
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- variable_obj.content = null;
- variable_obj.row = null;
- variable_obj.column = null;
- delete variable_obj.function_called;
- delete variable_obj.parameters_list;
- dom_object.find(".value_rendered").remove();
- dom_object.find(".context_menu_clear").remove();
- dom_object.find(".width-dynamic-minus").remove();
- renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(
- command,
- variable_obj,
- dom_object,
- menu_var_or_value,
- function_obj,
- $selectedItem,
- expression_element
- );
- }
- },
- selectOnKeydown: false,
- });
- variable_render.on("click", function (e) {
- variable_render.remove();
- variable_render.empty();
- variable_render.remove();
- dom_object.empty();
- dom_object.append('<span class="menu_var_or_value_dom"> </span>');
- openInputToValue(
- command,
- variable_obj,
- dom_object,
- menu_var_or_value,
- function_obj,
- expression_element
- );
- });
- }
- }
- function addIVProgFunctionsToMenu (
- function_obj,
- menu_var_or_value,
- ref_object,
- expression_element
- ) {
- const sub_menu = menu_var_or_value.find(".menu_only_functions");
- sub_menu.append(
- '<div class="divider"></div><div class="header">' +
- LocalizedStrings.getUI("text_header_ivprog_functions") +
- "</div>"
- );
- sub_menu.append(
- '<div class="item"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("text_menu_functions_math") +
- '<div class="menu menu_math_functions"></div></div>'
- );
- sub_menu.append(
- '<div class="item"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("text_menu_functions_text") +
- '<div class="menu menu_text_functions"></div></div>'
- );
- sub_menu.append(
- '<div class="item"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("text_menu_functions_array") +
- '<div class="menu menu_arrangement_functions"></div></div>'
- );
- sub_menu.append(
- '<div class="item"><i class="dropdown icon"></i>' +
- LocalizedStrings.getUI("text_menu_functions_conversion") +
- '<div class="menu menu_conversion_functions"></div></div>'
- );
- // Insert Math functions:
- for (let i = 0; i < window.system_functions.length; i++) {
- const t = $('<div class="item"></div>');
- t.data("function_reference", window.system_functions[i]);
- t.data("option", VAR_OR_VALUE_TYPES.only_function);
- t.text(LocalizedStrings.translateInternalFunction(window.system_functions[i].identifier));
- switch (window.system_functions[i].category) {
- case Models.SYSTEM_FUNCTIONS_CATEGORIES.math:
- sub_menu.find(".menu_math_functions").append(t);
- break;
- case Models.SYSTEM_FUNCTIONS_CATEGORIES.text:
- sub_menu.find(".menu_text_functions").append(t);
- break;
- case Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:
- sub_menu.find(".menu_arrangement_functions").append(t);
- break;
- case Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:
- sub_menu.find(".menu_conversion_functions").append(t);
- break;
- }
- }
- }
- function addFunctionsToMenu (
- function_obj,
- menu_var_or_value,
- ref_object,
- expression_element
- ) {
- const sub_menu = menu_var_or_value.find(".menu_only_functions");
- sub_menu.text("");
- for (let i = 0; i < window.program_obj.functions.length; i++) {
- const temp = $(
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_function +
- '">' +
- window.program_obj.functions[i].name +
- " </div>"
- );
- temp.data("function_reference", window.program_obj.functions[i]);
- sub_menu.append(temp);
- }
- }
- function addVariablesToMenu (
- function_obj,
- menu_var_or_value,
- ref_object,
- expression_element
- ) {
- const sub_menu = menu_var_or_value.find(".menu_only_vars");
- sub_menu.text("");
- let is_there = false;
- if (window.program_obj.globals) {
- if (ref_object.include_constant) {
- for (var i = 0; i < window.program_obj.globals.length; i++) {
- var temp = $(
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_variable +
- '">' +
- window.program_obj.globals[i].name +
- " </div>"
- );
- temp.data("variable_reference", window.program_obj.globals[i]);
- sub_menu.append(temp);
- is_there = true;
- }
- } else {
- for (var i = 0; i < window.program_obj.globals.length; i++) {
- if (!window.program_obj.globals[i].is_constant) {
- var temp = $(
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_variable +
- '">' +
- window.program_obj.globals[i].name +
- " </div>"
- );
- temp.data("variable_reference", window.program_obj.globals[i]);
- sub_menu.append(temp);
- is_there = true;
- }
- }
- }
- }
- if (function_obj.parameters_list) {
- for (var i = 0; i < function_obj.parameters_list.length; i++) {
- var temp = $(
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_variable +
- '">' +
- function_obj.parameters_list[i].name +
- " </div>"
- );
- temp.data("variable_reference", function_obj.parameters_list[i]);
- sub_menu.append(temp);
- is_there = true;
- }
- }
- if (function_obj.variables_list) {
- for (var i = 0; i < function_obj.variables_list.length; i++) {
- var temp = $(
- '<div class="item" data-option="' +
- VAR_OR_VALUE_TYPES.only_variable +
- '">' +
- function_obj.variables_list[i].name +
- " </div>"
- );
- temp.data("variable_reference", function_obj.variables_list[i]);
- sub_menu.append(temp);
- is_there = true;
- }
- }
- if (!is_there) {
- sub_menu.append(
- $(
- '<div class="header">' +
- LocalizedStrings.getUI("text_no_variable") +
- "</div>"
- )
- );
- sub_menu.append(
- $(
- '<div class="item disabled">' +
- LocalizedStrings.getUI("text_no_variable_instruction") +
- "</div>"
- )
- );
- }
- }
- function addHandlers (
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- expression_element
- ) {
- if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
- menu_var_or_value.dropdown({
- onChange: function (value, text, $selectedItem) {
- dom_object.find(".var_name").remove();
- switch ($selectedItem.data("option")) {
- case VAR_OR_VALUE_TYPES.only_function:
- openInputToFunction(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- $($selectedItem).data("function_reference"),
- expression_element
- );
- break;
- case VAR_OR_VALUE_TYPES.only_value:
- openInputToValue(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- expression_element
- );
- break;
- case VAR_OR_VALUE_TYPES.only_variable:
- openInputToVariable(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- $($selectedItem).data("variable_reference"),
- expression_element
- );
- break;
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- $selectedItem,
- expression_element
- );
- }
- if (command.type == Models.COMMAND_TYPES.repeatNtimes) {
- RepeatNTimesManagement.manageExpressionElements(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- $selectedItem,
- expression_element
- );
- }
- },
- selectOnKeydown: false,
- });
- }
- dom_object
- .find(".width-dynamic")
- .on("input", function () {
- const inputWidth = $(this).textWidth() + 10;
- $(this).focus();
- const tmpStr = $(this).val();
- $(this).val("");
- $(this).val(tmpStr);
- $(this).css({
- width: inputWidth,
- });
- })
- .trigger("input");
- if (command.type == Models.COMMAND_TYPES.comment) {
- dom_object.parent().on("click", function (e) {
- dom_object.find(".value_rendered").remove();
- dom_object.find(".value_rendered").empty();
- dom_object.find(".value_rendered").remove();
- dom_object.empty();
- dom_object.append('<span class="menu_var_or_value_dom"> </span>');
- openInputToValue(
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- expression_element
- );
- });
- }
- }
- function openInputToFunction (
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- function_selected,
- expression_element
- ) {
- ref_object.function_called = function_selected;
- ref_object.parameters_list = [];
- if (
- function_selected.parameters_list != null &&
- function_selected.parameters_list.length > 0
- ) {
- menu_var_or_value.find(".text").text(" ");
- dom_object.find(".menu_var_or_value_dom").remove();
- var parameters_menu;
- if (function_selected.name) {
- parameters_menu =
- '<div class="parameters_function_called"> ' +
- function_selected.name +
- " <span> ( </span>";
- } else {
- parameters_menu =
- '<div class="parameters_function_called"> <i>' +
- LocalizedStrings.translateInternalFunction(function_selected.identifier, function_selected.category) +
- "</i> <span> ( </span>\n";
- }
- for (var j = 0; j < function_selected.parameters_list.length; j++) {
- parameters_menu += '<div class="render_style_param parameter_' + j + '"></div>';
- if (j + 1 != function_selected.parameters_list.length) {
- parameters_menu += " , ";
- }
- }
- parameters_menu += "<span> ) </span></div>\n";
- parameters_menu = $(parameters_menu);
- dom_object.append(parameters_menu);
- for (var j = 0; j < function_selected.parameters_list.length; j++) {
- var temp;
- if (function_selected.parameters_list[j].dimensions > 0) {
- temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, function_selected.parameters_list[j].dimensions);
- } else {
- temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
- }
- if (function_selected.parameters_list[j].reference == true) {
- temp.reference = true;
- temp.variable_and_value = VAR_OR_VALUE_TYPES.only_variable;
- } else {
- temp.reference = false;
- temp.variable_and_value = VAR_OR_VALUE_TYPES.all;
- }
- temp.reference_dimensions = function_selected.parameters_list[j].dimensions
-
- ref_object.parameters_list.push(temp);
- renderMenu(command, temp, parameters_menu.find(".parameter_" + j), function_obj, 2, expression_element);
- }
- var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>\n";
- context_menu = $(context_menu);
- context_menu.insertAfter(dom_object.find(".parameters_function_called"));
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- ref_object.content = null;
- ref_object.row = null;
- ref_object.column = null;
- delete ref_object.function_called;
- delete ref_object.parameters_list;
- renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- } else {
- menu_var_or_value.find(".text").text(" ");
- dom_object.find(".menu_var_or_value_dom").remove();
- var parameters_menu;
- if (function_selected.name) {
- parameters_menu =
- '<div class="parameters_function_called"> ' +
- function_selected.name +
- " <span> ( </span>";
- } else {
- parameters_menu =
- '<div class="parameters_function_called"> <i>' +
- LocalizedStrings.translateInternalFunction(function_selected.identifier, function_selected.category) +
- "</i> <span> ( </span>";
- }
- parameters_menu += "<span> ) </span></div>";
- parameters_menu = $(parameters_menu);
- dom_object.append(parameters_menu);
- var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- context_menu.insertAfter(dom_object.find(".parameters_function_called"));
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- ref_object.content = null;
- ref_object.row = null;
- ref_object.column = null;
- delete ref_object.function_called;
- delete ref_object.parameters_list;
- renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- }
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);
- }*/
- }
- function openInputToVariable (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected, expression_element) {
- ref_object.content = variable_selected;
- menu_var_or_value.find(".text").text(" ");
- dom_object.find(".menu_var_or_value_dom").remove();
- let variable_render =
- '<div class="variable_rendered"> <span class="var_name">' +
- variable_selected.name +
- "</span>";
- if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {
- variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
- }
- if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {
- variable_render += ' <span>[ </span> <div class="row_container"></div> <span> ]</span> ';
- variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
- }
- variable_render += "</div>";
- variable_render = $(variable_render);
- dom_object.append(variable_render);
- if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {
- var temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
- if (ref_object.reference)
- temp.reference_parent = true
- ref_object.column = temp
- renderMenu(command, ref_object.column, variable_render.find(".column_container"), function_obj, 2, expression_element);
- }
- if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {
- var temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
- if (ref_object.reference)
- temp.reference_parent = true
- ref_object.row = temp
- renderMenu(command, ref_object.row, variable_render.find(".row_container"), function_obj, 2, expression_element);
- var temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
- if (ref_object.reference)
- temp.reference_parent = true
- ref_object.column = temp
-
- renderMenu(command, ref_object.column, variable_render.find(".column_container"), function_obj, 2, expression_element);
- }
- let context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {
- console.log("dom_object 10: ");
- console.log(dom_object);
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- context_menu.insertAfter(dom_object.find(".variable_rendered"));
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- ref_object.content = null;
- ref_object.row = null;
- ref_object.column = null;
- delete ref_object.function_called;
- delete ref_object.parameters_list;
- renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements( command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- if (command.type == Models.COMMAND_TYPES.repeatNtimes) {
- RepeatNTimesManagement.manageClearExpressionElements( command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
- }
- },
- selectOnKeydown: false,
- });
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);
- }*/
- }
- function openInputToValue (
- command,
- ref_object,
- dom_object,
- menu_var_or_value,
- function_obj,
- expression_element
- ) {
- if (ref_object.content == null) {
- ref_object.content = "";
- }
- menu_var_or_value.find(".text").text(" ");
- const field = $(
- '<input type="text" size="2" class="width-dynamic-minus" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />'
- );
- field.insertBefore(dom_object.find(".menu_var_or_value_dom"));
- field.on('input', function() {
- var input_field = $(this);
- var inputWidth = input_field.textWidth()+10;
- inputWidth = inputWidth<50?50:inputWidth;
- input_field.css({ width: inputWidth
- })
- }).trigger('input');
- const rendered = $('<div class="value_rendered"></div>');
- rendered.insertBefore(field);
- field.focus();
- field.val(ref_object.content);
- let context_menu =
- '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
- context_menu +=
- '<div class="item" data-clear="true">' +
- LocalizedStrings.getUI("btn_clear") +
- "</div>";
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
- context_menu += '<div class="menu">';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
- context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
- context_menu += '</div></div>';
- }*/
- context_menu += "</div></div>";
- context_menu = $(context_menu);
- dom_object.find(".menu_var_or_value_dom").remove();
- if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
- context_menu.insertAfter(field);
- }
- context_menu.dropdown({
- onChange: function (value, text, $selectedItem) {
- if ($selectedItem.data("clear")) {
- dom_object.text("");
- dom_object.find(".value_rendered").remove();
- dom_object.find(".context_menu_clear").remove();
- dom_object.find(".width-dynamic-minus").remove();
- ref_object.content = null;
- ref_object.row = null;
- ref_object.column = null;
- delete ref_object.function_called;
- delete ref_object.parameters_list;
- renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
- }
- if ($selectedItem.data("exp")) {
- AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element
- );
- }
- },
- selectOnKeydown: false,
- });
- dom_object.find(".width-dynamic-minus").focusout(function () {
- //if ($(this).val().trim()) { ref_object.content = $(this).val().trim();}
- ref_object.content = $(this)
- .val();
- if (isNaN(ref_object.content)) {
- rendered.html(ref_object.content.split(" ").join(" "));
- } else {
- rendered.text(ref_object.content);
- }
- $(this).remove();
- });
- dom_object.find(".width-dynamic-minus").on("keydown", function (e) {
- const code = e.keyCode || e.which;
- if (code == 13) {
- //if ($(this).val().trim()) { ref_object.content = $(this).val().trim();}
- ref_object.content = $(this).val();
- if (isNaN(ref_object.content)) {
- rendered.html(ref_object.content.split(" ").join(" "));
- } else {
- rendered.text(ref_object.content);
- }
- $(this).remove();
- }
- if (code == 27) {
- if (isNaN(ref_object.content)) {
- rendered.html(ref_object.content.split(" ").join(" "));
- } else {
- rendered.text(ref_object.content);
- }
- $(this).remove();
- }
- });
- if (command.type == Models.COMMAND_TYPES.comment) {
- /*rendered.parent().on('click', function(e) {
- rendered.parent().off();
- console.log("TTT14");
- rendered.remove();
- rendered.empty();
- rendered.remove();
- dom_object.empty();
- dom_object.append('<span class="menu_var_or_value_dom"> </span>');
- openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)
- });*/
- }
- rendered.on("click", function (e) {
- rendered.empty();
- rendered.remove();
- dom_object.empty();
- dom_object.append('<span class="menu_var_or_value_dom"> </span>');
- openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);
- });
- /*if (command.type == Models.COMMAND_TYPES.attribution) {
- AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);
- }*/
- }
- $.fn.textWidth = function (text, font) {
- if (!$.fn.textWidth.fakeEl)
- $.fn.textWidth.fakeEl = $("<span>").hide().appendTo(document.body);
- $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr("placeholder")).css("font", font || this.css("font"));
- return $.fn.textWidth.fakeEl.width();
- };
|