Skip to content

Commit 6da48c0

Browse files
committed
updated to run/debug locally using json ifavail
1 parent f2e591f commit 6da48c0

File tree

2 files changed

+101
-58
lines changed

2 files changed

+101
-58
lines changed

assets/js/dataset_stats.js

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,40 @@
11
async function fetchGistData() {
2-
const gistURL = 'https://gist.githubusercontent.com/beverleyy/c9112c25c5acd400b90741efa81aa411/raw/kaggle_stats.json';
3-
4-
try {
5-
const response = await fetch(gistURL);
6-
const data = await response.json();
7-
let fileName = window.location.pathname;
8-
fileName = fileName.split("/").slice(-1)[0].split(".")[0]+".md";
9-
const stats = data[fileName];
10-
document.querySelectorAll('#kaggle_views')[0].innerHTML = stats.views.toString() + " views";
11-
document.querySelectorAll('#kaggle_downloads')[0].innerHTML = stats.downloads.toString() + " downloads";
12-
document.querySelectorAll('#kaggle_size')[0].innerHTML = stats.size;
13-
} catch (error) {
14-
console.log("Failed to fetch Gist data:",error);
15-
}
2+
const isLocal = window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1";
3+
const gistURL = 'https://gist.githubusercontent.com/beverleyy/c9112c25c5acd400b90741efa81aa411/raw/kaggle_stats.json';
4+
const localURL = './kaggle_stats.json'; // Path to the local JSON file
5+
6+
let dataURL = gistURL;
7+
8+
if (isLocal) {
9+
try {
10+
// Check if the local JSON file exists
11+
const response = await fetch(localURL, { method: 'HEAD' });
12+
if (response.ok) {
13+
dataURL = localURL;
14+
} else {
15+
console.log("Local JSON file not found. Falling back to Gist.");
16+
}
17+
} catch (error) {
18+
console.log("Error checking local JSON file. Falling back to Gist:", error);
19+
}
20+
}
21+
22+
try {
23+
// Fetch data from the appropriate source
24+
console.log(`Fetching data from: ${dataURL}`);
25+
const response = await fetch(dataURL);
26+
const data = await response.json();
27+
28+
let fileName = window.location.pathname;
29+
fileName = fileName.split("/").slice(-1)[0].split(".")[0] + ".md";
30+
const stats = data[fileName];
31+
32+
document.querySelectorAll('#kaggle_views')[0].innerHTML = stats.views.toString() + " views";
33+
document.querySelectorAll('#kaggle_downloads')[0].innerHTML = stats.downloads.toString() + " downloads";
34+
document.querySelectorAll('#kaggle_size')[0].innerHTML = stats.size;
35+
} catch (error) {
36+
console.log("Failed to fetch data:", error);
37+
}
1638
}
39+
1740
fetchGistData();

assets/js/homepage_stats.js

Lines changed: 64 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -13,52 +13,72 @@ function formatBytes(numBytes) {
1313
}
1414

