PageSourceSearch

https://www.wpi.edu/modules/custom/wpi_group/js/wpi_group_date_filter.js?v=11.3.17

js wpi.edu collected 2026-09-24 08:28:15 UTC 9,386 bytes, 223 lines download raw bytes

1(function ($, Drupal) {
2
3  /**
4   * Date Range filter alteration .
5   *
6   * @todo: remove jquery from this.
7   */
8  Drupal.behaviors.selectAll = {
9    attach: function (context, settings) {
10      var form = document.getElementById('views-exposed-form-calendar-calendar-block-universitycalendar');
11      var form_news = document.getElementById('views-exposed-form-media-coverage-media-coverage-block-paginated');
12      if (form != null) {
13
14        const urlParams = new URLSearchParams(window.location.search);
15        const myParam = urlParams.get('combine');
16        const groupFilter = urlParams.get('group');
17        if (myParam == '#studentlife') {
18          var studentEvent = document.querySelector('input[class*="table-view__input input combine"]');
19          if (studentEvent != null) {
20            if (!document.body.classList.contains('studentEvent-filter-applied')) {
21              studentEvent.value = '#studentlife';
22              document.querySelector('input[id*="edit-submit-calendar"]').click();
23              document.body.classList.add('studentEvent-filter-applied');
24            }
25          }
26        }
27
28        if (groupFilter != null) {
29          var selectlist = document.querySelector('select[id*="edit-field-group-rel-target-id"]');
30          if (selectlist) {
31            selectlist.value = groupFilter;
32            if (!document.body.classList.contains('group-filter-applied')) {
33              var submitButton = document.querySelector('input[id*="edit-submit-calendar"]');
34              if (submitButton) {
35                submitButton.click();
36                document.body.classList.add('group-filter-applied');
37              }
38            }
39          }
40        }
41
42
43        var calender_filter = document.querySelector('div[class="calender-filters"]');
44        if (calender_filter && screen.width < 640) {
45          calender_filter.style.display = "none";
46        }
47
48        $date_start_operator = document.querySelector('[id*="edit-field-date-range-value-op"]');
49        $start_date = document.querySelector('[id*="edit-field-date-range-value-value"]');
50
51        $date_end_operator = document.querySelector('[id*="edit-field-date-range-value-1-op"]');
52        $end_date = document.querySelector('[id*="edit-field-date-range-value-1-value"]');
53
54        if ($start_date && $date_start_operator && $date_end_operator && $end_date) {
55          $start_date.addEventListener('input', function (event) {
56            $date_start_operator.value = '>=';
57            $date_end_operator.value = '<=';
58            $start_date.value = $start_date.value;
59            $end_date.value = $start_date.value;
60          });
61        }
62
63        var dateFilterSelect = form.querySelector('select[name="datefilter"]');
64        if (dateFilterSelect && $date_start_operator && $date_end_operator && $start_date && $end_date) {
65          dateFilterSelect.addEventListener('change', function () {
66            const date = new Date();
67            let mm = date.getMonth() + 1; // Months start at 0!
68
69            // Get Current date.
70            function getDateMonthValue(day) {
71              var day_value = '' + day;
72              return day_value = (day_value.length < 2) ? '0' + day_value : day_value
73            }
74
75            formatted_date = date.getFullYear() + '-' + getDateMonthValue(mm) + '-' + getDateMonthValue(date.getDate())
76
77            // Get Current week's first day and last day.
78            let day = date.getDay();
79            let weekFirstDay = date.getDate() - day + (day === 0 ? -6 : 1);
80            let weekLastDay = weekFirstDay + 6;
81            weekFirstDay = date.getFullYear() + '-' + getDateMonthValue(mm) + '-' + getDateMonthValue(weekFirstDay)
82            weekLastDay = date.getFullYear() + '-' + getDateMonthValue(mm) + '-' + getDateMonthValue(weekLastDay)
83
84            // get Current month's first day and last day.
85            let monthFirstDay = date.getFullYear() + '-' + getDateMonthValue(mm) + '-' + '01'
86            let monthLastDay = new Date(date.getFullYear(), date.getMonth() + 1);
87            monthLastDay = monthLastDay.toISOString().slice(0, 10);
88
89            var startDateCalender = document.querySelector('fieldset[id*="edit-field-date-range-value-wrapper"]');
90            var endDateCalender = document.querySelector('fieldset[id*="edit-field-date-range-value-1-wrapper"]');
91            if (startDateCalender) {
92              startDateCalender.style.display = "none";
93            }
94            if (endDateCalender) {
95              endDateCalender.style.display = "none";
96            }
97            switch (this.value) {
98              case 'today':
99                $date_start_operator.value = '>=';
100                $date_end_operator.value = '<=';
101                $start_date.value = formatted_date;
102                $end_date.value = formatted_date;
103                break;
104
105              case 'currentWeek':
106                $date_start_operator.value = '>=';
107                $date_end_operator.value = '<=';
108                $start_date.value = weekFirstDay;
109                $end_date.value = weekLastDay;
110                break;
111
112              case 'currentMonth':
113                $date_start_operator.value = '>=';
114                $date_end_operator.value = '<=';
115                $start_date.value = monthFirstDay;
116                $end_date.value = monthLastDay;
117                break;
118
119              case 'dateSingle':
120                $date_start_operator.value = '>=';
121                $date_end_operator.value = '<=';
122                if (startDateCalender) {
123                  startDateCalender.style.display = "block";
124                }
125                $start_date.value = $start_date.value;
126                $end_date.value = $start_date.value;
127                break;
128
129              case 'dateRange':
130                $date_start_operator.value = '>=';
131                $date_end_operator.value = '<=';
132                if (startDateCalender) {
133                  startDateCalender.style.display = "block";
134                }
135                if (endDateCalender) {
136                  endDateCalender.style.display = "block";
137                }
138                break;
139
140              default:
141                $date_start_operator.value = '>=';
142                $date_end_operator.value = '<=';
143                if (startDateCalender) {
144                  startDateCalender.style.display = "none";
145                }
146                if (endDateCalender) {
147                  endDateCalender.style.display = "none";
148                }
149                $start_date.value = '';
150                $end_date.value = '';
151                break;
152            }
153          });
154        }
155
156        var audienceLabel = form.querySelector('label[for*="edit-audience"]');
157        if (audienceLabel) {
158          audienceLabel.addEventListener('click', function (event) {
159            event.preventDefault();
160            var audiencelist = document.querySelector('select[id*="edit-audience"]');
161            if (audiencelist) {
162              var currentDisplay = window.getComputedStyle(audiencelist).display;
163              if (currentDisplay === "none") {
164                audiencelist.style.display = "block";
165              } else {
166                audiencelist.style.display = "none";
167              }
168            }
169          });
170        }
171
172        var hamburger = form.querySelector('div[class*="hamburger"]');
173        if (hamburger && calender_filter) {
174          hamburger.addEventListener('click', function () {
175            if (calender_filter.style.display === "none" || calender_filter.style.display === "") {
176              calender_filter.style.display = "block";
177              hamburger.classList.add("active");
178            } else {
179              calender_filter.style.display = "none";
180              hamburger.classList.remove("active");
181            }
182          });
183        }
184        var resetButton = form.querySelector('input[id*="edit-reset"]');
185        if (resetButton) {
186          resetButton.addEventListener('click', function (event) {
187            event.preventDefault();
188            event.stopImmediatePropagation();
189            // Redirect to the base calendar page without any parameters
190            window.location.href = '/news/calendar';
191            return false;
192          }, true);
193        }
194      }
195
196      if (form_news != null) {
197        const date = document.querySelector('select[name="datefilter"]');
198        if (date) {
199          const startDate = document.querySelector('.start_date');
200          const endDate = document.querySelector('.end_date');
201
202          // Set the start and end date values based on the value of date element
203          date.addEventListener('change', function () {
204            const dateValue = date.value.split('&');
205            startDate.value = dateValue[0];
206            endDate.value = dateValue[1];
207          });
208        }
209      }
210      var awardrecipients = document.getElementById('views-exposed-form-award-recipient-awardrecipients-block-awardrecipients');
211      if (awardrecipients != null) {
212        let customResetbtn = document.getElementById("custom_reset_button");
213        if (customResetbtn) {
214          customResetbtn.addEventListener('click', function (e) {
215            e.preventDefault();
216            document.querySelector('#views-exposed-form-award-recipient-awardrecipients-block-awardrecipients input[id*="edit-reset"]').click();
217          });
218        }
219      }
220    }
221  };
222
223})(jQuery, Drupal);

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.