PageSourceSearch

https://www.networking.ch/assets/js/project-filter-e15ca835749b61b09f2c8e483a079f78.js

js networking.ch collected 2026-10-08 02:06:43 UTC 2,167 bytes, 86 lines download raw bytes

1(function () {
2    let filters = document.querySelectorAll('[data-filter]')
3    let projects = document.querySelectorAll('[data-categories]')
4    let all = document.querySelector('[data-filter="all"]')
5    let selected = [];
6    let anchor = getAnchor()
7
8    filters.forEach((el) => {
9        let category = el.dataset.filter
10        if (anchor === category) {
11            el.checked = true;
12            all.checked = false
13            selected.push(category)
14            showProjects()
15        }
16
17        el.addEventListener('change', (e) => {
18            let el = e.target
19
20
21            if (el.checked && category !== all.dataset.filter) {
22                selected.push(category)
23                all.checked = false
24            }
25
26            if (!el.checked && category !== all.dataset.filter) {
27                removeFromArray(category)
28            }
29
30            if (category === all.dataset.filter || selected.length === 0) {
31                selected = []
32                showAll()
33                return
34            }
35
36            showProjects()
37
38        })
39    })
40
41    function showAll()
42    {
43        filters.forEach((el) => {
44            el.checked = el.dataset.filter === all.dataset.filter
45        })
46        showProjects()
47    }
48
49
50    function showProjects()
51    {
52        projects.forEach((el) => {
53            if (selected.length === 0) {
54                return el.classList.remove('d-none')
55            }
56            let show = false
57            let projectCategories = JSON.parse(el.dataset.categories);
58            projectCategories.forEach((cat) => {
59                if (selected.includes(cat)) {
60                    show = true
61                }
62            })
63
64        if (show) {
65            return el.classList.remove('d-none')
66        }
67
68            el.classList.add('d-none')
69        })
70    }
71
72    function removeFromArray(item)
73    {
74        selected = selected.filter(function (value, index, arr) {
75            return value !== item;
76        });
77    }
78
79    function getAnchor()
80    {
81        let currentUrl = document.URL,
82            urlParts = currentUrl.split('#');
83
84        return (urlParts.length > 1) ? urlParts[1] : null;
85    }
86})()

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.