contextualized_menu.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import * as Models from '../ivprog_elements';
  2. import { LocalizedStrings } from '../../services/localizedStringsService';
  3. import * as CommandsManagement from '../commands';
  4. import * as VariableValueMenuManagement from './variable_value_menu';
  5. import * as SwitchManagement from './switch';
  6. export function renderMenu (command, dom_where_render, function_obj, dom_command) {
  7. var menu_div = '<button class="ui icon button minimize_block_button tiny"><i class="icon window minimize"></i></button> <div class="ui dropdown menu_commands pause" ><i class="icon pause"></i> <div class="menu"> ';
  8. if ((command.type == Models.COMMAND_TYPES.repeatNtimes)
  9. || (command.type == Models.COMMAND_TYPES.whiletrue)
  10. || (command.type == Models.COMMAND_TYPES.dowhiletrue)) {
  11. menu_div += '<a class="item" data-command="'+Models.COMMAND_TYPES.break+'"><i class="pause icon"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';
  12. } else {
  13. menu_div += '<a class="item" data-command="'+Models.COMMAND_TYPES.break+'"><i class="pause icon"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';
  14. menu_div += '<a class="item" data-command="'+Models.COMMAND_TYPES.switchcase+'"><i class="pause icon"></i> '+LocalizedStrings.getUI('btn_case')+' </a>';
  15. }
  16. menu_div += '</div></div>';
  17. menu_div = $(menu_div);
  18. dom_where_render.append(menu_div);
  19. addHandlers(command, dom_where_render, function_obj, dom_command);
  20. if (command.collapsed) {
  21. dom_command.children('.ui.block_commands').toggle();
  22. }
  23. }
  24. function addHandlers (command, dom_where_render, function_obj, dom_command) {
  25. dom_where_render.find('.minimize_block_button').on('click', function(evt){
  26. dom_command.children('.ui.block_commands').toggle();
  27. command.collapsed = !command.collapsed;
  28. });
  29. dom_where_render.find('.menu_commands').dropdown({
  30. on: 'hover'
  31. });
  32. dom_where_render.find('.menu_commands a').on('click', function(evt){
  33. if ((command.type == Models.COMMAND_TYPES.repeatNtimes)
  34. || (command.type == Models.COMMAND_TYPES.whiletrue)
  35. || (command.type == Models.COMMAND_TYPES.dowhiletrue)) {
  36. if (command.commands_block == null || command.commands_block.length == 0) {
  37. command.commands_block = [];
  38. var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));
  39. command.commands_block.push(new_cmd);
  40. CommandsManagement.renderCommand(new_cmd, dom_command.find('.block_commands'), 3, function_obj);
  41. } else {
  42. CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);
  43. }
  44. } else {
  45. switch ($(this).data('command')) {
  46. case Models.COMMAND_TYPES.break:
  47. CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);
  48. break;
  49. case Models.COMMAND_TYPES.switchcase:
  50. addCaseToSwitch(command, dom_where_render, function_obj, dom_command);
  51. break;
  52. }
  53. }
  54. });
  55. }
  56. function addCaseToSwitch (command, dom_where_render, function_obj, dom_command) {
  57. if ((command.cases == null)) {
  58. command.cases = [];
  59. }
  60. var sc = new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));
  61. command.cases.push(sc);
  62. SwitchManagement.renderCase(sc, command, function_obj, dom_command.find('.all_cases_div'));
  63. }