PluginProbe
Premmerce / 1.2
Premmerce v1.2
trunk 1.0 1.1 1.2 1.2.1 1.3 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.19 1.3.2 1.3.20 1.3.21 1.3.22 1.3.23 1.3.3 1.3.4 1.3.5 1.3.6 All 28 releases
premmerce / assets / admin / js / wizard.js

wizard.js in Premmerce 1.2, at assets/admin/js/wizard.js

180 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 jQuery(function ($) {
2
3 /**
4 * Change container state handler
5 */
6 $(document).on('change', '[data-set-container-state]', function () {
7 var $this = $(this);
8 var container = $('[data-container]');
9
10 // Show preloader
11 container.addClass('task-container--ajax-block');
12
13 updateWizard({'update': 'container-state', 'state': $(this).val()}, function (responce) {
14 $('[data-container]').replaceWith($('[data-container]', responce));
15 $('[data-container-state]').attr('data-container-state', $this.val());
16 initSortTable();
17 });
18 });
19
20 /**
21 * Show all task click handler
22 */
23 $(document).on('click', '[data-show-all-task]', function () {
24 $('[data-set-container-state][value="all"]').trigger('click');
25 });
26
27 /**
28 * Set task state handler
29 * Runnig on click on skip/un skip and ckeck/ un check button
30 */
31 $(document).on('change', '[data-set-state]', function () {
32 var $this = $(this);
33
34 var task = $this.closest('[data-task]');
35 var state = $this.is(':checked') ? $this.val() : 'todo';
36
37 if (state === "skipped") {
38 task.find('[data-check-task-checkbox]').attr('disabled', 'disabled');
39 } else {
40 task.find('[data-check-task-checkbox]').removeAttr('disabled');
41 }
42
43 setState(state, task);
44 });
45
46 /**
47 * Install and activation handler
48 */
49 $(document).on('click', '[data-action]', function (e) {
50 e.preventDefault();
51
52 var $this = $(this);
53 var data = $this.data('action');
54 var task = $this.closest('[data-task]');
55 var waitAjaxClass = 'updating-message';
56 var spinner = task.find(".premmerce-wp-spinner");
57
58 $this.addClass(waitAjaxClass);
59
60 premmerce.actions.run(data, {
61 success: function () {
62 window.location.reload();
63 },
64 error: function (response) {
65 $('[data-error-container]').append('<div class="notice notice-error notice-alt is-dismissible"><p>' + response.errorMessage + '</p></div>');
66 spinner.hide();
67
68 }
69 });
70 });
71
72 /**
73 * Set task state
74 * @param state
75 * @param task
76 */
77 function setState(state, task) {
78 var container = $('[data-container]');
79 var change = state === 'todo' ? +1 : -1;
80
81 changeCount(change);
82
83 task.removeClass('task-container__task--state-' + task.attr('data-task-state')).addClass('task-container__task--state-' + state);
84
85 var containerState = container.attr('data-container-state');
86
87 if (containerState !== 'all' && containerState !== state) {
88 task.fadeOut(500, function () {
89 task.attr('data-task-state', state);
90
91 if (state === 'todo') {
92 handleLast();
93 }
94
95 });
96 } else {
97 task.attr('data-task-state', state);
98 }
99
100 var key = task.data('task');
101
102 updateWizard({task: key, state: state, update: 'state'}, function () {
103
104 });
105 }
106
107 /**
108 * Show "Show all block" when user unskip or uncheck last task
109 */
110 function handleLast() {
111 var listState = $('[data-set-container-state]').filter(':checked').val();
112 var totalTask = $('[data-container]').find('[data-task-state="' + listState + '"]').filter(':visible');
113
114 if (totalTask.length === 0) {
115 $('[data-show-all-task--container]').removeClass('hidden');
116 }
117
118 }
119
120 /**
121 *
122 * @param data
123 * @param callback
124 */
125 function updateWizard(data, callback) {
126 data.action = 'premmerce_wizard_actions';
127
128 $.post(ajaxurl, data, function (responce) {
129 if (callback instanceof Function)
130 callback(responce);
131 }, 'json')
132 }
133
134 /**
135 *
136 * @param val
137 */
138 function changeCount(val) {
139
140 $('[data-premmerce-count]').each(function () {
141
142 var counter = $(this);
143 var count = parseInt(counter.text());
144
145 var newCount = count + val;
146
147 if (newCount < 0) {
148 newCount = 0;
149 }
150
151 $('.premmerce-wizard-counter.count-' + count).each(function () {
152 $(this).removeClass('count-' + count);
153 $(this).addClass('count-' + newCount);
154 });
155
156 counter.text(newCount)
157
158 });
159 }
160
161 /**
162 * Init sorting
163 */
164 function initSortTable() {
165 var container = $('[data-container]');
166
167 container.sortable();
168
169 container.on('sortupdate', function () {
170 var data = {positions: [], update: 'position'};
171
172 $('[data-task]').each(function () {
173 data.positions.push($(this).attr('data-task'));
174 });
175 updateWizard(data);
176 });
177 }
178
179 initSortTable();
180 });