PageSourceSearch

https://www.grantforward.com/public/js/part/search/citizenship/EventHandlers.js?v=285

js grantforward.com collected 2026-10-02 04:29:57 UTC 6,225 bytes, 183 lines download raw bytes

1var CitizenshipFilterEventHandlers =
2  CitizenshipFilterEventHandlers ||
3  function(me) {
4    var eventHandlers = {
5      removeTag: function(e, type) {
6        /*type: 0 - include | 1 - exclude*/
7        var index = e.target.dataset.index;
8        index = Number(index);
9        var value = '';
10        if (type) {
11          value = me.citizenship.exclude[index];
12          me.citizenship.exclude.splice(index, 1);
13          me.query.remove_offset();
14          me.render.renderAllTag();
15        } else {
16          value = me.citizenship.include[index];
17          me.citizenship.include.splice(index, 1);
18          me.query.remove_offset();
19          me.render.renderAllTag();
20        }
21        _trackGSEvent(
22          '2.0-Search',
23          type ? 'remove_exclude_citizenship' : 'remove_include_citizenship',
24          value
25        );
26      },
27      onClickExclude: function(event, noFocus) {
28        if ( me.elm('excludeCitizenship.panel').hasClass('hidden') ){
29          eventHandlers._showExcludePanel();
30          setTimeout(function(){
31            me.elm('excludeCitizenship').focus();
32          }, 200);
33        }else{
34          eventHandlers._hideExcludePanel();
35        }
36      },
37        _showExcludePanel: function(){
38          me.elm('excludeCitizenship.panel').removeClass('hidden');
39          me.elm("excludeCitizenship.btn").text("Hide Exclusion Search");
40        },
41        _hideExcludePanel: function(){
42          me.elm('excludeCitizenship.panel').addClass('hidden');
43          me.elm("excludeCitizenship.btn").text("Show Exclusion Search");
44        },
45      onListModalItemClick: function(e) {
46        var currentElm = $(e.currentTarget);
47        if (!me.isExclude) {
48          currentElm.toggleClass('active ');
49        } else {
50          currentElm
51            .toggleClass('btn-danger negative ')
52            .css('transition', 'unset');
53        }
54      },
55      onListModalIncludeClick: function(e) {
56        me.isExclude = false;
57        me.elm('citizenship.item').removeClass(
58          'active btn-danger negative was-active'
59        );
60        var list = me.citizenship.include;
61        for (var i in list) {
62          me.elm('citizenship.item')
63            .filter('[js-value="' + list[i] + '"]')
64            .addClass('active was-active');
65        }
66        me.elm('citizenship.title').text('Include Citizenship');
67        me.elm('citizenship.add')
68          .addClass('btn-dark-blue')
69          .removeClass('btn-danger')
70          .text('Include').attr('aria-label', 'Include Selected Items and Close Applicant Location List');
71        me.elm('citizenship.modal').modal('show');
72      },
73      onListModalExcludeClick: function(e) {
74        me.isExclude = true;
75        me.elm('citizenship.item').removeClass(
76          'active btn-danger negative was-active'
77        );
78        var list = me.citizenship.exclude;
79        for (var i in list) {
80          me.elm('citizenship.item')
81            .filter('[js-value="' + list[i] + '"]')
82            .addClass('negative btn-danger was-active')
83            .css('transition', 'unset');
84        }
85        me.elm('citizenship.add')
86          .removeClass('btn-dark-blue')
87          .addClass('btn-danger')
88          .text('Exclude').attr('aria-label', 'Exclude Selected Items and Close Applicant Location List');
89        me.elm('citizenship.title').text('Exclude Citizenship');
90        me.elm('citizenship.modal').modal('show');
91      },
92      onListModalAdd: function() {
93        var objectValue = {};
94        jQuery.each(
95          me
96            .elm('citizenship.item')
97            .filter(me.isExclude ? '.negative' : '.active'),
98          function(idx, elem) {
99            var value = $(elem).attr('js-value');
100            objectValue[value] = true;
101            _trackGSEvent(
102              '2.0-Search',
103              me.isExclude ? 'exclude_citizenship' : 'include_citizenship',
104              value
105            );
106          }
107        );
108
109        if (me.isExclude) {
110          me.citizenship.exclude = Object.keys(objectValue);
111          me.citizenship.include = eventHandlers.checkDuplicate(
112            objectValue,
113            me.citizenship.include
114          );
115        } else {
116          me.citizenship.include = Object.keys(objectValue);
117          me.citizenship.exclude = eventHandlers.checkDuplicate(
118            objectValue,
119            me.citizenship.exclude
120          );
121        }
122        me.elm('citizenship.modal').modal('hide');
123        me.query.remove_offset();
124        me.render.renderAllTag();
125      },
126      checkDuplicate: function(ob, list) {
127        var listNew = [];
128        for (var i in list) {
129          if (!ob[list[i]]) {
130            listNew.push(list[i]);
131          }
132        }
133        return listNew;
134      },
135      generateQuery: function(generateQueryOnly) {
136        me.query.remove_advanced('citizenship');
137        me.query.remove_advanced('has_citizenship');
138        // // me.query.remove_offset();
139        for (var i in me.citizenship.include) {
140          if (!me.citizenship.include.hasOwnProperty(i)) {
141            continue;
142          }
143          me.query.add_advanced('citizenship', me.citizenship.include[i], '=');
144        }
145
146        for (var i in me.citizenship.exclude) {
147          if (!me.citizenship.exclude.hasOwnProperty(i)) {
148            continue;
149          }
150          me.query.add_advanced('citizenship', me.citizenship.exclude[i], '!=');
151        }
152
153        me.query.add_advanced(
154          'has_citizenship',
155          me.elm('citizenshipUnspecified').prop('checked') ? 1 : 0,
156          '='
157        );
158
159        if (!generateQueryOnly) {
160          $(document).trigger('force_search');
161        }
162      },
163      onToggleIncludeUnspecified: function() {
164        _trackGSEvent(
165          '2.0-Search',
166          'citizenship_unspecified_change',
167          me.elm('citizenshipUnspecified').prop('checked') ? 1 : 0
168        );
169        if (!me.noReactive) {
170          me.query.remove_offset();
171          eventHandlers.generateQuery();
172        }
173      },
174      onPopupModalClose: function(){
175        if ( me.isExclude === false ){
176            me.elm('citizenship.include').focus();
177        }else{
178            me.elm('citizenship.exclude').focus();
179        }
180      }
181    };
182    return eventHandlers;
183  };

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.