PageSourceSearch

https://vancewellenstein.com/assets/gray_matter/interfaces/filter_…11672ea3e19c775873e7780dabac6a0375f3f591.js

js vancewellenstein.com collected 2026-10-07 07:50:51 UTC 3,736 bytes, 116 lines download raw bytes

1// Copyright (c) 2021-2025 GrayBits LLC
2
3import DateSelect from 'gray_matter/modules/initializable/date_select'
4import Color from 'gray_matter/utility/color'
5import {params} from 'gray_matter/interfaces/items'
6
7const applicators = {
8  date: dateTime,
9  datetime: dateTime,
10  color: color,
11  palette_color: paletteColor,
12  location: location,
13  time_of_day: timeOfDay,
14  boolean: boolean,
15  duration: duration,
16  list: list
17}
18
19export default function applySelection(column){
20  if (applicators[column.dataset.type]){
21    applicators[column.dataset.type](column);
22  } else {
23    generic(column);
24  }
25}
26
27function filters(){
28  return params.filters;
29}
30
31function dateTime(column){
32  let from = DateSelect.dateTimeArrayFromFieldWrapper(column.querySelector('.field_wrapper[data-attribute="from"]'));
33  let to = DateSelect.dateTimeArrayFromFieldWrapper(column.querySelector('.field_wrapper[data-attribute="to"]'));
34  let valid_from = DateSelect.validDateArray(from);
35  let valid_to = DateSelect.validDateArray(to);
36 
37  if (!(valid_from || valid_to)){
38    delete filters()[column.dataset.attribute];
39  } else {
40    filters()[column.dataset.attribute] = {};
41    if (valid_from){
42      filters()[column.dataset.attribute].from = from;
43    }
44    if (valid_to){
45      filters()[column.dataset.attribute].to = to;
46    }
47  }
48}
49
50function timeOfDay(column){
51  let ampm = column.querySelector('.column_filter select[name="time_of_day_ampm"]');
52  filters()[column.dataset.attribute] = [
53    column.querySelector('.column_filter select[name="time_of_day_hour"]').value,
54    column.querySelector('.column_filter select[name="time_of_day_minute"]').value
55  ]
56  if (ampm){
57    filters()[column.dataset.attribute].push(ampm.value);
58  }
59}
60
61function color(column){
62  let h = column.querySelector('.color_value_h').value;
63  let s = column.querySelector('.color_value_s').value;
64  let l = column.querySelector('.color_value_l').value;
65  if (h.length > 0 && s.length > 0 && l.length > 0){
66    filters()[column.dataset.attribute] = [h, s, l];
67    column.classList.add('with_filter');
68  }
69}
70
71function paletteColor(column){
72  filters()[column.dataset.attribute] = encodeURIComponent(column.querySelector('.selected_color').value);
73  column.classList.add('with_filter'); 
74}
75
76function duration(column){
77  let h = column.querySelector('select[name="duration_h"]').value * 1;
78  let m = column.querySelector('select[name="duration_m"]').value * 1;
79  let s = column.querySelector('select[name="duration_s"]').value * 1;
80  filters()[column.dataset.attribute] = s + m * 60 + h * 3600;
81  column.classList.add('with_filter');
82}
83
84function list(column){
85  let values = [];
86  column.querySelectorAll('.choice input[type="checkbox"]:checked').forEach((choice) => {
87    values.push(choice.value);
88  });
89  filters()[column.dataset.attribute] = values;
90}
91
92function location(column){
93  let lat = column.querySelector('.column_filter .lat').value;
94  let lng = column.querySelector('.column_filter .lng').value;
95  let r = column.querySelector('input[name="within_radius"]').value;
96  if (lat.length > 0 && lng.length > 0 && r.length > 0){
97    filters()[column.dataset.attribute] = [lat, lng, r];
98    column.classList.add('with_filter');
99  }
100}
101
102function boolean(column){
103  filters()[column.dataset.attribute] = column.querySelector('.column_filter input[type="checkbox"]').checked + '';
104  column.classList.add('with_filter');
105}
106
107function generic(column){
108  let value = column.querySelector('.column_filter input[type="text"], .column_filter select').value.trim();
109  if (value.length == 0){
110    delete filters()[column.dataset.attribute];
111    column.classList.remove('with_filter');
112  } else {
113    filters()[column.dataset.attribute] = value;
114    column.classList.add('with_filter');
115  }
116};

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.