1515
async function fetchGistData() {
16-
const gistURL = 'https://gist.githubusercontent.com/beverleyy/c9112c25c5acd400b90741efa81aa411/raw/kaggle_stats.json';
17-
18-
try {
19-
// Fetch data from Gist JSON
20-
const response = await fetch(gistURL);
21-
const data = await response.json();
16+
// Determine the data source based on the hostname and local file existence
17+
const isLocal = window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1";
18+
const gistURL = 'https://gist.githubusercontent.com/beverleyy/c9112c25c5acd400b90741efa81aa411/raw/kaggle_stats.json';
19+
const localURL = './kaggle_stats.json'; // Path to the local JSON file
2220

23-
// Parse JSON data
24-
const total_size = parseInt(data.total_size);
25-
const total_bytes = parseInt(data.total_bytes);
21+
let dataURL = gistURL;
2622

27-
// Print total bytes downloaded
28-
const formattedNumber = total_bytes.toLocaleString();
29-
const wrappedNumber = Array.from(formattedNumber).map(char => (/\d/.test(char) ? `<span>${char}</span>`:`<em>${char}</em>`)).join('');
30-
document.getElementById("kaggle_stat").innerHTML = wrappedNumber+" bytes downloaded";
23+
if (isLocal) {
24+
try {
25+
// Check if the local JSON file exists
26+
const response = await fetch(localURL, { method: 'HEAD' });
27+
if (response.ok) {
28+
dataURL = localURL;
29+
} else {
30+
console.log("Local JSON file not found. Falling back to Gist.");
31+
}
32+
} catch (error) {
33+
console.log("Error checking local JSON file. Falling back to Gist:", error);
34+
}
35+
}
36+
37+
try {
38+
// Fetch data from the appropriate source
39+
console.log(`Fetching data from: ${dataURL}`);
40+
const response = await fetch(dataURL);
41+
const data = await response.json();
42+
43+
// Parse JSON data
44+
const total_size = parseInt(data.total_size);
45+
const total_bytes = parseInt(data.total_bytes);
3146

32-
// Print total dataset size
33-
const formattedSize = formatBytes(total_size);
34-
const wrappedSize = formattedSize.split(/(\s+)/).map(chunk => {
35-
if (/^\d+$/.test(chunk))
36-
return Array.from(chunk).map(char => `<span>${char}</span>`).join('');
37-
else if (/^\w+$/.test(chunk))
38-
return `<span>${chunk}</span>`;
39-
else
40-
return chunk;
41-
}).join('');
42-
document.getElementById("kaggle_size").innerHTML = wrappedSize;
43-
document.getElementById("data_size").innerHTML = formattedSize;
44-
45-
// Extra formatting thanks matthias
46-
let children = Array.from(document.getElementById("kaggle_stat").children);
47-
let firstEmIndex = children.findIndex(child => child.tagName.toLowerCase() === 'em');
48-
let byteCount = firstEmIndex === -1
49-
? children.filter(child => child.tagName.toLowerCase() === 'span').length
50-
: children.slice(0, firstEmIndex).filter(child => child.tagName.toLowerCase() === 'span').length;
51-
let sizeCount = document.querySelectorAll("#kaggle_size span").length-1;
52-
if (sizeCount < byteCount){
53-
let prependZeros = Array(byteCount-sizeCount).fill('<span class="zero">0</span>').join('');
54-
document.getElementById("kaggle_size").innerHTML = prependZeros+wrappedSize;
55-
} else if (sizeCount > byteCount){
56-
let prependZeros = Array(sizeCount-byteCount).fill('<span class="zero">0</span>').join('');
57-
document.getElementById("kaggle_stat").innerHTML = prependZeros+wrappedNumber+" bytes downloaded";
58-
}
47+
// Print total bytes downloaded
48+
const formattedNumber = total_bytes.toLocaleString();
49+
const wrappedNumber = Array.from(formattedNumber).map(char => (/\d/.test(char) ? `<span>${char}</span>` : `<em>${char}</em>`)).join('');
50+
document.getElementById("kaggle_stat").innerHTML = wrappedNumber + " bytes downloaded";
5951

60-
} catch (error) {
61-
console.log("Failed to fetch Gist data:", error);
62-
}
52+
// Print total dataset size
53+
const formattedSize = formatBytes(total_size);
54+
const wrappedSize = formattedSize.split(/(\s+)/).map(chunk => {
55+
if (/^\d+$/.test(chunk))
56+
return Array.from(chunk).map(char => `<span>${char}</span>`).join('');
57+
else if (/^\w+$/.test(chunk))
58+
return `<span>${chunk}</span>`;
59+
else
60+
return chunk;
61+
}).join('');
62+
document.getElementById("kaggle_size").innerHTML = wrappedSize;
63+
document.getElementById("data_size").innerHTML = formattedSize;
64+
65+
// Extra formatting thanks matthias
66+
let children = Array.from(document.getElementById("kaggle_stat").children);
67+
let firstEmIndex = children.findIndex(child => child.tagName.toLowerCase() === 'em');
68+
let byteCount = firstEmIndex === -1
69+
? children.filter(child => child.tagName.toLowerCase() === 'span').length
70+
: children.slice(0, firstEmIndex).filter(child => child.tagName.toLowerCase() === 'span').length;
71+
let sizeCount = document.querySelectorAll("#kaggle_size span").length - 1;
72+
if (sizeCount < byteCount) {
73+
let prependZeros = Array(byteCount - sizeCount).fill('<span class="zero">0</span>').join('');
74+
document.getElementById("kaggle_size").innerHTML = prependZeros + wrappedSize;
75+
} else if (sizeCount > byteCount) {
76+
let prependZeros = Array(sizeCount - byteCount).fill('<span class="zero">0</span>').join('');
77+
document.getElementById("kaggle_stat").innerHTML = prependZeros + wrappedNumber + " bytes downloaded";
78+
}
79+
80+
} catch (error) {
81+
console.log("Failed to fetch data:", error);
82+
}
6383
}
64-
fetchGistData();
84+
fetchGistData();

0 commit comments

Comments
 (0)