/* global $dj, edit, common */ var deleted; var new_row_counter = 1; // potrzebne tylko dla niepowtarzalności idów function get_new_row_html() { "use strict"; var new_row_html = $.ajax({ type: 'get', url: $dj.ajax_new_ending_row, data: {pattern_id: edit.get_id()}, async: false // w zasadzie się tak nie powinno robić }).responseText; var row_html = new_row_html.replace(/NUM/g, new_row_counter); new_row_counter++; return row_html; } $.extend(edit, { form_id: 'pattern-edit-form', form_cancel_class: 'pattern-edit-cancel', form_submit_class: 'pattern-edit-submit', init_form_widgets: function() { "use strict"; $(document).on('click', 'span.remove', function () { var li = $(this).closest('li'); var name = li.find('input')[0].id; if (name.split('-')[1] !== 'add') deleted.push(name.split('-')[1]); li.remove(); edit.show_changed(); }); $(document).on('click', '.add-ending', function () { var id = $('input[name=id]', $(this).closest('form')).value(); var new_row = $(get_new_row_html()); var this_group = $(this).closest('tr').find('.ending-group'); this_group.append(new_row); edit.qualifier_select(this_group.find('.qualifiers').last()); edit.show_changed(); }); $('#edit').on('scroll', function() { if (common.multiselect_is_open) { $(this).find('select[multiple]').multiselect2('close'); } }); $('#add-button').click(add_pattern); }, load_content: function(id, is_created, check_callback) { "use strict"; $.ajaxJSON({ method: 'get', url: $dj.ajax_edit_form, dest: $('#edit'), data: {id: id}, callback: function () { edit.form_init(); edit.created = Boolean(is_created); }, check_callback: check_callback }); $.ajaxJSON({ method: 'get', url: $dj.ajax_pattern_preview, dest: $('#preview'), data: {id: id}, check_callback: check_callback }); edit.active_id = id; }, form_init: function() { "use strict"; $('button', '#edit').button(); $('#ending-list.editable').find('.ending-group').sortable().sortable({ change: function () { edit.show_changed(); } }); //$('#ending-list').disableSelection(); edit.qualifier_select($('#ending-list').find('.qualifiers')); deleted = []; edit.hide_changed(); edit.busy_off(); }, form_submit: function () { "use strict"; var this_form = $(this); var form_data = this_form.serializeArray(); form_data.push({name: 'deleted', value: deleted}); deleted = []; var ending_list = []; var rows = $('#ending-list').find('tr'); $.each(rows, function (i, row) { var label = $(row).find('td:eq(0) strong').html(); var endings = []; $(row).find('td:eq(1) input').map(function (i, input) { var id_parts = $(input).attr('id').split('-'); var id = id_parts[1], q_id; if (id === 'add') q_id = '#id_add-' + id_parts[2] + '-qualifiers'; else q_id = '#id_end' + id + '-qualifiers'; endings.push({ id: id, string: $(input).val(), qualifiers: $(q_id).val() || [] }); }); ending_list.push({base_form_label: label, endings: endings}); }); form_data.push({name: 'ending_list', value: ending_list}); edit.busy_on(); $.ajaxJSON({ method: 'post', url: $dj.ajax_update_pattern, data: { form_data: form_data }, description: "Zapisanie zmian", callback: function () { edit.hide_changed(); // odświeżyć? edit.load_content(edit.get_id()); }, error_callback: function (xhr, status, error) { common.error_alert(status + ': ' + error); edit.busy_off(); }, bad_data_callback: function () { edit.busy_off(); return true; } }); return false; } }); function add_pattern() { "use strict"; // stworzyć ajaxem nowy wzór i go po prostu otworzyć... $.ajaxJSON({ method: 'post', url: $dj.ajax_create_pattern, data: {}, description: "Utworzenie wzoru", callback: function (data) { edit.load_content(data.id, true); } }); }