pattern-edit.js
4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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_id: 'pattern-edit-cancel',
form_submit_id: '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();
});
},
load_content: function(id, check_callback) {
"use strict";
$.ajaxJSON({
method: 'get',
url: $dj.ajax_edit_form,
dest: $('#edit'),
data: {id: id},
callback: function () {
edit.form_init();
//created = Boolean(is_created);
},
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;
}
});