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;
|