dylanebert HF staff commited on
Commit
48bc2fc
·
1 Parent(s): d4f23a0

add model details; fix sizing

Browse files
src/routes/ModelDetails.svelte CHANGED
@@ -8,11 +8,18 @@
8
  thumbnail: string;
9
  }
10
 
 
 
 
 
 
 
11
  export let modelName: string;
12
  export let onBack: () => void;
13
  export let onSceneClick: (scene: Scene) => void;
14
 
15
  let scenes: Scene[] = [];
 
16
 
17
  async function fetchScenes() {
18
  scenes = [];
@@ -37,6 +44,10 @@
37
  return acc;
38
  }, []);
39
 
 
 
 
 
40
  scenes = [...scenes];
41
  }
42
 
@@ -53,18 +64,59 @@
53
  </button>
54
  <div class="desktop-spacer" />
55
  </div>
56
- {#if scenes.length > 0}
57
- <div class="grid">
58
- {#each scenes as scene}
59
- <button class="grid-item" on:click={() => onSceneClick(scene)}>
60
- <img src={scene.thumbnail} alt={scene.name} class="thumbnail" />
61
- <div class="title">{scene.name}</div>
62
- </button>
63
- {/each}
64
- </div>
65
- {:else}
66
- <div class="loading-container">
67
- <ProgressBarRound class="loading-icon" />
68
- <div class="loading-text">Loading...</div>
69
- </div>
70
- {/if}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  thumbnail: string;
9
  }
10
 
11
+ interface Config {
12
+ Model: string;
13
+ Space: string;
14
+ Paper: string;
15
+ }
16
+
17
  export let modelName: string;
18
  export let onBack: () => void;
19
  export let onSceneClick: (scene: Scene) => void;
20
 
21
  let scenes: Scene[] = [];
22
+ let config: Config;
23
 
24
  async function fetchScenes() {
25
  scenes = [];
 
44
  return acc;
45
  }, []);
46
 
47
+ const configUrl = `https://huggingface.co/datasets/dylanebert/3d-arena/resolve/main/outputs/${modelName}/config.json`;
48
+ const configResponse = await fetch(configUrl);
49
+ config = (await configResponse.json()) as Config;
50
+
51
  scenes = [...scenes];
52
  }
53
 
 
64
  </button>
65
  <div class="desktop-spacer" />
66
  </div>
67
+
68
+ <div class="model-details">
69
+ {#if config && (config.Model || config.Space || config.Paper)}
70
+ <table class="config-table">
71
+ {#if config.Model}
72
+ <tr>
73
+ <td>Model:</td>
74
+ <td
75
+ ><a class="muted" href={config.Model} target="_blank"
76
+ >{config.Model.replace("https://huggingface.co/", "")}</a
77
+ ></td
78
+ >
79
+ </tr>
80
+ {/if}
81
+ {#if config.Space}
82
+ <tr>
83
+ <td>Space:</td>
84
+ <td
85
+ ><a class="muted" href={config.Space} target="_blank"
86
+ >{config.Space.replace("https://huggingface.co/spaces/", "")}</a
87
+ ></td
88
+ >
89
+ </tr>
90
+ {/if}
91
+ {#if config.Paper}
92
+ <tr>
93
+ <td>Paper:</td>
94
+ <td
95
+ ><a class="muted" href={config.Paper} target="_blank"
96
+ >{config.Paper.replace("https://huggingface.co/papers/", "").replace(
97
+ "https://arxiv.org/abs/",
98
+ ""
99
+ )}</a
100
+ ></td
101
+ >
102
+ </tr>
103
+ {/if}
104
+ </table>
105
+ {/if}
106
+
107
+ {#if scenes.length > 0}
108
+ <div class="grid">
109
+ {#each scenes as scene}
110
+ <button class="grid-item" on:click={() => onSceneClick(scene)}>
111
+ <img src={scene.thumbnail} alt={scene.name} class="thumbnail" />
112
+ <div class="title">{scene.name}</div>
113
+ </button>
114
+ {/each}
115
+ </div>
116
+ {:else}
117
+ <div class="loading-container">
118
+ <ProgressBarRound class="loading-icon" />
119
+ <div class="loading-text">Loading...</div>
120
+ </div>
121
+ {/if}
122
+ </div>
src/routes/Viewer.svelte CHANGED
@@ -89,5 +89,5 @@
89
  <div bind:this={loadingBarFill} class="loading-bar-fill" />
90
  </div>
91
  </div>
92
- <canvas bind:this={canvas} width={800} height={600} />
93
  </div>
 
89
  <div bind:this={loadingBarFill} class="loading-bar-fill" />
90
  </div>
91
  </div>
92
+ <canvas class="viewer-canvas" bind:this={canvas} width={800} height={600} />
93
  </div>
static/global.css CHANGED
@@ -66,6 +66,17 @@ body {
66
  }
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
 
69
  .container {
70
  padding: 10px 15px 80px 15px;
71
  margin-left: auto;
@@ -343,6 +354,10 @@ body {
343
  aspect-ratio: 1 / 1;
344
  }
345
 
 
 
 
 
346
  .vote-button {
347
  background-color: #333;
348
  color: #fff;
 
66
  }
67
  }
68
 
69
+ .config-table {
70
+ margin: 1rem auto;
71
+ }
72
+
73
+ @media (min-width: 768px) {
74
+ .config-table tr {
75
+ display: inline-block;
76
+ margin-right: 1rem;
77
+ }
78
+ }
79
+
80
  .container {
81
  padding: 10px 15px 80px 15px;
82
  margin-left: auto;
 
354
  aspect-ratio: 1 / 1;
355
  }
356
 
357
+ .viewer-canvas {
358
+ aspect-ratio: 16 / 9;
359
+ }
360
+
361
  .vote-button {
362
  background-color: #333;
363
  color: #fff;