PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.10
Independent Analytics – WordPress Analytics Plugin v2.14.10
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / javascript-source / modules / duplicate-field.js
independent-analytics / javascript-source / modules Last commit date
date-picker.js 1 year ago duplicate-field.js 1 year ago email-reports.js 2 months ago module-markup.js 3 months ago notices.js 1 year ago overview.js 9 months ago scroll-to-top.js 2 years ago sticky-sidebar.js 2 years ago support.js 3 months ago user-roles.js 1 year ago
duplicate-field.js
84 lines
1 const $ = jQuery;
2
3 const FieldDuplicator = {
4 setup: function() {
5 var self = this;
6 var duplicators = $('.duplicator');
7 duplicators.each(function(index, duplicator) {
8 $(this).find('.duplicate-button').on('click', function(e){
9 e.preventDefault();
10 self.createNewEntry($(duplicator));
11 });
12 });
13 var entries = $('.entry');
14 entries.each(function() {
15 self.attachRemoveEvent($(this));
16 });
17 // TODO: find a better place for this
18 $('#block-current-ip').on('click', function() {
19 $('.block-new-ip .new-field').val($('#current-ip').data('current-ip'));
20 $('.block-new-ip .duplicate-button').click();
21 $(this).prop('disabled', true);
22 });
23 },
24 createNewEntry: function(duplicator) {
25 var entryField = duplicator.find('.new-field');
26 if(this.errorChecks(entryField)) {
27 return;
28 }
29 var clone = duplicator.find('.blueprint .entry').clone();
30 clone.find('input').val(entryField.val());
31 duplicator.next().append(clone);
32
33 if (entryField.hasClass('select')) {
34 entryField.find('option[value="'+ entryField.val() +'"').remove();
35 } else {
36 entryField.val('');
37 }
38
39 this.resetIndex(duplicator.next('.saved'));
40 this.attachRemoveEvent(clone);
41 duplicator.parents('form').removeClass('empty exists');
42 this.hideNoneMessage(duplicator);
43 },
44 attachRemoveEvent: function(entry) {
45 var self = this;
46 entry.find('.remove').on('click', function(e){
47 e.preventDefault();
48 var saved = $(entry).parent('.saved');
49 $(this).parents('form').addClass('unsaved');
50 $(this).parent().remove();
51 self.resetIndex(saved);
52 });
53 },
54 resetIndex: function(saved) {
55 var count = 0;
56 saved.find('input').each(function() {
57 $(this).attr('name', $(this).attr('data-option') + '['+count+']');
58 $(this).attr('id', $(this).attr('data-option') + '['+count+']');
59 count++;
60 });
61 saved.parents('form').addClass('unsaved');
62 },
63 errorChecks(entryField) {
64 if (entryField.val() == '') {
65 entryField.parents('form').addClass('empty');
66 return true;
67 }
68 var existingValues = [];
69 entryField.parent().parent().next('.saved').find('.entry').each(function() {
70 existingValues.push($(this).find('input').val());
71 });
72 if (existingValues.includes(entryField.val())) {
73 entryField.parents('form').addClass('exists');
74 return true;
75 }
76
77 return false;
78 },
79 hideNoneMessage: function(duplicator) {
80 duplicator.parent().find('.none').hide();
81 }
82 }
83
84 export { FieldDuplicator };