variable_value_menu.js 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097
  1. import $ from 'jquery';
  2. import { Types } from '../types';
  3. import * as Models from '../ivprog_elements';
  4. import { LocalizedStrings } from '../../services/localizedStringsService';
  5. import * as GlobalsManagement from '../globals';
  6. import * as VariablesManagement from '../variables';
  7. import * as AttribuitionsManagement from './attribution';
  8. import * as WritersManagement from './writer';
  9. import * as RepeatNTimesManagement from './repeatNtimes';
  10. 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,
  11. value_and_function: 6, all: 7});
  12. export function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) {
  13. var menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom" data-algo="12"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  14. // Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros
  15. // Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:
  16. if (ref_object.function_called) {
  17. if (ref_object.function_called.parameters_list) {
  18. if (!ref_object.parameters_list) {
  19. ref_object.parameters_list = [];
  20. }
  21. while (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) {
  22. if (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) {
  23. ref_object.parameters_list.pop();
  24. } else {
  25. ref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true));
  26. }
  27. }
  28. }
  29. }
  30. if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {
  31. menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom"><div class="text"></div><i class="dropdown icon"></i><div class="menu menu_only_vars">';
  32. menu_var_or_value += '</div>';
  33. }
  34. 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)) {
  35. menu_var_or_value += '<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_variable+'"><i class="dropdown icon"></i>'+LocalizedStrings.getUI('variable');
  36. menu_var_or_value += '<div class="menu menu_only_vars">';
  37. menu_var_or_value += '</div></div>';
  38. }
  39. if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {
  40. menu_var_or_value = '<input type="text" class="width-dynamic" size="'+size_field+'" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />';
  41. }
  42. if ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt)
  43. || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {
  44. menu_var_or_value += '<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_value+'">'+LocalizedStrings.getUI('text_value')+'</div>';
  45. }
  46. if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {
  47. menu_var_or_value = '<div class="ui dropdown menu_var_or_value_dom"><div class="text"></div><i class="dropdown icon"></i><div class="menu menu_only_functions">';
  48. menu_var_or_value += '</div>';
  49. }
  50. if ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function)
  51. || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {
  52. menu_var_or_value += '<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_function+'"><i class="dropdown icon"></i>'+LocalizedStrings.getUI('btn_function');
  53. menu_var_or_value += '<div class="menu menu_only_functions">';
  54. menu_var_or_value += '</div></div>';
  55. if (command.type == Models.COMMAND_TYPES.attribution) {
  56. menu_var_or_value += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  57. menu_var_or_value += '<div class="menu">';
  58. menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  59. menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  60. menu_var_or_value += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  61. menu_var_or_value += '</div></div>';
  62. }
  63. }
  64. menu_var_or_value += '</div></div>';
  65. menu_var_or_value = $(menu_var_or_value);
  66. dom_object.append(menu_var_or_value);
  67. addHandlers(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);
  68. addVariablesToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
  69. addFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
  70. addIVProgFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);
  71. if (ref_object.content || ref_object.function_called) {
  72. // Verificar se a variável ainda existe:
  73. if (isVarInProgram(ref_object.content, function_obj)) {
  74. renderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);
  75. } else {
  76. if (ref_object.content && ref_object.content.type) {
  77. ref_object.content = null;
  78. appendSelectText(ref_object, menu_var_or_value);
  79. } else {
  80. renderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);
  81. }
  82. }
  83. } else {
  84. appendSelectText(ref_object, menu_var_or_value);
  85. }
  86. }
  87. function appendSelectText (ref_object, menu_var_or_value) {
  88. switch(ref_object.variable_and_value) {
  89. case VAR_OR_VALUE_TYPES.only_variable:
  90. menu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_var')+'</i>');
  91. break;
  92. case VAR_OR_VALUE_TYPES.all:
  93. menu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');
  94. break;
  95. case VAR_OR_VALUE_TYPES.variable_and_function:
  96. menu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');
  97. break;
  98. case VAR_OR_VALUE_TYPES.only_function:
  99. menu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_function')+'</i>');
  100. break;
  101. }
  102. }
  103. function isVarInProgram (var_obj, function_obj) {
  104. // Verify in globals:
  105. if (window.program_obj.globals) {
  106. for (var i = 0; i < window.program_obj.globals.length; i++) {
  107. if (window.program_obj.globals[i] == var_obj) {
  108. return true;
  109. }
  110. }
  111. }
  112. // Verify in locals:
  113. if (function_obj.variables_list) {
  114. for (var i = 0; i < function_obj.variables_list.length; i++) {
  115. if (function_obj.variables_list[i] == var_obj) {
  116. return true;
  117. }
  118. }
  119. }
  120. // Verify in parameters:
  121. if (function_obj.parameters_list) {
  122. for (var i = 0; i < function_obj.parameters_list.length; i++) {
  123. if (function_obj.parameters_list[i] == var_obj) {
  124. return true;
  125. }
  126. }
  127. }
  128. return false;
  129. }
  130. export function refreshMenu (menu_var_or_value_dom) {
  131. console.log('\n\n');
  132. console.log(menu_var_or_value_dom);
  133. console.log("olá, fui chamado! note alguns DATAS recuperados: ");
  134. console.log(menu_var_or_value_dom.data());
  135. console.log('\n\n\n');
  136. }
  137. function renderPreviousContent (function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element) {
  138. if (ref_object.function_called) {
  139. menu_var_or_value.remove();
  140. variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
  141. } else if (ref_object.content.type) {
  142. menu_var_or_value.remove();
  143. variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
  144. } else {
  145. menu_var_or_value.remove();
  146. variableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);
  147. }
  148. }
  149. function variableValueMenuCode (command, variable_obj, dom_object, function_obj, menu_var_or_value, expression_element) {
  150. if (variable_obj.content || variable_obj.function_called) {
  151. // Verificar se a variável ainda existe:
  152. if (isVarInProgram(variable_obj.content, function_obj)) {
  153. } else {
  154. if (variable_obj.content && variable_obj.content.type) {
  155. variable_obj.content = null;
  156. appendSelectText(variable_obj, menu_var_or_value);
  157. }
  158. }
  159. } else {
  160. appendSelectText(variable_obj, menu_var_or_value);
  161. }
  162. if (variable_obj.content == null && variable_obj.function_called == null) {
  163. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  164. return;
  165. }
  166. var ret = '';
  167. if (variable_obj.function_called) {
  168. if (variable_obj.function_called.parameters_list == null || variable_obj.function_called.length == 0) {
  169. menu_var_or_value.find('.text').text(' ');
  170. dom_object.find('.menu_var_or_value_dom').remove();
  171. var parameters_menu;
  172. if (variable_obj.function_called.name) {
  173. parameters_menu = '<div class="parameters_function_called"> '+variable_obj.function_called.name+' <span> ( </span>';
  174. } else {
  175. parameters_menu = '<div class="parameters_function_called"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';
  176. }
  177. parameters_menu += '<span> ) </span></div>';
  178. parameters_menu = $(parameters_menu);
  179. dom_object.append(parameters_menu);
  180. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  181. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  182. if (command.type == Models.COMMAND_TYPES.attribution) {
  183. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  184. context_menu += '<div class="menu">';
  185. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  186. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  187. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  188. context_menu += '</div></div>';
  189. }
  190. context_menu += '</div></div>';
  191. context_menu = $(context_menu);
  192. context_menu.insertAfter( dom_object.find('.parameters_function_called') );
  193. context_menu.dropdown({
  194. onChange: function(value, text, $selectedItem) {
  195. console.log('S1');
  196. if ($selectedItem.data('clear')) {
  197. console.log('PP1');
  198. dom_object.text('');
  199. variable_obj.content = null;
  200. variable_obj.row = null;
  201. variable_obj.column = null;
  202. delete variable_obj.function_called;
  203. delete variable_obj.parameters_list;
  204. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  205. }
  206. if ($selectedItem.data('exp')) {
  207. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  208. }
  209. }
  210. });
  211. } else {
  212. menu_var_or_value.find('.text').text(' ');
  213. dom_object.find('.menu_var_or_value_dom').remove();
  214. var parameters_menu;
  215. if (variable_obj.function_called.name) {
  216. parameters_menu = '<div class="parameters_function_called"> '+variable_obj.function_called.name+' <span> ( </span>';
  217. } else {
  218. parameters_menu = '<div class="parameters_function_called"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';
  219. }
  220. for (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {
  221. parameters_menu += '<div class="render_style_param parameter_'+j+'"></div>';
  222. if ((j + 1) != variable_obj.function_called.parameters_list.length) {
  223. parameters_menu += ' , ';
  224. }
  225. }
  226. parameters_menu += '<span> ) </span></div>';
  227. parameters_menu = $(parameters_menu);
  228. dom_object.append(parameters_menu);
  229. console.log("\nvariable_obj:");
  230. console.log(variable_obj);
  231. for (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {
  232. renderMenu(command, new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true), parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);
  233. }
  234. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  235. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  236. if (command.type == Models.COMMAND_TYPES.attribution) {
  237. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  238. context_menu += '<div class="menu">';
  239. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  240. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  241. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  242. context_menu += '</div></div>';
  243. }
  244. context_menu += '</div></div>';
  245. context_menu = $(context_menu);
  246. context_menu.insertAfter( parameters_menu );
  247. context_menu.dropdown({
  248. onChange: function(value, text, $selectedItem) {
  249. console.log('S2');
  250. if ($selectedItem.data('clear')) {
  251. console.log('PP2');
  252. dom_object.text('');
  253. variable_obj.content = null;
  254. variable_obj.row = null;
  255. variable_obj.column = null;
  256. delete variable_obj.function_called;
  257. delete variable_obj.parameters_list;
  258. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  259. }
  260. if ($selectedItem.data('exp')) {
  261. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  262. }
  263. }
  264. });
  265. }
  266. } else if (variable_obj.content.type) {
  267. var variable_render = "";
  268. if (variable_obj.content.dimensions == 1) {
  269. variable_render = '<div class="variable_rendered"> <span class="var_name">'+variable_obj.content.name+'</span>';
  270. variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
  271. variable_render += '</div>';
  272. variable_render = $(variable_render);
  273. dom_object.append(variable_render);
  274. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  275. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  276. if (command.type == Models.COMMAND_TYPES.attribution) {
  277. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  278. context_menu += '<div class="menu">';
  279. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  280. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  281. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  282. context_menu += '</div></div>';
  283. }
  284. context_menu += '</div></div>';
  285. context_menu = $(context_menu);
  286. variable_render.append(context_menu);
  287. context_menu.dropdown({
  288. onChange: function(value, text, $selectedItem) {
  289. console.log('S3');
  290. if ($selectedItem.data('clear')) {
  291. console.log('PP3');
  292. dom_object.text('');
  293. variable_obj.content = null;
  294. variable_obj.row = null;
  295. variable_obj.column = null;
  296. delete variable_obj.function_called;
  297. delete variable_obj.parameters_list;
  298. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  299. }
  300. if ($selectedItem.data('exp')) {
  301. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  302. }
  303. }
  304. });
  305. if (!variable_obj.column) {
  306. variable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  307. }
  308. variableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);
  309. } else if (variable_obj.content.dimensions == 2) {
  310. variable_render = '<div class="variable_rendered"> <span class="var_name">'+variable_obj.content.name+'</span>';
  311. variable_render += ' <span>[ </span> <div class="row_container"></div> <span> ]</span>';
  312. variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ] </span>';
  313. variable_render += '</div>';
  314. variable_render = $(variable_render);
  315. dom_object.append(variable_render);
  316. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  317. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  318. if (command.type == Models.COMMAND_TYPES.attribution) {
  319. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  320. context_menu += '<div class="menu">';
  321. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  322. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  323. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  324. context_menu += '</div></div>';
  325. }
  326. context_menu += '</div></div>';
  327. context_menu = $(context_menu);
  328. variable_render.append(context_menu);
  329. context_menu.dropdown({
  330. onChange: function(value, text, $selectedItem) {
  331. console.log('S4');
  332. if ($selectedItem.data('clear')) {
  333. console.log('PP4');
  334. dom_object.text('');
  335. variable_obj.content = null;
  336. variable_obj.row = null;
  337. variable_obj.column = null;
  338. delete variable_obj.function_called;
  339. delete variable_obj.parameters_list;
  340. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  341. }
  342. if ($selectedItem.data('exp')) {
  343. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  344. }
  345. }
  346. });
  347. if (!variable_obj.column) {
  348. variable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  349. }
  350. if (!variable_obj.row) {
  351. variable_obj.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  352. }
  353. variableValueMenuCode(command, variable_obj.row, $(variable_render.find('.row_container')), function_obj, menu_var_or_value, expression_element);
  354. variableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);
  355. } else {
  356. variable_render = '<div class="variable_rendered"> <span class="var_name">'+variable_obj.content.name+'</span>';
  357. variable_render += '</div>';
  358. variable_render = $(variable_render);
  359. dom_object.append(variable_render);
  360. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  361. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  362. if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {
  363. console.log('dom_object6');
  364. console.log(dom_object);
  365. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  366. context_menu += '<div class="menu">';
  367. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  368. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  369. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  370. context_menu += '</div></div>';
  371. }
  372. context_menu += '</div></div>';
  373. context_menu = $(context_menu);
  374. variable_render.append(context_menu);
  375. context_menu.dropdown({
  376. onChange: function(value, text, $selectedItem) {
  377. console.log('S5');
  378. if ($selectedItem.data('clear')) {
  379. console.log('PP5');
  380. dom_object.text('');
  381. variable_obj.content = null;
  382. variable_obj.row = null;
  383. variable_obj.column = null;
  384. delete variable_obj.function_called;
  385. delete variable_obj.parameters_list;
  386. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  387. }
  388. if ($selectedItem.data('exp')) {
  389. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  390. }
  391. }
  392. });
  393. }
  394. } else {
  395. var variable_render = '<div class="variable_rendered"> <span class="var_name">'+variable_obj.content+'</span>';
  396. variable_render += '</div>';
  397. variable_render = $(variable_render);
  398. dom_object.append(variable_render);
  399. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  400. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  401. if (command.type == Models.COMMAND_TYPES.attribution) {
  402. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  403. context_menu += '<div class="menu">';
  404. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  405. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  406. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  407. context_menu += '</div></div>';
  408. }
  409. context_menu += '</div></div>';
  410. context_menu = $(context_menu);
  411. if (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
  412. context_menu.insertAfter( variable_render );
  413. }
  414. context_menu.dropdown({
  415. onChange: function(value, text, $selectedItem) {
  416. console.log('S6');
  417. if ($selectedItem.data('clear')) {
  418. console.log('PP6');
  419. dom_object.text('');
  420. variable_obj.content = null;
  421. variable_obj.row = null;
  422. variable_obj.column = null;
  423. delete variable_obj.function_called;
  424. delete variable_obj.parameters_list;
  425. dom_object.find('.value_rendered').remove();
  426. dom_object.find('.context_menu_clear').remove();
  427. dom_object.find('.width-dynamic-minus').remove();
  428. renderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);
  429. }
  430. if ($selectedItem.data('exp')) {
  431. AttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  432. }
  433. }
  434. });
  435. variable_render.on('click', function(e) {
  436. variable_render.remove();
  437. variable_render.empty();
  438. variable_render.remove();
  439. dom_object.empty();
  440. dom_object.append('<span class="menu_var_or_value_dom"> </span>');
  441. openInputToValue(command, variable_obj, dom_object, menu_var_or_value, function_obj, expression_element);
  442. });
  443. }
  444. }
  445. function addIVProgFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {
  446. var sub_menu = menu_var_or_value.find('.menu_only_functions');
  447. sub_menu.append('<div class="divider"></div><div class="header">'+LocalizedStrings.getUI('text_header_ivprog_functions')+'</div>');
  448. 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>');
  449. 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>');
  450. sub_menu.append('<div class="item"><i class="dropdown icon"></i>'+LocalizedStrings.getUI('text_menu_functions_arrangement')+'<div class="menu menu_arrangement_functions"></div></div>');
  451. 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>');
  452. // Insert Math functions:
  453. for (var i = 0; i < window.system_functions.length; i++) {
  454. var t = $('<div class="item"></div>');
  455. t.data('function_reference', window.system_functions[i]);
  456. t.data('option', VAR_OR_VALUE_TYPES.only_function);
  457. t.text(LocalizedStrings.getUI(window.system_functions[i].identifier));
  458. switch(window.system_functions[i].category) {
  459. case Models.SYSTEM_FUNCTIONS_CATEGORIES.math:
  460. sub_menu.find('.menu_math_functions').append(t);
  461. break;
  462. }
  463. }
  464. }
  465. function addFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {
  466. var sub_menu = menu_var_or_value.find('.menu_only_functions');
  467. sub_menu.text('');
  468. for (var i = 0; i < window.program_obj.functions.length; i++) {
  469. var temp = $('<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_function+'">' + window.program_obj.functions[i].name + ' </div>');
  470. temp.data('function_reference', window.program_obj.functions[i]);
  471. sub_menu.append(temp);
  472. }
  473. }
  474. function addVariablesToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {
  475. var sub_menu = menu_var_or_value.find('.menu_only_vars');
  476. sub_menu.text('');
  477. if (window.program_obj.globals) {
  478. if (ref_object.include_constant) {
  479. for (var i = 0; i < window.program_obj.globals.length; i++) {
  480. var temp = $('<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_variable+'">' + window.program_obj.globals[i].name + ' </div>');
  481. temp.data('variable_reference', window.program_obj.globals[i]);
  482. sub_menu.append(temp);
  483. }
  484. } else {
  485. for (var i = 0; i < window.program_obj.globals.length; i++) {
  486. if (!window.program_obj.globals[i].is_constant) {
  487. var temp = $('<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_variable+'">' + window.program_obj.globals[i].name + ' </div>');
  488. temp.data('variable_reference', window.program_obj.globals[i]);
  489. sub_menu.append(temp);
  490. }
  491. }
  492. }
  493. }
  494. if (function_obj.parameters_list) {
  495. for (var i = 0; i < function_obj.parameters_list.length; i++) {
  496. var temp = $('<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_variable+'">' + function_obj.parameters_list[i].name + ' </div>');
  497. temp.data('variable_reference', function_obj.parameters_list[i]);
  498. sub_menu.append(temp);
  499. }
  500. }
  501. if (function_obj.variables_list) {
  502. for (var i = 0; i < function_obj.variables_list.length; i++) {
  503. var temp = $('<div class="item" data-option="'+VAR_OR_VALUE_TYPES.only_variable+'">' + function_obj.variables_list[i].name + ' </div>');
  504. temp.data('variable_reference', function_obj.variables_list[i]);
  505. sub_menu.append(temp);
  506. }
  507. }
  508. }
  509. function addHandlers (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {
  510. if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
  511. menu_var_or_value.dropdown({
  512. onChange: function(value, text, $selectedItem) {
  513. console.log('S7');
  514. console.log(value);
  515. console.log(text);
  516. console.log($selectedItem);
  517. dom_object.find('.var_name').remove();
  518. switch ($selectedItem.data('option')) {
  519. case VAR_OR_VALUE_TYPES.only_function:
  520. openInputToFunction(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('function_reference'), expression_element);
  521. break;
  522. case VAR_OR_VALUE_TYPES.only_value:
  523. openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);
  524. break;
  525. case VAR_OR_VALUE_TYPES.only_variable:
  526. openInputToVariable(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('variable_reference'), expression_element);
  527. break;
  528. }
  529. if ($selectedItem.data('exp')) {
  530. AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  531. }
  532. if (command.type == Models.COMMAND_TYPES.repeatNtimes) {
  533. RepeatNTimesManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  534. }
  535. }
  536. });
  537. }
  538. dom_object.find('.width-dynamic').on('input', function() {
  539. var inputWidth = $(this).textWidth()+10;
  540. $(this).focus();
  541. var tmpStr = $(this).val();
  542. $(this).val('');
  543. $(this).val(tmpStr);
  544. $(this).css({
  545. width: inputWidth
  546. })
  547. }).trigger('input');
  548. if (command.type == Models.COMMAND_TYPES.comment) {
  549. dom_object.parent().on('click', function(e) {
  550. dom_object.find('.value_rendered').remove();
  551. dom_object.find('.value_rendered').empty();
  552. dom_object.find('.value_rendered').remove();
  553. dom_object.empty();
  554. dom_object.append('<span class="menu_var_or_value_dom"> </span>');
  555. openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)
  556. });
  557. }
  558. }
  559. function openInputToFunction (command, ref_object, dom_object, menu_var_or_value, function_obj, function_selected, expression_element) {
  560. ref_object.function_called = function_selected;
  561. ref_object.parameters_list = [];
  562. if (function_selected.parameters_list != null && function_selected.parameters_list.length > 0) {
  563. menu_var_or_value.find('.text').text(' ');
  564. dom_object.find('.menu_var_or_value_dom').remove();
  565. var parameters_menu;
  566. if (function_selected.name) {
  567. parameters_menu = '<div class="parameters_function_called"> '+function_selected.name+' <span> ( </span>';
  568. } else {
  569. parameters_menu = '<div class="parameters_function_called"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';
  570. }
  571. for (var j = 0; j < function_selected.parameters_list.length; j++) {
  572. parameters_menu += '<div class="render_style_param parameter_'+j+'"></div>';
  573. if ((j + 1) != function_selected.parameters_list.length) {
  574. parameters_menu += ' , ';
  575. }
  576. }
  577. parameters_menu += '<span> ) </span></div>';
  578. parameters_menu = $(parameters_menu);
  579. dom_object.append(parameters_menu);
  580. for (var j = 0; j < function_selected.parameters_list.length; j++) {
  581. var temp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  582. ref_object.parameters_list.push(temp);
  583. renderMenu(command, temp, parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);
  584. }
  585. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  586. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  587. if (command.type == Models.COMMAND_TYPES.attribution) {
  588. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  589. context_menu += '<div class="menu">';
  590. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  591. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  592. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  593. context_menu += '</div></div>';
  594. }
  595. context_menu += '</div></div>';
  596. context_menu = $(context_menu);
  597. context_menu.insertAfter( dom_object.find('.parameters_function_called') );
  598. context_menu.dropdown({
  599. onChange: function(value, text, $selectedItem) {
  600. console.log('S8');
  601. console.log($selectedItem);
  602. if ($selectedItem.data('clear')) {
  603. console.log('PP7');
  604. dom_object.text('');
  605. ref_object.content = null;
  606. ref_object.row = null;
  607. ref_object.column = null;
  608. delete ref_object.function_called;
  609. delete ref_object.parameters_list;
  610. renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
  611. }
  612. if ($selectedItem.data('exp')) {
  613. AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  614. }
  615. }
  616. });
  617. } else {
  618. menu_var_or_value.find('.text').text(' ');
  619. dom_object.find('.menu_var_or_value_dom').remove();
  620. var parameters_menu;
  621. if (function_selected.name) {
  622. parameters_menu = '<div class="parameters_function_called"> '+function_selected.name+' <span> ( </span>';
  623. } else {
  624. parameters_menu = '<div class="parameters_function_called"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';
  625. }
  626. parameters_menu += '<span> ) </span></div>';
  627. parameters_menu = $(parameters_menu);
  628. dom_object.append(parameters_menu);
  629. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  630. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  631. if (command.type == Models.COMMAND_TYPES.attribution) {
  632. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  633. context_menu += '<div class="menu">';
  634. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  635. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  636. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  637. context_menu += '</div></div>';
  638. }
  639. context_menu += '</div></div>';
  640. context_menu = $(context_menu);
  641. context_menu.insertAfter( dom_object.find('.parameters_function_called') );
  642. context_menu.dropdown({
  643. onChange: function(value, text, $selectedItem) {
  644. console.log('S9');
  645. if ($selectedItem.data('clear')) {
  646. console.log('PP8');
  647. dom_object.text('');
  648. ref_object.content = null;
  649. ref_object.row = null;
  650. ref_object.column = null;
  651. delete ref_object.function_called;
  652. delete ref_object.parameters_list;
  653. renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
  654. }
  655. if ($selectedItem.data('exp')) {
  656. AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  657. }
  658. }
  659. });
  660. }
  661. if (command.type == Models.COMMAND_TYPES.attribution) {
  662. AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);
  663. }
  664. }
  665. function openInputToVariable (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected, expression_element) {
  666. ref_object.content = variable_selected;
  667. menu_var_or_value.find('.text').text(' ');
  668. dom_object.find('.menu_var_or_value_dom').remove();
  669. var variable_render = '<div class="variable_rendered"> <span class="var_name">'+variable_selected.name+'</span>';
  670. if (variable_selected.dimensions == 1) {
  671. variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
  672. }
  673. if (variable_selected.dimensions == 2) {
  674. variable_render += ' <span>[ </span> <div class="row_container"></div> <span> ]</span> ';
  675. variable_render += ' <span>[ </span> <div class="column_container"></div> <span> ]</span>';
  676. }
  677. variable_render += '</div>';
  678. variable_render = $(variable_render);
  679. dom_object.append(variable_render);
  680. if (variable_selected.dimensions == 1) {
  681. ref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  682. renderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);
  683. }
  684. if (variable_selected.dimensions == 2) {
  685. ref_object.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  686. renderMenu(command, ref_object.row, variable_render.find('.row_container'), function_obj, 2, expression_element);
  687. ref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);
  688. renderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);
  689. }
  690. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  691. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  692. if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {
  693. console.log("dom_object 10: ");
  694. console.log(dom_object);
  695. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  696. context_menu += '<div class="menu">';
  697. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  698. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  699. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  700. context_menu += '</div></div>';
  701. }
  702. context_menu += '</div></div>';
  703. context_menu = $(context_menu);
  704. context_menu.insertAfter( dom_object.find('.variable_rendered') );
  705. context_menu.dropdown({
  706. onChange: function(value, text, $selectedItem) {
  707. console.log('S10');
  708. if ($selectedItem.data('clear')) {
  709. console.log('PP9');
  710. dom_object.text('');
  711. ref_object.content = null;
  712. ref_object.row = null;
  713. ref_object.column = null;
  714. delete ref_object.function_called;
  715. delete ref_object.parameters_list;
  716. renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
  717. }
  718. if ($selectedItem.data('exp')) {
  719. AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  720. }
  721. if (command.type == Models.COMMAND_TYPES.repeatNtimes) {
  722. RepeatNTimesManagement.manageClearExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  723. }
  724. }
  725. });
  726. if (command.type == Models.COMMAND_TYPES.attribution) {
  727. AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);
  728. }
  729. }
  730. function openInputToValue (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {
  731. if (ref_object.content == null) {
  732. ref_object.content = "";
  733. }
  734. menu_var_or_value.find('.text').text(' ');
  735. var field = $('<input type="text" size="2" class="width-dynamic-minus" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />');
  736. field.insertBefore(dom_object.find('.menu_var_or_value_dom'));
  737. var rendered = $('<div class="value_rendered"></div>');
  738. rendered.insertBefore(field);
  739. field.focus();
  740. field.val(ref_object.content);
  741. var context_menu = '<div class="ui dropdown context_menu_clear"><div class="text"></div><i class="dropdown icon"></i><div class="menu">';
  742. context_menu += '<div class="item" data-clear="true">'+LocalizedStrings.getUI('btn_clear')+'</div>';
  743. if (command.type == Models.COMMAND_TYPES.attribution) {
  744. context_menu += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_change');
  745. context_menu += '<div class="menu">';
  746. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'">EXP OP EXP</div>';
  747. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.op_exp+'">OP EXP</div>';
  748. context_menu += '<div class="item" data-exp="'+Models.EXPRESSION_ELEMENTS.par_exp_par+'">( EXP )</div>';
  749. context_menu += '</div></div>';
  750. }
  751. context_menu += '</div></div>';
  752. context_menu = $(context_menu);
  753. dom_object.find('.menu_var_or_value_dom').remove();
  754. if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {
  755. context_menu.insertAfter( field );
  756. }
  757. context_menu.dropdown({
  758. onChange: function(value, text, $selectedItem) {
  759. console.log('S11');
  760. if ($selectedItem.data('clear')) {
  761. console.log('PP10');
  762. dom_object.text('');
  763. dom_object.find('.value_rendered').remove();
  764. dom_object.find('.context_menu_clear').remove();
  765. dom_object.find('.width-dynamic-minus').remove();
  766. ref_object.content = null;
  767. ref_object.row = null;
  768. ref_object.column = null;
  769. delete ref_object.function_called;
  770. delete ref_object.parameters_list;
  771. renderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);
  772. }
  773. if ($selectedItem.data('exp')) {
  774. AttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);
  775. }
  776. }
  777. });
  778. dom_object.find('.width-dynamic-minus').focusout(function() {
  779. if ($(this).val().trim()) {
  780. ref_object.content = $(this).val().trim();
  781. }
  782. rendered.text(ref_object.content);
  783. $(this).remove();
  784. });
  785. dom_object.find('.width-dynamic-minus').on('keydown', function(e) {
  786. var code = e.keyCode || e.which;
  787. if(code == 13) {
  788. if ($(this).val().trim()) {
  789. ref_object.content = $(this).val().trim();
  790. }
  791. rendered.text(ref_object.content);
  792. $(this).remove();
  793. }
  794. if(code == 27) {
  795. rendered.text(ref_object.content);
  796. $(this).remove();
  797. }
  798. });
  799. if (command.type == Models.COMMAND_TYPES.comment) {
  800. rendered.parent().on('click', function(e) {
  801. console.log("TTT14");
  802. rendered.remove();
  803. rendered.empty();
  804. rendered.remove();
  805. dom_object.empty();
  806. dom_object.append('<span class="menu_var_or_value_dom"> </span>');
  807. openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)
  808. });
  809. }
  810. rendered.on('click', function(e) {
  811. console.log("TTT2");
  812. rendered.remove();
  813. rendered.empty();
  814. rendered.remove();
  815. dom_object.empty();
  816. dom_object.append('<span class="menu_var_or_value_dom"> </span>');
  817. openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)
  818. });
  819. if (command.type == Models.COMMAND_TYPES.attribution) {
  820. AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);
  821. }
  822. }
  823. $.fn.textWidth = function(text, font) {
  824. if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);
  825. $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));
  826. return $.fn.textWidth.fakeEl.width();
  827. };