annotate default/node_modules/jquery-tabledit/jquery.tabledit.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 /*!
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 * Tabledit v1.2.3 (https://github.com/markcell/jQuery-Tabledit)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 * Copyright (c) 2015 Celso Marques
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 * Licensed under MIT (https://github.com/markcell/jQuery-Tabledit/blob/master/LICENSE)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 * @description Inline editor for HTML tables compatible with Bootstrap
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 * @version 1.2.3
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 * @author Celso Marques
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 if (typeof jQuery === 'undefined') {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 throw new Error('Tabledit requires jQuery library.');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 (function($) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 'use strict';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 $.fn.Tabledit = function(options) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 if (!this.is('table')) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 throw new Error('Tabledit only works when applied to a table.');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 var $table = this;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 var defaults = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 url: window.location.href,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 inputClass: 'form-control input-sm',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 toolbarClass: 'btn-toolbar',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 groupClass: 'btn-group btn-group-sm',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 dangerClass: 'danger',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 warningClass: 'warning',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 mutedClass: 'text-muted',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 eventType: 'click',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 rowIdentifier: 'id',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 hideIdentifier: false,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 autoFocus: true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 editButton: true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 deleteButton: true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 saveButton: true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 restoreButton: true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 buttons: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 edit: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 class: 'btn btn-sm btn-default',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 html: '<span class="glyphicon glyphicon-pencil"></span>',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 action: 'edit'
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 delete: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 class: 'btn btn-sm btn-default',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 html: '<span class="glyphicon glyphicon-trash"></span>',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 action: 'delete'
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 save: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 class: 'btn btn-sm btn-success',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 html: 'Save'
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 restore: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 class: 'btn btn-sm btn-warning',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 html: 'Restore',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 action: 'restore'
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 confirm: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 class: 'btn btn-sm btn-danger',
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 html: 'Confirm'
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 onDraw: function() { return; },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 onSuccess: function() { return; },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 onFail: function() { return; },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 onAlways: function() { return; },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 onAjax: function() { return; }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 var settings = $.extend(true, defaults, options);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 var $lastEditedRow = 'undefined';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 var $lastDeletedRow = 'undefined';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 var $lastRestoredRow = 'undefined';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 * Draw Tabledit structure (identifier column, editable columns, toolbar column).
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 * @type {object}
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 var Draw = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 columns: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 identifier: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 // Hide identifier column.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 if (settings.hideIdentifier) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 $table.find('th:nth-child(' + parseInt(settings.columns.identifier[0]) + 1 + '), tbody td:nth-child(' + parseInt(settings.columns.identifier[0]) + 1 + ')').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 var $td = $table.find('tbody td:nth-child(' + (parseInt(settings.columns.identifier[0]) + 1) + ')');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 $td.each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 // Create hidden input with row identifier.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 var span = '<span class="tabledit-span tabledit-identifier">' + $(this).text() + '</span>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 var input = '<input class="tabledit-input tabledit-identifier" type="hidden" name="' + settings.columns.identifier[1] + '" value="' + $(this).text() + '" disabled>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 // Add elements to table cell.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 $(this).html(span + input);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 // Add attribute "id" to table row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105 $(this).parent('tr').attr(settings.rowIdentifier, $(this).text());
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 editable: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109 for (var i = 0; i < settings.columns.editable.length; i++) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 var $td = $table.find('tbody td:nth-child(' + (parseInt(settings.columns.editable[i][0]) + 1) + ')');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 $td.each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 // Get text of this cell.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114 var text = $(this).text();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 // Add pointer as cursor.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117 if (!settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118 $(this).css('cursor', 'pointer');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
120
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
121 // Create span element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
122 var span = '<span class="tabledit-span">' + text + '</span>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
123
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
124 // Check if exists the third parameter of editable array.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
125 if (typeof settings.columns.editable[i][2] !== 'undefined') {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
126 // Create select element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
127 var input = '<select class="tabledit-input ' + settings.inputClass + '" name="' + settings.columns.editable[i][1] + '" style="display: none;" disabled>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
128
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
129 // Create options for select element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
130 $.each(jQuery.parseJSON(settings.columns.editable[i][2]), function(index, value) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
131 if (text === value) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
132 input += '<option value="' + index + '" selected>' + value + '</option>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
133 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
134 input += '<option value="' + index + '">' + value + '</option>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
135 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
136 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
137
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
138 // Create last piece of select element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
139 input += '</select>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
140 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
141 // Create text input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
142 var input = '<input class="tabledit-input ' + settings.inputClass + '" type="text" name="' + settings.columns.editable[i][1] + '" value="' + $(this).text() + '" style="display: none;" disabled>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
143 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
144
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
145 // Add elements and class "view" to table cell.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
146 $(this).html(span + input);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
147 $(this).addClass('tabledit-view-mode');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
148 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
149 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
150 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
151 toolbar: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
152 if (settings.editButton || settings.deleteButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
153 var editButton = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
154 var deleteButton = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
155 var saveButton = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
156 var restoreButton = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
157 var confirmButton = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
158
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
159 // Add toolbar column header if not exists.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
160 if ($table.find('th.tabledit-toolbar-column').length === 0) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
161 $table.find('tr:first').append('<th class="tabledit-toolbar-column"></th>');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
162 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
163
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
164 // Create edit button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
165 if (settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
166 editButton = '<button type="button" class="tabledit-edit-button ' + settings.buttons.edit.class + '" style="float: none;">' + settings.buttons.edit.html + '</button>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
167 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
168
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
169 // Create delete button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
170 if (settings.deleteButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
171 deleteButton = '<button type="button" class="tabledit-delete-button ' + settings.buttons.delete.class + '" style="float: none;">' + settings.buttons.delete.html + '</button>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
172 confirmButton = '<button type="button" class="tabledit-confirm-button ' + settings.buttons.confirm.class + '" style="display: none; float: none;">' + settings.buttons.confirm.html + '</button>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
173 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
174
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
175 // Create save button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
176 if (settings.editButton && settings.saveButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
177 saveButton = '<button type="button" class="tabledit-save-button ' + settings.buttons.save.class + '" style="display: none; float: none;">' + settings.buttons.save.html + '</button>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
178 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
179
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
180 // Create restore button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
181 if (settings.deleteButton && settings.restoreButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
182 restoreButton = '<button type="button" class="tabledit-restore-button ' + settings.buttons.restore.class + '" style="display: none; float: none;">' + settings.buttons.restore.html + '</button>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
183 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
184
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
185 var toolbar = '<div class="tabledit-toolbar ' + settings.toolbarClass + '" style="text-align: left;">\n\
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
186 <div class="' + settings.groupClass + '" style="float: none;">' + editButton + deleteButton + '</div>\n\
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
187 ' + saveButton + '\n\
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
188 ' + confirmButton + '\n\
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
189 ' + restoreButton + '\n\
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
190 </div></div>';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
191
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
192 // Add toolbar column cells.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
193 $table.find('tbody>tr').append('<td style="white-space: nowrap; width: 1%;">' + toolbar + '</td>');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
194 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
195 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
196 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
197 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
198
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
199 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
200 * Change to view mode or edit mode with table td element as parameter.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
201 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
202 * @type object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
203 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
204 var Mode = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
205 view: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
206 // Get table row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
207 var $tr = $(td).parent('tr');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
208 // Disable identifier.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
209 $(td).parent('tr').find('.tabledit-input.tabledit-identifier').prop('disabled', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
210 // Hide and disable input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
211 $(td).find('.tabledit-input').blur().hide().prop('disabled', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
212 // Show span element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
213 $(td).find('.tabledit-span').show();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
214 // Add "view" class and remove "edit" class in td element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
215 $(td).addClass('tabledit-view-mode').removeClass('tabledit-edit-mode');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
216 // Update toolbar buttons.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
217 if (settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
218 $tr.find('button.tabledit-save-button').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
219 $tr.find('button.tabledit-edit-button').removeClass('active').blur();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
220 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
221 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
222 edit: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
223 Delete.reset(td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
224 // Get table row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
225 var $tr = $(td).parent('tr');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
226 // Enable identifier.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
227 $tr.find('.tabledit-input.tabledit-identifier').prop('disabled', false);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
228 // Hide span element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
229 $(td).find('.tabledit-span').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
230 // Get input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
231 var $input = $(td).find('.tabledit-input');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
232 // Enable and show input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
233 $input.prop('disabled', false).show();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
234 // Focus on input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
235 if (settings.autoFocus) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
236 $input.focus();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
237 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
238 // Add "edit" class and remove "view" class in td element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
239 $(td).addClass('tabledit-edit-mode').removeClass('tabledit-view-mode');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
240 // Update toolbar buttons.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
241 if (settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
242 $tr.find('button.tabledit-edit-button').addClass('active');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
243 $tr.find('button.tabledit-save-button').show();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
244 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
245 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
246 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
247
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
248 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
249 * Available actions for edit function, with table td element as parameter or set of td elements.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
250 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
251 * @type object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
252 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
253 var Edit = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
254 reset: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
255 $(td).each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
256 // Get input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
257 var $input = $(this).find('.tabledit-input');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
258 // Get span text.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
259 var text = $(this).find('.tabledit-span').text();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
260 // Set input/select value with span text.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
261 if ($input.is('select')) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
262 $input.find('option').filter(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
263 return $.trim($(this).text()) === text;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
264 }).attr('selected', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
265 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
266 $input.val(text);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
267 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
268 // Change to view mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
269 Mode.view(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
270 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
271 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
272 submit: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
273 // Send AJAX request to server.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
274 var ajaxResult = ajax(settings.buttons.edit.action);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
275
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
276 if (ajaxResult === false) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
277 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
278 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
279
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
280 $(td).each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
281 // Get input element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
282 var $input = $(this).find('.tabledit-input');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
283 // Set span text with input/select new value.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
284 if ($input.is('select')) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
285 $(this).find('.tabledit-span').text($input.find('option:selected').text());
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
286 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
287 $(this).find('.tabledit-span').text($input.val());
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
288 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
289 // Change to view mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
290 Mode.view(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
291 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
292
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
293 // Set last edited column and row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
294 $lastEditedRow = $(td).parent('tr');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
295 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
296 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
297
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
298 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
299 * Available actions for delete function, with button as parameter.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
300 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
301 * @type object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
302 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
303 var Delete = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
304 reset: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
305 // Reset delete button to initial status.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
306 $table.find('.tabledit-confirm-button').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
307 // Remove "active" class in delete button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
308 $table.find('.tabledit-delete-button').removeClass('active').blur();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
309 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
310 submit: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
311 Delete.reset(td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
312 // Enable identifier hidden input.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
313 $(td).parent('tr').find('input.tabledit-identifier').attr('disabled', false);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
314 // Send AJAX request to server.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
315 var ajaxResult = ajax(settings.buttons.delete.action);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
316 // Disable identifier hidden input.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
317 $(td).parents('tr').find('input.tabledit-identifier').attr('disabled', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
318
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
319 if (ajaxResult === false) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
320 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
321 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
322
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
323 // Add class "deleted" to row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
324 $(td).parent('tr').addClass('tabledit-deleted-row');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
325 // Hide table row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
326 $(td).parent('tr').addClass(settings.mutedClass).find('.tabledit-toolbar button:not(.tabledit-restore-button)').attr('disabled', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
327 // Show restore button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
328 $(td).find('.tabledit-restore-button').show();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
329 // Set last deleted row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
330 $lastDeletedRow = $(td).parent('tr');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
331 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
332 confirm: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
333 // Reset all cells in edit mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
334 $table.find('td.tabledit-edit-mode').each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
335 Edit.reset(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
336 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
337 // Add "active" class in delete button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
338 $(td).find('.tabledit-delete-button').addClass('active');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
339 // Show confirm button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
340 $(td).find('.tabledit-confirm-button').show();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
341 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
342 restore: function(td) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
343 // Enable identifier hidden input.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
344 $(td).parent('tr').find('input.tabledit-identifier').attr('disabled', false);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
345 // Send AJAX request to server.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
346 var ajaxResult = ajax(settings.buttons.restore.action);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
347 // Disable identifier hidden input.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
348 $(td).parents('tr').find('input.tabledit-identifier').attr('disabled', true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
349
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
350 if (ajaxResult === false) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
351 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
352 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
353
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
354 // Remove class "deleted" to row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
355 $(td).parent('tr').removeClass('tabledit-deleted-row');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
356 // Hide table row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
357 $(td).parent('tr').removeClass(settings.mutedClass).find('.tabledit-toolbar button').attr('disabled', false);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
358 // Hide restore button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
359 $(td).find('.tabledit-restore-button').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
360 // Set last restored row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
361 $lastRestoredRow = $(td).parent('tr');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
362 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
363 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
364
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
365 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
366 * Send AJAX request to server.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
367 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
368 * @param {string} action
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
369 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
370 function ajax(action)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
371 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
372 var serialize = $table.find('.tabledit-input').serialize() + '&action=' + action;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
373
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
374 var result = settings.onAjax(action, serialize);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
375
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
376 if (result === false) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
377 return false;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
378 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
379
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
380 var jqXHR = $.post(settings.url, serialize, function(data, textStatus, jqXHR) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
381 if (action === settings.buttons.edit.action) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
382 $lastEditedRow.removeClass(settings.dangerClass).addClass(settings.warningClass);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
383 setTimeout(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
384 //$lastEditedRow.removeClass(settings.warningClass);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
385 $table.find('tr.' + settings.warningClass).removeClass(settings.warningClass);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
386 }, 1400);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
387 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
388
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
389 settings.onSuccess(data, textStatus, jqXHR);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
390 }, 'json');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
391
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
392 jqXHR.fail(function(jqXHR, textStatus, errorThrown) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
393 if (action === settings.buttons.delete.action) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
394 $lastDeletedRow.removeClass(settings.mutedClass).addClass(settings.dangerClass);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
395 $lastDeletedRow.find('.tabledit-toolbar button').attr('disabled', false);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
396 $lastDeletedRow.find('.tabledit-toolbar .tabledit-restore-button').hide();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
397 } else if (action === settings.buttons.edit.action) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
398 $lastEditedRow.addClass(settings.dangerClass);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
399 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
400
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
401 settings.onFail(jqXHR, textStatus, errorThrown);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
402 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
403
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
404 jqXHR.always(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
405 settings.onAlways();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
406 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
407
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
408 return jqXHR;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
409 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
410
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
411 Draw.columns.identifier();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
412 Draw.columns.editable();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
413 Draw.columns.toolbar();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
414
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
415 settings.onDraw();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
416
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
417 if (settings.deleteButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
418 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
419 * Delete one row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
420 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
421 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
422 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
423 $table.on('click', 'button.tabledit-delete-button', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
424 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
425 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
426
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
427 // Get current state before reset to view mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
428 var activated = $(this).hasClass('active');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
429
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
430 var $td = $(this).parents('td');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
431
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
432 Delete.reset($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
433
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
434 if (!activated) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
435 Delete.confirm($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
436 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
437
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
438 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
439 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
440 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
441
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
442 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
443 * Delete one row (confirm).
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
444 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
445 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
446 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
447 $table.on('click', 'button.tabledit-confirm-button', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
448 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
449 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
450
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
451 var $td = $(this).parents('td');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
452
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
453 Delete.submit($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
454
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
455 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
456 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
457 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
458 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
459
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
460 if (settings.restoreButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
461 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
462 * Restore one row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
463 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
464 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
465 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
466 $table.on('click', 'button.tabledit-restore-button', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
467 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
468 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
469
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
470 Delete.restore($(this).parents('td'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
471
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
472 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
473 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
474 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
475 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
476
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
477 if (settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
478 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
479 * Activate edit mode on all columns.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
480 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
481 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
482 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
483 $table.on('click', 'button.tabledit-edit-button', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
484 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
485 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
486
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
487 var $button = $(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
488
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
489 // Get current state before reset to view mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
490 var activated = $button.hasClass('active');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
491
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
492 // Change to view mode columns that are in edit mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
493 Edit.reset($table.find('td.tabledit-edit-mode'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
494
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
495 if (!activated) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
496 // Change to edit mode for all columns in reverse way.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
497 $($button.parents('tr').find('td.tabledit-view-mode').get().reverse()).each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
498 Mode.edit(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
499 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
500 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
501
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
502 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
503 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
504 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
505
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
506 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
507 * Save edited row.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
508 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
509 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
510 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
511 $table.on('click', 'button.tabledit-save-button', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
512 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
513 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
514
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
515 // Submit and update all columns.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
516 Edit.submit($(this).parents('tr').find('td.tabledit-edit-mode'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
517
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
518 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
519 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
520 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
521 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
522 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
523 * Change to edit mode on table td element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
524 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
525 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
526 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
527 $table.on(settings.eventType, 'tr:not(.tabledit-deleted-row) td.tabledit-view-mode', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
528 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
529 event.preventDefault();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
530
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
531 // Reset all td's in edit mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
532 Edit.reset($table.find('td.tabledit-edit-mode'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
533
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
534 // Change to edit mode.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
535 Mode.edit(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
536
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
537 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
538 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
539 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
540
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
541 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
542 * Change event when input is a select element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
543 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
544 $table.on('change', 'select.tabledit-input:visible', function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
545 if (event.handled !== true) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
546 // Submit and update the column.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
547 Edit.submit($(this).parent('td'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
548
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
549 event.handled = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
550 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
551 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
552
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
553 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
554 * Click event on document element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
555 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
556 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
557 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
558 $(document).on('click', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
559 var $editMode = $table.find('.tabledit-edit-mode');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
560 // Reset visible edit mode column.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
561 if (!$editMode.is(event.target) && $editMode.has(event.target).length === 0) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
562 Edit.reset($table.find('.tabledit-input:visible').parent('td'));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
563 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
564 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
565 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
566
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
567 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
568 * Keyup event on document element.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
569 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
570 * @param {object} event
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
571 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
572 $(document).on('keyup', function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
573 // Get input element with focus or confirmation button.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
574 var $input = $table.find('.tabledit-input:visible');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
575 var $button = $table.find('.tabledit-confirm-button');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
576
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
577 if ($input.length > 0) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
578 var $td = $input.parents('td');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
579 } else if ($button.length > 0) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
580 var $td = $button.parents('td');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
581 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
582 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
583 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
584
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
585 // Key?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
586 switch (event.keyCode) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
587 case 9: // Tab.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
588 if (!settings.editButton) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
589 Edit.submit($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
590 Mode.edit($td.closest('td').next());
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
591 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
592 break;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
593 case 13: // Enter.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
594 Edit.submit($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
595 break;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
596 case 27: // Escape.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
597 Edit.reset($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
598 Delete.reset($td);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
599 break;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
600 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
601 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
602
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
603 return this;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
604 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
605 }(jQuery));