-
-
Notifications
You must be signed in to change notification settings - Fork 184
/
Copy pathideas.js
100 lines (90 loc) · 2.87 KB
/
ideas.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
$(document).ready(function(){
// Class for active buttons
const active_class = 'btn-dark';
// Class for inactive buttons
const inactive_class = 'btn-primary';
// jQuery object containing all the filter buttons
const filter_btn = $('.filter-btn');
// Animation delay for show() function
const animation_delay = 100;
// List of Available filters
const filters = [
'all',
'difficulty-easy',
'difficulty-medium',
'difficulty-hard',
'skill-ansible',
'skill-css',
'skill-django',
'skill-docker',
'skill-javascript',
'skill-php',
'skill-python',
'skill-wordpress',
'skill-writing'
];
// Variable to hold selected filters
var selected = [];
// To display selected filters
function showIdeas(selected)
{
// If no filter is selected/show all
if(selected.length == 0){
$('.filter').show(animation_delay);
return selected;
}
// Get filters which were not selected
hidden = filters.filter(n => !selected.includes(n));
// Hide not selected
for (const idea in hidden) {
if (hidden.hasOwnProperty(idea)) {
const element = hidden[idea];
$('.filter.' + element).hide();
}
}
// Show not selected
for (const idea in selected) {
if (selected.hasOwnProperty(idea)) {
const element = selected[idea];
$('.filter.' + element).show(animation_delay);
}
}
return selected;
}
// To reset the selected filters / All Projects button
function resetFilters()
{
$('.filter-btn[data-filter="all"]').removeClass(inactive_class).addClass(active_class);
return filter_btn.not('[data-filter="all"]').removeClass(active_class).addClass(inactive_class);
}
// To toggle classes in filter buttons
function toggleBtn(btn)
{
if(btn.hasClass(active_class)){
return btn.removeClass(active_class).addClass(inactive_class);
}
return btn.removeClass(inactive_class).addClass(active_class);
}
// Click event handler
filter_btn.click(function() {
var value = $(this).data('filter');
// Reset all filters and show all
if(value == 'all')
{
selected = [];
resetFilters();
return showIdeas(selected);
}
if(selected.indexOf(value) > -1)
{
// If the filter is already selected, remove it from selected and toggle buttons
selected.splice(selected.indexOf(value), 1);
}else if(filters.indexOf(value) > -1) {
// If the filter is not selected, add it to the selected array and toggle buttons
$('.filter-btn[data-filter="all"]').removeClass(active_class).addClass(inactive_class);
selected.push(value);
}
toggleBtn($(this));
return showIdeas(selected);
});
});