Version Description
(06.04.2021)
Download this release
Release Info
Developer | tychesoftwares |
Plugin | Abandoned Cart Lite for WooCommerce |
Version | 5.8.8 |
Comparing to | |
See all releases |
Code changes from version 5.8.7 to 5.8.8
- assets/css/admin/wcap_add_to_cart_popup_modal.css +843 -546
- assets/css/admin/wcap_add_to_cart_popup_modal.min.css +1 -1
- assets/js/admin/d3.v3.min.js +5 -0
- assets/js/admin/wcal_adv_dashboard.js +167 -1
- assets/js/admin/wcal_adv_dashboard.min.js +1 -1
- includes/admin/class-wcap-add-cart-popup-modal.php +291 -130
- includes/admin/class-wcap-pro-settings-callbacks.php +264 -1
- includes/admin/class-wcap-pro-settings.php +172 -0
- includes/class-wcal-default-template-settings.php +1 -4
- includes/classes/class-wcal-dashboard-report.php +209 -4
- includes/templates/atc-rules/html-atc-rules-add-row.php +89 -0
- includes/templates/atc-rules/html-atc-rules-edit-row.php +191 -0
- includes/templates/atc-rules/html-atc-rules-engine.php +123 -0
- includes/templates/rules/html-rules-add-row.php +107 -0
- includes/templates/rules/html-rules-edit-row.php +286 -0
- includes/templates/rules/html-rules-engine.php +130 -0
- readme.txt +6 -0
- woocommerce-ac.php +41 -7
assets/css/admin/wcap_add_to_cart_popup_modal.css
CHANGED
@@ -1,547 +1,844 @@
|
|
1 |
-
.wcap_popup_main_div{
|
2 |
-
width: 100%;
|
3 |
-
height: 100%
|
4 |
-
}
|
5 |
-
.wcap_popup_main_table{
|
6 |
-
width: 100%;
|
7 |
-
height: 100%
|
8 |
-
}
|
9 |
-
.wcap_popup_main_table_tr{
|
10 |
-
width: 100%;
|
11 |
-
height: 100%
|
12 |
-
}
|
13 |
-
.wcap_popup_main_table_td_settings{
|
14 |
-
float:left;
|
15 |
-
width:52% ;
|
16 |
-
}
|
17 |
-
.wcap_popup_main_table_td_preview{
|
18 |
-
float:right;
|
19 |
-
width: 45%;
|
20 |
-
}
|
21 |
-
|
22 |
-
/* heading section */
|
23 |
-
.wcap_heading_section_table{
|
24 |
-
width: 100%;
|
25 |
-
}
|
26 |
-
.wcap_heading_section_tr{
|
27 |
-
width: 100%;
|
28 |
-
}
|
29 |
-
.wcap_heading_section_table_heading{
|
30 |
-
float: left;
|
31 |
-
}
|
32 |
-
.wcap_heading_section_text_field{
|
33 |
-
float:left;
|
34 |
-
width:52% ;
|
35 |
-
}
|
36 |
-
.wcap_heading_section_text_field_color{
|
37 |
-
float:right;
|
38 |
-
width: 45%;
|
39 |
-
}
|
40 |
-
|
41 |
-
.wcap_heading_section_text_email{
|
42 |
-
width: 95%;
|
43 |
-
font-size: 1em;
|
44 |
-
}
|
45 |
-
.wcap_popup_heading_color_picker{
|
46 |
-
width: 40%;
|
47 |
-
font-size: 1em;
|
48 |
-
}
|
49 |
-
|
50 |
-
/* text section */
|
51 |
-
.wcap_text_section_table{
|
52 |
-
width: 100%;
|
53 |
-
}
|
54 |
-
.wcap_text_section_tr{
|
55 |
-
width: 100%;
|
56 |
-
}
|
57 |
-
.wcap_text_section_table_heading{
|
58 |
-
float: left;
|
59 |
-
}
|
60 |
-
.wcap_text_section_text_field{
|
61 |
-
float:left;
|
62 |
-
width:52% ;
|
63 |
-
}
|
64 |
-
.wcap_text_section_field_color{
|
65 |
-
float:right;
|
66 |
-
width: 45%;
|
67 |
-
}
|
68 |
-
|
69 |
-
.wcap_text_section_input_text{
|
70 |
-
width: 95%;
|
71 |
-
font-size: 1em;
|
72 |
-
}
|
73 |
-
.wcap_popup_text_color_picker{
|
74 |
-
width: 40%;
|
75 |
-
font-size: 1em;
|
76 |
-
}
|
77 |
-
|
78 |
-
/* Email placeholder section */
|
79 |
-
.wcap_email_placeholder_section_table{
|
80 |
-
width: 100%;
|
81 |
-
}
|
82 |
-
.wcap_email_placeholder_section_tr{
|
83 |
-
width: 100%;
|
84 |
-
}
|
85 |
-
.wcap_email_placeholder_section_table_heading{
|
86 |
-
float: left;
|
87 |
-
}
|
88 |
-
.wcap_email_placeholder_section_text_field{
|
89 |
-
float:left;
|
90 |
-
width:80% ;
|
91 |
-
}
|
92 |
-
.wcap_email_placeholder_section_input_text{
|
93 |
-
width: 95%;
|
94 |
-
font-size: 1em;
|
95 |
-
}
|
96 |
-
|
97 |
-
/* button section */
|
98 |
-
.wcap_button_section_table{
|
99 |
-
width: 100%;
|
100 |
-
}
|
101 |
-
.wcap_button_section_tr{
|
102 |
-
width: 100%;
|
103 |
-
}
|
104 |
-
.wcap_button_section_table_heading{
|
105 |
-
float: left;
|
106 |
-
}
|
107 |
-
.wcap_button_section_text_field{
|
108 |
-
float:left;
|
109 |
-
width:95% ;
|
110 |
-
}
|
111 |
-
.wcap_button_section_input_text{
|
112 |
-
width: 80%;
|
113 |
-
font-size: 1em;
|
114 |
-
}
|
115 |
-
|
116 |
-
.wcap_button_color_section_tr{
|
117 |
-
width: 100%;
|
118 |
-
}
|
119 |
-
|
120 |
-
.wcap_button_color_section_text_field{
|
121 |
-
float:left;
|
122 |
-
width:49% ;
|
123 |
-
}
|
124 |
-
.wcap_button_text_color_section_text_field{
|
125 |
-
float:right;
|
126 |
-
width:
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
background-
|
181 |
-
background-
|
182 |
-
background-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
-
|
191 |
-
-
|
192 |
-
border-radius: 5px 5px 0 0;
|
193 |
-
|
194 |
-
padding-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
-
|
202 |
-
-
|
203 |
-
-
|
204 |
-
border-radius: 5px;
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
padding-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
background-
|
216 |
-
|
217 |
-
|
218 |
-
background-
|
219 |
-
background-
|
220 |
-
background-
|
221 |
-
|
222 |
-
border
|
223 |
-
|
224 |
-
margin
|
225 |
-
margin-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
font-
|
236 |
-
font-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
text-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
padding-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
border-
|
293 |
-
border-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
border-
|
299 |
-
border-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
border-
|
311 |
-
border-
|
312 |
-
color:
|
313 |
-
|
314 |
-
|
315 |
-
font-
|
316 |
-
font-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
-
|
328 |
-
-
|
329 |
-
-
|
330 |
-
box-sizing: border-box;
|
331 |
-
-
|
332 |
-
-
|
333 |
-
-
|
334 |
-
border-radius: 5px;
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
font-
|
342 |
-
font-
|
343 |
-
|
344 |
-
|
345 |
-
text-
|
346 |
-
text-
|
347 |
-
text-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
border-
|
356 |
-
border-
|
357 |
-
border-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
-
|
366 |
-
-
|
367 |
-
border-radius: 5px;
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
-webkit-
|
375 |
-
-
|
376 |
-
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
background-
|
386 |
-
background-
|
387 |
-
background-
|
388 |
-
background-
|
389 |
-
background-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
position: sticky;
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
}
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
border
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
padding
|
433 |
-
|
434 |
-
border
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
border:
|
447 |
-
|
448 |
-
|
449 |
-
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
border:
|
502 |
-
|
503 |
-
|
504 |
-
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
wcap-atc-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
547 |
}
|
1 |
+
.wcap_popup_main_div{
|
2 |
+
width: 100%;
|
3 |
+
height: 100%
|
4 |
+
}
|
5 |
+
.wcap_popup_main_table{
|
6 |
+
width: 100%;
|
7 |
+
height: 100%
|
8 |
+
}
|
9 |
+
.wcap_popup_main_table_tr{
|
10 |
+
width: 100%;
|
11 |
+
height: 100%
|
12 |
+
}
|
13 |
+
.wcap_popup_main_table_td_settings{
|
14 |
+
float:left;
|
15 |
+
width:52% ;
|
16 |
+
}
|
17 |
+
.wcap_popup_main_table_td_preview{
|
18 |
+
float:right;
|
19 |
+
width: 45%;
|
20 |
+
}
|
21 |
+
|
22 |
+
/* heading section */
|
23 |
+
.wcap_heading_section_table{
|
24 |
+
width: 100%;
|
25 |
+
}
|
26 |
+
.wcap_heading_section_tr{
|
27 |
+
width: 100%;
|
28 |
+
}
|
29 |
+
.wcap_heading_section_table_heading{
|
30 |
+
float: left;
|
31 |
+
}
|
32 |
+
.wcap_heading_section_text_field{
|
33 |
+
float:left;
|
34 |
+
width:52% ;
|
35 |
+
}
|
36 |
+
.wcap_heading_section_text_field_color{
|
37 |
+
float:right;
|
38 |
+
width: 45%;
|
39 |
+
}
|
40 |
+
|
41 |
+
.wcap_heading_section_text_email{
|
42 |
+
width: 95%;
|
43 |
+
font-size: 1em;
|
44 |
+
}
|
45 |
+
.wcap_popup_heading_color_picker{
|
46 |
+
width: 40%;
|
47 |
+
font-size: 1em;
|
48 |
+
}
|
49 |
+
|
50 |
+
/* text section */
|
51 |
+
.wcap_text_section_table{
|
52 |
+
width: 100%;
|
53 |
+
}
|
54 |
+
.wcap_text_section_tr{
|
55 |
+
width: 100%;
|
56 |
+
}
|
57 |
+
.wcap_text_section_table_heading{
|
58 |
+
float: left;
|
59 |
+
}
|
60 |
+
.wcap_text_section_text_field{
|
61 |
+
float:left;
|
62 |
+
width:52% ;
|
63 |
+
}
|
64 |
+
.wcap_text_section_field_color{
|
65 |
+
float:right;
|
66 |
+
width: 45%;
|
67 |
+
}
|
68 |
+
|
69 |
+
.wcap_text_section_input_text{
|
70 |
+
width: 95%;
|
71 |
+
font-size: 1em;
|
72 |
+
}
|
73 |
+
.wcap_popup_text_color_picker{
|
74 |
+
width: 40%;
|
75 |
+
font-size: 1em;
|
76 |
+
}
|
77 |
+
|
78 |
+
/* Email placeholder section */
|
79 |
+
.wcap_email_placeholder_section_table{
|
80 |
+
width: 100%;
|
81 |
+
}
|
82 |
+
.wcap_email_placeholder_section_tr{
|
83 |
+
width: 100%;
|
84 |
+
}
|
85 |
+
.wcap_email_placeholder_section_table_heading{
|
86 |
+
float: left;
|
87 |
+
}
|
88 |
+
.wcap_email_placeholder_section_text_field{
|
89 |
+
float:left;
|
90 |
+
width:80% ;
|
91 |
+
}
|
92 |
+
.wcap_email_placeholder_section_input_text{
|
93 |
+
width: 95%;
|
94 |
+
font-size: 1em;
|
95 |
+
}
|
96 |
+
|
97 |
+
/* button section */
|
98 |
+
.wcap_button_section_table{
|
99 |
+
width: 100%;
|
100 |
+
}
|
101 |
+
.wcap_button_section_tr{
|
102 |
+
width: 100%;
|
103 |
+
}
|
104 |
+
.wcap_button_section_table_heading{
|
105 |
+
float: left;
|
106 |
+
}
|
107 |
+
.wcap_button_section_text_field{
|
108 |
+
float:left;
|
109 |
+
width:95% ;
|
110 |
+
}
|
111 |
+
.wcap_button_section_input_text{
|
112 |
+
width: 80%;
|
113 |
+
font-size: 1em;
|
114 |
+
}
|
115 |
+
|
116 |
+
.wcap_button_color_section_tr{
|
117 |
+
width: 100%;
|
118 |
+
}
|
119 |
+
|
120 |
+
.wcap_button_color_section_text_field{
|
121 |
+
float:left;
|
122 |
+
width:49% ;
|
123 |
+
}
|
124 |
+
.wcap_button_text_color_section_text_field{
|
125 |
+
float: right;
|
126 |
+
width: 50%;
|
127 |
+
}
|
128 |
+
|
129 |
+
.wcap_button_color_picker{
|
130 |
+
width: 46%;
|
131 |
+
font-size: 1em;
|
132 |
+
}
|
133 |
+
.wcap_button_text_color_picker{
|
134 |
+
width: 46%;
|
135 |
+
font-size: 1em;
|
136 |
+
}
|
137 |
+
|
138 |
+
/* Non mandatory field text section */
|
139 |
+
.wcap_non_mandatory_modal_section_fields_div_table{
|
140 |
+
width: 100%;
|
141 |
+
}
|
142 |
+
.wcap_non_mandatory_modal_section_fields_tr{
|
143 |
+
width: 100%;
|
144 |
+
}
|
145 |
+
.wcap_non_mandatory_modal_section_fields_table_heading{
|
146 |
+
float: left;
|
147 |
+
}
|
148 |
+
.wcap_non_mandatory_modal_section_fields_text_field{
|
149 |
+
float:left;
|
150 |
+
width:95% ;
|
151 |
+
}
|
152 |
+
.wcap_non_mandatory_modal_section_fields_input_text{
|
153 |
+
width: 80%;
|
154 |
+
font-size: 1em;
|
155 |
+
}
|
156 |
+
|
157 |
+
.wcap_template_name {
|
158 |
+
width: 200%;
|
159 |
+
font-size: 1em;
|
160 |
+
}
|
161 |
+
/* popup preview */
|
162 |
+
.wcap_container {
|
163 |
+
position: relative;
|
164 |
+
bottom: 0;
|
165 |
+
right: 0;
|
166 |
+
left: 0;
|
167 |
+
background-color: rgba(0, 0, 0, 0.7);
|
168 |
+
overflow: auto;
|
169 |
+
background-color: transparent;
|
170 |
+
}
|
171 |
+
|
172 |
+
.wcap_popup_close{
|
173 |
+
position: absolute;
|
174 |
+
top: 5px;
|
175 |
+
right: 5px;
|
176 |
+
cursor: pointer;
|
177 |
+
color: #bbb;
|
178 |
+
z-index: 100;
|
179 |
+
padding: 9px;
|
180 |
+
background-size: 18px;
|
181 |
+
background-position: center;
|
182 |
+
background-image: url("../../images/atc_cancel_icon.svg");
|
183 |
+
background-repeat: no-repeat;
|
184 |
+
}
|
185 |
+
|
186 |
+
.wcap_container .wcap_popup_heading_container{
|
187 |
+
position: relative;
|
188 |
+
background: #f8f9fb;
|
189 |
+
border-bottom: 1px solid #dedede;
|
190 |
+
-webkit-border-radius: 5px 5px 0 0;
|
191 |
+
-moz-border-radius: 5px 5px 0 0;
|
192 |
+
-ms-border-radius: 5px 5px 0 0;
|
193 |
+
border-radius: 5px 5px 0 0;
|
194 |
+
padding-top: 18px;
|
195 |
+
padding-bottom: 16px;
|
196 |
+
text-align: center;
|
197 |
+
}
|
198 |
+
|
199 |
+
.wcap_container .wcap_popup_content {
|
200 |
+
position: relative;
|
201 |
+
z-index: 2;
|
202 |
+
-webkit-border-radius: 5px;
|
203 |
+
-moz-border-radius: 5px;
|
204 |
+
-ms-border-radius: 5px;
|
205 |
+
border-radius: 5px;
|
206 |
+
}
|
207 |
+
|
208 |
+
.wcap_container .wcap_popup_content > * {
|
209 |
+
padding-left: 18px;
|
210 |
+
padding-right: 18px;
|
211 |
+
}
|
212 |
+
|
213 |
+
.wcap_container .wcap_popup_icon {
|
214 |
+
|
215 |
+
background-image: url("../../images/atc_popup_icon.svg");
|
216 |
+
background-repeat: no-repeat;
|
217 |
+
display: block;
|
218 |
+
background-size: 65px;
|
219 |
+
background-position: center;
|
220 |
+
background-color: #fff;
|
221 |
+
background-repeat: no-repeat;
|
222 |
+
border: 2px solid #ecedf3;
|
223 |
+
border-radius: 50%;
|
224 |
+
margin: 0 auto;
|
225 |
+
margin-right: 5px;
|
226 |
+
margin-left: 2px;
|
227 |
+
position: relative;
|
228 |
+
height: 98px;
|
229 |
+
width: 98px;
|
230 |
+
}
|
231 |
+
|
232 |
+
.wcap_container .wcap_popup_heading {
|
233 |
+
padding-top: 10px;
|
234 |
+
margin: 0;
|
235 |
+
font-family: "Lato", sans-serif !important;
|
236 |
+
font-size: 37px;
|
237 |
+
font-weight: bold;
|
238 |
+
line-height: 36px;
|
239 |
+
color: #737f97;
|
240 |
+
text-align: center;
|
241 |
+
display: block;
|
242 |
+
text-transform: initial;
|
243 |
+
}
|
244 |
+
|
245 |
+
.wcap_container .wcap_popup_text {
|
246 |
+
color: #bbc9d2;
|
247 |
+
font-size: 16px;
|
248 |
+
line-height: 20px;
|
249 |
+
font-family: "Lato", sans-serif !important;
|
250 |
+
text-align: center;
|
251 |
+
text-transform: initial;
|
252 |
+
}
|
253 |
+
|
254 |
+
.wcap_container .wcap_popup_form {
|
255 |
+
position: relative;
|
256 |
+
text-align: left;
|
257 |
+
font-family: inherit;
|
258 |
+
padding-top: 26px;
|
259 |
+
padding-bottom: 15px;
|
260 |
+
background-color: #FFFFFF !important;
|
261 |
+
}
|
262 |
+
|
263 |
+
.wcap_container div {
|
264 |
+
display: block;
|
265 |
+
}
|
266 |
+
|
267 |
+
.wcap_container .wcap_popup_form:after {
|
268 |
+
content: '';
|
269 |
+
display: block;
|
270 |
+
position: absolute;
|
271 |
+
left: 50%;
|
272 |
+
top: -1px;
|
273 |
+
width: 0;
|
274 |
+
height: 0;
|
275 |
+
margin-left: -16px;
|
276 |
+
}
|
277 |
+
|
278 |
+
.wcap_container .wcap_popup_form:before {
|
279 |
+
content: '';
|
280 |
+
display: block;
|
281 |
+
position: absolute;
|
282 |
+
left: 50%;
|
283 |
+
top: -1px;
|
284 |
+
width: 0;
|
285 |
+
height: 0;
|
286 |
+
margin-left: -16px;
|
287 |
+
}
|
288 |
+
|
289 |
+
.wcap_container .wcap_popup_form:before {
|
290 |
+
left: 50%;
|
291 |
+
margin-left: -17px;
|
292 |
+
border-left: 17px solid transparent;
|
293 |
+
border-right: 17px solid transparent;
|
294 |
+
border-top: 17px solid #dedede;
|
295 |
+
}
|
296 |
+
|
297 |
+
.wcap_container .wcap_popup_form:after {
|
298 |
+
border-left: 16px solid transparent;
|
299 |
+
border-right: 16px solid transparent;
|
300 |
+
border-top: 16px solid #f8f9fb;
|
301 |
+
}
|
302 |
+
|
303 |
+
.wcap_container .wcap_popup_input_field_container {
|
304 |
+
position: relative;
|
305 |
+
}
|
306 |
+
|
307 |
+
.wcap_container input[type="text"].wcap_popup_input {
|
308 |
+
-webkit-appearance: none;
|
309 |
+
background: #fff !important;
|
310 |
+
border-width: 1px !important;
|
311 |
+
border-style: solid !important;
|
312 |
+
border-color: #ccc;
|
313 |
+
color: rgba(0, 0, 0, 0.75) !important;
|
314 |
+
display: block;
|
315 |
+
font-family: "Lato", sans-serif !important;
|
316 |
+
font-size: 18px !important;
|
317 |
+
font-style: normal;
|
318 |
+
line-height: 20px !important;
|
319 |
+
margin: 0 0 16px 0;
|
320 |
+
padding: 8px;
|
321 |
+
height: 42px;
|
322 |
+
width: 100%;
|
323 |
+
max-width: none !important;
|
324 |
+
margin-bottom: 10px;
|
325 |
+
outline: none !important;
|
326 |
+
box-shadow: none;
|
327 |
+
-webkit-box-sizing: border-box;
|
328 |
+
-moz-box-sizing: border-box;
|
329 |
+
-o-box-sizing: border-box;
|
330 |
+
-ms-box-sizing: border-box;
|
331 |
+
box-sizing: border-box;
|
332 |
+
-webkit-border-radius: 5px;
|
333 |
+
-moz-border-radius: 5px;
|
334 |
+
-ms-border-radius: 5px;
|
335 |
+
border-radius: 5px;
|
336 |
+
}
|
337 |
+
|
338 |
+
.wcap_container .wcap_popup_button {
|
339 |
+
position: relative;
|
340 |
+
cursor: pointer;
|
341 |
+
font-family: "Lato", sans-serif !important;
|
342 |
+
font-size: 20px;
|
343 |
+
font-weight: normal;
|
344 |
+
line-height: 20px;
|
345 |
+
text-decoration: none;
|
346 |
+
text-align: center;
|
347 |
+
text-shadow: none;
|
348 |
+
text-transform: initial;
|
349 |
+
width: auto;
|
350 |
+
height: auto;
|
351 |
+
min-width: initial;
|
352 |
+
outline: 0;
|
353 |
+
display: inline-block;
|
354 |
+
background-color: #228fff ;
|
355 |
+
border-top: none !important;
|
356 |
+
border-left: none !important;
|
357 |
+
border-right: none !important;
|
358 |
+
border-bottom: none !important;
|
359 |
+
color: #ffffff;
|
360 |
+
width: 100%;
|
361 |
+
margin: 0;
|
362 |
+
padding: 10px 0;
|
363 |
+
font-weight: bold;
|
364 |
+
cursor: pointer;
|
365 |
+
-webkit-border-radius: 5px;
|
366 |
+
-moz-border-radius: 5px;
|
367 |
+
-ms-border-radius: 5px;
|
368 |
+
border-radius: 5px;
|
369 |
+
}
|
370 |
+
|
371 |
+
.wcap_container .wcap_popup_wrapper {
|
372 |
+
position: relative;
|
373 |
+
top: 50%;
|
374 |
+
-webkit-backface-visibility: hidden;
|
375 |
+
-webkit-border-radius: 5px;
|
376 |
+
-moz-border-radius: 5px;
|
377 |
+
-ms-border-radius: 5px;
|
378 |
+
}
|
379 |
+
|
380 |
+
.wcap_popup_wrapper {
|
381 |
+
border: 1px solid #EBEBEC;
|
382 |
+
}
|
383 |
+
|
384 |
+
.wcap_container .wcap_popup_plus_sign {
|
385 |
+
background-image: url("../../images/atc_plus_icon.png");
|
386 |
+
background-repeat: no-repeat;
|
387 |
+
background-color: #228fff ;
|
388 |
+
background-repeat: no-repeat;
|
389 |
+
background-position: center;
|
390 |
+
background-size: 16px;
|
391 |
+
border-radius: 50%;
|
392 |
+
height: 24px;
|
393 |
+
left: 74px;
|
394 |
+
top: -3px;
|
395 |
+
position: absolute;
|
396 |
+
width: 24px;
|
397 |
+
}
|
398 |
+
@media (min-width: 530px){
|
399 |
+
.wcap_container .wcap_popup_icon_container {
|
400 |
+
position: relative;
|
401 |
+
padding-right: 6px;
|
402 |
+
display: table-cell;
|
403 |
+
vertical-align: middle;
|
404 |
+
width: 105px;
|
405 |
+
}
|
406 |
+
|
407 |
+
.wcap_container .wcap_popup_text_container {
|
408 |
+
display: table-cell;
|
409 |
+
vertical-align: top;
|
410 |
+
}
|
411 |
+
.wcap_popup_main_table_td_preview{
|
412 |
+
margin-top: -10%;
|
413 |
+
position: -webkit-sticky;
|
414 |
+
position: sticky;
|
415 |
+
top: 0;
|
416 |
+
padding-top: 75px;
|
417 |
+
}
|
418 |
+
.wcap_container .wcap_popup_text {
|
419 |
+
text-align: left;
|
420 |
+
}
|
421 |
+
}
|
422 |
+
|
423 |
+
.iris-picker {
|
424 |
+
z-index: 100;
|
425 |
+
display: none;
|
426 |
+
position: absolute !important;
|
427 |
+
border: 1px solid #ccc;
|
428 |
+
border-radius: 3px;
|
429 |
+
box-shadow: 0 1px 3px rgba(0,0,0,.2);
|
430 |
+
}
|
431 |
+
.colorpickpreview {
|
432 |
+
padding: 5px;
|
433 |
+
padding-left: 20px;
|
434 |
+
border: 1px solid #ddd;
|
435 |
+
border-right: 0;
|
436 |
+
margin-left: -3px;
|
437 |
+
}
|
438 |
+
|
439 |
+
/* To enable the popup modal */
|
440 |
+
.wcap-enable-atc-modal {
|
441 |
+
cursor: pointer;
|
442 |
+
text-indent: -999em;
|
443 |
+
display: block;
|
444 |
+
width: 38px;
|
445 |
+
height: 22px;
|
446 |
+
border-radius: 30px;
|
447 |
+
border: none;
|
448 |
+
position: relative;
|
449 |
+
box-sizing: border-box;
|
450 |
+
-webkit-transition: all .3s ease;
|
451 |
+
transition: all .3s ease;
|
452 |
+
box-shadow: inset 0 0 0 0 transparent;
|
453 |
+
}
|
454 |
+
.wcap-enable-atc-modal:focus {
|
455 |
+
outline: none;
|
456 |
+
}
|
457 |
+
.wcap-enable-atc-modal:before {
|
458 |
+
border-radius: 50%;
|
459 |
+
background: #ffffff;
|
460 |
+
content: '';
|
461 |
+
position: absolute;
|
462 |
+
display: block;
|
463 |
+
width: 18px;
|
464 |
+
height: 18px;
|
465 |
+
top: 2px;
|
466 |
+
left: 2px;
|
467 |
+
-webkit-transition: all .15s ease;
|
468 |
+
transition: all .15s ease;
|
469 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
470 |
+
}
|
471 |
+
.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="on"] {
|
472 |
+
box-shadow: inset 0 0 0 11px #008000;
|
473 |
+
}
|
474 |
+
.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="on"]:before {
|
475 |
+
-webkit-transform: translateX(16px);
|
476 |
+
transform: translateX(16px);
|
477 |
+
}
|
478 |
+
.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="off"] {
|
479 |
+
background: #ccc;
|
480 |
+
}
|
481 |
+
.wcap-enable-atc-modal.wcap-loading {
|
482 |
+
cursor: default;
|
483 |
+
opacity: 0.5;
|
484 |
+
}
|
485 |
+
|
486 |
+
.wcap_non_mandatory_text_wrapper{
|
487 |
+
text-align: center;
|
488 |
+
}
|
489 |
+
|
490 |
+
.wcap_non_mandatory_text_wrapper a{
|
491 |
+
text-decoration:none;
|
492 |
+
}
|
493 |
+
|
494 |
+
/* To display the popup modal mandatory*/
|
495 |
+
.wcap-switch-atc-modal-mandatory {
|
496 |
+
cursor: pointer;
|
497 |
+
text-indent: -999em;
|
498 |
+
display: block;
|
499 |
+
width: 38px;
|
500 |
+
height: 22px;
|
501 |
+
border-radius: 30px;
|
502 |
+
border: none;
|
503 |
+
position: relative;
|
504 |
+
box-sizing: border-box;
|
505 |
+
-webkit-transition: all .3s ease;
|
506 |
+
transition: all .3s ease;
|
507 |
+
box-shadow: inset 0 0 0 0 transparent;
|
508 |
+
}
|
509 |
+
.wcap-switch-atc-modal-mandatory:focus {
|
510 |
+
outline: none;
|
511 |
+
}
|
512 |
+
.wcap-switch-atc-modal-mandatory:before {
|
513 |
+
border-radius: 50%;
|
514 |
+
background: #ffffff;
|
515 |
+
content: '';
|
516 |
+
position: absolute;
|
517 |
+
display: block;
|
518 |
+
width: 18px;
|
519 |
+
height: 18px;
|
520 |
+
top: 2px;
|
521 |
+
left: 2px;
|
522 |
+
-webkit-transition: all .15s ease;
|
523 |
+
transition: all .15s ease;
|
524 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
525 |
+
}
|
526 |
+
.wcap-switch-atc-modal-mandatory[
|
527 |
+
wcap-atc-switch-modal-mandatory="on"] {
|
528 |
+
box-shadow: inset 0 0 0 11px #008000;
|
529 |
+
}
|
530 |
+
.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory="on"]:before {
|
531 |
+
-webkit-transform: translateX(16px);
|
532 |
+
transform: translateX(16px);
|
533 |
+
}
|
534 |
+
.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory="off"] {
|
535 |
+
background: #ccc;
|
536 |
+
}
|
537 |
+
.wcap-switch-atc-modal-mandatory.wcap-loading {
|
538 |
+
cursor: default;
|
539 |
+
opacity: 0.5;
|
540 |
+
}
|
541 |
+
|
542 |
+
.wcap-switch-atc-capture-phone {
|
543 |
+
cursor: pointer;
|
544 |
+
text-indent: -999em;
|
545 |
+
display: block;
|
546 |
+
width: 38px;
|
547 |
+
height: 22px;
|
548 |
+
border-radius: 30px;
|
549 |
+
border: none;
|
550 |
+
position: relative;
|
551 |
+
box-sizing: border-box;
|
552 |
+
-webkit-transition: all .3s ease;
|
553 |
+
transition: all .3s ease;
|
554 |
+
box-shadow: inset 0 0 0 0 transparent;
|
555 |
+
}
|
556 |
+
.wcap-switch-atc-capture-phone:focus {
|
557 |
+
outline: none;
|
558 |
+
}
|
559 |
+
.wcap-switch-atc-capture-phone:before {
|
560 |
+
border-radius: 50%;
|
561 |
+
background: #ffffff;
|
562 |
+
content: '';
|
563 |
+
position: absolute;
|
564 |
+
display: block;
|
565 |
+
width: 18px;
|
566 |
+
height: 18px;
|
567 |
+
top: 2px;
|
568 |
+
left: 2px;
|
569 |
+
-webkit-transition: all .15s ease;
|
570 |
+
transition: all .15s ease;
|
571 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
572 |
+
}
|
573 |
+
.wcap-switch-atc-capture-phone[
|
574 |
+
wcap-atc-capture-phone="on"] {
|
575 |
+
box-shadow: inset 0 0 0 11px #008000;
|
576 |
+
}
|
577 |
+
.wcap-switch-atc-capture-phone[wcap-atc-capture-phone="on"]:before {
|
578 |
+
-webkit-transform: translateX(16px);
|
579 |
+
transform: translateX(16px);
|
580 |
+
}
|
581 |
+
.wcap-switch-atc-capture-phone[wcap-atc-capture-phone="off"] {
|
582 |
+
background: #ccc;
|
583 |
+
}
|
584 |
+
|
585 |
+
.wcap_phone_placeholder_section_table{
|
586 |
+
width: 100%;
|
587 |
+
}
|
588 |
+
.wcap_phone_placeholder_section_tr{
|
589 |
+
width: 100%;
|
590 |
+
}
|
591 |
+
.wcap_phone_placeholder_section_table_heading{
|
592 |
+
float: left;
|
593 |
+
}
|
594 |
+
.wcap_phone_placeholder_section_text_field{
|
595 |
+
float:left;
|
596 |
+
width:80% ;
|
597 |
+
}
|
598 |
+
.wcap_phone_placeholder_section_input_text{
|
599 |
+
width: 95%;
|
600 |
+
font-size: 1em;
|
601 |
+
}
|
602 |
+
|
603 |
+
.wcap_atc_between_fields_space {
|
604 |
+
margin-top: 2%;
|
605 |
+
}
|
606 |
+
|
607 |
+
.wcap_reset_button {
|
608 |
+
margin-left: 5% !important;
|
609 |
+
}
|
610 |
+
|
611 |
+
.wcap_coupon_settings_div_table {
|
612 |
+
margin-top: 2%;
|
613 |
+
width: 100%;
|
614 |
+
height: 100%;
|
615 |
+
}
|
616 |
+
|
617 |
+
.wcap_coupon_settings_div_table th {
|
618 |
+
float: left;
|
619 |
+
}
|
620 |
+
|
621 |
+
/* To display the auto apply coupons*/
|
622 |
+
.wcap-auto-apply-coupons-atc {
|
623 |
+
cursor: pointer;
|
624 |
+
text-indent: -999em;
|
625 |
+
display: block;
|
626 |
+
width: 38px;
|
627 |
+
height: 22px;
|
628 |
+
border-radius: 30px;
|
629 |
+
border: none;
|
630 |
+
position: relative;
|
631 |
+
box-sizing: border-box;
|
632 |
+
-webkit-transition: all .3s ease;
|
633 |
+
transition: all .3s ease;
|
634 |
+
box-shadow: inset 0 0 0 0 transparent;
|
635 |
+
}
|
636 |
+
.wcap-auto-apply-coupons-atc:focus {
|
637 |
+
outline: none;
|
638 |
+
}
|
639 |
+
.wcap-auto-apply-coupons-atc:before {
|
640 |
+
border-radius: 50%;
|
641 |
+
background: #ffffff;
|
642 |
+
content: '';
|
643 |
+
position: absolute;
|
644 |
+
display: block;
|
645 |
+
width: 18px;
|
646 |
+
height: 18px;
|
647 |
+
top: 2px;
|
648 |
+
left: 2px;
|
649 |
+
-webkit-transition: all .15s ease;
|
650 |
+
transition: all .15s ease;
|
651 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
652 |
+
}
|
653 |
+
.wcap-auto-apply-coupons-atc[
|
654 |
+
wcap-atc-switch-coupon-enable="on"] {
|
655 |
+
box-shadow: inset 0 0 0 11px #008000;
|
656 |
+
}
|
657 |
+
.wcap-auto-apply-coupons-atc[wcap-atc-switch-coupon-enable="on"]:before {
|
658 |
+
-webkit-transform: translateX(16px);
|
659 |
+
transform: translateX(16px);
|
660 |
+
}
|
661 |
+
.wcap-auto-apply-coupons-atc[wcap-atc-switch-coupon-enable="off"] {
|
662 |
+
background: #ccc;
|
663 |
+
}
|
664 |
+
|
665 |
+
.wcap-countdown-timer-cart {
|
666 |
+
cursor: pointer;
|
667 |
+
text-indent: -999em;
|
668 |
+
display: block;
|
669 |
+
width: 38px;
|
670 |
+
height: 22px;
|
671 |
+
border-radius: 30px;
|
672 |
+
border: none;
|
673 |
+
position: relative;
|
674 |
+
box-sizing: border-box;
|
675 |
+
-webkit-transition: all .3s ease;
|
676 |
+
transition: all .3s ease;
|
677 |
+
box-shadow: inset 0 0 0 0 transparent;
|
678 |
+
}
|
679 |
+
.wcap-countdown-timer-cart:focus {
|
680 |
+
outline: none;
|
681 |
+
}
|
682 |
+
.wcap-countdown-timer-cart:before {
|
683 |
+
border-radius: 50%;
|
684 |
+
background: #ffffff;
|
685 |
+
content: '';
|
686 |
+
position: absolute;
|
687 |
+
display: block;
|
688 |
+
width: 18px;
|
689 |
+
height: 18px;
|
690 |
+
top: 2px;
|
691 |
+
left: 2px;
|
692 |
+
-webkit-transition: all .15s ease;
|
693 |
+
transition: all .15s ease;
|
694 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
695 |
+
}
|
696 |
+
.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable="on"] {
|
697 |
+
box-shadow: inset 0 0 0 11px #008000;
|
698 |
+
}
|
699 |
+
.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable="on"]:before {
|
700 |
+
-webkit-transform: translateX(16px);
|
701 |
+
transform: translateX(16px);
|
702 |
+
}
|
703 |
+
.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable="off"] {
|
704 |
+
background: #ccc;
|
705 |
+
}
|
706 |
+
|
707 |
+
#wcap_countdown_msg {
|
708 |
+
width: 70%;
|
709 |
+
}
|
710 |
+
|
711 |
+
#wcap_countdown_msg_expired {
|
712 |
+
width: 70%;
|
713 |
+
}
|
714 |
+
|
715 |
+
#wcap_atc_coupon_type {
|
716 |
+
width: 77%;
|
717 |
+
}
|
718 |
+
|
719 |
+
.wcap_auto_apply_coupon_id {
|
720 |
+
margin-bottom: -10px;
|
721 |
+
}
|
722 |
+
|
723 |
+
.wcap_coupon_settings_div_table th {
|
724 |
+
margin-top: 15px;
|
725 |
+
}
|
726 |
+
|
727 |
+
.options_group {
|
728 |
+
margin-bottom: -10px;
|
729 |
+
}
|
730 |
+
|
731 |
+
#wcap_non_mandatory_modal_section_fields_div {
|
732 |
+
margin-bottom: 20px;
|
733 |
+
}
|
734 |
+
|
735 |
+
hr {
|
736 |
+
background-color: #ddd;
|
737 |
+
height: 1px;
|
738 |
+
border: 0px;
|
739 |
+
border-top: 1px solid #ddd;
|
740 |
+
border-bottom: 1px solid #fafafa;
|
741 |
+
}
|
742 |
+
|
743 |
+
#wcap_coupon_settings {
|
744 |
+
margin-top: -10px;
|
745 |
+
}
|
746 |
+
|
747 |
+
.wcap_atc_content th{
|
748 |
+
font-weight: 600;
|
749 |
+
color: #23282d;
|
750 |
+
}
|
751 |
+
|
752 |
+
#wcap_atc_discount_type {
|
753 |
+
width: 37%;
|
754 |
+
}
|
755 |
+
|
756 |
+
#wcap_atc_discount_amount {
|
757 |
+
width: 37%;
|
758 |
+
}
|
759 |
+
|
760 |
+
#wcap_atc_coupon_validity {
|
761 |
+
width: 37%;
|
762 |
+
}
|
763 |
+
|
764 |
+
#wcap_atc_coupon_note {
|
765 |
+
text-align: left;
|
766 |
+
font-weight: 400;
|
767 |
+
}
|
768 |
+
|
769 |
+
#sr {
|
770 |
+
width: 5%;
|
771 |
+
}
|
772 |
+
/* Rules List */
|
773 |
+
#wcap-rule-list {
|
774 |
+
width: 135%;
|
775 |
+
}
|
776 |
+
|
777 |
+
.wcap_rule_condition_col {
|
778 |
+
width: 23%;
|
779 |
+
}
|
780 |
+
#wcap_rules_email_addresses {
|
781 |
+
margin-top: 10px;
|
782 |
+
}
|
783 |
+
td select.wcap_rule_value.wc-product-search {
|
784 |
+
width: 90%;
|
785 |
+
}
|
786 |
+
td.wcap_rule_type_col {
|
787 |
+
padding: 0;
|
788 |
+
width: 25%;
|
789 |
+
}
|
790 |
+
td.wcap_rule_value_col {
|
791 |
+
width: 30%;
|
792 |
+
}
|
793 |
+
#wcap-rule-list {
|
794 |
+
padding: 0;
|
795 |
+
margin-top: 0;
|
796 |
+
}
|
797 |
+
|
798 |
+
#wcap_rule_list_footer {
|
799 |
+
padding: 0px;
|
800 |
+
border: none;
|
801 |
+
}
|
802 |
+
.wcap_rule_list_footer_tr:hover {
|
803 |
+
background-color: transparent!important;
|
804 |
+
}
|
805 |
+
|
806 |
+
.wcap-rule-list {
|
807 |
+
border-collapse: collapse;
|
808 |
+
width: 100%;
|
809 |
+
}
|
810 |
+
|
811 |
+
.wcap-rule-list td, .wcap-rule-list th {
|
812 |
+
border: 1px solid #ddd;
|
813 |
+
padding: 8px;
|
814 |
+
}
|
815 |
+
|
816 |
+
.wcap-rule-list tr:nth-child(even){
|
817 |
+
background-color: #f2f2f2;
|
818 |
+
}
|
819 |
+
|
820 |
+
.wcap-rule-list tr:hover {
|
821 |
+
background-color: #ddd;
|
822 |
+
}
|
823 |
+
|
824 |
+
.wcap-rule-list th {
|
825 |
+
padding-top: 12px;
|
826 |
+
padding-bottom: 12px;
|
827 |
+
text-align: left;
|
828 |
+
background-color: #2775a6;
|
829 |
+
color: white;
|
830 |
+
}
|
831 |
+
|
832 |
+
.wcap_add_rule_button {
|
833 |
+
border: 1px solid;
|
834 |
+
border-radius: 5px;
|
835 |
+
padding: 5px 10px 5px 5px;
|
836 |
+
text-decoration: none;
|
837 |
+
margin-left:5px;
|
838 |
+
}
|
839 |
+
|
840 |
+
.wcap_delete_rule_button {
|
841 |
+
border: 1px solid;
|
842 |
+
border-radius: 5px;
|
843 |
+
padding: 5px;
|
844 |
}
|
assets/css/admin/wcap_add_to_cart_popup_modal.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wcap_popup_main_div{width:100%;height:100%}.wcap_popup_main_table{width:100%;height:100%}.wcap_popup_main_table_tr{width:100%;height:100%}.wcap_popup_main_table_td_settings{float:left;width:52%}.wcap_popup_main_table_td_preview{float:right;width:45%}.wcap_heading_section_table{width:100%}.wcap_heading_section_tr{width:100%}.wcap_heading_section_table_heading{float:left}.wcap_heading_section_text_field{float:left;width:52%}.wcap_heading_section_text_field_color{float:right;width:45%}.wcap_heading_section_text_email{width:95%;font-size:1em}.wcap_popup_heading_color_picker{width:40%;font-size:1em}.wcap_text_section_table{width:100%}.wcap_text_section_tr{width:100%}.wcap_text_section_table_heading{float:left}.wcap_text_section_text_field{float:left;width:52%}.wcap_text_section_field_color{float:right;width:45%}.wcap_text_section_input_text{width:95%;font-size:1em}.wcap_popup_text_color_picker{width:40%;font-size:1em}.wcap_email_placeholder_section_table{width:100%}.wcap_email_placeholder_section_tr{width:100%}.wcap_email_placeholder_section_table_heading{float:left}.wcap_email_placeholder_section_text_field{float:left;width:80%}.wcap_email_placeholder_section_input_text{width:95%;font-size:1em}.wcap_button_section_table{width:100%}.wcap_button_section_tr{width:100%}.wcap_button_section_table_heading{float:left}.wcap_button_section_text_field{float:left;width:95%}.wcap_button_section_input_text{width:80%;font-size:1em}.wcap_button_color_section_tr{width:100%}.wcap_button_color_section_text_field{float:left;width:49%}.wcap_button_text_color_section_text_field{float:right;width:49%;margin-left:5px}.wcap_button_color_picker{width:46%;font-size:1em}.wcap_button_text_color_picker{width:46%;font-size:1em}.wcap_non_mandatory_modal_section_fields_div_table{width:100%}.wcap_non_mandatory_modal_section_fields_tr{width:100%}.wcap_non_mandatory_modal_section_fields_table_heading{float:left}.wcap_non_mandatory_modal_section_fields_text_field{float:left;width:95%}.wcap_non_mandatory_modal_section_fields_input_text{width:80%;font-size:1em}.wcap_container{position:relative;top:0;bottom:0;right:0;left:0;background-color:rgba(0,0,0,.7);overflow:auto;padding:0 10px;background-color:transparent}.wcap_popup_close{position:absolute;top:5px;right:5px;cursor:pointer;color:#bbb;z-index:100;padding:9px;background-size:18px;background-position:center;background-image:url(../../images/atc_cancel_icon.svg);background-repeat:no-repeat}.wcap_container .wcap_popup_heading_container{position:relative;background:#f8f9fb;border-bottom:1px solid #dedede;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;padding-top:18px;padding-bottom:16px;text-align:center}.wcap_container .wcap_popup_content{position:relative;z-index:2;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_content>*{padding-left:18px;padding-right:18px}.wcap_container .wcap_popup_icon{background-image:url(../../images/atc_popup_icon.svg);background-repeat:no-repeat;display:block;background-size:65px;background-position:center;background-color:#fff;background-repeat:no-repeat;border:2px solid #ecedf3;border-radius:50%;margin:0 auto;margin-right:5px;margin-left:2px;position:relative;height:98px;width:98px}.wcap_container .wcap_popup_heading{padding-top:10px;margin:0;font-family:"Lato",sans-serif!important;font-size:37px;font-weight:700;line-height:36px;color:#737f97;text-align:center;display:block;text-transform:initial}.wcap_container .wcap_popup_text{color:#bbc9d2;font-size:16px;line-height:20px;font-family:"Lato",sans-serif!important;text-align:center;text-transform:initial}.wcap_container .wcap_popup_form{position:relative;text-align:left;font-family:inherit;padding-top:26px;padding-bottom:15px;background-color:#FFFFFF!important}.wcap_container div{display:block}.wcap_container .wcap_popup_form:after{content:'';display:block;position:absolute;left:50%;top:-1px;width:0;height:0;margin-left:-16px}.wcap_container .wcap_popup_form:before{content:'';display:block;position:absolute;left:50%;top:-1px;width:0;height:0;margin-left:-16px}.wcap_container .wcap_popup_form:before{left:50%;margin-left:-17px;border-left:17px solid transparent;border-right:17px solid transparent;border-top:17px solid #dedede}.wcap_container .wcap_popup_form:after{border-left:16px solid transparent;border-right:16px solid transparent;border-top:16px solid #f8f9fb}.wcap_container .wcap_popup_input_field_container{position:relative}.wcap_container input[type="text"].wcap_popup_input{-webkit-appearance:none;background:#fff!important;border-width:1px!important;border-style:solid!important;border-color:#ccc;color:rgba(0,0,0,.75)!important;display:block;font-family:"Lato",sans-serif!important;font-size:18px!important;font-style:normal;line-height:20px!important;margin:0 0 16px 0;padding:8px;height:42px;width:100%;max-width:none!important;margin-bottom:10px;outline:none!important;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_button{position:relative;cursor:pointer;font-family:"Lato",sans-serif!important;font-size:20px;font-weight:400;line-height:20px;text-decoration:none;text-align:center;text-shadow:none;text-transform:initial;width:auto;height:auto;min-width:initial;outline:0;display:inline-block;background-color:#228fff;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:none!important;color:#fff;width:100%;margin:0;padding:10px 0;font-weight:700;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_wrapper{position:relative;top:50%;-webkit-backface-visibility:hidden;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px}.wcap_popup_wrapper{border:1px solid #EBEBEC}.wcap_container .wcap_popup_plus_sign{background-image:url(../../images/atc_plus_icon.png);background-repeat:no-repeat;background-color:#228fff;background-repeat:no-repeat;background-position:center;background-size:16px;border-radius:50%;height:24px;left:74px;top:-3px;position:absolute;width:24px}@media (min-width:530px){.wcap_container .wcap_popup_icon_container{position:relative;padding-right:6px;display:table-cell;vertical-align:middle;width:105px}.wcap_container .wcap_popup_text_container{display:table-cell;vertical-align:top}.wcap_popup_main_table_td_preview{margin-top:5%;position:-webkit-sticky;position:sticky;top:0;padding-top:75px}.wcap_container .wcap_popup_text{text-align:left}}.iris-picker{z-index:100;display:none;position:absolute!important;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.colorpickpreview{padding:3px;padding-left:20px;border:1px solid #ddd;border-right:0;margin-left:-3px}.wcap-enable-atc-modal{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-enable-atc-modal:focus{outline:none}.wcap-enable-atc-modal:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="on"]{box-shadow:inset 0 0 0 11px green}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="on"]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable="off"]{background:#ccc}.wcap-enable-atc-modal.wcap-loading{cursor:default;opacity:.5}.wcap_non_mandatory_text_wrapper{text-align:center}.wcap_non_mandatory_text_wrapper a{text-decoration:none}.wcap-switch-atc-modal-mandatory{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-switch-atc-modal-mandatory:focus{outline:none}.wcap-switch-atc-modal-mandatory:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory="on"]{box-shadow:inset 0 0 0 11px green}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory="on"]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory="off"]{background:#ccc}.wcap-switch-atc-modal-mandatory.wcap-loading{cursor:default;opacity:.5}.wcap_atc_between_fields_space{margin-top:2%}.wcap_reset_button{margin-left:5%!important}
|
1 |
+
.wcap_popup_main_div{width:100%;height:100%}.wcap_popup_main_table{width:100%;height:100%}.wcap_popup_main_table_tr{width:100%;height:100%}.wcap_popup_main_table_td_settings{float:left;width:52%}.wcap_popup_main_table_td_preview{float:right;width:45%}.wcap_heading_section_table{width:100%}.wcap_heading_section_tr{width:100%}.wcap_heading_section_table_heading{float:left}.wcap_heading_section_text_field{float:left;width:52%}.wcap_heading_section_text_field_color{float:right;width:45%}.wcap_heading_section_text_email{width:95%;font-size:1em}.wcap_popup_heading_color_picker{width:40%;font-size:1em}.wcap_text_section_table{width:100%}.wcap_text_section_tr{width:100%}.wcap_text_section_table_heading{float:left}.wcap_text_section_text_field{float:left;width:52%}.wcap_text_section_field_color{float:right;width:45%}.wcap_text_section_input_text{width:95%;font-size:1em}.wcap_popup_text_color_picker{width:40%;font-size:1em}.wcap_email_placeholder_section_table{width:100%}.wcap_email_placeholder_section_tr{width:100%}.wcap_email_placeholder_section_table_heading{float:left}.wcap_email_placeholder_section_text_field{float:left;width:80%}.wcap_email_placeholder_section_input_text{width:95%;font-size:1em}.wcap_button_section_table{width:100%}.wcap_button_section_tr{width:100%}.wcap_button_section_table_heading{float:left}.wcap_button_section_text_field{float:left;width:95%}.wcap_button_section_input_text{width:80%;font-size:1em}.wcap_button_color_section_tr{width:100%}.wcap_button_color_section_text_field{float:left;width:49%}.wcap_button_text_color_section_text_field{float:right;width:50%}.wcap_button_color_picker{width:46%;font-size:1em}.wcap_button_text_color_picker{width:46%;font-size:1em}.wcap_non_mandatory_modal_section_fields_div_table{width:100%}.wcap_non_mandatory_modal_section_fields_tr{width:100%}.wcap_non_mandatory_modal_section_fields_table_heading{float:left}.wcap_non_mandatory_modal_section_fields_text_field{float:left;width:95%}.wcap_non_mandatory_modal_section_fields_input_text{width:80%;font-size:1em}.wcap_template_name{width:200%;font-size:1em}.wcap_container{position:relative;bottom:0;right:0;left:0;background-color:rgba(0,0,0,.7);overflow:auto;background-color:transparent}.wcap_popup_close{position:absolute;top:5px;right:5px;cursor:pointer;color:#bbb;z-index:100;padding:9px;background-size:18px;background-position:center;background-image:url(../../images/atc_cancel_icon.svg);background-repeat:no-repeat}.wcap_container .wcap_popup_heading_container{position:relative;background:#f8f9fb;border-bottom:1px solid #dedede;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-ms-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;padding-top:18px;padding-bottom:16px;text-align:center}.wcap_container .wcap_popup_content{position:relative;z-index:2;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_content>*{padding-left:18px;padding-right:18px}.wcap_container .wcap_popup_icon{background-image:url(../../images/atc_popup_icon.svg);background-repeat:no-repeat;display:block;background-size:65px;background-position:center;background-color:#fff;background-repeat:no-repeat;border:2px solid #ecedf3;border-radius:50%;margin:0 auto;margin-right:5px;margin-left:2px;position:relative;height:98px;width:98px}.wcap_container .wcap_popup_heading{padding-top:10px;margin:0;font-family:Lato,sans-serif!important;font-size:37px;font-weight:700;line-height:36px;color:#737f97;text-align:center;display:block;text-transform:initial}.wcap_container .wcap_popup_text{color:#bbc9d2;font-size:16px;line-height:20px;font-family:Lato,sans-serif!important;text-align:center;text-transform:initial}.wcap_container .wcap_popup_form{position:relative;text-align:left;font-family:inherit;padding-top:26px;padding-bottom:15px;background-color:#fff!important}.wcap_container div{display:block}.wcap_container .wcap_popup_form:after{content:'';display:block;position:absolute;left:50%;top:-1px;width:0;height:0;margin-left:-16px}.wcap_container .wcap_popup_form:before{content:'';display:block;position:absolute;left:50%;top:-1px;width:0;height:0;margin-left:-16px}.wcap_container .wcap_popup_form:before{left:50%;margin-left:-17px;border-left:17px solid transparent;border-right:17px solid transparent;border-top:17px solid #dedede}.wcap_container .wcap_popup_form:after{border-left:16px solid transparent;border-right:16px solid transparent;border-top:16px solid #f8f9fb}.wcap_container .wcap_popup_input_field_container{position:relative}.wcap_container input[type=text].wcap_popup_input{-webkit-appearance:none;background:#fff!important;border-width:1px!important;border-style:solid!important;border-color:#ccc;color:rgba(0,0,0,.75)!important;display:block;font-family:Lato,sans-serif!important;font-size:18px!important;font-style:normal;line-height:20px!important;margin:0 0 16px 0;padding:8px;height:42px;width:100%;max-width:none!important;margin-bottom:10px;outline:0!important;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_button{position:relative;cursor:pointer;font-family:Lato,sans-serif!important;font-size:20px;font-weight:400;line-height:20px;text-decoration:none;text-align:center;text-shadow:none;text-transform:initial;width:auto;height:auto;min-width:initial;outline:0;display:inline-block;background-color:#228fff;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:none!important;color:#fff;width:100%;margin:0;padding:10px 0;font-weight:700;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}.wcap_container .wcap_popup_wrapper{position:relative;top:50%;-webkit-backface-visibility:hidden;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px}.wcap_popup_wrapper{border:1px solid #ebebec}.wcap_container .wcap_popup_plus_sign{background-image:url(../../images/atc_plus_icon.png);background-repeat:no-repeat;background-color:#228fff;background-repeat:no-repeat;background-position:center;background-size:16px;border-radius:50%;height:24px;left:74px;top:-3px;position:absolute;width:24px}@media (min-width:530px){.wcap_container .wcap_popup_icon_container{position:relative;padding-right:6px;display:table-cell;vertical-align:middle;width:105px}.wcap_container .wcap_popup_text_container{display:table-cell;vertical-align:top}.wcap_popup_main_table_td_preview{margin-top:-10%;position:-webkit-sticky;position:sticky;top:0;padding-top:75px}.wcap_container .wcap_popup_text{text-align:left}}.iris-picker{z-index:100;display:none;position:absolute!important;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.colorpickpreview{padding:5px;padding-left:20px;border:1px solid #ddd;border-right:0;margin-left:-3px}.wcap-enable-atc-modal{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-enable-atc-modal:focus{outline:0}.wcap-enable-atc-modal:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable=on]{box-shadow:inset 0 0 0 11px green}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable=on]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-enable-atc-modal[wcap-atc-switch-modal-enable=off]{background:#ccc}.wcap-enable-atc-modal.wcap-loading{cursor:default;opacity:.5}.wcap_non_mandatory_text_wrapper{text-align:center}.wcap_non_mandatory_text_wrapper a{text-decoration:none}.wcap-switch-atc-modal-mandatory{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-switch-atc-modal-mandatory:focus{outline:0}.wcap-switch-atc-modal-mandatory:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory=on]{box-shadow:inset 0 0 0 11px green}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory=on]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-switch-atc-modal-mandatory[wcap-atc-switch-modal-mandatory=off]{background:#ccc}.wcap-switch-atc-modal-mandatory.wcap-loading{cursor:default;opacity:.5}.wcap-switch-atc-capture-phone{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-switch-atc-capture-phone:focus{outline:0}.wcap-switch-atc-capture-phone:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-switch-atc-capture-phone[wcap-atc-capture-phone=on]{box-shadow:inset 0 0 0 11px green}.wcap-switch-atc-capture-phone[wcap-atc-capture-phone=on]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-switch-atc-capture-phone[wcap-atc-capture-phone=off]{background:#ccc}.wcap_phone_placeholder_section_table{width:100%}.wcap_phone_placeholder_section_tr{width:100%}.wcap_phone_placeholder_section_table_heading{float:left}.wcap_phone_placeholder_section_text_field{float:left;width:80%}.wcap_phone_placeholder_section_input_text{width:95%;font-size:1em}.wcap_atc_between_fields_space{margin-top:2%}.wcap_reset_button{margin-left:5%!important}.wcap_coupon_settings_div_table{margin-top:2%;width:100%;height:100%}.wcap_coupon_settings_div_table th{float:left}.wcap-auto-apply-coupons-atc{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-auto-apply-coupons-atc:focus{outline:0}.wcap-auto-apply-coupons-atc:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-auto-apply-coupons-atc[wcap-atc-switch-coupon-enable=on]{box-shadow:inset 0 0 0 11px green}.wcap-auto-apply-coupons-atc[wcap-atc-switch-coupon-enable=on]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-auto-apply-coupons-atc[wcap-atc-switch-coupon-enable=off]{background:#ccc}.wcap-countdown-timer-cart{cursor:pointer;text-indent:-999em;display:block;width:38px;height:22px;border-radius:30px;border:none;position:relative;box-sizing:border-box;-webkit-transition:all .3s ease;transition:all .3s ease;box-shadow:inset 0 0 0 0 transparent}.wcap-countdown-timer-cart:focus{outline:0}.wcap-countdown-timer-cart:before{border-radius:50%;background:#fff;content:'';position:absolute;display:block;width:18px;height:18px;top:2px;left:2px;-webkit-transition:all .15s ease;transition:all .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable=on]{box-shadow:inset 0 0 0 11px green}.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable=on]:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.wcap-countdown-timer-cart[wcap-atc-countdown-timer-cart-enable=off]{background:#ccc}#wcap_countdown_msg{width:70%}#wcap_countdown_msg_expired{width:70%}#wcap_atc_coupon_type{width:77%}.wcap_auto_apply_coupon_id{margin-bottom:-10px}.wcap_coupon_settings_div_table th{margin-top:15px}.options_group{margin-bottom:-10px}#wcap_non_mandatory_modal_section_fields_div{margin-bottom:20px}hr{background-color:#ddd;height:1px;border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#wcap_coupon_settings{margin-top:-10px}.wcap_atc_content th{font-weight:600;color:#23282d}#wcap_atc_discount_type{width:37%}#wcap_atc_discount_amount{width:37%}#wcap_atc_coupon_validity{width:37%}#wcap_atc_coupon_note{text-align:left;font-weight:400}#sr{width:5%}#wcap-rule-list{width:135%}.wcap_rule_condition_col{width:23%}#wcap_rules_email_addresses{margin-top:10px}td select.wcap_rule_value.wc-product-search{width:90%}td.wcap_rule_type_col{padding:0;width:25%}td.wcap_rule_value_col{width:30%}#wcap-rule-list{padding:0;margin-top:0}#wcap_rule_list_footer{padding:0;border:none}.wcap_rule_list_footer_tr:hover{background-color:transparent!important}.wcap-rule-list{border-collapse:collapse;width:100%}.wcap-rule-list td,.wcap-rule-list th{border:1px solid #ddd;padding:8px}.wcap-rule-list tr:nth-child(even){background-color:#f2f2f2}.wcap-rule-list tr:hover{background-color:#ddd}.wcap-rule-list th{padding-top:12px;padding-bottom:12px;text-align:left;background-color:#2775a6;color:#fff}.wcap_add_rule_button{border:1px solid;border-radius:5px;padding:5px 10px 5px 5px;text-decoration:none;margin-left:5px}.wcap_delete_rule_button{border:1px solid;border-radius:5px;padding:5px}
|
assets/js/admin/d3.v3.min.js
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var e=[],r=new c;return t.on=function(t,i){var u,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,u=e.indexOf(o)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function S(){ao.event.preventDefault()}function k(){for(var n,t=ao.event;n=t.sourceEvent;)t=n;return t}function N(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(i){try{var u=i.sourceEvent=ao.event;i.target=n,ao.event=i,t[i.type].apply(e,r)}finally{ao.event=u}}},t}function E(n){return ko(n,Co),n}function A(n){return"function"==typeof n?n:function(){return No(n,this)}}function C(n){return"function"==typeof n?n:function(){return Eo(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function i(){this.setAttribute(n,t)}function u(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ao.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?u:i}function L(n){return n.trim().replace(/\s+/g," ")}function q(n){return new RegExp("(?:^|\\s+)"+ao.requote(n)+"(?:\\s+|$)","g")}function T(n){return(n+"").trim().split(/^|\s+/)}function R(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=T(n).map(D);var i=n.length;return"function"==typeof t?r:e}function D(n){var t=q(n);return function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",L(i+" "+n))):e.setAttribute("class",L(i.replace(t," ")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function i(){this.style.setProperty(n,t,e)}function u(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?u:i}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e===zo&&t.documentElement.namespaceURI===zo?t.createElement(n):t.createElementNS(e,n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return"function"==typeof n?n:(n=ao.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return Ao(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t<l;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function i(){var i=l(t,co(arguments));r.call(this),this.addEventListener(n,this[o]=i,i.$=e),i._=t}function u(){var t,e=new RegExp("^__on([^.]+)"+ao.requote(n)+"$");for(var r in this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1],i,i.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),l=$;a>0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t<e&&(e=t.t),t=(n=t).n):t=n?n.n=t.n:oa=t.n;return aa=n,e}function Pn(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Un(n,t){var e=Math.pow(10,3*xo(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(l,a)),null!=(i=ya[e=n.charAt(++a)])&&(e=n.charAt(++a)),(u=A[e])&&(e=u(t,null==i?"e"===e?" ":"0":i)),o.push(e),l=a+1);return o.push(n.slice(l,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},i=e(r,n,t,0);if(i!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var u=null!=r.Z&&va!==Hn,o=new(u?Hn:va);return"j"in r?o.setFullYear(r.y,0,r.j):"W"in r||"U"in r?("w"in r||(r.w="W"in r?1:0),o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),u?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var i,u,o,a=0,l=t.length,c=e.length;l>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function $n(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Bn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Wn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Jn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Gn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.y=Qn(+r[0]),e+r[0].length):-1}function Kn(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Qn(n){return n+(n>68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ft(){}function st(n,t,e){var r=e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function ht(n,t){n&&wa.hasOwnProperty(n.type)&&wa[n.type](n,t)}function pt(n,t,e){var r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1],r[2]);t.lineEnd()}function gt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)pt(n[e],t,1);t.polygonEnd()}function vt(){function n(n,t){n*=Yo,t=t*Yo/2+Fo/4;var e=n-r,o=e>=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])<Uo&&xo(n[1]-t[1])<Uo}function St(n,t){n*=Yo;var e=Math.cos(t*=Yo);kt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function kt(n,t,e){++Ea,Ca+=(n-Ca)/Ea,za+=(t-za)/Ea,La+=(e-La)/Ea}function Nt(){function n(n,i){n*=Yo;var u=Math.cos(i*=Yo),o=u*Math.cos(n),a=u*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*a)*c+(c=r*o-t*l)*c+(c=t*a-e*o)*c),t*o+e*a+r*l);Aa+=c,qa+=c*(t+(t=o)),Ta+=c*(e+(e=a)),Ra+=c*(r+(r=l)),kt(t,e,r)}var t,e,r;ja.point=function(i,u){i*=Yo;var o=Math.cos(u*=Yo);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(u),ja.point=n,kt(t,e,r)}}function Et(){ja.point=St}function At(){function n(n,t){n*=Yo;var e=Math.cos(t*=Yo),o=e*Math.cos(n),a=e*Math.sin(n),l=Math.sin(t),c=i*l-u*a,f=u*o-r*l,s=r*a-i*o,h=Math.sqrt(c*c+f*f+s*s),p=r*o+i*a+u*l,g=h&&-nn(p)/h,v=Math.atan2(h,p);Da+=g*c,Pa+=g*f,Ua+=g*s,Aa+=v,qa+=v*(r+(r=o)),Ta+=v*(i+(i=a)),Ra+=v*(u+(u=l)),kt(r,i,u)}var t,e,r,i,u;ja.point=function(o,a){t=o,e=a,ja.point=n,o*=Yo;var l=Math.cos(a*=Yo);r=l*Math.cos(o),i=l*Math.sin(o),u=Math.sin(a),kt(r,i,u)},ja.lineEnd=function(){n(t,e),ja.lineEnd=Et,ja.point=St}}function Ct(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function zt(){return!0}function Lt(n,t,e,r,i){var u=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(wt(e,r)){i.lineStart();for(var a=0;t>a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r<t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function Tt(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Rt(n,t,e,r){return function(i,u){function o(t,e){var r=i(t,e);n(t=r[0],e=r[1])&&u.point(t,e)}function a(n,t){var e=i(n,t);d.point(e[0],e[1])}function l(){m.point=a,d.lineStart()}function c(){m.point=o,d.lineEnd()}function f(n,t){v.push([n,t]);var e=i(n,t);x.point(e[0],e[1])}function s(){x.lineStart(),v=[]}function h(){f(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),g.push(v),v=null,r)if(1&t){n=e[0];var i,r=n.length-1,o=-1;if(r>0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o<r;)u.point((i=n[o])[0],i[1]);u.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)<Uo?(n.point(e,r=(r+o)/2>0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)<Uo&&(e-=i*Uo),xo(u-a)<Uo&&(u-=a*Uo),r=Ft(e,r,u,o),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineEnd:function(){n.lineEnd(),e=r=NaN},clean:function(){return 2-t}}}function Ft(n,t,e,r){var i,u,o=Math.sin(n-e);return xo(o)>Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]<t[0]?Fo:-Fo;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else r.point(t[0],t[1])}function Ot(n,t){var e=n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,o=0;ka.reset();for(var a=0,l=t.length;l>a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)<Uo,C=A||Uo>E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)<Uo?k:N):k<=b[1]&&b[1]<=N:E>Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)<Uo?i>0?0:3:xo(r[0]-e)<Uo?i>0?2:1:xo(r[1]-t)<Uo?i>0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){
|
2 |
+
r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)<Uo||xo(r-h)<Uo?(r+h)/2:Math.atan2(_,b),E=n(N,k),A=E[0],C=E[1],z=A-t,L=C-e,q=M*z-m*L;(q*q/x>u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)<Uo?ce:(e.invert=function(n,t){var e=u-t;return[Math.atan2(n,e)/i,u-K(i)*Math.sqrt(n*n+e*e)]},e)}function Ne(n,t){return[n,Math.log(Math.tan(Fo/4+t/2))]}function Ee(n){var t,e=oe(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=u.apply(e,arguments);if(o===e){if(t=null==n){var a=Fo*r(),l=i();u([[l[0]-a,l[1]-a],[l[0]+a,l[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ae(n,t){return[Math.log(Math.tan(Fo/4+t/2)),-n]}function Ce(n){return n[0]}function ze(n){return n[1]}function Le(n){for(var t=n.length,e=[0,1],r=2,i=2;t>i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)<Uo&&xo(r-l.circle.cy)<Uo;)u=l.P,a.unshift(l),je(l),l=u;a.unshift(l),Be(l);for(var c=o;c.circle&&xo(e-c.circle.x)<Uo&&xo(r-c.circle.cy)<Uo;)o=c.N,a.push(c),je(c),c=o;a.push(c),Be(c);var f,s=a.length;for(f=1;s>f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)<Uo&&g-i>Uo?{x:s,y:xo(t-s)<Uo?e:g}:xo(i-g)<Uo&&h-r>Uo?{x:xo(e-g)<Uo?t:h,y:g}:xo(r-h)<Uo&&i-p>Uo?{x:h,y:xo(t-h)<Uo?e:p}:xo(i-p)<Uo&&r-s>Uo?{x:xo(e-p)<Uo?t:s,y:p}:null),u.site,null)),++l)}function Ve(n,t){return t.angle-n.angle}function Xe(){rr(this),this.x=this.y=this.arc=this.site=this.cy=null}function $e(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,i=n.site,u=e.site;if(r!==u){var o=i.x,a=i.y,l=r.x-o,c=r.y-a,f=u.x-o,s=u.y-a,h=2*(l*s-c*f);if(!(h>=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.y<M.y||y.y===M.y&&y.x<=M.x){if(!M.L){m=M.P;break}M=M.L}else{if(!M.R){m=M;break}M=M.R}ll.insert(m,y),m||(al=y)}}}}function Be(n){var t=n.circle;t&&(t.P||(al=t.N),ll.remove(t),fl.push(t),rr(t),n.circle=null)}function We(n){for(var t,e=il,r=Yt(n[0][0],n[0][1],n[1][0],n[1][1]),i=e.length;i--;)t=e[i],(!Je(t,n)||!r(t)||xo(t.a.x-t.b.x)<Uo&&xo(t.a.y-t.b.y)<Uo)&&(t.a=t.b=null,e.splice(i,1))}function Je(n,t){var e=n.b;if(e)return!0;var r,i,u=n.a,o=t[0][0],a=t[1][0],l=t[0][1],c=t[1][1],f=n.l,s=n.r,h=f.x,p=f.y,g=s.x,v=s.y,d=(h+g)/2,y=(p+v)/2;if(v===p){if(o>d||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.y<l)return}else u={x:d,y:c};e={x:d,y:l}}}else if(r=(h-g)/(v-p),i=y-r*d,-1>r||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y<l)return}else u={x:(c-i)/r,y:c};e={x:(l-i)/r,y:l}}else if(v>p){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.x<o)return}else u={x:a,y:r*a+i};e={x:o,y:r*o+i}}return n.a=u,n.b=e,!0}function Ge(n,t){this.l=n,this.r=t,this.a=this.b=null}function Ke(n,t,e,r){var i=new Ge(n,t);return il.push(i),e&&nr(i,n,t,e),r&&nr(i,t,n,r),ul[n.i].edges.push(new tr(i,n,t)),ul[t.i].edges.push(new tr(i,t,n)),i}function Qe(n,t,e){var r=new Ge(n,null);return r.a=t,r.b=e,il.push(r),r}function nr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function tr(n,t,e){var r=n.a,i=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(i.x-r.x,r.y-i.y):Math.atan2(r.x-i.x,i.y-r.y)}function er(){this._=null}function rr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ir(n,t){var e=t,r=t.R,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ur(n,t){var e=t,r=t.L,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function or(n){for(;n.L;)n=n.L;return n}function ar(n,t){var e,r,i,u=n.sort(lr).pop();for(il=[],ul=new Array(n.length),ol=new er,ll=new er;;)if(i=al,u&&(!i||u.y<i.y||u.y===i.y&&u.x<i.x))u.x===e&&u.y===r||(ul[u.i]=new Ye(u),He(u),e=u.x,r=u.y),u=n.pop();else{if(!i)break;Fe(i.arc)}t&&(We(t),Ze(t));var o={cells:ul,edges:il};return ol=ll=il=ul=null,o}function lr(n,t){return t.y-n.y||t.x-n.x}function cr(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function fr(n){return n.x}function sr(n){return n.y}function hr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function pr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var o=.5*(e+i),a=.5*(r+u),l=t.nodes;l[0]&&pr(n,l[0],e,r,o,a),l[1]&&pr(n,l[1],o,r,i,a),l[2]&&pr(n,l[2],e,a,o,u),l[3]&&pr(n,l[3],o,a,i,u)}}function gr(n,t,e,r,i,u,o){var a,l=1/0;return function c(n,f,s,h,p){if(!(f>u||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return u<t.length&&(i=t.slice(u),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?(t=l[0].x,function(n){return t(n)+""}):function(){return t}:(t=l.length,function(n){for(var e,r=0;t>r;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Zo,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Zo:0}function Fr(n,t){return n[0]*t[0]+n[1]*t[1]}function Hr(n){var t=Math.sqrt(Fr(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Or(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ir(n){return n.length?n.pop()+",":""}function Yr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push("translate(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else(t[0]||t[1])&&e.push("translate("+t+")")}function Zr(n,t,e,r){n!==t?(n-t>180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i<u;)e[(t=r[i]).i]=t.x(n);return e.join("")}}function Br(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Wr(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Jr(n){for(var t=n.source,e=n.target,r=Kr(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Gr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Kr(n,t){if(n===t)return n;for(var e=Gr(n),r=Gr(t),i=e.pop(),u=r.pop(),o=null;i===u;)o=i,i=e.pop(),u=r.pop();return o}function Qr(n){n.fixed|=2}function ni(n){n.fixed&=-7}function ti(n){n.fixed|=4,n.px=n.x,n.py=n.y}function ei(n){n.fixed&=-5}function ri(n,t,e){var r=0,i=0;if(n.charge=0,!n.leaf)for(var u,o=n.nodes,a=o.length,l=-1;++l<a;)u=o[l],null!=u&&(ri(u,t,e),n.charge+=u.charge,r+=u.charge*u.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var c=t*e[n.point.index];n.charge+=n.pointCharge=c,r+=c*n.point.x,i+=c*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function ii(n,t){return ao.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=fi,n}function ui(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(i=n.children)&&(r=i.length))for(var r,i;--r>=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++o<i;)e.push(u[o]);for(;null!=(n=r.pop());)t(n)}function ai(n){return n.children}function li(n){return n.value}function ci(n,t){return t.value-n.value}function fi(n){return ao.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function si(n){return n.x}function hi(n){return n.y}function pi(n,t,e){n.y0=t,n.y=e}function gi(n){return ao.range(n.length)}function vi(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function di(n){for(var t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.r<r.r?Si(r,i=a):Si(r=l,i),o--):(wi(r,u),i=u,t(u))}var y=(f+s)/2,m=(h+p)/2,M=0;for(o=0;c>o;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u<o;)Ci(i[u],t,e,r)}function zi(n,t,e){var r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var o=t.r+e.r,a=i*i+u*u;o*=o,r*=r;var l=.5+(r-o)/(2*a),c=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+l*i+c*u,e.y=n.y+l*u-c*i}else e.x=n.x+r,e.y=n.y}function Li(n,t){return n.parent==t.parent?1:2}function qi(n){var t=n.children;return t.length?t[0]:n.t}function Ti(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ri(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Di(n){for(var t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)i.push(e(n[o-1],n[o])),u.push(r(t[o-1],t[o]));return function(t){var e=ao.bisect(n,t,1,a)-1;return u[e](i[e](t))}}function Wi(n,t,e,r){function i(){var i=Math.min(n.length,t.length)>2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++<f;)for(var h=s-1;h>0;h--)o.push(u(c)*h);for(c=0;o[c]<a;c++);for(f=o.length;o[f-1]>l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++o<a;)i.has(u=r[o])||i.set(u,n.push(u));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(u=n,o=0,t={t:"range",a:arguments},e):u},e.rangePoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=(l+c)/2,0):(c-l)/(n.length-1+a);return u=r(l+f*a/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(n.length-1+a)|0;return u=r(l+Math.round(f*a/2+(c-l-(n.length-1+a)*f)/2),f),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=(s-f)/(n.length-a+2*l);return u=r(f+h*l,h),c&&u.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=Math.floor((s-f)/(n.length-a+2*l));return u=r(f+Math.round((s-f-(n.length-a)*h)/2),h),c&&u.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Yi(t.a[0])},e.copy=function(){return ou(n,t)},e.domain(n)}function au(n,t){function u(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ao.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ao.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(i).sort(e),u()):n},o.range=function(n){return arguments.length?(t=n,u()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[NaN,NaN]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return au(n,t)},u()}function lu(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(u*(t-n))))]}function i(){return u=e.length/(t-n),o=e.length-1,r}var u,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return arguments.length?(e=n,i()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s<h;)i.call(this,l=t[s],s)?f.push([+p.call(this,l,s),+g.call(this,l,s)]):f.length&&(o(),f=[]);return f.length&&o(),c.length?c.join(""):null}var e=Ce,r=ze,i=zt,u=xu,o=u.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(i=n,t):i},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?u=n:(u=Tl.get(n)||xu).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function xu(n){return n.length>1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return i.join("")}function Su(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return i.join("")}function ku(n,t){return n.length<4?xu(n):n[1]+Au(n.slice(1,-1),Cu(n,t))}function Nu(n,t){return n.length<3?bu(n):n[0]+Au((n.push(n[0]),n),Cu([n[n.length-2]].concat(n,[n[1]]),t))}function Eu(n,t){return n.length<3?xu(n):n[0]+Au(n,Cu(n,t))}function Au(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return xu(n);var e=n.length!=t.length,r="",i=n[0],u=n[1],o=t[0],a=o,l=1;if(e&&(r+="Q"+(u[0]-2*o[0]/3)+","+(u[1]-2*o[1]/3)+","+u[0]+","+u[1],i=n[1],l=2),t.length>1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c<t.length;c++,l++)u=n[l],a=t[c],r+="S"+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1]}if(e){var f=n[l];r+="Q"+(u[0]+2*a[0]/3)+","+(u[1]+2*a[1]/3)+","+f[0]+","+f[1]}return r}function Cu(n,t){for(var e,r=[],i=(1-t)/2,u=n[0],o=n[1],a=1,l=n.length;++a<l;)e=u,u=o,o=n[a],r.push([i*(o[0]-e[0]),i*(o[1]-e[1])]);return r}function zu(n){if(n.length<3)return xu(n);var t=1,e=n.length,r=n[0],i=r[0],u=r[1],o=[i,i,i,(r=n[1])[0]],a=[u,u,u,r[1]],l=[i,",",u,"L",Ru(Pl,o),",",Ru(Pl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Du(l,o,a);return n.pop(),l.push("L",r),l.join("")}function Lu(n){if(n.length<4)return xu(n);for(var t,e=[],r=-1,i=n.length,u=[0],o=[0];++r<3;)t=n[r],u.push(t[0]),o.push(t[1]);for(e.push(Ru(Pl,u)+","+Ru(Pl,o)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),o.shift(),o.push(t[1]),Du(e,u,o);return e.join("")}function qu(n){for(var t,e,r=-1,i=n.length,u=i+4,o=[],a=[];++r<4;)e=n[r%i],o.push(e[0]),a.push(e[1]);for(t=[Ru(Pl,o),",",Ru(Pl,a)],--r;++r<u;)e=n[r%i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Du(t,o,a);return t.join("")}function Tu(n,t){var e=n.length-1;if(e)for(var r,i,u=n[0][0],o=n[0][1],a=n[e][0]-u,l=n[e][1]-o,c=-1;++c<=e;)r=n[c],i=c/e,r[0]=t*r[0]+(1-t)*(u+i*a),r[1]=t*r[1]+(1-t)*(o+i*l);return zu(n)}function Ru(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Du(n,t,e){n.push("C",Ru(Rl,t),",",Ru(Rl,e),",",Ru(Dl,t),",",Ru(Dl,e),",",Ru(Pl,t),",",Ru(Pl,e))}function Pu(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Uu(n){for(var t=0,e=n.length-1,r=[],i=n[0],u=n[1],o=r[0]=Pu(i,u);++t<e;)r[t]=(o+(o=Pu(i=u,u=n[t+1])))/2;return r[t]=o,r}function ju(n){for(var t,e,r,i,u=[],o=Uu(n),a=-1,l=n.length-1;++a<l;)t=Pu(n[a],n[a+1]),xo(t)<Uo?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]-Io,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Ou(n){function t(t){function l(){v.push("M",a(n(y),s),f,c(n(d.reverse()),s),"Z")}for(var h,p,g,v=[],d=[],y=[],m=-1,M=t.length,x=En(e),b=En(i),_=e===r?function(){
|
3 |
+
return p}:En(r),w=i===u?function(){return g}:En(u);++m<M;)o.call(this,h=t[m],m)?(d.push([p=+x.call(this,h,m),g=+b.call(this,h,m)]),y.push([+_.call(this,h,m),+w.call(this,h,m)])):d.length&&(l(),d=[],y=[]);return d.length&&l(),v.length?v.join(""):null}var e=Ce,r=Ce,i=0,u=ze,o=zt,a=xu,l=a.key,c=a,f="L",s=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(i=u=n,t):u},t.y0=function(n){return arguments.length?(i=n,t):i},t.y1=function(n){return arguments.length?(u=n,t):u},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(l="function"==typeof n?a=n:(a=Tl.get(n)||xu).key,c=a.reverse||a,f=a.closed?"M":"L",t):l},t.tension=function(n){return arguments.length?(s=n,t):s},t}function Iu(n){return n.radius}function Yu(n){return[n.x,n.y]}function Zu(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Io;return[e*Math.cos(r),e*Math.sin(r)]}}function Vu(){return 64}function Xu(){return"circle"}function $u(n){var t=Math.sqrt(n/Fo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Bu(n){return function(){var t,e,r;(t=this[n])&&(r=t[e=t.active])&&(r.timer.c=null,r.timer.t=NaN,--t.count?delete t[e]:delete this[n],t.active+=.5,r.event&&r.event.interrupt.call(this,this.__data__,r.index))}}function Wu(n,t,e){return ko(n,Yl),n.namespace=t,n.id=e,n}function Ju(n,t,e,r){var i=n.id,u=n.namespace;return Y(n,"function"==typeof e?function(n,o,a){n[u][i].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[u][i].tween.set(t,e)}))}function Gu(n){return null==n&&(n=""),function(){this.textContent=n}}function Ku(n){return null==n?"__transition__":"__transition_"+n+"__"}function Qu(n,t,e,r,i){function u(n){var t=v.delay;return f.t=t+l,n>=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]<Kl[u]/i?u-1:u]:[tc,Ki(n,e)[2]]}return r.invert=function(t){return io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,io(+e+1),t).length}var u=r.domain(),o=Yi(u),a=null==n?i(o,10):"number"==typeof n&&i(o,n);return a&&(n=a[0],t=a[1]),r.domain(Xi(u,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&e>r&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&e>r&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&r>e&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&r>e&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u<o;)if(null!=(r=n[u])&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=n[u])&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<o;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=t.call(n,n[u],u))&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o<u;)i(e=+n[o])&&(r+=e);else for(;++o<u;)i(e=+t.call(n,n[o],o))&&(r+=e);return r},ao.mean=function(n,t){var e,u=0,o=n.length,a=-1,l=o;if(1===arguments.length)for(;++a<o;)i(e=r(n[a]))?u+=e:--l;else for(;++a<o;)i(e=r(t.call(n,n[a],a)))?u+=e:--l;return l?u/l:void 0},ao.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return u?i+u*(n[r]-i):i},ao.median=function(n,t){var u,o=[],a=n.length,l=-1;if(1===arguments.length)for(;++l<a;)i(u=r(n[l]))&&o.push(u);else for(;++l<a;)i(u=r(t.call(n,n[l],l)))&&o.push(u);return o.length?ao.quantile(o.sort(e),.5):void 0},ao.variance=function(n,t){var e,u,o=n.length,a=0,l=0,c=-1,f=0;if(1===arguments.length)for(;++c<o;)i(e=r(n[c]))&&(u=e-a,a+=u/++f,l+=u*(e-a));else for(;++c<o;)i(e=r(t.call(n,n[c],c)))&&(u=e-a,a+=u/++f,l+=u*(e-a));return f>1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t<e;)for(var i,u=-1,a=r[t]=new Array(i);++u<i;)a[u]=n[u][t];return r},ao.zip=function(){return ao.transpose(arguments)},ao.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ao.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ao.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ao.merge=function(n){for(var t,e,r,i=n.length,u=-1,o=0;++u<i;)o+=n[u].length;for(e=new Array(o);--i>=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)<t;)i.push(r/u);return i},ao.map=function(n,t){var e=new c;if(n instanceof c)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,i=-1,u=n.length;if(1===arguments.length)for(;++i<u;)e.set(i,n[i]);else for(;++i<u;)e.set(t.call(n,r=n[i],i),r)}else for(var o in n)e.set(o,n[o]);return e};var bo="__proto__",_o="\x00";l(c,{has:h,get:function(n){return this._[f(n)]},set:function(n,t){return this._[f(n)]=t},remove:p,keys:g,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:s(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t),this._[t])}}),ao.nest=function(){function n(t,o,a){if(a>=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p<g;)(h=d.get(l=v(f=o[p])))?h.push(f):d.set(l,[f]);return t?(f=t(),s=function(e,r){f.set(e,n(t,r,a))}):(f={},s=function(e,r){f[e]=n(t,r,a)}),d.forEach(s),f}function t(n,e){if(e>=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=M(n,t,t[e]);return n};var wo=["webkit","ms","moz","Moz","o","O"];ao.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o<a;){u.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var l=-1,c=r.length;++l<c;)(i=r[l])?(t.push(e=n.call(i,i.__data__,l,o)),e&&"__data__"in i&&(e.__data__=i.__data__)):t.push(null)}return E(u)},Co.selectAll=function(n){var t,e,r=[];n=C(n);for(var i=-1,u=this.length;++i<u;)for(var o=this[i],a=-1,l=o.length;++a<l;)(e=o[a])&&(r.push(t=co(n.call(e,e.__data__,a,i))),t.parentNode=e);return E(r)};var zo="http://www.w3.org/1999/xhtml",Lo={svg:"http://www.w3.org/2000/svg",xhtml:zo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ao.ns={prefix:Lo,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else for(t=e.getAttribute("class");++i<r;)if(!q(n[i]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},Co.style=function(n,e,r){var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++r<o;)(i=n[r])&&(y.has(d=t.call(i,i.__data__,r))?v[r]=i:y.set(d,i),m[r]=d);for(r=-1;++r<s;)(i=y.get(d=t.call(e,u=e[r],r)))?i!==!0&&(p[r]=i,i.__data__=u):g[r]=H(u),y.set(d,!0);for(r=-1;++r<o;)r in m&&y.get(m[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],u=e[r],i?(i.__data__=u,p[r]=i):g[r]=H(u);for(;s>r;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++u<o;)(i=r[u])&&(n[u]=i.__data__);return n}var a=Z([]),l=E([]),f=E([]);if("function"==typeof n)for(;++u<o;)e(r=this[u],n.call(r,r.parentNode.__data__,u));else for(;++u<o;)e(r=this[u],n);return l.enter=function(){return a},l.exit=function(){return f},l},Co.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},Co.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},Co.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Co.call=function(n){var t=co(arguments);return n.apply(t[0]=this,t),this},Co.empty=function(){return!this.node()},Co.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++a<l;){r=(i=this[a]).update,o.push(t=[]),t.parentNode=i.parentNode;for(var c=-1,f=i.length;++c<f;)(u=i[c])?(t.push(r[c]=e=n.call(i.parentNode,u.__data__,c,a)),e.__data__=u.__data__):t.push(null)}return E(o)},qo.insert=function(n,t){return arguments.length<2&&(t=V(this)),Co.insert.call(this,n,t)},ao.select=function(t){var e;return"string"==typeof t?(e=[No(t,fo)],e.parentNode=fo.documentElement):(e=[t],e.parentNode=n(t)),E([e])},ao.selectAll=function(n){var t;return"string"==typeof n?(t=co(Eo(n,fo)),t.parentNode=fo.documentElement):(t=co(n),t.parentNode=null),E([t])},Co.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}f=e+2;var r=n.charCodeAt(e+1);return 13===r?(i=!0,10===n.charCodeAt(e+2)&&++f):10===r&&(i=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;c>f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
|
4 |
+
shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++r<i;)ht(e[r].geometry,t)}},wa={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){pt(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)pt(e[r],t,0)},Polygon:function(n,t){gt(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)gt(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,i=e.length;++r<i;)ht(e[r],t)}};ao.geo.area=function(n){return Sa=0,ao.geo.stream(n,Na),Sa};var Sa,ka=new ft,Na={sphere:function(){Sa+=4*Fo},point:b,lineStart:b,lineEnd:b,polygonStart:function(){ka.reset(),Na.lineStart=vt},polygonEnd:function(){var n=2*ka;Sa+=0>n?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var f,s,h,p,g,v,d,y,m,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=i,b.lineStart=u,b.lineEnd=o,m=0,Na.polygonStart()},polygonEnd:function(){Na.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>ka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t<f.length-h;++t)p.push(n[a[f[t]][2]]);return p}var e=Ce,r=ze;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ao.geom.polygon=function(n){return ko(n,rl),n};var rl=ao.geom.polygon.prototype=[];rl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],i=0;++t<e;)n=r,r=this[t],i+=n[1]*r[0]-n[0]*r[1];return.5*i},rl.centroid=function(n){var t,e,r=-1,i=this.length,u=0,o=0,a=this[i-1];for(arguments.length||(n=-1/(6*this.area()));++r<i;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],u+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[u*n,o*n]},rl.clip=function(n){for(var t,e,r,i,u,o,a=De(n),l=-1,c=this.length-De(this),f=this[c-1];++l<c;){for(t=n.slice(),n.length=0,i=this[l],u=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Te(o,f,i)?(Te(u,f,i)||n.push(Re(u,o,f,i)),n.push(o)):Te(u,f,i)&&n.push(Re(u,o,f,i)),u=o;a&&n.push(n[0]),f=i}return n};var il,ul,ol,al,ll,cl=[],fl=[];Ye.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Ve),t.length},tr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},er.prototype={insert:function(n,t){var e,r,i;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=or(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(i=r.R,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.R&&(ir(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ur(this,r))):(i=r.L,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.L&&(ur(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ir(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,i=n.U,u=n.L,o=n.R;if(e=u?o?or(o):u:o,i?i.L===n?i.L=e:i.R=e:this._=e,u&&o?(r=e.C,e.C=n.C,e.L=u,u.U=e,e!==o?(i=e.U,e.U=n.U,n=e.R,i.L=n,e.R=o,o.U=e):(e.U=i,i=e,n=e.R)):(r=n.C,n=e),n&&(n.U=i),!r){if(n&&n.C)return void(n.C=!1);do{if(n===this._)break;if(n===i.L){if(t=i.R,t.C&&(t.C=!1,i.C=!0,ir(this,i),t=i.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ur(this,t),t=i.R),t.C=i.C,i.C=t.R.C=!1,ir(this,i),n=this._;break}}else if(t=i.L,t.C&&(t.C=!1,i.C=!0,ur(this,i),t=i.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ir(this,t),t=i.L),t.C=i.C,i.C=t.L.C=!1,ur(this,i),n=this._;break}t.C=!0,n=i,i=i.U}while(!n.C);n&&(n.C=!1)}}},ao.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],i=a[0][1],u=a[1][0],o=a[1][1];return ar(e(n),a).cells.forEach(function(e,a){var l=e.edges,c=e.site,f=t[a]=l.length?l.map(function(n){var t=n.start();return[t.x,t.y]}):c.x>=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l<c;)i=f,u=s,f=a[l].edge,s=f.l===o?f.r:f.l,r<u.i&&r<s.i&&cr(o,u,s)<0&&t.push([n[r],n[u.i],n[s.i]])}),t},t.x=function(n){return arguments.length?(u=En(r=n),t):r},t.y=function(n){return arguments.length?(o=En(i=n),t):i},t.clipExtent=function(n){return arguments.length?(a=null==n?sl:n,t):a===sl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===sl?null:a&&a[1]},t)};var sl=[[-1e6,-1e6],[1e6,1e6]];ao.geom.delaunay=function(n){return ao.geom.voronoi().triangles(n)},ao.geom.quadtree=function(n,t,e,r,i){function u(n){function u(n,t,e,r,i,u,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var l=n.x,f=n.y;if(null!=l)if(xo(l-e)+xo(f-r)<.01)c(n,t,e,r,i,u,o,a);else{var s=n.point;n.x=n.y=n.point=null,c(n,s,l,f,i,u,o,a),c(n,t,e,r,i,u,o,a)}else n.x=e,n.y=r,n.point=t}else c(n,t,e,r,i,u,o,a)}function c(n,t,e,r,i,o,a,l){var c=.5*(i+a),f=.5*(o+l),s=e>=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.x<v&&(v=f.x),f.y<d&&(d=f.y),f.x>y&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p<g;)u(k,n[p],s[p],h[p],v,d,y,m);--p}else n.forEach(k.add);return s=h=n=f=null,k}var o,a=Ce,l=ze;return(o=arguments.length)?(a=fr,l=sr,3===o&&(i=e,r=t,e=t=0),u(n)):(u.x=function(n){return arguments.length?(a=n,u):a},u.y=function(n){return arguments.length?(l=n,u):l},u.extent=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],i=+n[1][1]),u):null==t?null:[[t,e],[r,i]]},u.size=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=e=0,r=+n[0],i=+n[1]),u):null==t?null:[r-t,i-e]},u)},ao.interpolateRgb=vr,ao.interpolateObject=dr,ao.interpolateNumber=yr,ao.interpolateString=mr;var hl=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,pl=new RegExp(hl.source,"g");ao.interpolate=Mr,ao.interpolators=[function(n,t){var e=typeof t;return("string"===e?ua.has(t.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(t)?vr:mr:t instanceof an?vr:Array.isArray(t)?xr:"object"===e&&isNaN(t)?dr:yr)(n,t)}],ao.interpolateArray=xr;var gl=function(){return m},vl=ao.map({linear:gl,poly:Er,quad:function(){return Sr},cubic:function(){return kr},sin:function(){return Ar},exp:function(){return Cr},circle:function(){return zr},elastic:Lr,back:qr,bounce:function(){return Tr}}),dl=ao.map({"in":m,out:_r,"in-out":wr,"out-in":function(n){return wr(_r(n))}});ao.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Jr(n[e]));return t}},ao.layout.chord=function(){function n(){var n,c,s,h,p,g={},v=[],d=ao.range(u),y=[];for(e=[],r=[],n=0,h=-1;++h<u;){for(c=0,p=-1;++p<u;)c+=i[h][p];v.push(c),y.push(ao.range(u)),n+=c}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&y.forEach(function(n,t){n.sort(function(n,e){return a(i[t][n],i[t][e])})}),n=(Ho-f*u)/n,c=0,h=-1;++h<u;){for(s=c,p=-1;++p<u;){var m=d[h],M=y[m][p],x=i[m][M],b=c,_=c+=x*n;g[m+"-"+M]={index:m,subindex:M,startAngle:b,endAngle:_,value:x}}r[m]={index:m,startAngle:s,endAngle:c,value:v[m]},c+=f}for(h=-1;++h<u;)for(p=h-1;++p<u;){var w=g[h+"-"+p],S=g[p+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}l&&t()}function t(){e.sort(function(n,t){return l((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,i,u,o,a,l,c={},f=0;return c.matrix=function(n){return arguments.length?(u=(i=n)&&i.length,e=r=null,c):i},c.padding=function(n){return arguments.length?(f=n,e=r=null,c):f},c.sortGroups=function(n){return arguments.length?(o=n,e=r=null,c):o},c.sortSubgroups=function(n){return arguments.length?(a=n,e=null,c):a},c.sortChords=function(n){return arguments.length?(l=n,e&&t(),c):l},c.chords=function(){return e||n(),e},c.groups=function(){return r||n(),r},c},ao.layout.force=function(){function n(n){return function(t,e,r,i){if(t.point!==n){var u=t.cx-n.x,o=t.cy-n.y,a=i-e,l=u*u+o*o;if(l>a*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++l<f;)if(!isNaN(o=a[l][n]))return o;return Math.random()*r}var t,e,r,i=M.length,c=x.length,s=f[0],v=f[1];for(t=0;i>t;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++c<o;)n(a=u[c],e,l=a.value*r,i),e+=l}}function t(n){var e=n.children,r=0;if(e&&(i=e.length))for(var i,u=-1;++u<i;)r=Math.max(r,t(e[u]));return 1+r}function e(e,u){var o=r.call(this,e,u);return n(o[0],0,i[0],i[1]/t(o[0])),o}var r=ao.layout.hierarchy(),i=[1,1];return e.size=function(n){return arguments.length?(i=n,e):i},ii(e,r)},ao.layout.pie=function(){function n(o){var a,l=o.length,c=o.map(function(e,r){return+t.call(n,e,r)}),f=+("function"==typeof r?r.apply(this,arguments):r),s=("function"==typeof i?i.apply(this,arguments):i)-f,h=Math.min(Math.abs(s)/l,+("function"==typeof u?u.apply(this,arguments):u)),p=h*(0>s?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u<p;)o=l[u]=[],o.dx=s[u+1]-(o.x=s[u]),o.y=0;if(p>0)for(u=-1;++u<h;)a=c[u],a>=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.x<p.x&&(p=n),n.x>g.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++i<u;)r=(e=n[i]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(u>e&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0;
|
5 |
+
if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++u<o;)i=n[u],i.x=a,i.y=c,i.dy=f,a+=i.dx=Math.min(e.x+e.dx-a,f?l(i.area/f):0);i.z=!0,i.dx+=e.x+e.dx-a,e.y+=f,e.dy-=f}else{for((r||f>e.dx)&&(f=e.dx);++u<o;)i=n[u],i.x=a,i.y=c,i.dx=f,c+=i.dy=Math.min(e.y+e.dy-c,f?l(i.area/f):0);i.z=!1,i.dy+=e.y+e.dy-c,e.x+=f,e.dx-=f}}function u(r){var i=o||a(r),u=i[0];return u.x=u.y=0,u.value?(u.dx=c[0],u.dy=c[1]):u.dx=u.dy=0,o&&a.revalue(u),n([u],u.dx*u.dy/u.value),(o?e:t)(u),h&&(o=i),i}var o,a=ao.layout.hierarchy(),l=Math.round,c=[1,1],f=null,s=Oi,h=!1,p="squarify",g=.5*(1+Math.sqrt(5));return u.size=function(n){return arguments.length?(c=n,u):c},u.padding=function(n){function t(t){var e=n.call(u,t,t.depth);return null==e?Oi(t):Ii(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Ii(t,n)}if(!arguments.length)return f;var r;return s=null==(f=n)?Oi:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,u},u.round=function(n){return arguments.length?(l=n?Math.round:Number,u):l!=Number},u.sticky=function(n){return arguments.length?(h=n,o=null,u):h},u.ratio=function(n){return arguments.length?(g=n,u):g},u.mode=function(n){return arguments.length?(p=n+"",u):p},ii(u,a)},ao.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++a<l;){u.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(e=c[f])&&Qu(e,f,i,r,o),t.push(e)}return Wu(u,i,r)},Co.interrupt=function(n){return this.each(null==n?Il:Bu(Ku(n)))};var Hl,Ol,Il=Bu(Ku()),Yl=[],Zl=0;Yl.call=Co.call,Yl.empty=Co.empty,Yl.node=Co.node,Yl.size=Co.size,ao.transition=function(n,t){return n&&n.transition?Hl?n.transition(t):n:ao.selection().transition(n)},ao.transition.prototype=Yl,Yl.select=function(n){var t,e,r,i=this.id,u=this.namespace,o=[];n=A(n);for(var a=-1,l=this.length;++a<l;){o.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(r=c[f])&&(e=n.call(r,r.__data__,f,a))?("__data__"in r&&(e.__data__=r.__data__),Qu(e,f,u,i,r[u][i]),t.push(e)):t.push(null)}return Wu(o,u,i)},Yl.selectAll=function(n){var t,e,r,i,u,o=this.id,a=this.namespace,l=[];n=C(n);for(var c=-1,f=this.length;++c<f;)for(var s=this[c],h=-1,p=s.length;++h<p;)if(r=s[h]){u=r[a][o],e=n.call(r,r.__data__,h,c),l.push(t=[]);for(var g=-1,v=e.length;++g<v;)(i=e[g])&&Qu(i,g,a,o,u),t.push(i)}return Wu(l,a,o)},Yl.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]<M[0])],L[1]=h[+(n[1]<M[1])]):M=null),E&&y(n,c,0)&&(r(k),t=!0),A&&y(n,f,1)&&(i(k),t=!0),t&&(e(k),w({type:"brush",mode:C?"move":"resize"}))}function y(n,t,e){var r,i,u=Zi(t),l=u[0],c=u[1],f=L[e],v=e?h:s,d=v[1]-v[0];return C&&(l-=f,c-=d+f),r=(e?g:p)?Math.max(l,Math.min(c,n[e])):n[e],C?i=(r+=f)+d:(M&&(f=Math.max(l,Math.min(c,2*M[e]-r))),r>f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}();
|
assets/js/admin/wcal_adv_dashboard.js
CHANGED
@@ -34,4 +34,170 @@ jQuery( document ).ready( function() {
|
|
34 |
changeYear: true,
|
35 |
dateFormat: "yy-mm-dd" } );
|
36 |
|
37 |
-
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
changeYear: true,
|
35 |
dateFormat: "yy-mm-dd" } );
|
36 |
|
37 |
+
} );
|
38 |
+
|
39 |
+
var margin = {top: 20, right: 40, bottom: 80, left: 40},
|
40 |
+
width = 980 - margin.left - margin.right,
|
41 |
+
height = 500 - margin.top - margin.bottom;
|
42 |
+
|
43 |
+
var x0 = d3.scale.ordinal().rangeRoundBands([0, width], .4);
|
44 |
+
var x1 = d3.scale.ordinal();
|
45 |
+
|
46 |
+
var y0 = d3.scale.linear().range([height, 0]);
|
47 |
+
var y1 = d3.scale.linear().range([height, 0]);
|
48 |
+
|
49 |
+
var color = d3.scale.ordinal().range(["#98abc5", "#d0743c"]);
|
50 |
+
|
51 |
+
var xAxis = d3.svg.axis()
|
52 |
+
.scale(x0)
|
53 |
+
.orient("bottom")
|
54 |
+
.ticks(5);
|
55 |
+
|
56 |
+
var yAxisLeft = d3.svg.axis()
|
57 |
+
.scale(y0)
|
58 |
+
.orient("left")
|
59 |
+
.tickFormat(function(d) { return parseInt(d) });
|
60 |
+
|
61 |
+
var yAxisRight = d3.svg.axis()
|
62 |
+
.scale(y1)
|
63 |
+
.orient("right")
|
64 |
+
.tickFormat(function(d) { return parseInt(d) });
|
65 |
+
|
66 |
+
var svg = d3.select(".chartgraph").append("svg")
|
67 |
+
.attr("width", width + margin.left + margin.right)
|
68 |
+
.attr("height", height + margin.top + margin.bottom)
|
69 |
+
.append("g")
|
70 |
+
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
|
71 |
+
|
72 |
+
var data = wcal_graph_data.data;
|
73 |
+
console.log( data );
|
74 |
+
var dataset = [];
|
75 |
+
|
76 |
+
var keyNames = ['abandoned_amount','recovered_amount'];
|
77 |
+
|
78 |
+
for(i = 0; i < Object.keys(data).length; i++ ) {
|
79 |
+
var date = Object.keys(data)[i];
|
80 |
+
dataset[i] = {
|
81 |
+
date: date,
|
82 |
+
values: [
|
83 |
+
{name: 'Abandoned Revenue', value: data[date][keyNames[0]]},
|
84 |
+
{name: 'Recovered Revenue', value: data[date][keyNames[1]]}
|
85 |
+
]
|
86 |
+
};
|
87 |
+
}
|
88 |
+
|
89 |
+
x0.domain(dataset.map(function(d) { return d.date; }));
|
90 |
+
x1.domain(['Abandoned Revenue','Recovered Revenue']).rangeRoundBands([0, x0.rangeBand()]);
|
91 |
+
|
92 |
+
y0.domain([0, d3.max(dataset, function(d) { return d.values[0].value; })]);
|
93 |
+
y1.domain([0, d3.max(dataset, function(d) { return d.values[1].value; })]);
|
94 |
+
|
95 |
+
// Ticks on x-axis and y-axis
|
96 |
+
svg.append("g")
|
97 |
+
.attr("class", "x axis")
|
98 |
+
.attr("transform", "translate(0," + height + ")")
|
99 |
+
.call(xAxis)
|
100 |
+
.selectAll("text")
|
101 |
+
.attr("y", 0)
|
102 |
+
.attr("x", 9)
|
103 |
+
.attr("dy", ".35em")
|
104 |
+
.attr("transform", "rotate(45)")
|
105 |
+
.style("text-anchor", "start");
|
106 |
+
|
107 |
+
svg.append("g")
|
108 |
+
.attr("class", "y0 axis")
|
109 |
+
.call(yAxisLeft)
|
110 |
+
.append("text")
|
111 |
+
.attr("transform", "rotate(-90)")
|
112 |
+
.attr("y", 6)
|
113 |
+
.attr("dy", ".71em")
|
114 |
+
.style("text-anchor", "end")
|
115 |
+
.style("fill", "#98abc5")
|
116 |
+
.text("Abandoned Revenue");
|
117 |
+
|
118 |
+
svg.select('.y0.axis')
|
119 |
+
.selectAll('.tick')
|
120 |
+
.style("fill","#98abc5")
|
121 |
+
.append("text");
|
122 |
+
|
123 |
+
svg.append("g")
|
124 |
+
.attr("class", "y1 axis")
|
125 |
+
.attr("transform", "translate(" + width + ",0)")
|
126 |
+
.call(yAxisRight)
|
127 |
+
.append("text")
|
128 |
+
.attr("transform", "rotate(-90)")
|
129 |
+
.attr("y", -16)
|
130 |
+
.attr("dy", ".71em")
|
131 |
+
.style("text-anchor", "end")
|
132 |
+
.style("fill", "#d0743c")
|
133 |
+
.text("Recovered Revenue");
|
134 |
+
|
135 |
+
svg.select('.y1.axis')
|
136 |
+
.selectAll('.tick')
|
137 |
+
.style("fill","#d0743c");
|
138 |
+
// End ticks
|
139 |
+
|
140 |
+
var graph = svg.selectAll(".date")
|
141 |
+
.data(dataset)
|
142 |
+
.enter()
|
143 |
+
.append("g")
|
144 |
+
.attr("class", "g")
|
145 |
+
.attr("transform", function(d) { return "translate(" + x0(d.date) + ",0)"; });
|
146 |
+
|
147 |
+
graph.selectAll("rect")
|
148 |
+
.data(function(d) { return d.values; })
|
149 |
+
.enter()
|
150 |
+
.append("rect")
|
151 |
+
.attr("width", x1.rangeBand())
|
152 |
+
.attr("x", function(d) { return x1(d.name); })
|
153 |
+
.attr("y", function(d) { return y0(d.value); })
|
154 |
+
.attr("height", function(d) { return height - y0(d.value); })
|
155 |
+
.style("fill", function(d) { return color(d.name); });
|
156 |
+
|
157 |
+
graph.selectAll("rect")
|
158 |
+
.on("mouseover", function(d){
|
159 |
+
|
160 |
+
var delta = d.value;
|
161 |
+
|
162 |
+
var xCord = d3.select(this.parentNode).attr("transform");
|
163 |
+
xCord = xCord.replace('translate(', '');
|
164 |
+
xCord = xCord.replace(',0)', '');
|
165 |
+
|
166 |
+
var xPos = parseFloat(xCord) + parseFloat(d3.select(this).attr("x"));
|
167 |
+
var yPos = parseFloat(d3.select(this).attr("y"));
|
168 |
+
var height = parseFloat(d3.select(this).attr("height"))
|
169 |
+
|
170 |
+
d3.select(this).attr("stroke","blue").attr("stroke-width",0.8);
|
171 |
+
|
172 |
+
svg.append("text")
|
173 |
+
.attr("x",xPos)
|
174 |
+
.attr("y",yPos +height/2)
|
175 |
+
.attr("class","graph-tooltip")
|
176 |
+
.text(d.name +": "+ delta);
|
177 |
+
|
178 |
+
})
|
179 |
+
.on("mouseout",function(){
|
180 |
+
svg.select(".graph-tooltip").remove();
|
181 |
+
d3.select(this).attr("stroke","pink").attr("stroke-width",0.2);
|
182 |
+
})
|
183 |
+
|
184 |
+
// Legend
|
185 |
+
var legend = svg.selectAll(".legend")
|
186 |
+
.data(['Abandoned Revenue','Recovered Revenue'].slice())
|
187 |
+
.enter()
|
188 |
+
.append("g")
|
189 |
+
.attr("class", "legend")
|
190 |
+
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
|
191 |
+
|
192 |
+
legend.append("rect")
|
193 |
+
.attr("x", width - 48)
|
194 |
+
.attr("width", 18)
|
195 |
+
.attr("height", 18)
|
196 |
+
.style("fill", color);
|
197 |
+
|
198 |
+
legend.append("text")
|
199 |
+
.attr("x", width - 54)
|
200 |
+
.attr("y", 9)
|
201 |
+
.attr("dy", ".35em")
|
202 |
+
.style("text-anchor", "end")
|
203 |
+
.text(function(d) { return d; });
|
assets/js/admin/wcal_adv_dashboard.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(){jQuery.datepicker.setDefaults(jQuery.datepicker.regional["en-GB"]),jQuery("#wcal_start_date").datepicker({onSelect:function(
|
1 |
+
jQuery(document).ready(function(){jQuery.datepicker.setDefaults(jQuery.datepicker.regional["en-GB"]),jQuery("#wcal_start_date").datepicker({onSelect:function(t){jQuery("#wcal_end_date").datepicker("option","minDate",t),setTimeout(function(){jQuery("#wcal_end_date").datepicker("show")},16)},maxDate:"0",changeMonth:!0,changeYear:!0,dateFormat:"yy-mm-dd"}),jQuery("#duration_select").change(function(){jQuery("#duration_select").val();"custom"==jQuery(this).val()&&(document.getElementById("wcal_start_end_date_div").style.display="block"),"custom"!=jQuery(this).val()&&(document.getElementById("wcal_start_end_date_div").style.display="none")})}),jQuery(document).ready(function(){jQuery("#wcal_end_date").datepicker({maxDate:"0",changeMonth:!0,changeYear:!0,dateFormat:"yy-mm-dd"})});var margin={top:20,right:40,bottom:80,left:40},width=980-margin.left-margin.right,height=500-margin.top-margin.bottom,x0=d3.scale.ordinal().rangeRoundBands([0,width],.4),x1=d3.scale.ordinal(),y0=d3.scale.linear().range([height,0]),y1=d3.scale.linear().range([height,0]),color=d3.scale.ordinal().range(["#98abc5","#d0743c"]),xAxis=d3.svg.axis().scale(x0).orient("bottom").ticks(5),yAxisLeft=d3.svg.axis().scale(y0).orient("left").tickFormat(function(t){return parseInt(t)}),yAxisRight=d3.svg.axis().scale(y1).orient("right").tickFormat(function(t){return parseInt(t)}),svg=d3.select(".chartgraph").append("svg").attr("width",width+margin.left+margin.right).attr("height",height+margin.top+margin.bottom).append("g").attr("transform","translate("+margin.left+","+margin.top+")"),data=wcal_graph_data.data;console.log(data);var dataset=[],keyNames=["abandoned_amount","recovered_amount"];for(i=0;i<Object.keys(data).length;i++){var date=Object.keys(data)[i];dataset[i]={date:date,values:[{name:"Abandoned Revenue",value:data[date][keyNames[0]]},{name:"Recovered Revenue",value:data[date][keyNames[1]]}]}}x0.domain(dataset.map(function(t){return t.date})),x1.domain(["Abandoned Revenue","Recovered Revenue"]).rangeRoundBands([0,x0.rangeBand()]),y0.domain([0,d3.max(dataset,function(t){return t.values[0].value})]),y1.domain([0,d3.max(dataset,function(t){return t.values[1].value})]),svg.append("g").attr("class","x axis").attr("transform","translate(0,"+height+")").call(xAxis).selectAll("text").attr("y",0).attr("x",9).attr("dy",".35em").attr("transform","rotate(45)").style("text-anchor","start"),svg.append("g").attr("class","y0 axis").call(yAxisLeft).append("text").attr("transform","rotate(-90)").attr("y",6).attr("dy",".71em").style("text-anchor","end").style("fill","#98abc5").text("Abandoned Revenue"),svg.select(".y0.axis").selectAll(".tick").style("fill","#98abc5").append("text"),svg.append("g").attr("class","y1 axis").attr("transform","translate("+width+",0)").call(yAxisRight).append("text").attr("transform","rotate(-90)").attr("y",-16).attr("dy",".71em").style("text-anchor","end").style("fill","#d0743c").text("Recovered Revenue"),svg.select(".y1.axis").selectAll(".tick").style("fill","#d0743c");var graph=svg.selectAll(".date").data(dataset).enter().append("g").attr("class","g").attr("transform",function(t){return"translate("+x0(t.date)+",0)"});graph.selectAll("rect").data(function(t){return t.values}).enter().append("rect").attr("width",x1.rangeBand()).attr("x",function(t){return x1(t.name)}).attr("y",function(t){return y0(t.value)}).attr("height",function(t){return height-y0(t.value)}).style("fill",function(t){return color(t.name)}),graph.selectAll("rect").on("mouseover",function(t){var e=t.value,a=d3.select(this.parentNode).attr("transform");a=(a=a.replace("translate(","")).replace(",0)","");var r=parseFloat(a)+parseFloat(d3.select(this).attr("x")),n=parseFloat(d3.select(this).attr("y")),d=parseFloat(d3.select(this).attr("height"));d3.select(this).attr("stroke","blue").attr("stroke-width",.8),svg.append("text").attr("x",r).attr("y",n+d/2).attr("class","graph-tooltip").text(t.name+": "+e)}).on("mouseout",function(){svg.select(".graph-tooltip").remove(),d3.select(this).attr("stroke","pink").attr("stroke-width",.2)});var legend=svg.selectAll(".legend").data(["Abandoned Revenue","Recovered Revenue"].slice()).enter().append("g").attr("class","legend").attr("transform",function(t,e){return"translate(0,"+20*e+")"});legend.append("rect").attr("x",width-48).attr("width",18).attr("height",18).style("fill",color),legend.append("text").attr("x",width-54).attr("y",9).attr("dy",".35em").style("text-anchor","end").text(function(t){return t});
|
includes/admin/class-wcap-add-cart-popup-modal.php
CHANGED
@@ -27,26 +27,48 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
27 |
public static function wcap_add_to_cart_popup_settings() {
|
28 |
|
29 |
$wcap_atc_enabled = get_option( 'wcap_atc_enable_modal', '' );
|
30 |
-
$wcap_disabled_field = '';
|
31 |
-
|
32 |
-
|
33 |
-
$wcap_disabled_field = 'disabled="disabled"';
|
34 |
-
}
|
35 |
?>
|
36 |
|
37 |
<div id = "wcap_popup_main_div" class = "wcap_popup_main_div ">
|
38 |
<table id = "wcap_popup_main_table" class = "wcap_popup_main_table test_borders">
|
39 |
<tr id = "wcap_popup_main_table_tr" class = "wcap_popup_main_table_tr test_borders">
|
40 |
<td id = "wcap_popup_main_table_td_settings" class = "wcap_popup_main_table_td_settings test_borders">
|
41 |
-
<?php self::wcap_enable_modal_section( $
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
<div class = "wcap_atc_all_fields_container" >
|
44 |
-
<?php self::wcap_add_heading_section( $
|
45 |
-
<?php self::wcap_add_text_section( $
|
46 |
-
<?php self::wcap_email_placeholder_section( $
|
47 |
-
<?php self::wcap_button_section( $
|
48 |
-
<?php self::wcap_mandatory_modal_section( $
|
49 |
-
<?php self::wcap_non_mandatory_modal_section_field( $
|
|
|
|
|
|
|
|
|
50 |
</div>
|
51 |
</td>
|
52 |
<td id = "wcap_popup_main_table_td_preview" class = "wcap_popup_main_table_td_preview test_borders">
|
@@ -78,7 +100,7 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
78 |
*/
|
79 |
public static function wcap_enable_modal_section( $wcap_disabled_field ) {
|
80 |
?>
|
81 |
-
<table class = "wcap_enable_atc wcap_atc_between_fields_space" id = "wcap_enable_atc" >
|
82 |
<th id = "wcap_button_section_table_heading" class = "wcap_button_section_table_heading"> <?php echo esc_html_e( 'Enable Add to cart popup modal', 'woocommerce-abandoned-cart' ); ?> </th>
|
83 |
<tr>
|
84 |
<td>
|
@@ -90,73 +112,26 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
90 |
<?php
|
91 |
}
|
92 |
|
93 |
-
/**
|
94 |
-
* Adds a multi select searchable dropdown from where
|
95 |
-
* the admin can select custom pages on which the
|
96 |
-
* Add to Cart Popup modal should be displayed.
|
97 |
-
*
|
98 |
-
* @param string $wcap_disabled_field It will indicate if field need to be disabled or not.
|
99 |
-
* @since 7.10.0
|
100 |
-
*/
|
101 |
-
public static function wcap_custom_pages_section( $wcap_disabled_field ) {
|
102 |
-
|
103 |
-
global $woocommerce;
|
104 |
-
$post_title_array = array();
|
105 |
-
?>
|
106 |
-
|
107 |
-
<table class = "wcap_custom_pages wcap_atc_between_fields_space" id = "wcap_custom_pages" >
|
108 |
-
<tr>
|
109 |
-
<th id="wcap_button_section_table_heading" class="wcap_button_section_table_heading"> <?php echo esc_html_e( 'Custom pages to display the pop-up modal on', 'woocommerce-abandoned-cart' ); ?> </th>
|
110 |
-
</tr>
|
111 |
-
<tr>
|
112 |
-
<td>
|
113 |
-
<?php
|
114 |
-
$custom_pages = get_option( 'wcap_custom_pages_list' );
|
115 |
-
?>
|
116 |
-
<?php if ( $woocommerce->version >= '3.0' ) { ?>
|
117 |
-
<select style="width:80%" multiple="multiple" class="wcap_page_select wc-product-search" name="wcap_page_select[]" data-placeholder='<?php esc_attr__( 'Search for a Page…', 'woocommerce-abandoned-cart' ); ?>' data-action='wcap_json_find_pages' disabled>
|
118 |
-
</select>
|
119 |
-
<?php
|
120 |
-
} else {
|
121 |
-
?>
|
122 |
-
<input type="hidden" style="width:80%" id = "wcap_page_select" class="wc-product-search" name="wcap_page_select[]" data-placeholder='<?php esc_attr_e( 'Search for a Page…', 'woocommerce-abandoned-cart' ); ?>' data-multiple="true" data-action='wcap_json_find_pages' data-selected="" value="" readonly/>
|
123 |
-
<?php
|
124 |
-
}
|
125 |
-
?>
|
126 |
-
<?php $tool_tip = __( 'Please add any custom pages (not created by WooCommerce) where you wish to display the Add to cart Pop-up Modal.', 'woocommerce-abandoned-cart' ); ?>
|
127 |
-
<?php echo wp_kses_post( wc_help_tip( $tool_tip ) ); ?>
|
128 |
-
</td>
|
129 |
-
</tr>
|
130 |
-
<tr>
|
131 |
-
<td colspan="2" style="text-align: justify;">
|
132 |
-
<b><?php echo esc_html_e( 'Note: ', 'woocommerce-abandoned-cart' ); ?></b><?php echo esc_html_e( 'Please ensure that the Add to Cart button links on these pages are added with the correct classes and attributes to ensure the plugin can capture the cart data correctly. For further guidance, please check the documentation.', 'woocommerce-abandoned-cart' ); ?>
|
133 |
-
</td>
|
134 |
-
</tr>
|
135 |
-
</table>
|
136 |
-
|
137 |
-
<?php
|
138 |
-
}
|
139 |
-
|
140 |
/**
|
141 |
* It will add the setting for Heading section on the add to cart modal settings page.
|
142 |
*
|
143 |
-
* @param
|
144 |
* @since 6.0
|
145 |
*/
|
146 |
-
public static function wcap_add_heading_section( $
|
|
|
147 |
?>
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
<
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
<
|
159 |
-
<input class = "wcap_popup_heading_color_picker colorpick" name = "wcap_popup_heading_color_picker" value = "#737f97" v-model = "wcap_popup_heading_color" v-on:input = "wcap_atc_popup_heading.color = $event.target.value" readonly >
|
160 |
</td>
|
161 |
</tr>
|
162 |
</table>
|
@@ -167,21 +142,21 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
167 |
/**
|
168 |
* It will add the setting for Text displayed below heading section on the add to cart modal settings page.
|
169 |
*
|
170 |
-
* @param
|
171 |
* @since 6.0
|
172 |
*/
|
173 |
-
public static function wcap_add_text_section( $
|
174 |
?>
|
175 |
-
<div id
|
176 |
-
<table id
|
177 |
-
<th id
|
178 |
-
<tr id
|
179 |
-
<td id
|
180 |
-
<input id
|
181 |
-
</td>
|
182 |
-
<td id
|
183 |
-
<span class
|
184 |
-
<input class
|
185 |
</td>
|
186 |
</tr>
|
187 |
</table>
|
@@ -192,19 +167,17 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
192 |
/**
|
193 |
* It will add the setting for email placeholder on the add to cart modal settings page.
|
194 |
*
|
195 |
-
* @param
|
196 |
* @since 6.0
|
197 |
*/
|
198 |
-
public static function wcap_email_placeholder_section( $
|
199 |
?>
|
200 |
-
|
201 |
-
|
202 |
-
<
|
203 |
-
<
|
204 |
-
|
205 |
-
|
206 |
-
<input id = "wcap_email_placeholder_section_input_text" v-model = "wcap_email_placeholder_section_input_text" class="wcap_email_placeholder_section_input_text" name = "wcap_email_placeholder_section_input_text"
|
207 |
-
readonly value="<?php echo esc_html_e( 'Email address', 'woocommerce-abandoned-cart' ); ?>">
|
208 |
</td>
|
209 |
</tr>
|
210 |
</table>
|
@@ -215,31 +188,27 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
215 |
/**
|
216 |
* It will add the setting for Add to cart button on the add to cart modal settings page.
|
217 |
*
|
218 |
-
* @param
|
219 |
* @since 6.0
|
220 |
*/
|
221 |
-
public static function wcap_button_section( $
|
222 |
?>
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
<table id = "wcap_button_section_table" class = "wcap_button_section_table">
|
227 |
-
<th id = "wcap_button_section_table_heading" class="wcap_button_section_table_heading"> Add to cart button text </th>
|
228 |
<tr>
|
229 |
-
<td id
|
230 |
-
<input id
|
231 |
-
readonly value="<?php echo esc_html_e( 'Add to Cart', 'woocommerce-abandoned-cart' ); ?>">
|
232 |
</td>
|
233 |
</tr>
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
<
|
238 |
-
<input id = "wcap_button_color_picker" value = "#0085ba" v-model ="wcap_button_bg_color" v-on:input="wcap_atc_button.backgroundColor = $event.target.value" class="wcap_button_color_picker colorpick" name = "wcap_button_color_picker" readonly >
|
239 |
</td>
|
240 |
-
<td id
|
241 |
-
<span class
|
242 |
-
<input id
|
243 |
</td>
|
244 |
</tr>
|
245 |
</table>
|
@@ -250,18 +219,19 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
250 |
/**
|
251 |
* It will add the setting for Email address mandatory field on the add to cart modal settings page.
|
252 |
*
|
253 |
-
* @param
|
254 |
* @since 6.0
|
255 |
*/
|
256 |
-
public static function wcap_mandatory_modal_section( $
|
257 |
?>
|
258 |
-
|
259 |
-
|
260 |
-
<th id = "wcap_button_section_table_heading" class = "wcap_button_section_table_heading"> Email address is mandatory ? </th>
|
261 |
<tr>
|
262 |
<td>
|
263 |
-
<button type
|
|
|
264 |
</button>
|
|
|
265 |
</td>
|
266 |
</tr>
|
267 |
</table>
|
@@ -271,18 +241,61 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
271 |
/**
|
272 |
* It will add the setting for Email address non mandatory field on the add to cart modal settings page.
|
273 |
*
|
274 |
-
* @param
|
275 |
* @since 6.0
|
276 |
*/
|
277 |
-
public static function wcap_non_mandatory_modal_section_field( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
?>
|
279 |
-
<div id
|
280 |
-
<table id
|
281 |
-
|
282 |
-
class="
|
283 |
-
|
284 |
-
|
285 |
-
<input id = "wcap_non_mandatory_modal_section_fields_input_text" v-model = "wcap_non_mandatory_modal_input_text" class = "wcap_non_mandatory_modal_section_fields_input_text" name = "wcap_non_mandatory_modal_section_fields_input_text" readonly value="<?php echo esc_html_e( 'No Thanks', 'woocommerce-abandoned-cart' ); ?>" >
|
286 |
</td>
|
287 |
</tr>
|
288 |
</table>
|
@@ -290,6 +303,151 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
290 |
<?php
|
291 |
}
|
292 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
/**
|
294 |
* It will will show th preview of the Add To cart Popup modal with the changes made on any of the settings for it.
|
295 |
*
|
@@ -321,6 +479,9 @@ if ( ! class_exists( 'Wcap_Add_Cart_Popup_Modal' ) ) {
|
|
321 |
<div class = "wcap_popup_input_field_container" >
|
322 |
<input class = "wcap_popup_input" type = "text" value = "" name = "email" placeholder ="<?php echo esc_html_e( 'Email address', 'woocommerce-abandoned-cart' ); ?>" readonly >
|
323 |
</div>
|
|
|
|
|
|
|
324 |
<button class = "wcap_popup_button" v-bind:style = "wcap_atc_button"><?php echo esc_html_e( 'Add to Cart', 'woocommerce-abandoned-cart' ); ?></button>
|
325 |
<br>
|
326 |
<br>
|
27 |
public static function wcap_add_to_cart_popup_settings() {
|
28 |
|
29 |
$wcap_atc_enabled = get_option( 'wcap_atc_enable_modal', '' );
|
30 |
+
$wcap_disabled_field = 'off' === $wcap_atc_enabled ? 'disabled="disabled"' : '';
|
31 |
+
$frontend_settings = (object) array();
|
32 |
+
$coupon_settings = (object) array();
|
|
|
|
|
33 |
?>
|
34 |
|
35 |
<div id = "wcap_popup_main_div" class = "wcap_popup_main_div ">
|
36 |
<table id = "wcap_popup_main_table" class = "wcap_popup_main_table test_borders">
|
37 |
<tr id = "wcap_popup_main_table_tr" class = "wcap_popup_main_table_tr test_borders">
|
38 |
<td id = "wcap_popup_main_table_td_settings" class = "wcap_popup_main_table_td_settings test_borders">
|
39 |
+
<?php self::wcap_enable_modal_section( $frontend_settings ); ?>
|
40 |
+
<hr>
|
41 |
+
</td>
|
42 |
+
</tr>
|
43 |
+
<tr id="wcap_popup_main_table_tr" class="wcap_popup_main_table_tr test_borders">
|
44 |
+
<td id="wcap_popup_main_table_td_settings" class="wcap_popup_main_table_td_settings test_borders">
|
45 |
+
<?php
|
46 |
+
wc_get_template(
|
47 |
+
'html-atc-rules-engine.php',
|
48 |
+
array(
|
49 |
+
'rules' => array(),
|
50 |
+
'match' => '',
|
51 |
+
),
|
52 |
+
'woocommerce-abandoned-cart/',
|
53 |
+
WCAL_PLUGIN_PATH . '/includes/templates/atc-rules/'
|
54 |
+
);
|
55 |
+
?>
|
56 |
+
<hr>
|
57 |
+
</td>
|
58 |
+
</tr>
|
59 |
+
<tr id="wcap_popup_main_table_tr" class="wcap_popup_main_table_tr test_borders">
|
60 |
+
<td id="wcap_popup_main_table_td_settings" class="wcap_popup_main_table_td_settings test_borders">
|
61 |
<div class = "wcap_atc_all_fields_container" >
|
62 |
+
<?php self::wcap_add_heading_section( $frontend_settings ); ?>
|
63 |
+
<?php self::wcap_add_text_section( $frontend_settings ); ?>
|
64 |
+
<?php self::wcap_email_placeholder_section( $frontend_settings ); ?>
|
65 |
+
<?php self::wcap_button_section( $frontend_settings ); ?>
|
66 |
+
<?php self::wcap_mandatory_modal_section( $frontend_settings ); ?>
|
67 |
+
<?php self::wcap_non_mandatory_modal_section_field( $frontend_settings ); ?>
|
68 |
+
<?php self::wcap_capture_phone( $frontend_settings ); ?>
|
69 |
+
<?php self::wcap_phone_placeholder_section( $frontend_settings ); ?>
|
70 |
+
<hr>
|
71 |
+
<?php self::wcap_coupon_section( $coupon_settings ); ?>
|
72 |
</div>
|
73 |
</td>
|
74 |
<td id = "wcap_popup_main_table_td_preview" class = "wcap_popup_main_table_td_preview test_borders">
|
100 |
*/
|
101 |
public static function wcap_enable_modal_section( $wcap_disabled_field ) {
|
102 |
?>
|
103 |
+
<table class = "wcap_enable_atc wcap_atc_between_fields_space wcap_atc_content" id = "wcap_enable_atc" >
|
104 |
<th id = "wcap_button_section_table_heading" class = "wcap_button_section_table_heading"> <?php echo esc_html_e( 'Enable Add to cart popup modal', 'woocommerce-abandoned-cart' ); ?> </th>
|
105 |
<tr>
|
106 |
<td>
|
112 |
<?php
|
113 |
}
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
/**
|
116 |
* It will add the setting for Heading section on the add to cart modal settings page.
|
117 |
*
|
118 |
+
* @param object $frontend_settings - ATC settings.
|
119 |
* @since 6.0
|
120 |
*/
|
121 |
+
public static function wcap_add_heading_section( $frontend_settings ) {
|
122 |
+
$heading = isset( $frontend_settings->wcap_heading_section_text_email ) ? $frontend_settings->wcap_heading_section_text_email : __( 'Please enter your email.', 'woocommerce-abandoned-cart' );
|
123 |
?>
|
124 |
+
<div id="wcap_heading_section_div" class="wcap_heading_section_div wcap_atc_between_fields_space">
|
125 |
+
<table id="wcap_heading_section_table" class="wcap_heading_section_table wcap_atc_content">
|
126 |
+
<th id="wcap_heading_section_table_heading" class="wcap_heading_section_table_heading"><?php esc_html_e( 'Modal Heading', 'woocommerce-abandoned-cart' ); ?></th>
|
127 |
+
<tr id="wcap_heading_section_tr" class="wcap_heading_section_tr" >
|
128 |
+
<td id="wcap_heading_section_text_field" class="wcap_heading_section_text_field test_borders">
|
129 |
+
<input type="text" id="wcap_heading_section_text_email" v-model="wcap_heading_section_text_email" name="wcap_heading_section_text_email" class = "wcap_heading_section_text_email"
|
130 |
+
readonly value="<?php echo esc_html( $heading ); ?>" >
|
131 |
+
</td>
|
132 |
+
<td id="wcap_heading_section_text_field_color" class="wcap_heading_section_text_field_color test_borders">
|
133 |
+
<span class = "colorpickpreview" style = "background: #737d97"></span>
|
134 |
+
<input type="text" class="wcap_popup_heading_color_picker colorpick" name="wcap_popup_heading_color_picker" value="#737f97" v-model="wcap_popup_heading_color" v-on:input="wcap_atc_popup_heading.color = $event.target.value" readonly >
|
|
|
135 |
</td>
|
136 |
</tr>
|
137 |
</table>
|
142 |
/**
|
143 |
* It will add the setting for Text displayed below heading section on the add to cart modal settings page.
|
144 |
*
|
145 |
+
* @param object $frontend_settings - ATC settings.
|
146 |
* @since 6.0
|
147 |
*/
|
148 |
+
public static function wcap_add_text_section( $frontend_settings ) {
|
149 |
?>
|
150 |
+
<div id="wcap_text_section_div" class="wcap_text_section_div wcap_atc_between_fields_space">
|
151 |
+
<table id="wcap_text_section_table" class="wcap_text_section_table wcap_atc_content">
|
152 |
+
<th id="wcap_text_section_table_heading" class="wcap_text_section_table_heading"><?php esc_html_e( 'Modal Text', 'woocommerce-abandoned-cart' ); ?></th>
|
153 |
+
<tr id="wcap_text_section_tr" class="wcap_text_section_tr" >
|
154 |
+
<td id="wcap_text_section_text_field" class="wcap_text_section_text_field test_borders">
|
155 |
+
<input type="text" id="wcap_text_section_text" v-model="wcap_text_section_text_field" class="wcap_text_section_input_text" name="wcap_text_section_text" readonly>
|
156 |
+
</td>
|
157 |
+
<td id="wcap_text_section_field_color" class="wcap_text_section_field_color test_borders">
|
158 |
+
<span class="colorpickpreview" style="background: #bbc9d2"></span>
|
159 |
+
<input type="text" class="wcap_popup_text_color_picker colorpick" name="wcap_popup_text_color_picker" value="#bbc9d2" v-model="wcap_popup_text_color" v-on:input="wcap_atc_popup_text.color = $event.target.value" readonly>
|
160 |
</td>
|
161 |
</tr>
|
162 |
</table>
|
167 |
/**
|
168 |
* It will add the setting for email placeholder on the add to cart modal settings page.
|
169 |
*
|
170 |
+
* @param object $frontend_settings - ATC settings.
|
171 |
* @since 6.0
|
172 |
*/
|
173 |
+
public static function wcap_email_placeholder_section( $frontend_settings ) {
|
174 |
?>
|
175 |
+
<div id="wcap_email_placeholder_section_div" class="wcap_email_placeholder_section_div wcap_atc_between_fields_space">
|
176 |
+
<table id="wcap_email_placeholder_section_table" class="wcap_email_placeholder_section_table wcap_atc_content">
|
177 |
+
<th id="wcap_email_placeholder_section_table_heading" class="wcap_email_placeholder_section_table_heading"><?php esc_html_e( 'Email placeholder', 'woocommerce-abandoned-cart' ); ?></th>
|
178 |
+
<tr id="wcap_email_placeholder_section_tr" class="wcap_email_placeholder_section_tr" >
|
179 |
+
<td id="wcap_email_placeholder_section_text_field" class="wcap_email_placeholder_section_text_field test_borders">
|
180 |
+
<input type="text" id="wcap_email_placeholder_section_input_text" v-model="wcap_email_placeholder_section_input_text" class="wcap_email_placeholder_section_input_text" name="wcap_email_placeholder_section_input_text" readonly>
|
|
|
|
|
181 |
</td>
|
182 |
</tr>
|
183 |
</table>
|
188 |
/**
|
189 |
* It will add the setting for Add to cart button on the add to cart modal settings page.
|
190 |
*
|
191 |
+
* @param object $frontend_settings - ATC settings.
|
192 |
* @since 6.0
|
193 |
*/
|
194 |
+
public static function wcap_button_section( $frontend_settings ) {
|
195 |
?>
|
196 |
+
<div id="wcap_button_section_div" class="wcap_button_section_div wcap_atc_between_fields_space">
|
197 |
+
<table id="wcap_button_section_table" class="wcap_button_section_table wcap_atc_content">
|
198 |
+
<th id="wcap_button_section_table_heading" class="wcap_button_section_table_heading"><?php esc_html_e( 'Add to cart button text', 'woocommerce-abandoned-cart' ); ?></th>
|
|
|
|
|
199 |
<tr>
|
200 |
+
<td id="wcap_button_section_text_field" class="wcap_button_section_text_field test_borders">
|
201 |
+
<input type="text" id="wcap_button_section_input_text" v-model="wcap_button_section_input_text" class="wcap_button_section_input_text" name="wcap_button_section_input_text" readonly>
|
|
|
202 |
</td>
|
203 |
</tr>
|
204 |
+
<tr id="wcap_button_color_section_tr" class="wcap_button_color_section_tr">
|
205 |
+
<td id="wcap_button_color_section_text_field" class="wcap_button_color_section_text_field test_borders">
|
206 |
+
<span class="colorpickpreview" style="background: #0085ba"></span>
|
207 |
+
<input type="text" id="wcap_button_color_picker" value="#0085ba" v-model="wcap_button_bg_color" v-on:input="wcap_atc_button.backgroundColor = $event.target.value" class="wcap_button_color_picker colorpick" name="wcap_button_color_picker" readonly>
|
|
|
208 |
</td>
|
209 |
+
<td id="wcap_button_text_color_section_text_field" class="wcap_button_text_color_section_text_field test_borders">
|
210 |
+
<span class="colorpickpreview" style="background: #ffffff"></span>
|
211 |
+
<input type="text" id="wcap_button_text_color_picker" value= "#ffffff" v-model="wcap_button_text_color" v-on:input="wcap_atc_button.color = $event.target.value" class="wcap_button_text_color_picker colorpick" name="wcap_button_text_color_picker" readonly>
|
212 |
</td>
|
213 |
</tr>
|
214 |
</table>
|
219 |
/**
|
220 |
* It will add the setting for Email address mandatory field on the add to cart modal settings page.
|
221 |
*
|
222 |
+
* @param object $frontend_settings - ATC settings.
|
223 |
* @since 6.0
|
224 |
*/
|
225 |
+
public static function wcap_mandatory_modal_section( $frontend_settings ) {
|
226 |
?>
|
227 |
+
<table class="wcap_atc_between_fields_space wcap_atc_content">
|
228 |
+
<th id="wcap_button_section_table_heading" class="wcap_button_section_table_heading"><?php esc_html_e( 'Email address is mandatory?', 'woocommerce-abandoned-cart' ); ?></th>
|
|
|
229 |
<tr>
|
230 |
<td>
|
231 |
+
<button type="button" class="wcap-switch-atc-modal-mandatory wcap-toggle-atc-modal-mandatory" wcap-atc-switch-modal-mandatory="off"
|
232 |
+
onClick="wcap_button_choice( this, 'wcap-atc-switch-modal-mandatory' )" readonly>
|
233 |
</button>
|
234 |
+
<input type="hidden" name="wcap_switch_atc_modal_mandatory" id="wcap_switch_atc_modal_mandatory" readonly/>
|
235 |
</td>
|
236 |
</tr>
|
237 |
</table>
|
241 |
/**
|
242 |
* It will add the setting for Email address non mandatory field on the add to cart modal settings page.
|
243 |
*
|
244 |
+
* @param object $frontend_settings - ATC settings.
|
245 |
* @since 6.0
|
246 |
*/
|
247 |
+
public static function wcap_non_mandatory_modal_section_field( $frontend_settings ) {
|
248 |
+
?>
|
249 |
+
<div id="wcap_non_mandatory_modal_section_fields_div" class="wcap_non_mandatory_modal_section_fields_div wcap_atc_between_fields_space">
|
250 |
+
<table id="wcap_non_mandatory_modal_section_fields_div_table" class="wcap_non_mandatory_modal_section_fields_div_table wcap_atc_content">
|
251 |
+
<th id="wcap_non_mandatory_modal_section_fields_table_heading"
|
252 |
+
class="wcap_non_mandatory_modal_section_fields_table_heading"><?php esc_html_e( 'Not mandatory text', 'woocommerce-abandoned-cart' ); ?></th>
|
253 |
+
<tr id="wcap_non_mandatory_modal_section_fields_tr" class="wcap_non_mandatory_modal_section_fields_tr" >
|
254 |
+
<td id="wcap_non_mandatory_modal_section_fields_text_field" class="wcap_non_mandatory_modal_section_fields_text_field test_borders">
|
255 |
+
<input type="text" id="wcap_non_mandatory_modal_section_fields_input_text" v-model="wcap_non_mandatory_modal_input_text" class="wcap_non_mandatory_modal_section_fields_input_text" name="wcap_non_mandatory_modal_section_fields_input_text" readonly>
|
256 |
+
</td>
|
257 |
+
</tr>
|
258 |
+
</table>
|
259 |
+
</div>
|
260 |
+
<?php
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* It will add the setting for Phone capture on the add to cart modal settings page.
|
265 |
+
*
|
266 |
+
* @param object $frontend_settings - ATC settings.
|
267 |
+
* @since 8.12.0
|
268 |
+
*/
|
269 |
+
public static function wcap_capture_phone( $frontend_settings ) {
|
270 |
+
?>
|
271 |
+
<table class="wcap_atc_between_fields_space wcap_atc_content">
|
272 |
+
<th id="wcap_button_section_table_heading" class="wcap_button_section_table_heading"><?php esc_html_e( 'Capture Phone', 'woocommerce-abandoned-cart' ); ?></th>
|
273 |
+
<tr>
|
274 |
+
<td>
|
275 |
+
<button type="button" class="wcap-switch-atc-capture-phone wcap-toggle-atc-capture-phone" wcap-atc-capture-phone="off"
|
276 |
+
onClick="wcap_button_choice( this, 'wcap-atc-capture-phone' )" readonly>
|
277 |
+
</button>
|
278 |
+
<input type="hidden" name="wcap_switch_atc_capture_phone" id="wcap_switch_atc_capture_phone" value="off" readonly/>
|
279 |
+
</td>
|
280 |
+
</tr>
|
281 |
+
</table>
|
282 |
+
<?php
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* It will add the setting for Phone field placeholder on the add to cart modal settings page.
|
287 |
+
*
|
288 |
+
* @param object $frontend_settings - ATC settings.
|
289 |
+
* @since 8.12.0
|
290 |
+
*/
|
291 |
+
public static function wcap_phone_placeholder_section( $frontend_settings ) {
|
292 |
?>
|
293 |
+
<div id="wcap_phone_placeholder_section_div" class="wcap_phone_placeholder_section_div wcap_atc_between_fields_space">
|
294 |
+
<table id="wcap_phone_placeholder_section_table" class="wcap_phone_placeholder_section_table wcap_atc_content">
|
295 |
+
<th id="wcap_phone_placeholder_section_table_heading" class="wcap_phone_placeholder_section_table_heading"><?php esc_html_e( 'Phone placeholder', 'woocommerce-abandoned-cart' ); ?></th>
|
296 |
+
<tr id="wcap_phone_placeholder_section_tr" class="wcap_phone_placeholder_section_tr" >
|
297 |
+
<td id="wcap_phone_placeholder_section_text_field" class="wcap_phone_placeholder_section_text_field test_borders">
|
298 |
+
<input type="text" id="wcap_phone_placeholder_section_input_text" v-model="wcap_phone_placeholder_section_input_text" class="wcap_phone_placeholder_section_input_text" name="wcap_phone_placeholder_section_input_text" value="<?php esc_html_e( 'Please enter your phone number in E.164 format', 'woocommerce-abandoned-cart' ); ?>" readonly >
|
|
|
299 |
</td>
|
300 |
</tr>
|
301 |
</table>
|
303 |
<?php
|
304 |
}
|
305 |
|
306 |
+
/**
|
307 |
+
* Auto Apply coupons for atc settings.
|
308 |
+
*
|
309 |
+
* @param object $coupon_settings - Coupon settings.
|
310 |
+
* @since 8.5.0
|
311 |
+
*/
|
312 |
+
public static function wcap_coupon_section( $coupon_settings ) {
|
313 |
+
$auto_apply_coupon = isset( $coupon_settings->wcap_atc_auto_apply_coupon_enabled ) ? $coupon_settings->wcap_atc_auto_apply_coupon_enabled : 'off';
|
314 |
+
$active_text = __( $auto_apply_coupon, 'woocommerce-abandoned-cart' ); // phpcs:ignore
|
315 |
+
|
316 |
+
$wcap_atc_coupon_type = isset( $coupon_settings->wcap_atc_coupon_type ) ? $coupon_settings->wcap_atc_coupon_type : '';
|
317 |
+
$pre_selected = 'pre-selected' === $wcap_atc_coupon_type || '' === $wcap_atc_coupon_type ? 'selected' : '';
|
318 |
+
$unique = 'unique' === $wcap_atc_coupon_type ? 'selected' : '';
|
319 |
+
|
320 |
+
$coupon_code_id = isset( $coupon_settings->wcap_atc_popup_coupon ) ? $coupon_settings->wcap_atc_popup_coupon : 0;
|
321 |
+
|
322 |
+
$wcap_atc_discount_type = isset( $coupon_settings->wcap_atc_discount_type ) ? $coupon_settings->wcap_atc_discount_type : '';
|
323 |
+
$percent_discount = 'percent' === $wcap_atc_discount_type || '' === $wcap_atc_discount_type ? 'selected' : '';
|
324 |
+
$amount_discount = 'amount' === $wcap_atc_discount_type ? 'selected' : '';
|
325 |
+
|
326 |
+
$wcap_atc_discount_amount = isset( $coupon_settings->wcap_atc_discount_amount ) ? $coupon_settings->wcap_atc_discount_amount : '';
|
327 |
+
$wcap_atc_coupon_free_shipping = isset( $coupon_settings->wcap_atc_coupon_free_shipping ) ? $coupon_settings->wcap_atc_coupon_free_shipping : '';
|
328 |
+
$free_shipping_enabled = 'on' === $wcap_atc_coupon_free_shipping ? 'checked' : '';
|
329 |
+
|
330 |
+
$coupon_validity = isset( $coupon_settings->wcap_atc_popup_coupon_validity ) ? $coupon_settings->wcap_atc_popup_coupon_validity : '';
|
331 |
+
$countdown_msg = isset( $coupon_settings->wcap_countdown_timer_msg ) ? htmlspecialchars_decode( $coupon_settings->wcap_countdown_timer_msg ) : htmlspecialchars_decode( 'Coupon <coupon_code> expires in <hh:mm:ss>. Avail it now.' );
|
332 |
+
$countdown_msg_expired = isset( $coupon_settings->wcap_countdown_msg_expired ) ? $coupon_settings->wcap_countdown_msg_expired : 'The offer is no longer valid.';
|
333 |
+
$countdown_cart = isset( $coupon_settings->wcap_countdown_cart ) ? $coupon_settings->wcap_countdown_cart : 'on';
|
334 |
+
$active_cart = __( $countdown_cart, 'woocommerce-abandoned-cart' ); // phpcs:ignore
|
335 |
+
?>
|
336 |
+
<div id='wcap_coupon_settings'>
|
337 |
+
<table id='wcap_coupon_settings_div_table' class='wcap_coupon_settings_div_table wcap_atc_content'>
|
338 |
+
<th id='wcap_auto_apply_coupons_heading' class='wcap_auto_apply_coupons_heading'><?php esc_html_e( 'Auto apply coupons on email address capture:', 'woocommerce-abandoned-cart' ); ?></th>
|
339 |
+
<tr>
|
340 |
+
<td>
|
341 |
+
<button type="button" class="wcap-auto-apply-coupons-atc wcap-toggle-auto-apply-coupons-status" wcap-atc-switch-coupon-enable = "<?php echo esc_attr( $auto_apply_coupon ); ?>"
|
342 |
+
onClick="wcap_button_choice( this, 'wcap-atc-switch-coupon-enable' )" readonly disabled >
|
343 |
+
<?php echo esc_attr( $active_text ); ?></button>
|
344 |
+
<input type="hidden" name="wcap_auto_apply_coupons_atc" id="wcap_auto_apply_coupons_atc" value="<?php echo esc_attr( $auto_apply_coupon ); ?>" readonly disabled/>
|
345 |
+
</td>
|
346 |
+
</tr>
|
347 |
+
<th id='wcap_atc_coupon_type_label' class='wcap_atc_coupon_type_label'><?php esc_html_e( 'Type of Coupon to apply:', 'woocommerce-abandoned-cart' ); ?></th>
|
348 |
+
<tr>
|
349 |
+
<td>
|
350 |
+
<select id='wcap_atc_coupon_type' name='wcap_atc_coupon_type' readonly disabled>
|
351 |
+
<option value='pre-selected' <?php echo esc_html( $pre_selected ); ?>><?php esc_html_e( 'Existing Coupons', 'woocommerce-abandoned-cart' ); ?></option>
|
352 |
+
<option value='unique' <?php echo esc_html( $unique ); ?>><?php esc_html_e( 'Generate Unique Coupon code', 'woocommerce-abandoned-cart' ); ?></option>
|
353 |
+
</select>
|
354 |
+
</td>
|
355 |
+
</tr>
|
356 |
+
<th id='wcap_auto_apply_coupon_id' class='wcap_auto_apply_coupon_id wcap_atc_pre_selected' style='display:none;'><?php esc_html_e( 'Coupon code to apply:', 'woocommerce-abandoned-cart' ); ?></th>
|
357 |
+
<tr class='wcap_atc_pre_selected' style='display:none;'>
|
358 |
+
<td>
|
359 |
+
<div id="coupon_options" class="panel">
|
360 |
+
<div class="options_group">
|
361 |
+
<p class="form-field" style="padding-left:0px !important;">
|
362 |
+
<?php
|
363 |
+
$json_ids = array();
|
364 |
+
|
365 |
+
if ( $coupon_code_id > 0 ) {
|
366 |
+
$coupon = get_the_title( $coupon_code_id );
|
367 |
+
$json_ids[ $coupon_code_id ] = $coupon;
|
368 |
+
}
|
369 |
+
if ( version_compare( WC()->version, '3.0.0', '>=' ) ) {
|
370 |
+
?>
|
371 |
+
<select id="coupon_ids" name="coupon_ids[]" class="wc-product-search" multiple="multiple" style="width: 37%;" data-placeholder="<?php esc_attr_e( 'Search for a Coupon…', 'woocommerce' ); ?>" data-action="wcap_json_find_coupons" >
|
372 |
+
<?php
|
373 |
+
if ( $coupon_code_id > 0 ) {
|
374 |
+
$coupon = get_the_title( $coupon_code_id );
|
375 |
+
echo '<option value="' . esc_attr( $coupon_code_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $coupon ) . '</option>';
|
376 |
+
}
|
377 |
+
?>
|
378 |
+
</select>
|
379 |
+
<?php
|
380 |
+
} else {
|
381 |
+
?>
|
382 |
+
<input type="hidden" id="coupon_ids" name="coupon_ids[]" class="wc-product-search" style="width: 30%;" data-placeholder="<?php esc_attr_e( 'Search for a Coupon…', 'woocommerce' ); ?>" data-multiple="true" data-action="wcap_json_find_coupons"
|
383 |
+
data-selected=" <?php echo esc_attr( wp_json_encode( $json_ids ) ); ?> " value="<?php echo esc_html( implode( ',', array_keys( $json_ids ) ) ); ?>" />
|
384 |
+
<?php
|
385 |
+
}
|
386 |
+
?>
|
387 |
+
|
388 |
+
</p>
|
389 |
+
</div>
|
390 |
+
</div>
|
391 |
+
</td>
|
392 |
+
</tr>
|
393 |
+
<th id='wcap_atc_discount_type_label' class='wcap_atc_discount_type_label wcap_atc_unique'><?php esc_html_e( 'Discount Type:', 'woocommerce-abandoned-cart' ); ?></th>
|
394 |
+
<tr class='wcap_atc_unique'>
|
395 |
+
<td>
|
396 |
+
<select id='wcap_atc_discount_type' name='wcap_atc_discount_type' readonly disabled>
|
397 |
+
<option value='percent' <?php echo esc_html( $percent_discount ); ?>><?php esc_html_e( 'Percentage Discount', 'woocommerce-abandoned-cart' ); ?></option>
|
398 |
+
<option value='amount' <?php echo esc_html( $amount_discount ); ?>><?php esc_html_e( 'Fixed Cart Amount', 'woocommerce-abandoned-cart' ); ?></option>
|
399 |
+
</select>
|
400 |
+
</td>
|
401 |
+
</tr>
|
402 |
+
<th id='wcap_atc_discount_amount_label' class='wcap_atc_discount_amount_label wcap_atc_unique'><?php esc_html_e( 'Discount Amount:', 'woocommerce-abandoned-cart' ); ?></th>
|
403 |
+
<tr class='wcap_atc_unique'>
|
404 |
+
<td>
|
405 |
+
<input type='number' id='wcap_atc_discount_amount' name='wcap_atc_discount_amount' min='0' value='<?php echo esc_html( $wcap_atc_discount_amount ); ?>' readonly disabled />
|
406 |
+
</td>
|
407 |
+
</tr>
|
408 |
+
<th id='wcap_atc_coupon_free_shipping_label' class='wcap_atc_coupon_free_shipping_label wcap_atc_unique'><?php esc_html_e( 'Allow Free Shipping?', 'woocommerce-abandoned-cart' ); ?></th>
|
409 |
+
<tr class='wcap_atc_unique'>
|
410 |
+
<td>
|
411 |
+
<input type='checkbox' id='wcap_atc_coupon_free_shipping' name='wcap_atc_coupon_free_shipping' <?php echo esc_attr( $free_shipping_enabled ); ?> readonly disabled />
|
412 |
+
</td>
|
413 |
+
</tr>
|
414 |
+
<th id='wcap_atc_coupon_validity_label' class='wcap_atc_coupon_validity_label'><?php esc_html_e( 'Coupon validity (in minutes):', 'woocommerce-abandoned-cart' ); ?></th>
|
415 |
+
<tr>
|
416 |
+
<td>
|
417 |
+
<input type='number' id='wcap_atc_coupon_validity' name='wcap_atc_coupon_validity' min='0' value='<?php echo esc_attr( $coupon_validity ); ?>' readonly disabled />
|
418 |
+
</td>
|
419 |
+
</tr>
|
420 |
+
<th id='countdown_timer_cart_label' class='countdown_timer_cart_label'><?php esc_html_e( 'Display Urgency message on Cart page (If disabled it will display only on Checkout page)', 'woocommerce-abandoned-cart' ); ?></th>
|
421 |
+
<tr>
|
422 |
+
<td>
|
423 |
+
<button type="button" class="wcap-countdown-timer-cart wcap-toggle-countdown-timer-cart" wcap-atc-countdown-timer-cart-enable = 'off'
|
424 |
+
onClick="wcap_button_choice( this, 'wcap-atc-countdown-timer-cart-enable' )" readonly disabled >
|
425 |
+
<?php echo esc_attr( $active_text ); ?></button>
|
426 |
+
<input type="hidden" name="wcap_countdown_timer_cart" id="wcap_countdown_timer_cart" value="<?php echo esc_attr( $countdown_cart ); ?>" />
|
427 |
+
</td>
|
428 |
+
</tr>
|
429 |
+
<th id='wcap_countdown_msg_label' class='wcap_countdown_msg_label'><?php esc_html_e( 'Urgency message to boost your conversions', 'woocommerce-abandoned-cart' ); ?></th>
|
430 |
+
<tr>
|
431 |
+
<td>
|
432 |
+
<input type='text' id='wcap_countdown_msg' name='wcap_countdown_msg' placeholder='<?php echo esc_attr( 'Coupon <coupon_code> expires in <hh:mm:ss>. Avail it now.' ); ?>' value='<?php echo esc_attr( $countdown_msg ); ?>' readonly disabled />
|
433 |
+
<br>
|
434 |
+
<i><?php echo esc_html_e( 'Merge tags available: <coupon_code>, <hh:mm:ss>', 'woocommerce-abandoned-cart' ); ?></i>
|
435 |
+
</td>
|
436 |
+
</tr>
|
437 |
+
<th id='wcap_countdown_msg_label' class='wcap_countdown_msg_expired_label'><?php esc_html_e( 'Message to display after coupon validity is reached', 'woocommerce-abandoned-cart' ); ?></th>
|
438 |
+
<tr>
|
439 |
+
<td>
|
440 |
+
<input type='text' id='wcap_countdown_msg_expired' name='wcap_countdown_msg_expired' placeholder='<?php echo esc_attr( 'The offer is no longer valid.' ); ?>' value='<?php echo esc_attr( $countdown_msg_expired ); ?>' readonly disabled />
|
441 |
+
<br>
|
442 |
+
</td>
|
443 |
+
</tr>
|
444 |
+
<th id='wcap_atc_coupon_note' class='wcap_atc_coupon_note'><i><?php esc_html_e( 'Note: For orders which use the coupon selected/generated by the ATC module will be marked as "ATC Coupon Used" in WooCommerce->Orders.', 'woocommerce-abandoned-cart' ); ?></i></th>
|
445 |
+
<tr></tr>
|
446 |
+
</table>
|
447 |
+
</div>
|
448 |
+
<?php
|
449 |
+
}
|
450 |
+
|
451 |
/**
|
452 |
* It will will show th preview of the Add To cart Popup modal with the changes made on any of the settings for it.
|
453 |
*
|
479 |
<div class = "wcap_popup_input_field_container" >
|
480 |
<input class = "wcap_popup_input" type = "text" value = "" name = "email" placeholder ="<?php echo esc_html_e( 'Email address', 'woocommerce-abandoned-cart' ); ?>" readonly >
|
481 |
</div>
|
482 |
+
<div class="wcap_popup_input_field_container atc_phone_field" >
|
483 |
+
<input id="wcap_atc_phone" class="wcap_popup_input" type="text" name="wcap_atc_phone" placeholder="<?php echo esc_html_e( 'Please enter your phone number in E.164 format', 'woocommerce-abandoned-cart' ); ?>" readonly />
|
484 |
+
</div>
|
485 |
<button class = "wcap_popup_button" v-bind:style = "wcap_atc_button"><?php echo esc_html_e( 'Add to Cart', 'woocommerce-abandoned-cart' ); ?></button>
|
486 |
<br>
|
487 |
<br>
|
includes/admin/class-wcap-pro-settings-callbacks.php
CHANGED
@@ -103,7 +103,8 @@ if ( ! class_exists( 'WCAP_Pro_Settings_Callbacks' ) ) {
|
|
103 |
* FB Section.
|
104 |
*/
|
105 |
public static function wcap_fb_description() {
|
106 |
-
|
|
|
107 |
}
|
108 |
|
109 |
/**
|
@@ -258,6 +259,30 @@ if ( ! class_exists( 'WCAP_Pro_Settings_Callbacks' ) ) {
|
|
258 |
|
259 |
}
|
260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
/**
|
262 |
* Capture email from URL callback.
|
263 |
*
|
@@ -277,6 +302,122 @@ if ( ! class_exists( 'WCAP_Pro_Settings_Callbacks' ) ) {
|
|
277 |
|
278 |
}
|
279 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
/**
|
281 |
* Product Image Size callback.
|
282 |
*
|
@@ -393,6 +534,128 @@ if ( ! class_exists( 'WCAP_Pro_Settings_Callbacks' ) ) {
|
|
393 |
echo wp_kses_post( $html );
|
394 |
}
|
395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
} // end of class.
|
397 |
|
398 |
$wcap_pro_settings_callbacks = new WCAP_Pro_Settings_Callbacks();
|
103 |
* FB Section.
|
104 |
*/
|
105 |
public static function wcap_fb_description() {
|
106 |
+
$doc_link = 'https://www.tychesoftwares.com/docs/docs/abandoned-cart-pro-for-woocommerce/send-abandoned-cart-reminder-notifications-using-facebook-messenger';
|
107 |
+
echo wp_kses_post( __( "Configure the plugin to send notifications to Facebook Messenger using the settings below. Please refer the <a href='$doc_link' target='_blank'>following documentation</a> to complete the setup.", 'woocommerce-abandoned-cart' ) ); // phpcs:ignore
|
108 |
}
|
109 |
|
110 |
/**
|
259 |
|
260 |
}
|
261 |
|
262 |
+
/**
|
263 |
+
* Callback for considering new abandoned cart of user after x number of days
|
264 |
+
*
|
265 |
+
* @param array $args Argument given while adding the field.
|
266 |
+
*
|
267 |
+
* @since 8.5
|
268 |
+
*/
|
269 |
+
public static function wcap_cart_abandoned_after_x_days_order_placed_callback( $args ) {
|
270 |
+
|
271 |
+
$ac_cart_abandoned_after_x_days_order_placed = get_option( 'ac_cart_abandoned_after_x_days_order_placed', 0 );
|
272 |
+
|
273 |
+
if ( '' === $ac_cart_abandoned_after_x_days_order_placed ) {
|
274 |
+
$ac_cart_abandoned_after_x_days_order_placed = 0;
|
275 |
+
}
|
276 |
+
|
277 |
+
printf(
|
278 |
+
'<input type="number" id="ac_cart_abandoned_after_x_days_order_placed" name="ac_cart_abandoned_after_x_days_order_placed" value="%s" readonly disabled />',
|
279 |
+
isset( $ac_cart_abandoned_after_x_days_order_placed ) ? esc_attr( $ac_cart_abandoned_after_x_days_order_placed ) : ''
|
280 |
+
);
|
281 |
+
|
282 |
+
$html = '<label for="ac_cart_abandoned_after_x_days_order_placed"> ' . $args[0] . '</label>';
|
283 |
+
echo wp_kses_post( $html );
|
284 |
+
}
|
285 |
+
|
286 |
/**
|
287 |
* Capture email from URL callback.
|
288 |
*
|
302 |
|
303 |
}
|
304 |
|
305 |
+
/**
|
306 |
+
* Callback for enabling capturing through form fields.
|
307 |
+
*
|
308 |
+
* @param array $args Argument given while adding the field.
|
309 |
+
*/
|
310 |
+
public static function wcap_capture_email_from_forms( $args ) {
|
311 |
+
|
312 |
+
$capture_email_forms = get_option( 'ac_capture_email_from_forms' );
|
313 |
+
|
314 |
+
if ( isset( $capture_email_forms ) && '' === $capture_email_forms ) {
|
315 |
+
$capture_email_forms = 'off';
|
316 |
+
}
|
317 |
+
printf(
|
318 |
+
'<input type="checkbox" id="ac_capture_email_from_forms" name="ac_capture_email_from_forms" value="on"
|
319 |
+
' . checked( 'on', $capture_email_forms, false ) . ' readonly disabled />'
|
320 |
+
);
|
321 |
+
|
322 |
+
$html = '<label for="ac_capture_email_from_forms"> ' . $args[0] . '</label>';
|
323 |
+
echo wp_kses_post( $html );
|
324 |
+
}
|
325 |
+
|
326 |
+
/**
|
327 |
+
* Callback for form fields classes.
|
328 |
+
*
|
329 |
+
* @param array $args Argument given while adding the field.
|
330 |
+
*/
|
331 |
+
public static function wcap_email_forms_classes( $args ) {
|
332 |
+
|
333 |
+
$email_forms_classes = get_option( 'ac_email_forms_classes' );
|
334 |
+
|
335 |
+
$readonly_param = ( get_option( 'ac_capture_email_from_forms' ) === '' ) ? 'readonly="readonly"' : '';
|
336 |
+
printf(
|
337 |
+
'<textarea rows="4" cols="80" id="ac_email_forms_classes" name="ac_email_forms_classes" %s readonly disabled >%s</textarea>',
|
338 |
+
esc_attr( $readonly_param ),
|
339 |
+
isset( $email_forms_classes ) ? esc_attr( $email_forms_classes ) : ''
|
340 |
+
);
|
341 |
+
|
342 |
+
$html = '<br><label for="ac_email_forms_classes"> ' . $args[0] . '</label>';
|
343 |
+
echo wp_kses_post( $html );
|
344 |
+
}
|
345 |
+
|
346 |
+
/**
|
347 |
+
* Option for deleting the plugin data upon uninstall.
|
348 |
+
*
|
349 |
+
* @param array $args Argument for adding field details.
|
350 |
+
*/
|
351 |
+
public static function wcap_deleting_plugin_data( $args ) {
|
352 |
+
$wcac_delete_plugin_data = get_option( 'wcac_delete_plugin_data' );
|
353 |
+
if ( isset( $wcac_delete_plugin_data ) && '' === $wcac_delete_plugin_data ) {
|
354 |
+
$wcac_delete_plugin_data = 'off';
|
355 |
+
}
|
356 |
+
?>
|
357 |
+
<input type="checkbox" id="wcac_delete_plugin_data" name="wcac_delete_plugin_data" value="on" <?php echo checked( 'on', $wcac_delete_plugin_data, false ); ?> readonly disabled />
|
358 |
+
<?php
|
359 |
+
$html = '<br><label for="wcac_delete_plugin_data">' . $args[0] . '</label>';
|
360 |
+
echo wp_kses_post( $html );
|
361 |
+
}
|
362 |
+
|
363 |
+
/**
|
364 |
+
* Option for adding product to cart when ATC is closed.
|
365 |
+
*
|
366 |
+
* @param array $args Argument for adding field details.
|
367 |
+
*/
|
368 |
+
public static function wcap_atc_close_icon_add_product_to_cart_callback( $args ) {
|
369 |
+
$wcap_close_icon_add_product = get_option( 'wcap_atc_close_icon_add_product_to_cart', '' );
|
370 |
+
if ( isset( $wcap_close_icon_add_product ) && '' === $wcap_close_icon_add_product ) {
|
371 |
+
$wcap_close_icon_add_product = 'off';
|
372 |
+
}
|
373 |
+
?>
|
374 |
+
<input type="checkbox" id="wcap_atc_close_icon_add_product_to_cart" name="wcap_atc_close_icon_add_product_to_cart" value="on" <?php echo checked( 'on', $wcap_close_icon_add_product, false ); ?> readonly disabled />
|
375 |
+
<?php
|
376 |
+
$html = '<label for="wcap_atc_close_icon_add_product_to_cart">' . $args[0] . '</label>';
|
377 |
+
echo wp_kses_post( $html );
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Email Verification Callback.
|
382 |
+
*
|
383 |
+
* @param array $args Args Param.
|
384 |
+
*/
|
385 |
+
public static function wcap_enable_debounce_callback( $args ) {
|
386 |
+
$enable_debounce = get_option( 'wcap_enable_debounce', '' );
|
387 |
+
$debounce_choice = 'on' === $enable_debounce ? 'checked' : '';
|
388 |
+
?>
|
389 |
+
|
390 |
+
<input
|
391 |
+
type="checkbox"
|
392 |
+
id="wcap_enable_debounce"
|
393 |
+
name="wcap_enable_debounce"
|
394 |
+
value="on"
|
395 |
+
<?php echo esc_attr( $debounce_choice ); ?>
|
396 |
+
readonly disabled />
|
397 |
+
<?php
|
398 |
+
$html = '<label for="wcap_enable_debounce">' . $args[0] . '</label>';
|
399 |
+
echo wp_kses_post( $html );
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* DeBounce API Callback.
|
404 |
+
*
|
405 |
+
* @param array $args Args Param.
|
406 |
+
*/
|
407 |
+
public static function wcap_debounce_api_callback( $args ) {
|
408 |
+
$debounce_key = get_option( 'ac_debounce_api' );
|
409 |
+
?>
|
410 |
+
|
411 |
+
<input
|
412 |
+
type="text"
|
413 |
+
id="ac_debounce_api"
|
414 |
+
name="ac_debounce_api"
|
415 |
+
value="<?php echo isset( $debounce_key ) ? esc_attr( $debounce_key ) : ''; ?>" readonly disabled />
|
416 |
+
<?php
|
417 |
+
$html = '<label for="ac_debounce_api">' . $args[0] . '</label>';
|
418 |
+
echo wp_kses_post( $html );
|
419 |
+
}
|
420 |
+
|
421 |
/**
|
422 |
* Product Image Size callback.
|
423 |
*
|
534 |
echo wp_kses_post( $html );
|
535 |
}
|
536 |
|
537 |
+
/**
|
538 |
+
* Callback for Abandoned cart Coupon settings.
|
539 |
+
*/
|
540 |
+
public static function wcap_coupon_callback() {
|
541 |
+
}
|
542 |
+
|
543 |
+
/**
|
544 |
+
* Option for deleting the plugin data upon uninstall.
|
545 |
+
*
|
546 |
+
* @param array $args Argument for adding field details.
|
547 |
+
* @since 8.3
|
548 |
+
*/
|
549 |
+
public static function wcap_deleting_coupon_data( $args ) {
|
550 |
+
$wcap_delete_coupon_data = get_option( 'wcap_delete_coupon_data', '' );
|
551 |
+
if ( isset( $wcap_delete_coupon_data ) && '' === $wcap_delete_coupon_data ) {
|
552 |
+
$wcap_delete_coupon_data = 'off';
|
553 |
+
}
|
554 |
+
|
555 |
+
?>
|
556 |
+
<input type="checkbox" id="wcap_delete_coupon_data" name="wcap_delete_coupon_data" value="on" <?php echo checked( 'on', $wcap_delete_coupon_data, false ); ?> readonly disabled />
|
557 |
+
<?php
|
558 |
+
$html = '<label for="wcap_delete_coupon_data">' . $args[0] . '</label>';
|
559 |
+
echo wp_kses_post( $html );
|
560 |
+
}
|
561 |
+
|
562 |
+
/**
|
563 |
+
* Coupon deletion manual button.
|
564 |
+
*
|
565 |
+
* @param array $args - Arguments for the setting.
|
566 |
+
*/
|
567 |
+
public static function wcap_deleting_coupon_data_manually( $args ) {
|
568 |
+
?>
|
569 |
+
<input type="button" class="button-secondary" id="wcap_delete_coupons" value="<?php esc_html_e( 'Delete', 'woocommerce-ac' ); ?>" readonly disabled >
|
570 |
+
<?php
|
571 |
+
$html = '<label>' . $args[0] . '</label>';
|
572 |
+
echo wp_kses_post( $html );
|
573 |
+
}
|
574 |
+
|
575 |
+
/**
|
576 |
+
* Callback for product name link redirect.
|
577 |
+
*
|
578 |
+
* @param array $args - Arguments for the setting.
|
579 |
+
* @since 8.8.0
|
580 |
+
*/
|
581 |
+
public static function wcap_product_name_redirect_callback( $args ) {
|
582 |
+
|
583 |
+
$wcap_product_name_redirect = get_option( 'wcap_product_name_redirect', 'checkout' );
|
584 |
+
|
585 |
+
$pages = array(
|
586 |
+
'product' => __( 'Product Page', 'woocommerce-ac' ),
|
587 |
+
'checkout' => __( 'Checkout Page', 'woocommerce-ac' ),
|
588 |
+
);
|
589 |
+
?>
|
590 |
+
<select id='wcap_product_name_redirect' name='wcap_product_name_redirect' readonly disabled >
|
591 |
+
<?php
|
592 |
+
foreach ( $pages as $slug => $display ) {
|
593 |
+
$selected = $slug === $wcap_product_name_redirect ? 'selected' : '';
|
594 |
+
echo sprintf(
|
595 |
+
'<option value="%s" %s>%s</option>',
|
596 |
+
esc_attr( $slug ),
|
597 |
+
esc_attr( $selected ),
|
598 |
+
esc_attr( $display )
|
599 |
+
);
|
600 |
+
}
|
601 |
+
?>
|
602 |
+
</select>
|
603 |
+
<?php
|
604 |
+
$html = '<label for="wcap_product_name_redirect">' . $args[0] . '</label>';
|
605 |
+
echo wp_kses_post( $html );
|
606 |
+
}
|
607 |
+
|
608 |
+
/**
|
609 |
+
* Callback for UTM parameters.
|
610 |
+
*
|
611 |
+
* @param array $args - Arguments for the setting.
|
612 |
+
*/
|
613 |
+
public static function wcap_add_utm_to_links_callback( $args ) {
|
614 |
+
|
615 |
+
$wcap_add_utm_to_links = get_option( 'wcap_add_utm_to_links', '' );
|
616 |
+
|
617 |
+
?>
|
618 |
+
<textarea id='wcap_add_utm_to_links' rows='4' cols='50' name='wcap_add_utm_to_links' readonly disabled ><?php echo esc_html( $wcap_add_utm_to_links ); ?></textarea>
|
619 |
+
<?php
|
620 |
+
$html = '<label for="wcap_add_utm_to_links">' . $args[0] . '</label>';
|
621 |
+
echo wp_kses_post( $html );
|
622 |
+
}
|
623 |
+
|
624 |
+
/**
|
625 |
+
* Unsubscribe settings section.
|
626 |
+
*/
|
627 |
+
public static function wcap_unsubscribe_options_callback() {
|
628 |
+
}
|
629 |
+
|
630 |
+
/**
|
631 |
+
* Callback for unsubscribe landing page.
|
632 |
+
*
|
633 |
+
* @param array $args Argument given while adding the field.
|
634 |
+
*/
|
635 |
+
public static function wcap_unsubscribe_landing_page_callback( $args ) {
|
636 |
+
$unsubscribe_landing_page = get_option( 'wcap_unsubscribe_landing_page', 'default_page' );
|
637 |
+
|
638 |
+
$unsubscribe_options = array(
|
639 |
+
'default_page' => __( 'Default Unsubscribe Page', 'woocommerce-ac' ),
|
640 |
+
'custom_text' => __( 'Custom Text', 'woocommerce-ac' ),
|
641 |
+
'custom_wp_page' => __( 'Custom WordPress page', 'woocommerce-ac' ),
|
642 |
+
);
|
643 |
+
|
644 |
+
printf( '<select id="wcap_unsubscribe_landing_page" name="wcap_unsubscribe_landing_page" readonly disabled >' );
|
645 |
+
foreach ( $unsubscribe_options as $u_key => $u_value ) {
|
646 |
+
$selected = $unsubscribe_landing_page === $u_key ? 'selected' : '';
|
647 |
+
printf(
|
648 |
+
'<option value="%s" %s>%s</option>',
|
649 |
+
esc_attr( $u_key ),
|
650 |
+
esc_attr( $selected ),
|
651 |
+
esc_html( $u_value )
|
652 |
+
);
|
653 |
+
}
|
654 |
+
print( '</select>' );
|
655 |
+
|
656 |
+
$html = '<label for="wcap_unsubscribe_landing_page_label"> ' . $args[0] . '</label>';
|
657 |
+
echo wp_kses_post( $html );
|
658 |
+
}
|
659 |
} // end of class.
|
660 |
|
661 |
$wcap_pro_settings_callbacks = new WCAP_Pro_Settings_Callbacks();
|
includes/admin/class-wcap-pro-settings.php
CHANGED
@@ -104,6 +104,33 @@ if ( ! class_exists( 'WCAP_Pro_Settings' ) ) {
|
|
104 |
array( __( 'Abandoned carts of logged-in users will not be tracked.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
105 |
);
|
106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
add_settings_field(
|
108 |
'ac_capture_email_address_from_url',
|
109 |
__( 'Capture Email address from URL', 'woocommerce-abandoned-cart' ),
|
@@ -113,6 +140,67 @@ if ( ! class_exists( 'WCAP_Pro_Settings' ) ) {
|
|
113 |
array( __( 'If your site URL contain the same key, then it will capture it as an email address of customer.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
114 |
);
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
register_setting(
|
117 |
'woocommerce_ac_settings',
|
118 |
'ac_enable_cart_emails'
|
@@ -133,11 +221,46 @@ if ( ! class_exists( 'WCAP_Pro_Settings' ) ) {
|
|
133 |
'ac_disable_logged_in_cart_email'
|
134 |
);
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
register_setting(
|
137 |
'woocommerce_ac_settings',
|
138 |
'ac_capture_email_address_from_url'
|
139 |
);
|
140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
add_settings_field(
|
142 |
'wcap_product_image_size',
|
143 |
__( 'Product Image( H x W )', 'woocommerce-abandoned-cart' ),
|
@@ -147,11 +270,39 @@ if ( ! class_exists( 'WCAP_Pro_Settings' ) ) {
|
|
147 |
array( __( 'This setting affects the dimension of the product image in the abandoned cart reminder email.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
148 |
);
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
register_setting(
|
151 |
'ac_email_settings_section',
|
152 |
'wcap_product_image_size'
|
153 |
);
|
154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
add_settings_section(
|
156 |
'ac_cron_job_settings_section', // ID used to identify this section and with which to register options.
|
157 |
__( 'Setting for sending Emails & SMS using Action Scheduler', 'woocommerce-abandoned-cart' ), // Title to be displayed on the administration page.
|
@@ -211,6 +362,27 @@ if ( ! class_exists( 'WCAP_Pro_Settings' ) ) {
|
|
211 |
array( __( 'The carts abandoned from email addresses with these domains will not be tracked by the plugin. <i>Separate email address domains with commas.</i>', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
212 |
);
|
213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
}
|
215 |
|
216 |
/**
|
104 |
array( __( 'Abandoned carts of logged-in users will not be tracked.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
105 |
);
|
106 |
|
107 |
+
add_settings_field(
|
108 |
+
'ac_cart_abandoned_after_x_days_order_placed',
|
109 |
+
__( 'Send reminder emails for newly abandoned carts after X days of order placement', 'woocommerce-abandoned-cart' ),
|
110 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_cart_abandoned_after_x_days_order_placed_callback' ),
|
111 |
+
'woocommerce_ac_page',
|
112 |
+
'ac_lite_general_settings_section',
|
113 |
+
array( __( 'Reminder emails will be sent for newly abandoned carts only after X days of a previously placed order for a user with the same email address as that of the abandoned cart', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
114 |
+
);
|
115 |
+
|
116 |
+
add_settings_field(
|
117 |
+
'ac_capture_email_from_forms',
|
118 |
+
__( 'Capture email address from custom fields.', 'woocommerce-abandoned-cart' ),
|
119 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_capture_email_from_forms' ),
|
120 |
+
'woocommerce_ac_page',
|
121 |
+
'ac_lite_general_settings_section',
|
122 |
+
array( __( 'Enable this setting to capture email address from other form fields.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
123 |
+
);
|
124 |
+
|
125 |
+
add_settings_field(
|
126 |
+
'ac_email_forms_classes',
|
127 |
+
__( 'Class names of the form fields.', 'woocommerce-abandoned-cart' ),
|
128 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_email_forms_classes' ),
|
129 |
+
'woocommerce_ac_page',
|
130 |
+
'ac_lite_general_settings_section',
|
131 |
+
array( __( 'Enter class names of fields separated by commas from where email needs to be captured.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
132 |
+
);
|
133 |
+
|
134 |
add_settings_field(
|
135 |
'ac_capture_email_address_from_url',
|
136 |
__( 'Capture Email address from URL', 'woocommerce-abandoned-cart' ),
|
140 |
array( __( 'If your site URL contain the same key, then it will capture it as an email address of customer.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
141 |
);
|
142 |
|
143 |
+
add_settings_field(
|
144 |
+
'wcac_delete_plugin_data',
|
145 |
+
__( 'Remove Data on Uninstall?', 'woocommerce-abandoned-cart' ),
|
146 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_deleting_plugin_data' ),
|
147 |
+
'woocommerce_ac_page',
|
148 |
+
'ac_lite_general_settings_section',
|
149 |
+
array( __( 'Enable this setting if you want to completely remove Abandoned Cart data when plugin is deleted.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
150 |
+
);
|
151 |
+
|
152 |
+
add_settings_field(
|
153 |
+
'wcap_atc_close_icon_add_product_to_cart',
|
154 |
+
__( 'Add Product to Cart when Close Icon is clicked?', 'woocommerce-abandoned-cart' ),
|
155 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_atc_close_icon_add_product_to_cart_callback' ),
|
156 |
+
'woocommerce_ac_page',
|
157 |
+
'ac_lite_general_settings_section',
|
158 |
+
array( __( 'Enable this setting if you want the product to the added to cart when the user clicks on the Close Icon in the Add to Cart Popup Modal.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
159 |
+
);
|
160 |
+
|
161 |
+
add_settings_field(
|
162 |
+
'wcap_enable_debounce',
|
163 |
+
__( 'Enable Email Verification:', 'woocommerce-abandoned-cart' ),
|
164 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_enable_debounce_callback' ),
|
165 |
+
'woocommerce_ac_page',
|
166 |
+
'ac_lite_general_settings_section',
|
167 |
+
array( __( 'Enable this checkbox to allow email verification to be done via DeBounce API services.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
168 |
+
);
|
169 |
+
|
170 |
+
add_settings_field(
|
171 |
+
'ac_debounce_api',
|
172 |
+
__( 'Enter DeBounce API Key', 'woocommerce-abandoned-cart' ),
|
173 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_debounce_api_callback' ),
|
174 |
+
'woocommerce_ac_page',
|
175 |
+
'ac_lite_general_settings_section',
|
176 |
+
array( __( 'Enter DeBounce JS API Key.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
177 |
+
);
|
178 |
+
|
179 |
+
add_settings_section(
|
180 |
+
'ac_coupon_settings_section', // ID used to identify this section and with which to register options.
|
181 |
+
__( 'Coupon Settings', 'woocommerce-abandoned-cart' ), // Title to be displayed on the administration page.
|
182 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_coupon_callback' ), // Callback used to render the description of the section.
|
183 |
+
'woocommerce_ac_page' // Page on which to add this section of options.
|
184 |
+
);
|
185 |
+
|
186 |
+
add_settings_field(
|
187 |
+
'wcap_delete_coupon_data',
|
188 |
+
__( 'Delete Coupons Automatically', 'woocommerce-abandoned-cart' ),
|
189 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_deleting_coupon_data' ),
|
190 |
+
'woocommerce_ac_page',
|
191 |
+
'ac_coupon_settings_section',
|
192 |
+
array( __( 'Enable this setting if you want to completely remove the expired and used coupon code automatically every 15 days.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
193 |
+
);
|
194 |
+
|
195 |
+
add_settings_field(
|
196 |
+
'wcap_delete_coupon_data_manually',
|
197 |
+
__( 'Delete Coupons Manually', 'woocommerce-abandoned-cart' ),
|
198 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_deleting_coupon_data_manually' ),
|
199 |
+
'woocommerce_ac_page',
|
200 |
+
'ac_coupon_settings_section',
|
201 |
+
array( __( 'If you want to completely remove the expired and used coupon code now then click on "Delete" button.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
202 |
+
);
|
203 |
+
|
204 |
register_setting(
|
205 |
'woocommerce_ac_settings',
|
206 |
'ac_enable_cart_emails'
|
221 |
'ac_disable_logged_in_cart_email'
|
222 |
);
|
223 |
|
224 |
+
register_setting(
|
225 |
+
'woocommerce_ac_settings',
|
226 |
+
'ac_capture_email_from_forms'
|
227 |
+
);
|
228 |
+
|
229 |
+
register_setting(
|
230 |
+
'woocommerce_ac_settings',
|
231 |
+
'ac_cart_abandoned_after_x_days_order_placed'
|
232 |
+
);
|
233 |
+
|
234 |
+
register_setting(
|
235 |
+
'woocommerce_ac_settings',
|
236 |
+
'ac_email_forms_classes'
|
237 |
+
);
|
238 |
+
|
239 |
register_setting(
|
240 |
'woocommerce_ac_settings',
|
241 |
'ac_capture_email_address_from_url'
|
242 |
);
|
243 |
|
244 |
+
register_setting(
|
245 |
+
'woocommerce_ac_settings',
|
246 |
+
'wcac_delete_plugin_data'
|
247 |
+
);
|
248 |
+
|
249 |
+
register_setting(
|
250 |
+
'woocommerce_ac_settings',
|
251 |
+
'wcap_atc_close_icon_add_product_to_cart'
|
252 |
+
);
|
253 |
+
|
254 |
+
register_setting(
|
255 |
+
'woocommerce_ac_settings',
|
256 |
+
'wcap_enable_debounce'
|
257 |
+
);
|
258 |
+
|
259 |
+
register_setting(
|
260 |
+
'woocommerce_ac_settings',
|
261 |
+
'ac_debounce_api'
|
262 |
+
);
|
263 |
+
|
264 |
add_settings_field(
|
265 |
'wcap_product_image_size',
|
266 |
__( 'Product Image( H x W )', 'woocommerce-abandoned-cart' ),
|
270 |
array( __( 'This setting affects the dimension of the product image in the abandoned cart reminder email.', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
271 |
);
|
272 |
|
273 |
+
add_settings_field(
|
274 |
+
'wcap_product_name_redirect',
|
275 |
+
__( 'Product Name Redirects to', 'woocommerce-ac' ),
|
276 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_product_name_redirect_callback' ),
|
277 |
+
'woocommerce_ac_email_page',
|
278 |
+
'ac_email_settings_section',
|
279 |
+
array( __( 'Select the page where product name in reminder emails should redirect to.', 'woocommerce-ac' ) . $upgrade_pro_msg )
|
280 |
+
);
|
281 |
+
|
282 |
+
add_settings_field(
|
283 |
+
'wcap_add_utm_to_links',
|
284 |
+
__( 'UTM parameters to be added to all the links in reminder emails', 'woocommerce-ac' ),
|
285 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_add_utm_to_links_callback' ),
|
286 |
+
'woocommerce_ac_email_page',
|
287 |
+
'ac_email_settings_section',
|
288 |
+
array( __( 'UTM parameters that should be added to all the links in reminder emails.', 'woocommerce-ac' ) . $upgrade_pro_msg )
|
289 |
+
);
|
290 |
+
|
291 |
register_setting(
|
292 |
'ac_email_settings_section',
|
293 |
'wcap_product_image_size'
|
294 |
);
|
295 |
|
296 |
+
register_setting(
|
297 |
+
'woocommerce_ac_settings',
|
298 |
+
'wcap_product_name_redirect'
|
299 |
+
);
|
300 |
+
|
301 |
+
register_setting(
|
302 |
+
'woocommerce_ac_settings',
|
303 |
+
'wcap_add_utm_to_links'
|
304 |
+
);
|
305 |
+
|
306 |
add_settings_section(
|
307 |
'ac_cron_job_settings_section', // ID used to identify this section and with which to register options.
|
308 |
__( 'Setting for sending Emails & SMS using Action Scheduler', 'woocommerce-abandoned-cart' ), // Title to be displayed on the administration page.
|
362 |
array( __( 'The carts abandoned from email addresses with these domains will not be tracked by the plugin. <i>Separate email address domains with commas.</i>', 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg )
|
363 |
);
|
364 |
|
365 |
+
add_settings_section(
|
366 |
+
'ac_unsubscribe_section',
|
367 |
+
__( 'Unsubscribe Settings', 'woocommerce-abandoned-cart' ),
|
368 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_unsubscribe_options_callback' ),
|
369 |
+
'woocommerce_ac_page'
|
370 |
+
);
|
371 |
+
|
372 |
+
$doc_link = 'https://www.tychesoftwares.com/docs/docs/abandoned-cart-pro-for-woocommerce/unsubscribe-landing-page-options';
|
373 |
+
add_settings_field(
|
374 |
+
'wcap_unsubscribe_landing_page',
|
375 |
+
__( 'Unsubscribe Landing Page', 'woocommerce-abandoned-cart' ),
|
376 |
+
array( 'WCAP_Pro_Settings_Callbacks', 'wcap_unsubscribe_landing_page_callback' ),
|
377 |
+
'woocommerce_ac_page',
|
378 |
+
'ac_unsubscribe_section',
|
379 |
+
array( __( "Select a source where the user must be redirected when an Unsubscribe link is clicked from reminders sent. For details, please check the <a href='$doc_link' target='_blank'>documentation</a>.", 'woocommerce-abandoned-cart' ) . $upgrade_pro_msg ) // phpcs:ignore
|
380 |
+
);
|
381 |
+
|
382 |
+
register_setting(
|
383 |
+
'woocommerce_ac_settings',
|
384 |
+
'wcap_unsubscribe_landing_page'
|
385 |
+
);
|
386 |
}
|
387 |
|
388 |
/**
|
includes/class-wcal-default-template-settings.php
CHANGED
@@ -29,11 +29,8 @@ class Wcal_Default_Template_Settings {
|
|
29 |
$active_post_array = 0;
|
30 |
$email_frequency_array = 1;
|
31 |
$day_or_hour_array = 'Hours';
|
32 |
-
if ( ! defined( 'WCAL_PLUGIN_PATH' ) ) {
|
33 |
-
define( 'WCAL_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
34 |
-
}
|
35 |
ob_start();
|
36 |
-
include WCAL_PLUGIN_PATH . '/templates/template_1.php';
|
37 |
$content = ob_get_clean();
|
38 |
$body_content_array = addslashes( $content );
|
39 |
$is_wc_template = 1;
|
29 |
$active_post_array = 0;
|
30 |
$email_frequency_array = 1;
|
31 |
$day_or_hour_array = 'Hours';
|
|
|
|
|
|
|
32 |
ob_start();
|
33 |
+
include WCAL_PLUGIN_PATH . '/includes/templates/template_1.php';
|
34 |
$content = ob_get_clean();
|
35 |
$body_content_array = addslashes( $content );
|
36 |
$is_wc_template = 1;
|
includes/classes/class-wcal-dashboard-report.php
CHANGED
@@ -81,6 +81,16 @@ if ( ! class_exists( 'Wcal_Dashoard_Report' ) ) {
|
|
81 |
$percent_of_sales = 0;
|
82 |
}
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
?>
|
85 |
|
86 |
</form>
|
@@ -252,9 +262,7 @@ if ( ! class_exists( 'Wcal_Dashoard_Report' ) ) {
|
|
252 |
</div>
|
253 |
</div>
|
254 |
|
255 |
-
<div class="chartgraph">
|
256 |
-
<img src="<?php echo esc_attr( plugins_url() ) . '/woocommerce-abandoned-cart/assets/images/Coming_Soon.png'; ?>" />
|
257 |
-
</div>
|
258 |
|
259 |
</div>
|
260 |
<?php
|
@@ -557,7 +565,204 @@ if ( ! class_exists( 'Wcal_Dashoard_Report' ) ) {
|
|
557 |
$count_month = null === $order_totals->total_sales ? 0 : $order_totals->total_sales;
|
558 |
return $count_month;
|
559 |
}
|
560 |
-
}
|
561 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
}
|
563 |
?>
|
81 |
$percent_of_sales = 0;
|
82 |
}
|
83 |
|
84 |
+
$graph_data = self::get_abandoned_data();
|
85 |
+
|
86 |
+
wp_localize_script(
|
87 |
+
'reports_js',
|
88 |
+
'wcal_graph_data',
|
89 |
+
array(
|
90 |
+
'data' => $graph_data,
|
91 |
+
)
|
92 |
+
);
|
93 |
+
wp_enqueue_script( 'reports_js' );
|
94 |
?>
|
95 |
|
96 |
</form>
|
262 |
</div>
|
263 |
</div>
|
264 |
|
265 |
+
<div class="chartgraph"></div>
|
|
|
|
|
266 |
|
267 |
</div>
|
268 |
<?php
|
565 |
$count_month = null === $order_totals->total_sales ? 0 : $order_totals->total_sales;
|
566 |
return $count_month;
|
567 |
}
|
|
|
568 |
|
569 |
+
/**
|
570 |
+
* Returned Abandoned & Recovered cart stats.
|
571 |
+
*
|
572 |
+
* @param string $selected_data_range - Range selected.
|
573 |
+
* @param string $start_date - Range Start Date.
|
574 |
+
* @param string $end_date - Range End Date.
|
575 |
+
* @return array - Stats Data.
|
576 |
+
*
|
577 |
+
* @since 5.8.8
|
578 |
+
*/
|
579 |
+
public static function get_adv_stats( $selected_data_range, $start_date, $end_date ) {
|
580 |
+
global $wpdb;
|
581 |
+
|
582 |
+
if ( '' === $start_date && '' === $end_date ) {
|
583 |
+
return array();
|
584 |
+
} else {
|
585 |
+
$begin_of_month = strtotime( $start_date );
|
586 |
+
$end_of_month = strtotime( $end_date );
|
587 |
+
}
|
588 |
+
$count_month = 0;
|
589 |
+
$blank_cart_info = '{"cart":[]}';
|
590 |
+
$blank_cart_info_guest = '[]';
|
591 |
+
|
592 |
+
$ac_cutoff_time = is_numeric( get_option( 'ac_lite_cart_abandoned_time', 10 ) ) ? get_option( 'ac_lite_cart_abandoned_time', 10 ) : 10;
|
593 |
+
$cut_off_time = $ac_cutoff_time * 60;
|
594 |
+
$current_time = current_time( 'timestamp' ); // phpcs:ignore
|
595 |
+
$compare_time = $current_time - $cut_off_time;
|
596 |
+
|
597 |
+
$count_month = $wpdb->get_results( // phpcs:ignore
|
598 |
+
$wpdb->prepare(
|
599 |
+
"SELECT abandoned_cart_info, recovered_cart FROM `" . $wpdb->prefix . "ac_abandoned_cart_history_lite`
|
600 |
+
WHERE abandoned_cart_time >= %s
|
601 |
+
AND abandoned_cart_time <= %s
|
602 |
+
AND abandoned_cart_time <= %s
|
603 |
+
AND ( cart_ignored <> '1' OR recovered_cart <> '0' )
|
604 |
+
AND ( ( user_type = 'REGISTERED' AND abandoned_cart_info NOT LIKE %s ) OR ( user_type = 'GUEST' AND abandoned_cart_info NOT LIKE %s AND abandoned_cart_info NOT LIKE %s ) )",
|
605 |
+
$begin_of_month,
|
606 |
+
$end_of_month,
|
607 |
+
$compare_time,
|
608 |
+
"%$blank_cart_info%",
|
609 |
+
$blank_cart_info_guest,
|
610 |
+
"%$blank_cart_info%"
|
611 |
+
)
|
612 |
+
);
|
613 |
+
|
614 |
+
$abandoned_count = 0;
|
615 |
+
$recovered_count = 0;
|
616 |
+
$abandoned_amount = 0;
|
617 |
+
$recovered_amount = 0;
|
618 |
+
|
619 |
+
foreach ( $count_month as $cart_value ) {
|
620 |
+
|
621 |
+
$abandoned_count++;
|
622 |
+
|
623 |
+
if ( (int) $cart_value->recovered_cart > 0 ) {
|
624 |
+
$recovered_count++;
|
625 |
+
}
|
626 |
+
|
627 |
+
$cart_info = json_decode( stripslashes( $cart_value->abandoned_cart_info ) );
|
628 |
+
if ( isset( $cart_info->cart ) ) {
|
629 |
+
foreach ( $cart_info->cart as $cart ) {
|
630 |
+
$abandoned_amount += isset( $cart->line_total ) ? $cart->line_total : 0;
|
631 |
+
$recovered_id = $cart_value->recovered_cart;
|
632 |
+
if ( (int) $recovered_id > 0 ) {
|
633 |
+
$rec_order_total = get_post_meta( $recovered_id, '_order_total', true );
|
634 |
+
$recovered_amount += isset( $rec_order_total ) && $rec_order_total > 0 ? $rec_order_total : 0;
|
635 |
+
}
|
636 |
+
}
|
637 |
+
}
|
638 |
+
}
|
639 |
+
|
640 |
+
return array(
|
641 |
+
'abandoned_count' => $abandoned_count,
|
642 |
+
'recovered_count' => $recovered_count,
|
643 |
+
'abandoned_amount' => $abandoned_amount,
|
644 |
+
'recovered_amount' => $recovered_amount,
|
645 |
+
);
|
646 |
+
}
|
647 |
+
/**
|
648 |
+
* Get Graph Data
|
649 |
+
*
|
650 |
+
* @since 5.8.8
|
651 |
+
*/
|
652 |
+
public static function get_abandoned_data() {
|
653 |
+
|
654 |
+
$start_timestamp = self::$start_timestamp;
|
655 |
+
$end_timestamp = self::$end_timestamp;
|
656 |
+
|
657 |
+
$current_date = date( 'd' ); // phpcs:ignore
|
658 |
+
$current_month = date( 'm' ); // phpcs:ignore
|
659 |
+
$current_year = date( 'Y' ); // phpcs:ignore
|
660 |
+
|
661 |
+
$selected_data_range = isset( $_GET['duration_select'] ) ? sanitize_text_field( wp_unslash( $_GET['duration_select'] ) ) : 'this_month'; //phpcs:ignore
|
662 |
+
switch ( $selected_data_range ) {
|
663 |
+
case 'this_month':
|
664 |
+
$display_freq = $current_date > 15 ? 'weekly' : 'daily';
|
665 |
+
$end_timestamp = current_time( 'timestamp' ); // phpcs:ignore
|
666 |
+
break;
|
667 |
+
case 'last_month':
|
668 |
+
case 'this_quarter':
|
669 |
+
case 'last_quarter':
|
670 |
+
$display_freq = 'weekly';
|
671 |
+
break;
|
672 |
+
case 'this_year':
|
673 |
+
$display_freq = $current_month > 3 ? 'monthly' : 'weekly';
|
674 |
+
$end_timestamp = current_time( 'timestamp' ); // phpcs:ignore
|
675 |
+
break;
|
676 |
+
case 'last_year':
|
677 |
+
$display_freq = 'monthly';
|
678 |
+
break;
|
679 |
+
case 'custom':
|
680 |
+
$display_freq = 'weekly';
|
681 |
+
$number_of_days = round( ( $end_timestamp - $start_timestamp ) / ( 60 * 60 * 24 ) );
|
682 |
+
if ( is_numeric( $number_of_days ) && $number_of_days > 0 ) {
|
683 |
+
if ( $number_of_days <= 15 ) {
|
684 |
+
$display_freq = 'daily';
|
685 |
+
} elseif ( $number_of_days <= 90 ) {
|
686 |
+
$display_freq = 'weekly';
|
687 |
+
} else {
|
688 |
+
$display_freq = 'monthly';
|
689 |
+
}
|
690 |
+
}
|
691 |
+
break;
|
692 |
+
}
|
693 |
+
|
694 |
+
$data = self::wcap_get_graph_data( $selected_data_range, $start_timestamp, $end_timestamp, $display_freq );
|
695 |
+
return $data;
|
696 |
+
|
697 |
+
}
|
698 |
+
|
699 |
+
/**
|
700 |
+
* Collect Graph data to be displayed & return.
|
701 |
+
*
|
702 |
+
* @param string $selected_data_range - Selected Date Range.
|
703 |
+
* @param timestamp $start_timestamp - Start Timestamp.
|
704 |
+
* @param timestamp $end_timestamp - End Timestamp.
|
705 |
+
* @param string $display_freq - Display Frequency.
|
706 |
+
* @return array $data - Data to be returned.
|
707 |
+
*
|
708 |
+
* @since 5.8.8
|
709 |
+
*/
|
710 |
+
public static function wcap_get_graph_data( $selected_data_range, $start_timestamp, $end_timestamp, $display_freq ) {
|
711 |
+
|
712 |
+
$start_date = date( 'Y-m-d H:i:s', $start_timestamp ); // phpcs:ignore
|
713 |
+
switch ( $display_freq ) {
|
714 |
+
case 'daily':
|
715 |
+
$range_end = date( 'Y-m-d H:i:s', strtotime( '+1 day', $start_timestamp ) ); // phpcs:ignore
|
716 |
+
do {
|
717 |
+
$get_stats = self::get_adv_stats( $selected_data_range, $start_date, $range_end );
|
718 |
+
$start_date_display = date( 'd M', strtotime( $start_date ) ); // phpcs:ignore
|
719 |
+
$data[ $start_date_display ] = array(
|
720 |
+
'abandoned_amount' => $get_stats['abandoned_amount'],
|
721 |
+
'recovered_amount' => $get_stats['recovered_amount'],
|
722 |
+
);
|
723 |
+
$start_date = date( 'Y-m-d H:i:s', strtotime( $range_end ) ); // phpcs:ignore
|
724 |
+
$range_end = date( 'Y-m-d', strtotime( "$start_date +1 day" ) ); // phpcs:ignore
|
725 |
+
} while ( strtotime( $start_date ) < $end_timestamp );
|
726 |
+
break;
|
727 |
+
case 'weekly':
|
728 |
+
$range_end = date( 'Y-m-d H:i:s', strtotime( '+7 days', $start_timestamp ) ); // phpcs:ignore
|
729 |
+
$range_end_stamp = strtotime( $range_end );
|
730 |
+
|
731 |
+
do {
|
732 |
+
if ( $range_end_stamp > $end_timestamp ) {
|
733 |
+
$range_end = date( 'Y-m-d', $end_timestamp ); // phpcs:ignore
|
734 |
+
$range_end_stamp = $end_timestamp;
|
735 |
+
}
|
736 |
+
|
737 |
+
$get_stats = self::get_adv_stats( $selected_data_range, $start_date, $range_end );
|
738 |
+
$start_date_display = date( 'd M', strtotime( $start_date ) ); // phpcs:ignore
|
739 |
+
$data[ $start_date_display ] = array(
|
740 |
+
'abandoned_amount' => $get_stats['abandoned_amount'],
|
741 |
+
'recovered_amount' => $get_stats['recovered_amount'],
|
742 |
+
);
|
743 |
+
$start_date = date( 'Y-m-d H:i:s', $range_end_stamp ); // phpcs:ignore
|
744 |
+
$range_end = date( 'Y-m-d', strtotime( "$start_date +7 days" ) ); // phpcs:ignore
|
745 |
+
$range_end_stamp = strtotime( $range_end );
|
746 |
+
|
747 |
+
} while ( strtotime( $start_date ) < $end_timestamp );
|
748 |
+
break;
|
749 |
+
case 'monthly':
|
750 |
+
$range_end = date( 'Y-m-d H:i:s', strtotime( '+1 month', $start_timestamp ) ); // phpcs:ignore
|
751 |
+
do {
|
752 |
+
$get_stats = self::get_adv_stats( $selected_data_range, $start_date, $range_end );
|
753 |
+
$start_date_display = date( 'M y', strtotime( $start_date ) ); // phpcs:ignore
|
754 |
+
$data[ $start_date_display ] = array(
|
755 |
+
'abandoned_amount' => $get_stats['abandoned_amount'],
|
756 |
+
'recovered_amount' => $get_stats['recovered_amount'],
|
757 |
+
);
|
758 |
+
$start_date = date( 'Y-m-d H:i:s', strtotime( $range_end ) ); // phpcs:ignore
|
759 |
+
$range_end = date( 'Y-m-d', strtotime( "$start_date +1 month" ) ); // phpcs:ignore
|
760 |
+
} while ( strtotime( $start_date ) < $end_timestamp );
|
761 |
+
|
762 |
+
break;
|
763 |
+
}
|
764 |
+
return $data;
|
765 |
+
}
|
766 |
+
}
|
767 |
}
|
768 |
?>
|
includes/templates/atc-rules/html-atc-rules-add-row.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
$rule_type_options = apply_filters(
|
16 |
+
'wcap_atc_rules_engine_rule_type_values',
|
17 |
+
array(
|
18 |
+
'select_disabled' => __( 'Select Rule Type', 'woocommerce-ac' ),
|
19 |
+
'custom_pages' => __( 'Pages', 'woocommerce-ac' ),
|
20 |
+
'product_cat' => __( 'Product Categories', 'woocommerce-ac' ),
|
21 |
+
'products' => __( 'Products', 'woocommerce-ac' ),
|
22 |
+
)
|
23 |
+
);
|
24 |
+
|
25 |
+
$rule_condition_options = apply_filters(
|
26 |
+
'wcap_atc_rules_engine_rule_condition_values',
|
27 |
+
array(
|
28 |
+
'select_disabled' => __( 'Select Condition', 'woocommerce-ac' ),
|
29 |
+
'includes' => __( 'Includes any of', 'woocommerce-ac' ),
|
30 |
+
'excludes' => __( 'Excludes any of', 'woocommerce-ac' ),
|
31 |
+
)
|
32 |
+
);
|
33 |
+
?>
|
34 |
+
<td class='wcap_rule_type_col'>
|
35 |
+
<select class='wcap_rule_type' id='wcap_rule_type_' name='wcap_rule_type_' onChange='wcap_rule_values( this.id )'>
|
36 |
+
<?php
|
37 |
+
foreach ( $rule_type_options as $type_key => $type_value ) {
|
38 |
+
$disabled = '';
|
39 |
+
$selected = 'select_disabled' === $type_key ? 'selected' : '';
|
40 |
+
if ( strpos( $type_key, 'disabled' ) !== false ) {
|
41 |
+
$type_key = '';
|
42 |
+
$disabled = 'disabled';
|
43 |
+
}
|
44 |
+
|
45 |
+
echo sprintf(
|
46 |
+
"<option value='%s' %s %s class=''>%s</option>",
|
47 |
+
esc_attr( $type_key ),
|
48 |
+
esc_attr( $disabled ),
|
49 |
+
esc_attr( $selected ),
|
50 |
+
esc_html( $type_value )
|
51 |
+
);
|
52 |
+
}
|
53 |
+
?>
|
54 |
+
</select>
|
55 |
+
</td>
|
56 |
+
<td class='wcap_rule_condition_col'>
|
57 |
+
<select class='wcap_rule_condition' id='wcap_rule_condition_' name='wcap_rule_condition_'>
|
58 |
+
<?php
|
59 |
+
foreach ( $rule_condition_options as $cond_key => $cond_value ) {
|
60 |
+
$disabled = '';
|
61 |
+
|
62 |
+
if ( strpos( $cond_key, 'disabled' ) !== false ) {
|
63 |
+
$cond_key = '';
|
64 |
+
$disabled = 'disabled';
|
65 |
+
}
|
66 |
+
echo sprintf(
|
67 |
+
"<option value='%s' %s>%s</option>",
|
68 |
+
esc_attr( $cond_key ),
|
69 |
+
esc_attr( $disabled ),
|
70 |
+
esc_html( $cond_value )
|
71 |
+
);
|
72 |
+
}
|
73 |
+
?>
|
74 |
+
</select>
|
75 |
+
</td>
|
76 |
+
<td class='wcap_rule_value_col'>
|
77 |
+
<select class='wcap_rule_value' id='wcap_rule_value_' name='wcap_rule_value_' style='width: 90%;'>
|
78 |
+
<option value='' disabled selected><?php esc_html_e( 'Select values', 'woocommerce-ac' ); ?></option>
|
79 |
+
</select>
|
80 |
+
</td>
|
81 |
+
<td>
|
82 |
+
<a href='javascript:void(0)' class='wcap_delete_rule_button'>
|
83 |
+
<i class='fa fa-trash fa-lg fa-fw' id='wcap_rule_delete_' onclick='wcap_delete_rule_row( this.id )'></i>
|
84 |
+
</a>
|
85 |
+
<a href='javascript:void(0)' class='wcap_add_rule_button' id='add_new' onclick='wcap_add_new_rule_row( this.id )'>
|
86 |
+
<i class='fa fa-plus fa-lg fa-fw'></i>
|
87 |
+
<?php echo esc_html__( 'Add Rule', 'woocommerce-ac' ); ?>
|
88 |
+
</a>
|
89 |
+
</td>
|
includes/templates/atc-rules/html-atc-rules-edit-row.php
ADDED
@@ -0,0 +1,191 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
$selected_rule_type = isset( $rule_type ) ? $rule_type : '';
|
16 |
+
$selected_rule_cond = isset( $rule_condition ) ? $rule_condition : '';
|
17 |
+
$selected_rule_value = isset( $rule_value ) ? $rule_value : '';
|
18 |
+
|
19 |
+
$rule_type_options = apply_filters(
|
20 |
+
'wcap_atc_rules_engine_rule_type_values',
|
21 |
+
array(
|
22 |
+
'select_disabled' => __( 'Select Rule Type', 'woocommerce-ac' ),
|
23 |
+
'custom_pages' => __( 'Pages', 'woocommerce-ac' ),
|
24 |
+
'product_cat' => __( 'Product Categories', 'woocommerce-ac' ),
|
25 |
+
'products' => __( 'Products', 'woocommerce-ac' ),
|
26 |
+
)
|
27 |
+
);
|
28 |
+
|
29 |
+
$rule_condition_options = apply_filters(
|
30 |
+
'wcap_atc_rules_engine_rule_condition_values',
|
31 |
+
array(
|
32 |
+
'select_disabled' => __( 'Select Condition', 'woocommerce-ac' ),
|
33 |
+
'includes' => __( 'Includes any of', 'woocommerce-ac' ),
|
34 |
+
'excludes' => __( 'Excludes any of', 'woocommerce-ac' ),
|
35 |
+
)
|
36 |
+
);
|
37 |
+
|
38 |
+
$rule_value_array = array();
|
39 |
+
switch ( $selected_rule_type ) {
|
40 |
+
case 'payment_gateways':
|
41 |
+
$wc_payment_gateways = new WC_Payment_Gateways();
|
42 |
+
$payment_gateways = $wc_payment_gateways->payment_gateways();
|
43 |
+
foreach ( $payment_gateways as $slug => $gateways ) {
|
44 |
+
if ( 'yes' === $gateways->enabled ) {
|
45 |
+
$rule_value_array[ $slug ] = $gateways->title;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
break;
|
49 |
+
case 'cart_status':
|
50 |
+
$rule_value_array = array(
|
51 |
+
'abandoned' => __( 'Abandoned', 'woocommerce-ac' ),
|
52 |
+
'abandoned-pending' => __( 'Abandoned - Pending Payment', 'woocommerce-ac' ),
|
53 |
+
'abandoned-cancelled' => __( 'Abandoned - Order Cancelled', 'woocommerce-ac' ),
|
54 |
+
);
|
55 |
+
break;
|
56 |
+
case 'send_to':
|
57 |
+
$rule_value_array = array(
|
58 |
+
'all' => __( 'All', 'woocommerce-ac' ),
|
59 |
+
'registered_users' => __( 'Registered Users', 'woocommerce-ac' ),
|
60 |
+
'guest_users' => __( 'Guest Users', 'woocommerce-ac' ),
|
61 |
+
'wcap_email_customer' => __( 'Customers', 'woocommerce-ac' ),
|
62 |
+
'wcap_email_admin' => __( 'Admin', 'woocommerce-ac' ),
|
63 |
+
'wcap_email_customer_admin' => __( 'Customers & Admin', 'woocommerce-ac' ),
|
64 |
+
'email_addresses' => __( 'Email Addresses', 'woocommerce-ac' ),
|
65 |
+
);
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
$rule_value_array = apply_filters( 'wcap_rules_engine_rule_option_values', $rule_value_array );
|
69 |
+
|
70 |
+
$type_id = "wcap_rule_type_$row_id";
|
71 |
+
$cond_id = "wcap_rule_condition_$row_id";
|
72 |
+
$val_id = "wcap_rule_value_$row_id";
|
73 |
+
$delete_id = "wcap_rule_delete_$row_id";
|
74 |
+
|
75 |
+
?>
|
76 |
+
<td class='wcap_rule_type_col'>
|
77 |
+
<select class='wcap_rule_type' id='<?php echo esc_attr( $type_id ); ?>' name='<?php echo esc_attr( $type_id ); ?>' onChange='wcap_rule_values( this.id )'>
|
78 |
+
<?php
|
79 |
+
foreach ( $rule_type_options as $type_key => $type_value ) {
|
80 |
+
$disabled = '';
|
81 |
+
$selected = '' === $selected_rule_type && 'selected_disabled' === $type_key ? 'selected' : '';
|
82 |
+
$selected = '' !== $selected_rule_type && $selected_rule_type === $type_key ? 'selected' : '';
|
83 |
+
|
84 |
+
if ( strpos( $type_key, 'disabled' ) !== false ) {
|
85 |
+
$type_key = '';
|
86 |
+
$disabled = 'disabled';
|
87 |
+
}
|
88 |
+
|
89 |
+
echo sprintf(
|
90 |
+
"<option value='%s' %s %s>%s</option>",
|
91 |
+
esc_attr( $type_key ),
|
92 |
+
esc_attr( $disabled ),
|
93 |
+
esc_attr( $selected ),
|
94 |
+
esc_html( $type_value )
|
95 |
+
);
|
96 |
+
}
|
97 |
+
?>
|
98 |
+
</select>
|
99 |
+
</td>
|
100 |
+
<td class='wcap_rule_condition_col'>
|
101 |
+
<select class='wcap_rule_condition' id='<?php echo esc_attr( $cond_id ); ?>' name='<?php echo esc_attr( $cond_id ); ?>'>
|
102 |
+
<?php
|
103 |
+
foreach ( $rule_condition_options as $cond_key => $cond_value ) {
|
104 |
+
$disabled = '';
|
105 |
+
$selected = '' === $selected_rule_cond && 'selected_disabled' === $cond_key ? 'selected' : '';
|
106 |
+
$selected = '' !== $selected_rule_cond && $selected_rule_cond === $cond_key ? 'selected' : '';
|
107 |
+
|
108 |
+
if ( strpos( $cond_key, 'disabled' ) !== false ) {
|
109 |
+
$cond_key = '';
|
110 |
+
$disabled = 'disabled';
|
111 |
+
}
|
112 |
+
echo sprintf(
|
113 |
+
"<option value='%s' %s %s>%s</option>",
|
114 |
+
esc_attr( $cond_key ),
|
115 |
+
esc_attr( $disabled ),
|
116 |
+
esc_attr( $selected ),
|
117 |
+
esc_html( $cond_value )
|
118 |
+
);
|
119 |
+
}
|
120 |
+
?>
|
121 |
+
</select>
|
122 |
+
</td>
|
123 |
+
<td class='wcap_rule_value_col'>
|
124 |
+
<?php
|
125 |
+
switch ( $selected_rule_type ) {
|
126 |
+
case 'custom_pages':
|
127 |
+
?>
|
128 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Page…', 'woocommerce' ); ?>" data-action="wcap_json_find_pages">
|
129 |
+
<?php
|
130 |
+
if ( is_array( $selected_rule_value ) && count( $selected_rule_value ) > 0 ) {
|
131 |
+
foreach ( $selected_rule_value as $v_id ) {
|
132 |
+
if ( $v_id > 0 ) {
|
133 |
+
$v_object = get_the_title( $v_id );
|
134 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object ) . '</option>';
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
138 |
+
?>
|
139 |
+
</select>
|
140 |
+
<?php
|
141 |
+
break;
|
142 |
+
case 'product_cat':
|
143 |
+
?>
|
144 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Product Category…', 'woocommerce' ); ?>" data-action="wcap_json_find_product_cat">
|
145 |
+
<?php
|
146 |
+
if ( is_array( $selected_rule_value ) && count( $selected_rule_value ) > 0 ) {
|
147 |
+
foreach ( $selected_rule_value as $v_id ) {
|
148 |
+
if ( $v_id > 0 ) {
|
149 |
+
$v_object = get_term( $v_id );
|
150 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object->name ) . '</option>';
|
151 |
+
}
|
152 |
+
}
|
153 |
+
}
|
154 |
+
?>
|
155 |
+
</select>
|
156 |
+
<?php
|
157 |
+
break;
|
158 |
+
case 'products':
|
159 |
+
?>
|
160 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Product…', 'woocommerce' ); ?>" data-action="wcap_json_find_products">
|
161 |
+
<?php
|
162 |
+
if ( is_array( $selected_rule_value ) && count( $selected_rule_value ) > 0 ) {
|
163 |
+
foreach ( $selected_rule_value as $v_id ) {
|
164 |
+
if ( $v_id > 0 ) {
|
165 |
+
$v_object = get_the_title( $v_id );
|
166 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object ) . '</option>';
|
167 |
+
}
|
168 |
+
}
|
169 |
+
}
|
170 |
+
?>
|
171 |
+
</select>
|
172 |
+
<?php
|
173 |
+
break;
|
174 |
+
}
|
175 |
+
?>
|
176 |
+
</td>
|
177 |
+
<td>
|
178 |
+
<a href='javascript:void(0)' class='wcap_delete_rule_button'>
|
179 |
+
<i class='fa fa-trash fa-lg fa-fw' id='<?php echo esc_attr( $delete_id ); ?>' onclick='wcap_delete_rule_row( this.id )'></i>
|
180 |
+
</a>
|
181 |
+
<?php
|
182 |
+
if ( $last_row ) {
|
183 |
+
?>
|
184 |
+
<a href='javascript:void(0)' class='wcap_add_rule_button' id='add_new' onclick='wcap_add_new_rule_row( this.id )'>
|
185 |
+
<i class='fa fa-plus fa-lg fa-fw'></i>
|
186 |
+
<?php echo esc_html__( 'Add Rule', 'woocommerce-ac' ); ?>
|
187 |
+
</a>
|
188 |
+
<?php
|
189 |
+
}
|
190 |
+
?>
|
191 |
+
</td>
|
includes/templates/atc-rules/html-atc-rules-engine.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
global $woocommerce;
|
15 |
+
$help_tip_text = version_compare( $woocommerce->version, '3.0.0', '>=' ) ? 'help_tip_filter_3.0' : 'help_tip_filter';
|
16 |
+
|
17 |
+
// Args sent to the template.
|
18 |
+
$selected_all = 'all' === $match ? 'selected' : '';
|
19 |
+
$selected_any = 'any' === $match ? 'selected' : '';
|
20 |
+
$rules_setup = is_array( $rules ) && count( $rules ) > 0 ? $rules : array();
|
21 |
+
// Get the row data.
|
22 |
+
ob_start();
|
23 |
+
wc_get_template(
|
24 |
+
'html-atc-rules-add-row.php',
|
25 |
+
'',
|
26 |
+
'woocommerce-abandoned-cart/',
|
27 |
+
WCAL_PLUGIN_PATH . '/includes/templates/atc-rules/'
|
28 |
+
);
|
29 |
+
$row = ob_get_clean();
|
30 |
+
$row = apply_filters( 'wcap_atc_rules_engine_add_row_content', $row );
|
31 |
+
?>
|
32 |
+
<table class='wcap_atc_content wcap_atc_between_fields_space'>
|
33 |
+
<th class='wcap_button_section_table_heading'>
|
34 |
+
<?php esc_html_e( 'Match Rules:', 'woocommerce-ac' ); ?>
|
35 |
+
</th>
|
36 |
+
<tr>
|
37 |
+
<td>
|
38 |
+
<select class='' id='wcap_match_rules' name='wcap_match_rules' disabled>
|
39 |
+
<option value='all' <?php echo esc_attr( $selected_all ); ?>><?php esc_html_e( 'Match all rules', 'woocommerce-ac' ); ?></option>
|
40 |
+
<option value='any' <?php echo esc_attr( $selected_any ); ?>><?php esc_html_e( 'Match any rule(s)', 'woocommerce-ac' ); ?></option>
|
41 |
+
</select>
|
42 |
+
<img id = <?php echo esc_html( $help_tip_text ); ?> class="help_tip" width="16" height="16" data-tip='<?php esc_html_e( 'ATC template will be displayed depending on whether all the rule matches are met or any rule matches.', 'woocommerce-ac' ); ?>' src="<?php echo esc_url( plugins_url() ); ?>/woocommerce/assets/images/help.png" /></p>
|
43 |
+
</td>
|
44 |
+
</tr>
|
45 |
+
<th class='wcap_button_section_table_heading'>
|
46 |
+
<label for='wcap_rules_1'>
|
47 |
+
<?php esc_html_e( 'Rules:', 'woocommerce-ac' ); ?>
|
48 |
+
</label>
|
49 |
+
</th>
|
50 |
+
<tr>
|
51 |
+
<td>
|
52 |
+
<table class='wcap-rule-list' id='wcap-rule-list' data-row='<?php echo esc_attr( $row ); ?>'>
|
53 |
+
<?php
|
54 |
+
$rule_head_style = ( count( $rules_setup ) > 0 ) ? 'style="display:table-header-group;"' : 'style=display:none;';
|
55 |
+
?>
|
56 |
+
<thead id='wcap-rule-list-header' <?php echo esc_attr( $rule_head_style ); ?>>
|
57 |
+
<tr>
|
58 |
+
<th><?php echo esc_html__( 'Rule Type', 'woocommerce-ac' ); ?></th>
|
59 |
+
<th><?php echo esc_html__( 'Conditions', 'woocommerce-ac' ); ?></th>
|
60 |
+
<th><?php echo esc_html__( 'Values', 'woocommerce-ac' ); ?></th>
|
61 |
+
<th><?php echo esc_html__( 'Actions', 'woocommerce-ac' ); ?></th>
|
62 |
+
</tr>
|
63 |
+
</thead>
|
64 |
+
<tbody id='wcap-rule-list-body'>
|
65 |
+
<?php
|
66 |
+
if ( count( $rules_setup ) > 0 ) {
|
67 |
+
$count = count( $rules_setup );
|
68 |
+
$i = 1;
|
69 |
+
foreach ( $rules_setup as $rule_data ) {
|
70 |
+
$last_row = $i === $count ? true : false;
|
71 |
+
$rule_emails = isset( $rule_data->emails ) ? $rule_data->emails : '';
|
72 |
+
$edit_row = apply_filters(
|
73 |
+
'wcap_atc_rules_engine_edit_row_data',
|
74 |
+
array(
|
75 |
+
'rule_type' => $rule_data->rule_type,
|
76 |
+
'rule_condition' => $rule_data->rule_condition,
|
77 |
+
'rule_value' => $rule_data->rule_value,
|
78 |
+
'rule_emails' => $rule_emails,
|
79 |
+
'last_row' => $last_row,
|
80 |
+
'row_id' => $i,
|
81 |
+
)
|
82 |
+
);
|
83 |
+
?>
|
84 |
+
<tr id='<?php echo esc_attr( $i ); ?>'>
|
85 |
+
<?php
|
86 |
+
wc_get_template(
|
87 |
+
'html-atc-rules-edit-row.php',
|
88 |
+
$edit_row,
|
89 |
+
'woocommerce-abandoned-cart/',
|
90 |
+
WCAL_PLUGIN_PATH . '/includes/templates/atc-rules/'
|
91 |
+
);
|
92 |
+
?>
|
93 |
+
</tr>
|
94 |
+
<?php
|
95 |
+
$i++;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
?>
|
99 |
+
</tbody>
|
100 |
+
<tfoot>
|
101 |
+
<tr class="wcap_rule_list_footer_tr">
|
102 |
+
<td id="wcap_rule_list_footer" colspan="4">
|
103 |
+
<?php
|
104 |
+
if ( count( $rules_setup ) === 0 ) {
|
105 |
+
?>
|
106 |
+
<a
|
107 |
+
href="javascript:void(0)"
|
108 |
+
id="add_new"
|
109 |
+
class="button add-new-row"
|
110 |
+
onclick="wcap_add_new_rule_row( this.id )"
|
111 |
+
disabled>
|
112 |
+
<?php esc_html_e( 'Add new', 'woocommerce-ac' ); ?>
|
113 |
+
</a>
|
114 |
+
<?php
|
115 |
+
}
|
116 |
+
?>
|
117 |
+
</td>
|
118 |
+
</tr>
|
119 |
+
</tfoot>
|
120 |
+
</table>
|
121 |
+
</td>
|
122 |
+
</tr>
|
123 |
+
</table>
|
includes/templates/rules/html-rules-add-row.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
$rule_type_options = apply_filters(
|
16 |
+
'wcap_rules_engine_rule_type_values',
|
17 |
+
array(
|
18 |
+
'select_disabled' => __( 'Select Rule Type', 'woocommerce-ac' ),
|
19 |
+
'coupons' => __( 'Coupons', 'woocommerce-ac' ),
|
20 |
+
'send_to' => __( 'Send Emails to', 'woocommerce-ac' ),
|
21 |
+
'order_disabled' => __( 'Order', 'woocommerce-ac' ),
|
22 |
+
'payment_gateways' => __( 'Payment Gateways', 'woocommerce-ac' ),
|
23 |
+
'cart_disabled' => __( 'Cart', 'woocommerce-ac' ),
|
24 |
+
'cart_status' => __( 'Cart Status', 'woocommerce-ac' ),
|
25 |
+
'product_cat' => __( 'Product Categories', 'woocommerce-ac' ),
|
26 |
+
'product_tag' => __( 'Product Tags', 'woocommerce-ac' ),
|
27 |
+
'cart_items' => __( 'Cart Items', 'woocommerce-ac' ),
|
28 |
+
'cart_items_count' => __( 'Number of Cart Items', 'woocommerce-ac' ),
|
29 |
+
'cart_total' => __( 'Cart Total', 'woocommerce-ac' ),
|
30 |
+
)
|
31 |
+
);
|
32 |
+
|
33 |
+
$rule_condition_options = apply_filters(
|
34 |
+
'wcap_rules_engine_rule_condition_values',
|
35 |
+
array(
|
36 |
+
'select_disabled' => __( 'Select Condition', 'woocommerce-ac' ),
|
37 |
+
'includes' => __( 'Includes any of', 'woocommerce-ac' ),
|
38 |
+
'excludes' => __( 'Excludes any of', 'woocommerce-ac' ),
|
39 |
+
'greater_than_equal_to' => __( 'Greater than or equal to', 'woocommerce-ac' ),
|
40 |
+
'equal_to' => __( 'Equal to', 'woocommerce-ac' ),
|
41 |
+
'less_than_equal_to' => __( 'Less than or equal to', 'woocommerce-ac' ),
|
42 |
+
)
|
43 |
+
);
|
44 |
+
?>
|
45 |
+
<td class='wcap_rule_type_col'>
|
46 |
+
<select class='wcap_rule_type' id='wcap_rule_type_' name='wcap_rule_type_' onChange='wcap_rule_values( this.id )'>
|
47 |
+
<?php
|
48 |
+
foreach ( $rule_type_options as $type_key => $type_value ) {
|
49 |
+
$disabled = '';
|
50 |
+
$selected = 'select_disabled' === $type_key ? 'selected' : '';
|
51 |
+
if ( strpos( $type_key, 'disabled' ) !== false ) {
|
52 |
+
$type_key = '';
|
53 |
+
$disabled = 'disabled';
|
54 |
+
}
|
55 |
+
|
56 |
+
if ( in_array( $type_key, array( 'cart_status', 'payment_gateways', 'product_cat', 'product_tag', 'cart_items', 'cart_items_count', 'cart_total' ) ) ) { // phpcs:ignore
|
57 |
+
$type_value = '→ ' . $type_value;
|
58 |
+
$class = 'wcap_rule_subcategory';
|
59 |
+
} else {
|
60 |
+
$class = 'wcap_rule_parent_category';
|
61 |
+
}
|
62 |
+
echo sprintf(
|
63 |
+
"<option value='%s' %s %s class='%s'>%s</option>",
|
64 |
+
esc_attr( $type_key ),
|
65 |
+
esc_attr( $disabled ),
|
66 |
+
esc_attr( $selected ),
|
67 |
+
esc_attr( $class ),
|
68 |
+
esc_html( $type_value )
|
69 |
+
);
|
70 |
+
}
|
71 |
+
?>
|
72 |
+
</select>
|
73 |
+
</td>
|
74 |
+
<td class='wcap_rule_condition_col'>
|
75 |
+
<select class='wcap_rule_condition' id='wcap_rule_condition_' name='wcap_rule_condition_'>
|
76 |
+
<?php
|
77 |
+
foreach ( $rule_condition_options as $cond_key => $cond_value ) {
|
78 |
+
$disabled = '';
|
79 |
+
|
80 |
+
if ( strpos( $cond_key, 'disabled' ) !== false ) {
|
81 |
+
$cond_key = '';
|
82 |
+
$disabled = 'disabled';
|
83 |
+
}
|
84 |
+
echo sprintf(
|
85 |
+
"<option value='%s' %s>%s</option>",
|
86 |
+
esc_attr( $cond_key ),
|
87 |
+
esc_attr( $disabled ),
|
88 |
+
esc_html( $cond_value )
|
89 |
+
);
|
90 |
+
}
|
91 |
+
?>
|
92 |
+
</select>
|
93 |
+
</td>
|
94 |
+
<td class='wcap_rule_value_col'>
|
95 |
+
<select class='wcap_rule_value' id='wcap_rule_value_' name='wcap_rule_value_'>
|
96 |
+
<option value='' disabled selected><?php esc_html_e( 'Select values', 'woocommerce-ac' ); ?></option>
|
97 |
+
</select>
|
98 |
+
</td>
|
99 |
+
<td>
|
100 |
+
<a href='javascript:void(0)' class='wcap_delete_rule_button'>
|
101 |
+
<i class='fa fa-trash fa-lg fa-fw' id='wcap_rule_delete_' onclick='wcap_delete_rule_row( this.id )'></i>
|
102 |
+
</a>
|
103 |
+
<a href='javascript:void(0)' class='wcap_add_rule_button' id='add_new' onclick='wcap_add_new_rule_row( this.id )'>
|
104 |
+
<i class='fa fa-plus fa-lg fa-fw'></i>
|
105 |
+
<?php echo esc_html__( 'Add Rule', 'woocommerce-ac' ); ?>
|
106 |
+
</a>
|
107 |
+
</td>
|
includes/templates/rules/html-rules-edit-row.php
ADDED
@@ -0,0 +1,286 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
$selected_rule_type = isset( $rule_type ) ? $rule_type : '';
|
16 |
+
$selected_rule_cond = isset( $rule_condition ) ? $rule_condition : '';
|
17 |
+
$selected_rule_value = isset( $rule_value ) ? $rule_value : '';
|
18 |
+
|
19 |
+
$rule_type_options = apply_filters(
|
20 |
+
'wcap_rules_engine_rule_type_values',
|
21 |
+
array(
|
22 |
+
'select_disabled' => __( 'Select Rule Type', 'woocommerce-ac' ),
|
23 |
+
'coupons' => __( 'Coupons', 'woocommerce-ac' ),
|
24 |
+
'send_to' => __( 'Send Emails to', 'woocommerce-ac' ),
|
25 |
+
'order_disabled' => __( 'Order', 'woocommerce-ac' ),
|
26 |
+
'payment_gateways' => __( 'Payment Gateways', 'woocommerce-ac' ),
|
27 |
+
'cart_disabled' => __( 'Cart', 'woocommerce-ac' ),
|
28 |
+
'cart_status' => __( 'Cart Status', 'woocommerce-ac' ),
|
29 |
+
'product_cat' => __( 'Product Categories', 'woocommerce-ac' ),
|
30 |
+
'product_tag' => __( 'Product Tags', 'woocommerce-ac' ),
|
31 |
+
'cart_items' => __( 'Cart Items', 'woocommerce-ac' ),
|
32 |
+
'cart_items_count' => __( 'Number of Cart Items', 'woocommerce-ac' ),
|
33 |
+
'cart_total' => __( 'Cart Total', 'woocommerce-ac' ),
|
34 |
+
)
|
35 |
+
);
|
36 |
+
|
37 |
+
switch ( $selected_rule_type ) {
|
38 |
+
case 'cart_items_count':
|
39 |
+
case 'cart_total':
|
40 |
+
$rule_condition_options = array(
|
41 |
+
'greater_than_equal_to' => __( 'Greater than or equal to', 'woocommerce-ac' ),
|
42 |
+
'equal_to' => __( 'Equal to', 'woocommerce-ac' ),
|
43 |
+
'less_than_equal_to' => __( 'Less than or equal to', 'woocommerce-ac' ),
|
44 |
+
);
|
45 |
+
$style = '';
|
46 |
+
break;
|
47 |
+
default:
|
48 |
+
$rule_condition_options = array(
|
49 |
+
'includes' => __( 'Includes any of', 'woocommerce-ac' ),
|
50 |
+
'excludes' => __( 'Excludes any of', 'woocommerce-ac' ),
|
51 |
+
);
|
52 |
+
$style = 'width:80%;';
|
53 |
+
break;
|
54 |
+
}
|
55 |
+
$rule_condition_options = apply_filters( 'wcap_rules_engine_rule_condition_values', $rule_condition_options );
|
56 |
+
|
57 |
+
$rule_value_array = array();
|
58 |
+
switch ( $selected_rule_type ) {
|
59 |
+
case 'payment_gateways':
|
60 |
+
$wc_payment_gateways = new WC_Payment_Gateways();
|
61 |
+
$payment_gateways = $wc_payment_gateways->payment_gateways();
|
62 |
+
foreach ( $payment_gateways as $slug => $gateways ) {
|
63 |
+
if ( 'yes' === $gateways->enabled ) {
|
64 |
+
$rule_value_array[ $slug ] = $gateways->title;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
break;
|
68 |
+
case 'cart_status':
|
69 |
+
$rule_value_array = array(
|
70 |
+
'abandoned' => __( 'Abandoned', 'woocommerce-ac' ),
|
71 |
+
'abandoned-pending' => __( 'Abandoned - Pending Payment', 'woocommerce-ac' ),
|
72 |
+
'abandoned-cancelled' => __( 'Abandoned - Order Cancelled', 'woocommerce-ac' ),
|
73 |
+
);
|
74 |
+
break;
|
75 |
+
case 'send_to':
|
76 |
+
$rule_value_array = array(
|
77 |
+
'all' => __( 'All', 'woocommerce-ac' ),
|
78 |
+
'registered_users' => __( 'Registered Users', 'woocommerce-ac' ),
|
79 |
+
'guest_users' => __( 'Guest Users', 'woocommerce-ac' ),
|
80 |
+
'wcap_email_customer' => __( 'Customers', 'woocommerce-ac' ),
|
81 |
+
'wcap_email_admin' => __( 'Admin', 'woocommerce-ac' ),
|
82 |
+
'wcap_email_customer_admin' => __( 'Customers & Admin', 'woocommerce-ac' ),
|
83 |
+
'email_addresses' => __( 'Email Addresses', 'woocommerce-ac' ),
|
84 |
+
);
|
85 |
+
break;
|
86 |
+
}
|
87 |
+
$rule_value_array = apply_filters( 'wcap_rules_engine_rule_option_values', $rule_value_array );
|
88 |
+
|
89 |
+
$type_id = "wcap_rule_type_$row_id";
|
90 |
+
$cond_id = "wcap_rule_condition_$row_id";
|
91 |
+
$val_id = "wcap_rule_value_$row_id";
|
92 |
+
$delete_id = "wcap_rule_delete_$row_id";
|
93 |
+
|
94 |
+
?>
|
95 |
+
<td class='wcap_rule_type_col'>
|
96 |
+
<select class='wcap_rule_type' id='<?php echo esc_attr( $type_id ); ?>' name='<?php echo esc_attr( $type_id ); ?>' onChange='wcap_rule_values( this.id )'>
|
97 |
+
<?php
|
98 |
+
foreach ( $rule_type_options as $type_key => $type_value ) {
|
99 |
+
$disabled = '';
|
100 |
+
$selected = '' === $selected_rule_type && 'selected_disabled' === $type_key ? 'selected' : '';
|
101 |
+
$selected = '' !== $selected_rule_type && $selected_rule_type === $type_key ? 'selected' : '';
|
102 |
+
|
103 |
+
if ( strpos( $type_key, 'disabled' ) !== false ) {
|
104 |
+
$type_key = '';
|
105 |
+
$disabled = 'disabled';
|
106 |
+
}
|
107 |
+
|
108 |
+
if ( in_array( $type_key, array( 'cart_status', 'payment_gateways', 'product_cat', 'product_tag', 'cart_items', 'cart_items_count', 'cart_total' ) ) ) { // phpcs:ignore
|
109 |
+
$type_value = '→ ' . $type_value;
|
110 |
+
$class = 'wcap_rule_subcategory';
|
111 |
+
} else {
|
112 |
+
$class = 'wcap_rule_parent_category';
|
113 |
+
}
|
114 |
+
echo sprintf(
|
115 |
+
"<option value='%s' %s %s class='%s'>%s</option>",
|
116 |
+
esc_attr( $type_key ),
|
117 |
+
esc_attr( $disabled ),
|
118 |
+
esc_attr( $selected ),
|
119 |
+
esc_attr( $class ),
|
120 |
+
esc_html( $type_value )
|
121 |
+
);
|
122 |
+
}
|
123 |
+
?>
|
124 |
+
</select>
|
125 |
+
</td>
|
126 |
+
<td class='wcap_rule_condition_col'>
|
127 |
+
<select class='wcap_rule_condition' id='<?php echo esc_attr( $cond_id ); ?>' name='<?php echo esc_attr( $cond_id ); ?>' style='<?php echo esc_attr( $style ); ?>'>
|
128 |
+
<?php
|
129 |
+
foreach ( $rule_condition_options as $cond_key => $cond_value ) {
|
130 |
+
$disabled = '';
|
131 |
+
$selected = '' === $selected_rule_cond && 'selected_disabled' === $cond_key ? 'selected' : '';
|
132 |
+
$selected = '' !== $selected_rule_cond && $selected_rule_cond === $cond_key ? 'selected' : '';
|
133 |
+
|
134 |
+
if ( strpos( $cond_key, 'disabled' ) !== false ) {
|
135 |
+
$cond_key = '';
|
136 |
+
$disabled = 'disabled';
|
137 |
+
}
|
138 |
+
echo sprintf(
|
139 |
+
"<option value='%s' %s %s>%s</option>",
|
140 |
+
esc_attr( $cond_key ),
|
141 |
+
esc_attr( $disabled ),
|
142 |
+
esc_attr( $selected ),
|
143 |
+
esc_html( $cond_value )
|
144 |
+
);
|
145 |
+
}
|
146 |
+
?>
|
147 |
+
</select>
|
148 |
+
</td>
|
149 |
+
<td class='wcap_rule_value_col'>
|
150 |
+
<?php
|
151 |
+
switch ( $selected_rule_type ) {
|
152 |
+
case 'send_to':
|
153 |
+
?>
|
154 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for options…', 'woocommerce' ); ?>" data-action="wcap_json_find_send_to" onChange='wcap_rule_value_updated( this.id )'>
|
155 |
+
<?php
|
156 |
+
foreach ( $selected_rule_value as $v_id ) {
|
157 |
+
if ( '' !== $v_id ) {
|
158 |
+
$v_object = $rule_value_array[ $v_id ];
|
159 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . esc_html( $v_object ) . '</option>';
|
160 |
+
}
|
161 |
+
}
|
162 |
+
?>
|
163 |
+
</select>
|
164 |
+
<?php
|
165 |
+
// Send to email addresses.
|
166 |
+
if ( in_array( 'email_addresses', $selected_rule_value, true ) ) {
|
167 |
+
?>
|
168 |
+
<textarea name='wcap_rules_email_addresses' id='wcap_rules_email_addresses' rows='3' cols='35' placeholder='<?php esc_html_e( 'Please enter email addresses separated by a comma', 'woocommerce-ac' ); ?>'><?php echo esc_attr( $rule_emails ); ?></textarea>
|
169 |
+
<?php
|
170 |
+
}
|
171 |
+
break;
|
172 |
+
case 'payment_gateways':
|
173 |
+
?>
|
174 |
+
<select class='wcap_rule_value' id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id ); ?>'>
|
175 |
+
<?php
|
176 |
+
foreach ( $rule_value_array as $key => $value ) {
|
177 |
+
$selected = '' !== $selected_rule_value && $selected_rule_value === $key ? 'selected' : '';
|
178 |
+
|
179 |
+
echo sprintf(
|
180 |
+
"<option value='%s' %s>%s</option>",
|
181 |
+
esc_attr( $key ),
|
182 |
+
esc_attr( $selected ),
|
183 |
+
esc_html( $value )
|
184 |
+
);
|
185 |
+
|
186 |
+
}
|
187 |
+
?>
|
188 |
+
</select>
|
189 |
+
<?php
|
190 |
+
break;
|
191 |
+
case 'cart_items_count':
|
192 |
+
case 'cart_total':
|
193 |
+
?>
|
194 |
+
<input type='number' class='wcap_rule_value' min='1' id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id ); ?>' value='<?php echo esc_attr( $selected_rule_value ); ?>' />
|
195 |
+
<?php
|
196 |
+
break;
|
197 |
+
case 'coupons':
|
198 |
+
?>
|
199 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Coupon…', 'woocommerce' ); ?>" data-action="wcap_json_find_coupons">
|
200 |
+
<?php
|
201 |
+
if ( is_array( $selected_rule_value ) && count( $selected_rule_value ) > 0 ) {
|
202 |
+
foreach ( $selected_rule_value as $v_id ) {
|
203 |
+
if ( $v_id > 0 ) {
|
204 |
+
$v_object = get_the_title( $v_id );
|
205 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object ) . '</option>';
|
206 |
+
}
|
207 |
+
}
|
208 |
+
}
|
209 |
+
?>
|
210 |
+
</select>
|
211 |
+
<?php
|
212 |
+
break;
|
213 |
+
case 'cart_status':
|
214 |
+
?>
|
215 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Status…', 'woocommerce' ); ?>" data-action="wcap_json_find_cart_status">
|
216 |
+
<?php
|
217 |
+
foreach ( $selected_rule_value as $v_id ) {
|
218 |
+
if ( '' !== $v_id ) {
|
219 |
+
$v_object = $rule_value_array[ $v_id ];
|
220 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . esc_html( $v_object ) . '</option>';
|
221 |
+
}
|
222 |
+
}
|
223 |
+
?>
|
224 |
+
</select>
|
225 |
+
<?php
|
226 |
+
break;
|
227 |
+
case 'product_cat':
|
228 |
+
?>
|
229 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Product Category…', 'woocommerce' ); ?>" data-action="wcap_json_find_product_cat">
|
230 |
+
<?php
|
231 |
+
foreach ( $selected_rule_value as $v_id ) {
|
232 |
+
if ( $v_id > 0 ) {
|
233 |
+
$v_object = get_term( $v_id );
|
234 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object->name ) . '</option>';
|
235 |
+
}
|
236 |
+
}
|
237 |
+
?>
|
238 |
+
</select>
|
239 |
+
<?php
|
240 |
+
break;
|
241 |
+
case 'product_tag':
|
242 |
+
?>
|
243 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Product Category…', 'woocommerce' ); ?>" data-action="wcap_json_find_product_tag">
|
244 |
+
<?php
|
245 |
+
foreach ( $selected_rule_value as $v_id ) {
|
246 |
+
if ( $v_id > 0 ) {
|
247 |
+
$v_object = get_term( $v_id );
|
248 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object->name ) . '</option>';
|
249 |
+
}
|
250 |
+
}
|
251 |
+
?>
|
252 |
+
</select>
|
253 |
+
<?php
|
254 |
+
break;
|
255 |
+
case 'cart_items':
|
256 |
+
?>
|
257 |
+
<select id='<?php echo esc_attr( $val_id ); ?>' name='<?php echo esc_attr( $val_id . '[]' ); ?>' class="wcap_rule_value wc-product-search" multiple="multiple" data-placeholder="<?php esc_attr_e( 'Search for a Product…', 'woocommerce' ); ?>" data-action="wcap_json_find_products">
|
258 |
+
<?php
|
259 |
+
foreach ( $selected_rule_value as $v_id ) {
|
260 |
+
if ( $v_id > 0 ) {
|
261 |
+
$v_object = get_the_title( $v_id );
|
262 |
+
echo '<option value="' . esc_attr( $v_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $v_object ) . '</option>';
|
263 |
+
}
|
264 |
+
}
|
265 |
+
?>
|
266 |
+
</select>
|
267 |
+
<?php
|
268 |
+
break;
|
269 |
+
}
|
270 |
+
?>
|
271 |
+
</td>
|
272 |
+
<td>
|
273 |
+
<a href='javascript:void(0)' class='wcap_delete_rule_button'>
|
274 |
+
<i class='fa fa-trash fa-lg fa-fw' id='<?php echo esc_attr( $delete_id ); ?>' onclick='wcap_delete_rule_row( this.id )'></i>
|
275 |
+
</a>
|
276 |
+
<?php
|
277 |
+
if ( $last_row ) {
|
278 |
+
?>
|
279 |
+
<a href='javascript:void(0)' class='wcap_add_rule_button' id='add_new' onclick='wcap_add_new_rule_row( this.id )'>
|
280 |
+
<i class='fa fa-plus fa-lg fa-fw'></i>
|
281 |
+
<?php echo esc_html__( 'Add Rule', 'woocommerce-ac' ); ?>
|
282 |
+
</a>
|
283 |
+
<?php
|
284 |
+
}
|
285 |
+
?>
|
286 |
+
</td>
|
includes/templates/rules/html-rules-engine.php
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file will add functions related to verifying email present on ATC field.
|
4 |
+
*
|
5 |
+
* @author Tyche Softwares
|
6 |
+
* @package Abandoned-Cart-Pro-for-WooCommerce/Admin/ATC
|
7 |
+
* @since 8.8.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly.
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
global $woocommerce;
|
15 |
+
$help_tip_text = version_compare( $woocommerce->version, '3.0.0', '>=' ) ? 'help_tip_filter_3.0' : 'help_tip_filter';
|
16 |
+
$purchase_link = 'https://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro/?utm_source=acupgradetopro&utm_medium=link&utm_campaign=AbandonCartLite';
|
17 |
+
|
18 |
+
// Args sent to the template.
|
19 |
+
$selected_all = 'all' === $match ? 'selected' : '';
|
20 |
+
$selected_any = 'any' === $match ? 'selected' : '';
|
21 |
+
$rules_setup = is_array( $rules ) && count( $rules ) > 0 ? $rules : array();
|
22 |
+
// Get the row data.
|
23 |
+
ob_start();
|
24 |
+
wc_get_template(
|
25 |
+
'html-rules-add-row.php',
|
26 |
+
'',
|
27 |
+
'woocommerce-abandoned-cart/',
|
28 |
+
WCAL_PLUGIN_PATH . '/includes/templates/rules/'
|
29 |
+
);
|
30 |
+
$row = ob_get_clean();
|
31 |
+
$row = apply_filters( 'wcap_rules_engine_add_row_content', $row );
|
32 |
+
?>
|
33 |
+
<table class='form-table'>
|
34 |
+
<tr>
|
35 |
+
<th>
|
36 |
+
<label for='wcap_match_rules'>
|
37 |
+
<?php esc_html_e( 'Match Rules:', 'woocommerce-ac' ); ?>
|
38 |
+
</label>
|
39 |
+
</th>
|
40 |
+
<td>
|
41 |
+
<select class='' id='wcap_match_rules' name='wcap_match_rules' disabled>
|
42 |
+
<option value='all' <?php echo esc_attr( $selected_all ); ?>><?php esc_html_e( 'Match all rules', 'woocommerce-ac' ); ?></option>
|
43 |
+
<option value='any' <?php echo esc_attr( $selected_any ); ?>><?php esc_html_e( 'Match any rule(s)', 'woocommerce-ac' ); ?></option>
|
44 |
+
</select>
|
45 |
+
<img id = <?php echo esc_html( $help_tip_text ); ?> class="help_tip" width="16" height="16" data-tip='<?php esc_html_e( 'Email template will be sent depending on whether all the rule matches are met or any rule matches.', 'woocommerce-ac' ); ?>' src="<?php echo esc_url( plugins_url() ); ?>/woocommerce/assets/images/help.png" /></p>
|
46 |
+
</td>
|
47 |
+
</tr>
|
48 |
+
<th>
|
49 |
+
<label for='wcap_rules_1'>
|
50 |
+
<?php esc_html_e( 'Rules:', 'woocommerce-ac' ); ?>
|
51 |
+
</label>
|
52 |
+
</th>
|
53 |
+
<td>
|
54 |
+
<table class='wcap-rule-list form-table' id='wcap-rule-list' data-row='<?php echo esc_attr( $row ); ?>'>
|
55 |
+
<?php
|
56 |
+
$rule_head_style = ( count( $rules_setup ) > 0 ) ? 'style="display:table-header-group;"' : 'style=display:none;';
|
57 |
+
?>
|
58 |
+
<thead id='wcap-rule-list-header' <?php echo esc_attr( $rule_head_style ); ?>>
|
59 |
+
<tr>
|
60 |
+
<th><?php echo esc_html__( 'Rule Type', 'woocommerce-ac' ); ?></th>
|
61 |
+
<th><?php echo esc_html__( 'Conditions', 'woocommerce-ac' ); ?></th>
|
62 |
+
<th><?php echo esc_html__( 'Values', 'woocommerce-ac' ); ?></th>
|
63 |
+
<th><?php echo esc_html__( 'Actions', 'woocommerce-ac' ); ?></th>
|
64 |
+
</tr>
|
65 |
+
</thead>
|
66 |
+
<tbody id='wcap-rule-list-body'>
|
67 |
+
<?php
|
68 |
+
if ( count( $rules_setup ) > 0 ) {
|
69 |
+
$count = count( $rules_setup );
|
70 |
+
$i = 1;
|
71 |
+
foreach ( $rules_setup as $rule_data ) {
|
72 |
+
$last_row = $i === $count ? true : false;
|
73 |
+
$rule_emails = isset( $rule_data->emails ) ? $rule_data->emails : '';
|
74 |
+
$edit_row = apply_filters(
|
75 |
+
'wcap_rules_engine_edit_row_data',
|
76 |
+
array(
|
77 |
+
'rule_type' => $rule_data->rule_type,
|
78 |
+
'rule_condition' => $rule_data->rule_condition,
|
79 |
+
'rule_value' => $rule_data->rule_value,
|
80 |
+
'rule_emails' => $rule_emails,
|
81 |
+
'last_row' => $last_row,
|
82 |
+
'row_id' => $i,
|
83 |
+
)
|
84 |
+
);
|
85 |
+
?>
|
86 |
+
<tr id='<?php echo esc_attr( $i ); ?>'>
|
87 |
+
<?php
|
88 |
+
wc_get_template(
|
89 |
+
'html-rules-edit-row.php',
|
90 |
+
$edit_row,
|
91 |
+
'woocommerce-abandoned-cart/',
|
92 |
+
WCAL_PLUGIN_PATH . '/includes/templates/rules/'
|
93 |
+
);
|
94 |
+
?>
|
95 |
+
</tr>
|
96 |
+
<?php
|
97 |
+
$i++;
|
98 |
+
}
|
99 |
+
}
|
100 |
+
?>
|
101 |
+
</tbody>
|
102 |
+
<tfoot>
|
103 |
+
<tr class="wcap_rule_list_footer_tr">
|
104 |
+
<td id="wcap_rule_list_footer" colspan="4">
|
105 |
+
<?php
|
106 |
+
esc_html_e( 'Add rules as needed to create different email templates for different user bases. ', 'woocommerce-abandoned-cart' );
|
107 |
+
// Translators: Plugin purchase Link.
|
108 |
+
printf( wp_kses_post( __( "<b><i>Upgrade to <a href='%s' target='_blank'>Abandoned Cart Pro for WooCommerce</a> to enable the feature.</i></b>", 'woocommerce-abandoned-cart' ) ), esc_url( $purchase_link ) );
|
109 |
+
?>
|
110 |
+
<br>
|
111 |
+
<?php
|
112 |
+
if ( count( $rules_setup ) === 0 ) {
|
113 |
+
?>
|
114 |
+
<a
|
115 |
+
href="javascript:void(0)"
|
116 |
+
id="add_new"
|
117 |
+
class="button add-new-row"
|
118 |
+
onclick="wcap_add_new_rule_row( this.id )"
|
119 |
+
disabled >
|
120 |
+
<?php esc_html_e( 'Add new', 'woocommerce-ac' ); ?>
|
121 |
+
</a>
|
122 |
+
<?php
|
123 |
+
}
|
124 |
+
?>
|
125 |
+
</td>
|
126 |
+
</tr>
|
127 |
+
</tfoot>
|
128 |
+
</table>
|
129 |
+
</td>
|
130 |
+
</table>
|
readme.txt
CHANGED
@@ -222,6 +222,12 @@ The admin can use the merge code `{{cart.unsubscribe}}' in the email templates.
|
|
222 |
6. Product Report Tab.
|
223 |
|
224 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
= 5.8.7 (26.03.2021) =
|
226 |
* Fix - Variation Image is not displayed in reminder emails.
|
227 |
|
222 |
6. Product Report Tab.
|
223 |
|
224 |
== Changelog ==
|
225 |
+
= 5.8.8 (06.04.2021) =
|
226 |
+
* Enhancement - Introduced Abandoned & Recovered Cart data graph in the plugin dashboard.
|
227 |
+
* Tweak - Updated the Pro settings to reflect the new settings included in the Pro Version.
|
228 |
+
* Fix - The link to FB Settings documentation was not working.
|
229 |
+
* Fix - The merge tags {{cart.abandoned_date}}, {{cart.link}}, {{cart.unsubscribe}} were not being replaced with test data when previewing a reminder email template.
|
230 |
+
|
231 |
= 5.8.7 (26.03.2021) =
|
232 |
* Fix - Variation Image is not displayed in reminder emails.
|
233 |
|
woocommerce-ac.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Abandoned Cart Lite for WooCommerce
|
4 |
* Plugin URI: http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro
|
5 |
* Description: This plugin captures abandoned carts by logged-in users & emails them about it. <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the PRO Version.</a></strong>
|
6 |
-
* Version: 5.8.
|
7 |
* Author: Tyche Softwares
|
8 |
* Author URI: http://www.tychesoftwares.com/
|
9 |
* Text Domain: woocommerce-abandoned-cart
|
@@ -118,7 +118,11 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
118 |
}
|
119 |
|
120 |
if ( ! defined( 'WCAL_PLUGIN_VERSION' ) ) {
|
121 |
-
define( 'WCAL_PLUGIN_VERSION', '5.8.
|
|
|
|
|
|
|
|
|
122 |
}
|
123 |
$this->one_hour = 60 * 60;
|
124 |
$this->three_hours = 3 * $this->one_hour;
|
@@ -371,15 +375,25 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
371 |
|
372 |
</tbody>
|
373 |
</table>';
|
374 |
-
|
375 |
-
$
|
376 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
377 |
|
378 |
$content = str_ireplace( '{{products.cart}}', $replace_data['products_cart'], $content );
|
379 |
$content = str_ireplace( '{{admin.phone}}', $replace_data['admin_phone'], $content );
|
380 |
$content = str_ireplace( '{{customer.firstname}}', 'John', $content );
|
381 |
$content = str_ireplace( '{{customer.lastname}}', 'Doe', $content );
|
382 |
$content = str_ireplace( '{{customer.fullname}}', 'John Doe', $content );
|
|
|
|
|
|
|
383 |
$content = str_ireplace( 'site_title', $replace_data['site_title'], $content );
|
384 |
$content = str_ireplace( 'site_url', $replace_data['site_url'], $content );
|
385 |
|
@@ -2075,8 +2089,9 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
2075 |
WCAL_PLUGIN_VERSION,
|
2076 |
false
|
2077 |
);
|
2078 |
-
$mode
|
2079 |
-
|
|
|
2080 |
wp_register_script( 'woocommerce_admin', WC()->plugin_url() . '/assets/js/admin/woocommerce_admin.min.js', array( 'jquery', 'jquery-tiptip' ), WCAL_PLUGIN_VERSION, false );
|
2081 |
wp_enqueue_script( 'woocommerce_admin' );
|
2082 |
$locale = localeconv();
|
@@ -2142,6 +2157,14 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
2142 |
);
|
2143 |
|
2144 |
wp_enqueue_script(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2145 |
'reports_js',
|
2146 |
plugins_url( '/assets/js/admin/wcal_adv_dashboard.min.js', __FILE__ ),
|
2147 |
'',
|
@@ -3231,6 +3254,17 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
3231 |
<div> <!-- <div class="postbox" > -->
|
3232 |
<h3 class="hndle"><?php esc_html_e( $display_message, 'woocommerce-abandoned-cart' ); // phpcs:ignore?></h3>
|
3233 |
<div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3234 |
<table class="form-table" id="addedit_template">
|
3235 |
<tr>
|
3236 |
<th>
|
3 |
* Plugin Name: Abandoned Cart Lite for WooCommerce
|
4 |
* Plugin URI: http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro
|
5 |
* Description: This plugin captures abandoned carts by logged-in users & emails them about it. <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the PRO Version.</a></strong>
|
6 |
+
* Version: 5.8.8
|
7 |
* Author: Tyche Softwares
|
8 |
* Author URI: http://www.tychesoftwares.com/
|
9 |
* Text Domain: woocommerce-abandoned-cart
|
118 |
}
|
119 |
|
120 |
if ( ! defined( 'WCAL_PLUGIN_VERSION' ) ) {
|
121 |
+
define( 'WCAL_PLUGIN_VERSION', '5.8.8' );
|
122 |
+
}
|
123 |
+
|
124 |
+
if ( ! defined( 'WCAL_PLUGIN_PATH' ) ) {
|
125 |
+
define( 'WCAL_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
126 |
}
|
127 |
$this->one_hour = 60 * 60;
|
128 |
$this->three_hours = 3 * $this->one_hour;
|
375 |
|
376 |
</tbody>
|
377 |
</table>';
|
378 |
+
|
379 |
+
$current_time = current_time( 'timestamp' ); // phpcs:ignore
|
380 |
+
$date_format = date_i18n( get_option( 'date_format' ), $current_time );
|
381 |
+
$time_format = date_i18n( get_option( 'time_format' ), $current_time );
|
382 |
+
|
383 |
+
$replace_data['admin_phone'] = $admin_phone;
|
384 |
+
$replace_data['site_title'] = get_bloginfo( 'name' );
|
385 |
+
$replace_data['site_url'] = get_option( 'siteurl' );
|
386 |
+
$replace_data['abandoned_date'] = "$date_format $time_format";
|
387 |
+
$replace_data['cart_url'] = wc_get_page_permalink( 'cart' );
|
388 |
|
389 |
$content = str_ireplace( '{{products.cart}}', $replace_data['products_cart'], $content );
|
390 |
$content = str_ireplace( '{{admin.phone}}', $replace_data['admin_phone'], $content );
|
391 |
$content = str_ireplace( '{{customer.firstname}}', 'John', $content );
|
392 |
$content = str_ireplace( '{{customer.lastname}}', 'Doe', $content );
|
393 |
$content = str_ireplace( '{{customer.fullname}}', 'John Doe', $content );
|
394 |
+
$content = str_ireplace( '{{cart.abandoned_date}}', $replace_data['abandoned_date'], $content );
|
395 |
+
$content = str_ireplace( '{{cart.link}}', $replace_data['cart_url'], $content );
|
396 |
+
$content = str_ireplace( '{{cart.unsubscribe}}', '#', $content );
|
397 |
$content = str_ireplace( 'site_title', $replace_data['site_title'], $content );
|
398 |
$content = str_ireplace( 'site_url', $replace_data['site_url'], $content );
|
399 |
|
2089 |
WCAL_PLUGIN_VERSION,
|
2090 |
false
|
2091 |
);
|
2092 |
+
$mode = isset( $_GET['mode'] ) ? sanitize_text_field( wp_unslash( $_GET['mode'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
2093 |
+
$wcal_section = isset( $_GET['wcal_section'] ) ? sanitize_text_field( wp_unslash( $_GET['wcal_section'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
2094 |
+
if ( ( 'emailtemplates' === $action && ( 'addnewtemplate' === $mode || 'edittemplate' === $mode ) ) || ( 'emailsettings' === $action && 'wcap_atc_settings' === $wcal_section ) ) {
|
2095 |
wp_register_script( 'woocommerce_admin', WC()->plugin_url() . '/assets/js/admin/woocommerce_admin.min.js', array( 'jquery', 'jquery-tiptip' ), WCAL_PLUGIN_VERSION, false );
|
2096 |
wp_enqueue_script( 'woocommerce_admin' );
|
2097 |
$locale = localeconv();
|
2157 |
);
|
2158 |
|
2159 |
wp_enqueue_script(
|
2160 |
+
'd3_js',
|
2161 |
+
WCAL_PLUGIN_URL . '/assets/js/admin/d3.v3.min.js',
|
2162 |
+
'',
|
2163 |
+
WCAL_PLUGIN_VERSION,
|
2164 |
+
false
|
2165 |
+
);
|
2166 |
+
|
2167 |
+
wp_register_script(
|
2168 |
'reports_js',
|
2169 |
plugins_url( '/assets/js/admin/wcal_adv_dashboard.min.js', __FILE__ ),
|
2170 |
'',
|
3254 |
<div> <!-- <div class="postbox" > -->
|
3255 |
<h3 class="hndle"><?php esc_html_e( $display_message, 'woocommerce-abandoned-cart' ); // phpcs:ignore?></h3>
|
3256 |
<div>
|
3257 |
+
<?php
|
3258 |
+
wc_get_template(
|
3259 |
+
'html-rules-engine.php',
|
3260 |
+
array(
|
3261 |
+
'rules' => array(),
|
3262 |
+
'match' => 'all',
|
3263 |
+
),
|
3264 |
+
'woocommerce-abandoned-cart/',
|
3265 |
+
WCAL_PLUGIN_PATH . '/includes/templates/rules/'
|
3266 |
+
);
|
3267 |
+
?>
|
3268 |
<table class="form-table" id="addedit_template">
|
3269 |
<tr>
|
3270 |
<th>
|