function argument(id, text_rep, type, connections) { this.id = id this.text_rep = text_rep; this.type = type; this.error = false; this.tooltip = ''; this.connections = connections; } function arguments_form_change(lastActualValueIdx, arg_id, this_form, lemma_id) { form_data = this_form.serializeArray(); this_dialog = this_form.closest("$[id$='-dialog']"); if(!arg_id) { form_data = prepareArgFormData(this_form, form_data, lastActualValueIdx); form_data.push({name: 'arg_id', value: ''}); } else form_data.push({name: 'arg_id', value: arg_id}); data = JSON.stringify(form_data); positionArguments = ''; if(arg_id) { this_dialog.data('positionArguments', ''); } else { positionArguments = this_dialog.data('positionArguments'); } phraseologic = false; selectedArgId = null; selectedFrame = this_dialog.data('selectedFrame'); if(this_dialog.data('selectedArgId')) { selectedArgId = this_dialog.data('selectedArgId'); this_dialog.data('selectedArgId', ''); } if(!selectedFrame) { selectedFrame = ''; } else { phraseologic = selectedFrame.is_phraseologic; } var lexArgChoosing = false; var positionOrArgumentsArgChoosing = false; var creatingEditingNewRealization = false; if(this_dialog.dialog( "option" , "title").startsWith("Wybieranie")) { lexArgChoosing = true; } else if(this_dialog.dialog( "option" , "title").startsWith("Tworzenie typu frazy") || this_dialog.dialog( "option" , "title").startsWith("Zmiana typu frazy")) { positionOrArgumentsArgChoosing = true; } else if(this_dialog.dialog( "option" , "title").startsWith("Tworzenie rozwinięcia typu frazy") || this_dialog.dialog( "option" , "title").startsWith("Zmiana rozwinięcia typu frazy")) { creatingEditingNewRealization = true; } else if(this_dialog.dialog( "option" , "title").startsWith("Dodawanie")) { phraseologic = false; } this_dialog.empty(); this_dialog.load(ajax_argument_form, {'form_data': data, 'lemma_id': lemma_id, 'position_arguments': JSON.stringify(positionArguments), 'selected_arg': selectedArgId, 'phraseologic': phraseologic, 'lex_arg_choosing': lexArgChoosing, 'position_or_arguments_arg_choosing': positionOrArgumentsArgChoosing, 'creating_editing_new_realization': creatingEditingNewRealization}); } function prepareArgFormData(form, form_data, lastActualValueIdx) { var freq_coordinated = ''; var opinion = ''; var type = ''; var values = []; form_data = $.map(form_data, function(elem) { //alert(elem.name+' '+elem.value); if (!elem.name.startsWith('arg_type') && !elem.name.startsWith('value') && elem.name != 'freq_coordinated' && elem.name != 'opinion') return elem; else { if (elem.name == 'freq_coordinated') freq_coordinated = elem.value; else if (elem.name.startsWith('arg_type')) type = elem.value; else if (elem.name == 'opinion') opinion = elem.value; } }); var subforms = form.find('#subform'); subforms.each(function() { var subform = $(this); var subform_values = []; var subform_data = subform.find("input, textarea, select").serializeArray(); $.map(subform_data, function(elem) { if (!elem.name.startsWith('value')) return elem; else { if (elem.name.startsWith('value')) subform_values.push(elem.value); } }); values.push(subform_values); }); form_data.push({name: 'arg_type', value: type}); if(lastActualValueIdx >= 0 && values && lastActualValueIdx < values.length) values = values.splice(0, lastActualValueIdx); form_data.push({name: 'subform_values', value: values}); form_data.push({name: 'freq_coordinated', value: freq_coordinated}); form_data.push({name: 'opinion', value: opinion}); return form_data } function argument_form_submit() { ShowProgressAnimation(); var this_form = $(this); var this_dialog = this_form.closest("$[id$='-dialog']"); lemma_id = window.lemma_id; if (typeof(lemma_id) === 'undefined') lemma_id = null; form_data = this_form.serializeArray(); form_data = prepareArgFormData(this_form, form_data, -1); if(this_dialog.dialog( "option" , "title").startsWith("Wybieranie")) form_data.push({name: 'lex_arg_choosing', value: true}); else form_data.push({name: 'lex_arg_choosing', value: false}); $.ajaxJSON({ method: 'post', url: ajax_argument_form_submit, data: { form_data: form_data }, callback: function(result) { var arg = new argument(result["id"], result["text_rep"], result["type"], []); // dodawanie argumentow if(this_dialog.dialog( "option" , "title").startsWith("Dodawanie")) { selected_pos = getElementInstance(selected_id, schemas); selected_pos['element'].arguments.push(arg); window.selected_id = -1; scrollPosition = $('#new-frame-tables').scrollTop(); draw_filtered_frames(window.schemas, 'new-frame-tables', 'new-frame-table', 'frame_filter', window.nkjp_examples, 'ActiveFrameTable', window.lemma_entry); $('#new-frame-tables').scrollTop(scrollPosition); frames_modif = frames_modif.slice(0, frames_modif_idx+1); var lemma_version = new Lemma_Version(schemas, window.nkjp_examples, window.nkjp_lemma_examples); frames_modif.push(lemma_version); frames_modif_idx++; window.change = true; } // edycja argumentow else if (this_dialog.dialog( "option" , "title").startsWith("Edycja")) { edited_arg = getElementInstance(edited_id, schemas); edited_arg['element'].id = arg.id; edited_arg['element'].text_rep = arg.text_rep; edited_arg['element'].type = arg.type; // przepisywanie przykladow ze starej instancji argumentu na nowa var ids = parseId(edited_id); var frame_tabId = 'frame_'+ids['frame_id']+'_'; var arg_tabId = 'arg_'+ids['arg_id']+'_'; var new_arg_tabId = 'arg_'+arg.id+'_'; // podmienianie identyfikatorow argumentow na rzecz przypisywania do nich przykladow if(window.selectedFrameIdNkjp == frame_tabId && window.selectedArgumentsIdNkjp.indexOf(arg_tabId) != -1) window.selectedArgumentsIdNkjp = window.selectedArgumentsIdNkjp.replace(arg_tabId, new_arg_tabId) for(var i=0; i<window.nkjp_examples.length; i++) { if(window.nkjp_examples[i].frame_id == frame_tabId) { for(var j=0; j<window.nkjp_examples[i].arguments_ids.length; j++) { if(window.nkjp_examples[i].arguments_ids[j] == edited_id) { window.nkjp_examples[i].arguments_ids[j] = window.nkjp_examples[i].arguments_ids[j].replace(arg_tabId, new_arg_tabId); } } } } scrollPosition = $('#new-frame-tables').scrollTop(); draw_filtered_frames(window.schemas, 'new-frame-tables', 'new-frame-table', 'frame_filter', window.nkjp_examples, 'ActiveFrameTable', window.lemma_entry); $('#new-frame-tables').scrollTop(scrollPosition); frames_modif = frames_modif.slice(0, frames_modif_idx+1); var lemma_version = new Lemma_Version(schemas, window.nkjp_examples, window.nkjp_lemma_examples); frames_modif.push(lemma_version); frames_modif_idx++; window.change = true; } // tworzenie nowych argumentow else if (this_dialog.dialog( "option" , "title").startsWith("Tworzenie typu frazy")) { var dialogParent = this_dialog.data('origParentElement'); var argumentsElement = dialogParent.children("$[id$='-arguments']").first(); argumentsElement.append("<p id='argument'>"+result['text_rep']+"<input id='id_value' type='hidden' name='value' value='"+result["id"]+"'/>" + "<button type='button' id='edit-argument'>Edytuj</button><button type='button' id='remove-argument'>Usuń</button></p>"); } // zmiana argumentu (edycja argumentow przy leksykalizacji np. jesli leksykalizowany jest compar) else if (this_dialog.dialog( "option" , "title").startsWith("Zmiana typu frazy")) { var dialogParent = this_dialog.data('origParentElement'); var argumentsElement = dialogParent.children("$[id$='-arguments']").first(); var editedArgDiv = this_dialog.data('editedArgDiv'); editedArgDiv.remove(); argumentsElement.append("<p id='argument'>"+result['text_rep']+"<input id='id_value' type='hidden' name='value' value='"+result["id"]+"'/>" + "<button type='button' id='edit-argument'>Edytuj</button><button type='button' id='remove-argument'>Usuń</button></p>"); } // tworzenie nowych rozwiniec typu frazy (na potrzeby podtypow xp w lexach) else if (this_dialog.dialog( "option" , "title").startsWith("Tworzenie rozwinięcia typu frazy")) { var dialogParent = this_dialog.data('origParentElement'); var argumentsElement = dialogParent.children("$[id$='-arguments']").first(); argumentsElement.append("<p id='argument'>"+result['text_rep']+"<input id='id_value' type='hidden' name='value' value='"+result["id"]+"'/>" + "<button type='button' id='edit-realization'>Edytuj</button><button type='button' id='remove-argument'>Usuń</button></p>"); } // zmiana rozwiniec typu frazy (edycja utworzonych typow fraz w lexach dla podtypow xp np.) else if (this_dialog.dialog( "option" , "title").startsWith("Zmiana rozwinięcia typu frazy")) { var dialogParent = this_dialog.data('origParentElement'); var argumentsElement = dialogParent.children("$[id$='-arguments']").first(); var editedArgDiv = this_dialog.data('editedArgDiv'); editedArgDiv.remove(); argumentsElement.append("<p id='argument'>"+result['text_rep']+"<input id='id_value' type='hidden' name='value' value='"+result["id"]+"'/>" + "<button type='button' id='edit-realization'>Edytuj</button><button type='button' id='remove-argument'>Usuń</button></p>"); } // wypelnianie atrybutu argument else if (this_dialog.dialog( "option" , "title").startsWith("Wybieranie")) { var dialogParent = this_dialog.data('origParentElement'); var argumentElement = dialogParent.children("$[id$='-argument']").first(); argumentElement.empty(); argumentElement.append(result['text_rep']+"<input id='id_value' type='hidden' name='value' value='"+result["id"]+"'/>"); if (lemma_id) { // edytujemy haslo arguments_form_change(1, null, dialogParent.closest(".argument-add-form"), lemma_id); } // tworzymy typy fraz else { //arguments_form_change(1, null, dialogParent.closest(".argument-add-form"), ''); realization_arguments_form_change(1, '', false, dialogParent.closest(".argument-add-form")); } } this_dialog.dialog('close'); HideProgressAnimation(); }, error_callback: function(xhr, status, error) { HideProgressAnimation(); error_alert(status + ': ' + error); }, bad_data_callback: function(result) { if (result) { HideProgressAnimation(); error_alert(result); return false; } else { HideProgressAnimation(); return true; } }, }); return false; } function openSelectArgumentDialog(event, lemma_id) { var form_data = ''; var formDivParent = $(event.target).parent(); var argId = formDivParent.find('#id_value').first().val(); if(argId) { form_data = [{name: 'arg_id', value: argId}]; } var data = JSON.stringify(form_data); formDivParent.append("<div id="+formDivParent.attr('id')+"-argument-form-dialog></div>"); var form_div = formDivParent.children("$[id$='-argument-form-dialog']").first(); form_div.data('positionArguments', '') .data('origParentElement', formDivParent) .load(ajax_argument_form, {'form_data': data, 'lemma_id': lemma_id, 'position_arguments': '', 'selected_arg': '', 'phraseologic': false, 'lex_arg_choosing': true, 'creating_editing_new_realization': false}) .dialog({ autoOpen: true, modal: 'true', title: 'Wybieranie typu frazy:', close: function(event, ui) { $(this).dialog('destroy').remove(); }}); } function openAddArgumentDialog(event, lemma_id, dialogTitle) { var formDivParent = $(event.target).parent(); formDivParent.append("<div id="+formDivParent.attr('id')+"-argument-form-dialog></div>"); var form_div = formDivParent.children("$[id$='-argument-form-dialog']").first(); var creatingEditingNewRealization = false; if(dialogTitle.startsWith("Tworzenie rozwinięcia typu frazy")) { creatingEditingNewRealization = true; } form_div.data('positionArguments', '') .data('origParentElement', formDivParent) .load(ajax_argument_form, {'form_data': '', 'lemma_id': lemma_id, 'position_arguments': '', 'selected_arg': '', 'phraseologic': false, 'position_or_arguments_arg_choosing': true, 'creating_editing_new_realization': creatingEditingNewRealization}) .dialog({ autoOpen: true, modal: 'true', title: dialogTitle, close: function(event, ui) { $(this).dialog('destroy').remove(); }}); } function edit_argument() { var clickedButton = $(this); if(typeof(window.lemma_id) == "undefined") openEditArgumentDialog(null, clickedButton, "Zmiana typu frazy:"); else openEditArgumentDialog(window.lemma_id, clickedButton, "Zmiana typu frazy:"); } function edit_realization() { var clickedButton = $(this); if(typeof(window.lemma_id) == "undefined") openEditArgumentDialog(null, clickedButton, "Zmiana rozwinięcia typu frazy:"); else openEditArgumentDialog(window.lemma_id, clickedButton, "Zmiana rozwinięcia typu frazy:"); } function openEditArgumentDialog(lemma_id, editButton, dialogTitle) { var editedArgDiv = editButton.parent(); var argId = editedArgDiv.find('#id_value').first().val(); var formData = [{name: 'arg_id', value: argId}]; var formDivParent = editButton.closest('#subform'); var data = JSON.stringify(formData); formDivParent.append("<div id="+formDivParent.attr('id')+"-argument-form-dialog></div>"); var form_div = formDivParent.children("$[id$='-argument-form-dialog']").first(); var creatingEditingNewRealization = false; if(dialogTitle.startsWith("Zmiana rozwinięcia typu frazy")) { creatingEditingNewRealization = true; } form_div.data('positionArguments', '') .data('origParentElement', formDivParent) .data('editedArgDiv', editedArgDiv) .load(ajax_argument_form, {'form_data': data, 'lemma_id': lemma_id, 'position_arguments': '', 'selected_arg': '', 'phraseologic': false, 'position_or_arguments_arg_choosing': true, 'creating_editing_new_realization': creatingEditingNewRealization}) .dialog({ autoOpen: true, modal: 'true', title: dialogTitle, close: function(event, ui) { $(this).dialog('destroy').remove(); }}); } function openAddPositionDialog(event) { var formDivParent = $(event.target).parent(); formDivParent.append("<div id="+formDivParent.attr('id')+"-position-form-dialog></div>"); var form_div = formDivParent.children("$[id$='-position-form-dialog']").first(); form_div.load(ajax_create_position_form) .data('origParentElement', formDivParent) .dialog({ autoOpen: true, modal: 'true', title: 'Tworzenie pozycji:', close: function(event, ui) { $(this).dialog('destroy').remove(); }}); } function remove_position() { $(this).parent().remove(); } function edit_position() { var clickedButton = $(this); openEditPositionDialog(clickedButton); } function openEditPositionDialog(editButton) { var editedPosDiv = editButton.parent(); var formDivParent = editButton.closest('#subform'); var posId = editButton.parent().find('#id_value').first().val() formDivParent.append("<div id="+formDivParent.attr('id')+"-position-form-dialog></div>"); var form_div = formDivParent.children("$[id$='-position-form-dialog']").first(); form_div.load(ajax_create_position_form, {'position_id': posId}) .data('editedPosDiv', editedPosDiv) .data('origParentElement', formDivParent) .dialog({ autoOpen: true, modal: 'true', title: 'Zmiana pozycji:', close: function(event, ui) { $(this).dialog('destroy').remove(); }}); } function remove_argument() { $(this).parent().remove(); } function create_position_form_submit() { ShowProgressAnimation() var this_form = $(this); var this_dialog = this_form.closest("$[id$='-dialog']"); var args = []; var category = ''; form_data = this_form.serializeArray(); form_data = $.map(form_data, function(elem) { if (elem.name != 'category' && elem.name != 'value') return elem; else { if (elem.name == 'category') category = elem.value; else if (elem.name == 'value') args.push(elem.value); } }); form_data.push({name: 'category', value: category}); form_data.push({name: 'arguments', value: args}); $.ajaxJSON({ method: 'post', url: ajax_create_position_form_submit, data: { form_data: form_data }, callback: function(result) { var dialogParent = this_dialog.data('origParentElement'); var positionsElement = dialogParent.children("$[id$='-positions']").first(); positionsElement.append("<p id='position'>"+result['text_rep']+ "<input id='id_value' type='hidden' name='value' value='"+result['id']+"'/>"+ "<button type='button' id='edit-position'>Edytuj</button><button type='button' id='remove-position'>Usuń</button></p>"); // jesli edytowalismy pozycje, to usun stara wersje if (this_dialog.dialog( "option" , "title").startsWith("Zmiana")) { var editedPosDiv = this_dialog.data('editedPosDiv'); editedPosDiv.remove(); } this_dialog.dialog('close'); HideProgressAnimation(); }, error_callback: function(xhr, status, error) { HideProgressAnimation(); error_alert(status + ': ' + error); }, bad_data_callback: function(result) { if (result == 'no arguments') { HideProgressAnimation(); error_alert('Pozycja musi zawierać przynajmniej jeden typ frazy.'); return false; } else { HideProgressAnimation(); return true; } }, }); return false; } function show_argument_realizations() { var this_form = $(this).closest('form'); var this_dialog = this_form.closest("$[id$='-dialog']"); form_data = this_form.serializeArray(); form_data = prepareArgFormData(this_form, form_data, -1); form_data.push({name: 'manage', value: false}); data = JSON.stringify(form_data); this_form.parent().children('#realizations').first().load(ajax_show_realizations, {'form_data' : data}); this_dialog.dialog( "option", "height", 400 ); return false; }