import $ from 'jquery'; import { Types } from '../types'; import * as Models from '../ivprog_elements'; import { LocalizedStrings } from '../../services/localizedStringsService'; import * as GlobalsManagement from '../globals'; import * as VariablesManagement from '../variables'; import * as VariableValueMenu from './variable_value_menu'; import * as VariableValueMenuManagement from './variable_value_menu'; import * as CommandsManagement from '../commands'; import '../../Sortable.js'; export function createFloatingCommand () { return $('
'+LocalizedStrings.getUI('text_command_write')+' var
'); } export function renderCommand (command, function_obj) { var ret = ''; ret += '
'+LocalizedStrings.getUI('text_command_write')+' (
)
'; var el = $(ret); el.data('command', command); for (var i = 0; i < command.content.length; i ++) { var new_div_item = $( '
' ); var div_parent_with_handler = $( '
' ); div_parent_with_handler.append($('')); div_parent_with_handler.append(new_div_item); div_parent_with_handler.append($('')); el.find('.all_elements_write').append(div_parent_with_handler); VariableValueMenu.renderMenu(command, command.content[i], new_div_item, function_obj); addHandlerIconAdd(el.find('.all_elements_write'), command, function_obj); addHandlersManager(command, function_obj, el, div_parent_with_handler, command.content[i]); } if (command.content.length == 0) { addHandlerIconAdd(el.find('.all_elements_write'), command, function_obj); } addHandlers(command, function_obj, el); return el; } function addHandlersManager (command, function_obj, writer_dom, item_div, content_element) { item_div.find('.times').on('click', function() { for (var i = 0; i < command.content.length; i++) { if (command.content[i] == content_element) { delete command.content[i]; command.content.splice(i, 1); item_div.children().off(); item_div.off(); item_div.fadeOut(); if (command.content.length > 0) { item_div.next('.icon_add_item_to_writer').fadeOut(); } break; } } }); } function addHandlers (command, function_obj, writer_dom) { writer_dom.find('.button_remove_command').on('click', function() { if (CommandsManagement.removeCommand(command, function_obj, writer_dom)) { writer_dom.fadeOut(400, function() { writer_dom.remove(); }); } }); Sortable.create(writer_dom.find(".all_elements_write")[0], { handle: '.ellipsis', animation: 100, ghostClass: 'ghost', group: 'writer_' + Math.floor(Math.random() * 10000000), draggable: '.div_parent_handler', onEnd: function (evt) { command.content.splice(evt.newIndex, 0, command.content.splice(evt.oldIndex, 1)[0]); writer_dom.empty(); writer_dom.replaceWith(renderCommand(command, function_obj)); } }); } function addHandlerIconAdd (dom_object, command, function_obj, insert_after = false, after_which = null) { var icon_add_item = $( ' ' ); if (!insert_after) { dom_object.append(icon_add_item); } else { icon_add_item.insertAfter(after_which); } icon_add_item.on('click', function(e) { var div_parent_with_handler = $( '' ); var new_div_item = $( '
' ); div_parent_with_handler.append($('')); div_parent_with_handler.append(new_div_item); div_parent_with_handler.append($('')); div_parent_with_handler.insertAfter(icon_add_item); var new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true); VariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj); addHandlerIconAdd(dom_object, command, function_obj, true, div_parent_with_handler); addHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu); var pos = 1; dom_object.find('.icon_add_item_to_writer').each(function() { if ($(this).get(0) === icon_add_item.get(0)) { command.content.splice(pos, 0, new_related_menu); } else { pos ++; } }); if (command.content.length == 1) { icon_add_item.remove(); } div_parent_with_handler.fadeIn(); }); } export function addContent (command, ref_object, dom_object, menu_var_or_value, function_obj, ref_object_content) { if (dom_object.hasClass('var_value_menu_div')) { var icon_add_item = $( ' ' ); icon_add_item.insertAfter(dom_object); icon_add_item.on('click', function(e) { var div_parent_with_handler = $( '
' ); div_parent_with_handler.append($('')); div_parent_with_handler.append(new_div_item); div_parent_with_handler.append($('')); div_parent_with_handler.insertAfter(icon_add_item); var new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true); VariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj); addHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu); command.content.push(new_related_menu); if (command.content.length == 1) { icon_add_item.remove(); } }); } }