forked from saeedesmaili/iranian-businesses-data-reports
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
83 lines (70 loc) · 3.09 KB
/
app.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
// script.js
// Function to load JSON data from "output.json"
async function loadData() {
try {
const response = await fetch('output.json');
const data = await response.json();
// Sort by year
data.sort((a, b) => b.year - a.year);
// Get unique tags and sort them in ascending order
const tags = [...new Set(data.flatMap(item => item.tags))].sort();
// Get the elements where tags and titles will be displayed
const tagList = document.getElementById('tagList');
const titleList = document.getElementById('titleList');
// Display tags
tags.forEach(tag => {
const tagElement = document.createElement('a');
tagElement.className = 'badge text-bg-secondary mx-1 cursor-pointer';
tagElement.textContent = tag;
tagElement.classList.add('tag');
tagElement.addEventListener('click', () => filterByTag(tag, data));
tagList.appendChild(tagElement);
});
// Display titles
displayTitles(data, titleList);
// Filter by tag
function filterByTag(tag, items) {
const tagElements = document.querySelectorAll('.tag');
tagElements.forEach(el => el.classList.remove('text-bg-dark'));
const activeTag = tagElements[Array.from(tagElements).findIndex(el => el.textContent === tag)];
activeTag.classList.add('text-bg-dark');
const filteredData = items.filter(item => item.tags.includes(tag));
displayTitles(filteredData, titleList);
}
// Function to display titles
function displayTitles(items, listElement) {
listElement.innerHTML = '';
items.forEach(item => {
// Create card structure
const cardDiv = document.createElement('div');
cardDiv.className = 'col-12 col-md-4';
cardDiv.innerHTML = `
<div class="card mb-3">
<div class="card-body">
<div class="flex-fill ms-4">
<div class="d-flex justify-content-between align-items-center mb-1">
<div>
<span class="d-block h5 mb-0">${item.title}</span>
</div>
</div>
<p class="text-sm text-muted my-2 pe-lg-5 text-start">
${item.tags.join(' - ')}
</p>
<div class="d-flex align-items-center">
<a href="https://github.com/MahdiMajidzadeh/iranian-businesses-data-reports/blob/main/reports/${item.url}?raw=true" class="btn btn-sm btn-neutral">
<i class="bi bi-cloud-arrow-down"></i> get
</a>
</div>
</div>
</div>
</div>
`;
listElement.appendChild(cardDiv);
});
}
} catch (error) {
console.error('Error loading the JSON data', error);
}
}
// Load data on page load
window.onload = loadData;