Spaces:
Running
Running
Update index.html (#3)
Browse files- Update index.html (b4f3692bed658ef5ddc2fb5e6954116435d6f21e)
- index.html +28 -11
index.html
CHANGED
@@ -109,25 +109,42 @@
|
|
109 |
this.totalPages = data.totalPages;
|
110 |
},
|
111 |
async getThemes(page, sort, useTestData) {
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
data.sort((a, b) => (b.likes - a.likes));
|
119 |
-
}else {
|
120 |
data.sort((a, b) => (new Date(b.lastModified) - new Date(a.lastModified)));
|
121 |
}
|
|
|
122 |
const pageThemes = data.slice((page - 1) * 15, page * 15);
|
123 |
-
|
124 |
console.log(pageThemes);
|
125 |
-
|
126 |
return {
|
127 |
themes: pageThemes,
|
128 |
-
totalPages: Math.
|
129 |
};
|
130 |
-
},
|
131 |
async nextPage() {
|
132 |
if (this.page < this.totalPages) {
|
133 |
this.page += 1;
|
|
|
109 |
this.totalPages = data.totalPages;
|
110 |
},
|
111 |
async getThemes(page, sort, useTestData) {
|
112 |
+
let data;
|
113 |
+
if (useTestData) {
|
114 |
+
const res = await fetch(
|
115 |
+
`https://huggingface.co/datasets/freddyaboulton/gradio-theme-subdomains/resolve/main/test_data.json`
|
116 |
+
);
|
117 |
+
data = await res.json();
|
118 |
+
} else {
|
119 |
+
const res = await fetch(
|
120 |
+
'https://huggingface.co/api/spaces?limit=100&filter=gradio-theme&expand[]=subdomain&expand[]=lastModified&expand[]=likes&expand[]=runtime'
|
121 |
+
);
|
122 |
+
data = await res.json();
|
123 |
+
console.log(data)
|
124 |
+
// Transform the API response to match the expected format
|
125 |
+
data = data.filter(item => item.runtime?.stage === "RUNNING").map(item => ({
|
126 |
+
id: item.id,
|
127 |
+
subdomain: `https://${item.subdomain}.hf.space`,
|
128 |
+
likes: item.likes,
|
129 |
+
lastModified: item.lastModified
|
130 |
+
}));
|
131 |
+
}
|
132 |
+
|
133 |
+
if (sort === 'likes') {
|
134 |
data.sort((a, b) => (b.likes - a.likes));
|
135 |
+
} else {
|
136 |
data.sort((a, b) => (new Date(b.lastModified) - new Date(a.lastModified)));
|
137 |
}
|
138 |
+
|
139 |
const pageThemes = data.slice((page - 1) * 15, page * 15);
|
140 |
+
|
141 |
console.log(pageThemes);
|
142 |
+
|
143 |
return {
|
144 |
themes: pageThemes,
|
145 |
+
totalPages: Math.ceil(data.length / 15)
|
146 |
};
|
147 |
+
},
|
148 |
async nextPage() {
|
149 |
if (this.page < this.totalPages) {
|
150 |
this.page += 1;
|