carolanderson commited on
Commit
7ad15b7
2 Parent(s): defa0d2 3b065d6

Merge branch 'main' into docker-hf

Browse files
.github/workflows/sync_fork.yml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Sync Fork
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0,30 * * * *'
6
+ workflow_dispatch: # on button click
7
+
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: GitHub Sync to Upstream Repository
14
+ uses: rovast/sync-upstream-repo@v0.0.1
15
+ with:
16
+ upstream_repo: https://github.com/StanfordHCI/indie-label.git
17
+ upstream_branch: main
18
+ downstream_branch: docker-hf
19
+ token: ${{ secrets.WORKFLOW_TOKEN }}
indie_label_svelte/public/img/anderson.jpeg ADDED
indie_label_svelte/public/img/blili_hamelin.jpeg ADDED
indie_label_svelte/public/img/butters.jpeg ADDED
indie_label_svelte/public/img/landay.jpeg CHANGED
indie_label_svelte/public/img/pan.jpg ADDED
indie_label_svelte/public/index.html CHANGED
@@ -19,6 +19,15 @@
19
 
20
  <script defer src='/build/bundle.js'></script>
21
  </head>
 
 
 
 
 
 
 
 
 
22
 
23
  <body>
24
  </body>
 
19
 
20
  <script defer src='/build/bundle.js'></script>
21
  </head>
22
+ <!-- Google tag (gtag.js) -->
23
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-GFB1D1ZXRZ"></script>
24
+ <script>
25
+ window.dataLayer = window.dataLayer || [];
26
+ function gtag(){dataLayer.push(arguments);}
27
+ gtag('js', new Date());
28
+
29
+ gtag('config', 'G-GFB1D1ZXRZ');
30
+ </script>
31
 
32
  <body>
33
  </body>
indie_label_svelte/src/About.svelte CHANGED
@@ -7,6 +7,15 @@
7
 
8
  <div class="panel">
9
  <div class="panel_contents">
 
 
 
 
 
 
 
 
 
10
  <div>
11
  <h3>About IndieLabel</h3>
12
  <p class="body">
@@ -16,45 +25,62 @@
16
  <div class="card-container">
17
  <p class="head_5">IndieLabel & the End-User Audits paper</p>
18
  <p class="body">
19
- The <a href="https://github.com/StanfordHCI/indie-label" target="_blank">IndieLabel</a> tool was initially presented as a research prototype system in an academic publication called <b><i>End-User Audits: A System Empowering Communities to Lead Large-Scale Investigations of Harmful Algorithmic Behavior</i></b>, presented at CSCW 2022. The full paper is available on the <a href="https://dl.acm.org/doi/10.1145/3555625" target="_blank">ACM Digital Library</a> or via <a href="https://hci.stanford.edu/publications/2022/Lam_EndUserAudits_CSCW22.pdf" target="_blank">Stanford HCI</a>.
20
  </p>
21
  <p class="body">
22
- The key question underlying the End-User Audits paper is: <i>how do we enable everyday users to lead large-scale algorithm audits</i>? IndieLabel aids users in rapidly identifying where they disagree with a system's behavior with the help of a personalized recommender system model.
23
  </p>
24
-
25
- <p class="body">
26
- Our paper abstract summarizes our core motivation, approach, and findings:
27
  "Because algorithm audits are conducted by technical experts, audits are necessarily limited to the hypotheses that experts think to test. End users hold the promise to expand this purview, as they inhabit spaces and witness algorithmic impacts that auditors do not. In pursuit of this goal, we propose end-user audits—system-scale audits led by non-technical users—and present an approach that scaffolds end users in hypothesis generation, evidence identification, and results communication. Today, performing a system-scale audit requires substantial user effort to label thousands of system outputs, so we introduce a collaborative filtering technique that leverages the algorithmic system's own disaggregated training data to project from a small number of end user labels onto the full test set. Our end-user auditing tool, IndieLabel, employs these predicted labels so that users can rapidly explore where their opinions diverge from the algorithmic system's outputs. By highlighting topic areas where the system is under-performing for the user and surfacing sets of likely error cases, the tool guides the user in authoring an audit report. In an evaluation of end-user audits on a popular comment toxicity model with 17 non-technical participants, participants both replicated issues that formal audits had previously identified and also raised previously underreported issues such as under-flagging on veiled forms of hate that perpetuate stigma and over-flagging of slurs that have been reclaimed by marginalized communities."
28
  </p>
 
29
 
30
  <p class="body">
31
- The End-User Audits work was led by Stanford PhD student <a href="http://michelle123lam.github.io/" target="_blank">Michelle Lam</a> along with co-authors <a href="https://mgordon.me/" target="_blank">Mitchell Gordon</a>, <a href="https://metaxa.net/" target="_blank">Danaë Metaxa</a>, <a href="https://sml.stanford.edu/people/jeff-hancock" target="_blank">Jeffrey Hancock</a>, <a href="https://www.landay.org/" target="_blank">James Landay</a>, and <a href="https://hci.stanford.edu/msb/" target="_blank">Michael Bernstein</a>.
32
  </p>
33
 
34
  <div class="image-container">
35
  <div>
36
  <img src="./img/lam.jpg" alt="Michelle Lam">
37
- <p><b>Michelle Lam</b><br/>PhD Student, Stanford CS</p>
 
 
 
38
  </div>
39
  <div>
40
  <img src="./img/gordon.jpeg" alt="Mitchell Gordon">
41
- <p><b>Mitchell Gordon</b><br/>Incoming Asst Professor, MIT EECS</p>
 
 
 
42
  </div>
43
  <div>
44
  <img src="./img/metaxa.jpg" alt="Danaë Metaxa">
45
- <p><b>Danaë Metaxa</b><br/>Asst Professor, UPenn CIS</p>
 
 
 
46
  </div>
47
  <div>
48
  <img src="./img/hancock.png" alt="Jeffrey Hancock">
49
- <p><b>Jeffrey Hancock</b><br/>Professor, Stanford Comm</p>
 
 
 
50
  </div>
51
  <div>
52
  <img src="./img/landay.jpeg" alt="James Landay">
53
- <p><b>James Landay</b><br/>Professor, Stanford CS</p>
 
 
 
54
  </div>
55
  <div>
56
  <img src="./img/bernstein.jpeg" alt="Michael Bernstein">
57
- <p><b>Michael Bernstein</b><br/>Assoc Professor, Stanford CS</p>
 
 
 
58
  </div>
59
  </div>
60
  </div>
@@ -62,7 +88,7 @@
62
  <div class="card-container">
63
  <p class="head_5">ARVA</p>
64
  <p class="body">
65
- To fill in: information about ARVA and AVID.
66
  </p>
67
  </div>
68
 
@@ -72,22 +98,41 @@
72
  The IndieLabel Hugging Face deployment was made possible by a wonderful team of volunteers who worked on adapting IndieLabel for use by a general audience, connecting its reports to AVID (AI Vulnerability Database), and deploying it on Hugging Face Spaces. The team includes:
73
  </p>
74
  <div>
75
- <div class="image-container">
76
- <div>
77
  <img src="./img/lam.jpg" alt="Michelle Lam">
78
- <p><b>Michelle Lam</b></p>
 
 
 
 
 
 
 
 
 
 
79
  </div>
80
- <div>
81
- <img src="./img/temp.png" alt="Carol Anderson">
82
- <p><b>Carol Anderson</b></p>
 
 
 
83
  </div>
84
- <div>
85
- <img src="./img/temp.png" alt="Christina Pan">
86
- <p><b>Christina Pan</b></p>
 
 
 
87
  </div>
88
- <div>
89
- <img src="./img/temp.png" alt="Nathan Butters">
90
- <p><b>Nathan Butters</b></p>
 
 
 
91
  </div>
92
  </div>
93
  </div>
@@ -102,6 +147,14 @@
102
  text-decoration: underline;
103
  }
104
 
 
 
 
 
 
 
 
 
105
  .head_5 {
106
  margin: 10px 0;
107
  }
@@ -131,4 +184,42 @@
131
  max-width: 110px;
132
  font-size: 11px;
133
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  </style>
 
7
 
8
  <div class="panel">
9
  <div class="panel_contents">
10
+ <div>
11
+ <h3>IndieLabel Tutorial</h3>
12
+ <p class="body">
13
+ Check out this 5-minute video tutorial for a quick overview of the IndieLabel tool. If you prefer a written document, you can also find a help article <a href="https://docs.google.com/document/d/1BTo8LFUriiZcSWCcQy0lel9VxGl4KZtlFnu7wAFaiu4/edit?usp=sharing" target="_blank">here</a>.
14
+ </p>
15
+ <div class="video-container">
16
+ <iframe src="https://www.youtube.com/embed/Je0DCDnJ6KQ?si=H1dVy-oe6PSP0QYM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
17
+ </div>
18
+ </div>
19
  <div>
20
  <h3>About IndieLabel</h3>
21
  <p class="body">
 
25
  <div class="card-container">
26
  <p class="head_5">IndieLabel & the End-User Audits paper</p>
27
  <p class="body">
28
+ The <a href="https://github.com/StanfordHCI/indie-label" target="_blank">IndieLabel</a> tool was initially presented as a research prototype in an academic publication called <b><i>End-User Audits: A System Empowering Communities to Lead Large-Scale Investigations of Harmful Algorithmic Behavior</i></b>. IndieLabel aids users in rapidly identifying where they disagree with a system's behavior with the help of a personalized recommender system model.
29
  </p>
30
  <p class="body">
31
+ The key question underlying the End-User Audits paper is: <i>how do we enable everyday users to lead large-scale algorithm audits</i>? The full paper was presented at CSCW 2022 and is available on the <a href="https://dl.acm.org/doi/10.1145/3555625" target="_blank">ACM Digital Library</a> or via <a href="https://hci.stanford.edu/publications/2022/Lam_EndUserAudits_CSCW22.pdf" target="_blank">Stanford HCI</a>. The End-User Audits paper abstract summarizes our core motivation, approach, and findings:
32
  </p>
33
+ <p class="body blockquote">
 
 
34
  "Because algorithm audits are conducted by technical experts, audits are necessarily limited to the hypotheses that experts think to test. End users hold the promise to expand this purview, as they inhabit spaces and witness algorithmic impacts that auditors do not. In pursuit of this goal, we propose end-user audits—system-scale audits led by non-technical users—and present an approach that scaffolds end users in hypothesis generation, evidence identification, and results communication. Today, performing a system-scale audit requires substantial user effort to label thousands of system outputs, so we introduce a collaborative filtering technique that leverages the algorithmic system's own disaggregated training data to project from a small number of end user labels onto the full test set. Our end-user auditing tool, IndieLabel, employs these predicted labels so that users can rapidly explore where their opinions diverge from the algorithmic system's outputs. By highlighting topic areas where the system is under-performing for the user and surfacing sets of likely error cases, the tool guides the user in authoring an audit report. In an evaluation of end-user audits on a popular comment toxicity model with 17 non-technical participants, participants both replicated issues that formal audits had previously identified and also raised previously underreported issues such as under-flagging on veiled forms of hate that perpetuate stigma and over-flagging of slurs that have been reclaimed by marginalized communities."
35
  </p>
36
+
37
 
38
  <p class="body">
39
+ The End-User Audits work was led by Stanford PhD student Michelle Lam along with co-authors Mitchell Gordon, Danaë Metaxa, Jeffrey Hancock, James Landay, and Michael Bernstein.
40
  </p>
41
 
42
  <div class="image-container">
43
  <div>
44
  <img src="./img/lam.jpg" alt="Michelle Lam">
45
+ <p>
46
+ <a href="http://michelle123lam.github.io" target="_blank"><b>Michelle Lam</b></a><br>
47
+ PhD Student, Stanford CS
48
+ </p>
49
  </div>
50
  <div>
51
  <img src="./img/gordon.jpeg" alt="Mitchell Gordon">
52
+ <p>
53
+ <a href="https://mgordon.me/" target="_blank"><b>Mitchell Gordon</b></a><br/>
54
+ Incoming Asst Professor, MIT EECS
55
+ </p>
56
  </div>
57
  <div>
58
  <img src="./img/metaxa.jpg" alt="Danaë Metaxa">
59
+ <p>
60
+ <a href="https://metaxa.net/" target="_blank"><b>Danaë Metaxa</b></a><br/>
61
+ Asst Professor, UPenn CIS
62
+ </p>
63
  </div>
64
  <div>
65
  <img src="./img/hancock.png" alt="Jeffrey Hancock">
66
+ <p>
67
+ <a href="https://sml.stanford.edu/people/jeff-hancock" target="_blank"><b>Jeffrey Hancock</b></a><br/>
68
+ Professor, Stanford Comm
69
+ </p>
70
  </div>
71
  <div>
72
  <img src="./img/landay.jpeg" alt="James Landay">
73
+ <p>
74
+ <a href="https://www.landay.org/" target="_blank"><b>James Landay</b></a><br/>
75
+ Professor, Stanford CS
76
+ </p>
77
  </div>
78
  <div>
79
  <img src="./img/bernstein.jpeg" alt="Michael Bernstein">
80
+ <p>
81
+ <a href="https://hci.stanford.edu/msb/" target="_blank"><b>Michael Bernstein</b></a><br/>
82
+ Assoc Professor, Stanford CS
83
+ </p>
84
  </div>
85
  </div>
86
  </div>
 
88
  <div class="card-container">
89
  <p class="head_5">ARVA</p>
90
  <p class="body">
91
+ The <a href="https://avidml.org/arva/" target="_blank">AI Risk and Vulnerability Alliance (ARVA)</a> is a nonprofit organization focused on making AI safer for everyone. Our mission is to empower communities to recognize, diagnose, and manage vulnerabilities in AI that affects them. Our flagship project is the <a href="https://avidml.org" target="_blank">AI Vulnerability Database (AVID)</a>, is an open-source knowledge base of failure modes for AI models, datasets, and systems.
92
  </p>
93
  </div>
94
 
 
98
  The IndieLabel Hugging Face deployment was made possible by a wonderful team of volunteers who worked on adapting IndieLabel for use by a general audience, connecting its reports to AVID (AI Vulnerability Database), and deploying it on Hugging Face Spaces. The team includes:
99
  </p>
100
  <div>
101
+ <div class="image-container-wide">
102
+ <div class="image-wide">
103
  <img src="./img/lam.jpg" alt="Michelle Lam">
104
+ <p>
105
+ <a href="http://michelle123lam.github.io" target="_blank"><b>Michelle Lam</b></a><br>
106
+ Michelle Lam is a PhD Candidate at Stanford University in the HCI Group. Her research focuses on building systems that empower everyday users to surface their expertise to design and evaluate AI systems.
107
+ </p>
108
+ </div>
109
+ <div class="image-wide">
110
+ <img src="./img/anderson.jpeg" alt="Carol Anderson">
111
+ <p>
112
+ <a href="https://www.carol-anderson.com/" target="_blank"><b>Carol Anderson</b></a><br>
113
+ Carol Anderson is a data scientist and machine learning practitioner with expertise in natural language processing (NLP), biological data, and AI ethics. She serves as AVID’s machine learning lead.
114
+ </p>
115
  </div>
116
+ <div class="image-wide">
117
+ <img src="./img/pan.jpg" alt="Christina Pan">
118
+ <p>
119
+ <a href="https://www.christinaapan.com/" target="_blank"><b>Christina Pan</b></a><br>
120
+ Christina Pan started her career building machine learning (ML) models at Google, which inspired her passion for design thinking and AI ethics.
121
+ </p>
122
  </div>
123
+ <div class="image-wide">
124
+ <img src="./img/butters.jpeg" alt="Nathan Butters">
125
+ <p>
126
+ <b>Nathan Butters</b><br>
127
+ Nathan Butters is a product manager in the Office of Ethical and Humane Use at Salesforce. He is a cofounder of the AI Risk and Vulnerability Alliance (ARVA).
128
+ </p>
129
  </div>
130
+ <div class="image-wide">
131
+ <img src="./img/blili_hamelin.jpeg" alt="Borhane Blili-Hamelin">
132
+ <p>
133
+ <a href="https://borhane.xyz/" target="_blank"><b>Borhane Blili-Hamelin</b></a><br>
134
+ Borhane Blili-Hamelin is an ethicist, researcher and AI risk management consultant. He is an officer at the AI Risk and Vulnerability Alliance (ARVA), an affiliate at Data & Society, and a senior consultant at BABL AI.
135
+ </p>
136
  </div>
137
  </div>
138
  </div>
 
147
  text-decoration: underline;
148
  }
149
 
150
+ .panel {
151
+ margin: 0 40px;
152
+ }
153
+
154
+ .blockquote {
155
+ margin: 0 40px;
156
+ }
157
+
158
  .head_5 {
159
  margin: 10px 0;
160
  }
 
184
  max-width: 110px;
185
  font-size: 11px;
186
  }
187
+
188
+ .image-container-wide {
189
+ margin: 20px 0;
190
+ display: flex;
191
+ flex-direction: column;
192
+ justify-content: center;
193
+ gap: 20px;
194
+ }
195
+
196
+ .image-wide {
197
+ display: flex;
198
+ flex-direction: row;
199
+ align-items: center;
200
+ gap: 10px;
201
+ }
202
+
203
+ .image-container-wide img {
204
+ max-width: 110px; /* Adjust the maximum width of images */
205
+ height: 110px;
206
+ border-radius: 50%;
207
+ display: block;
208
+ }
209
+
210
+ .video-container {
211
+ position: relative;
212
+ padding-bottom: 10px;
213
+ padding-top: 10px;
214
+ height: 40vh;
215
+ overflow: hidden;
216
+ }
217
+
218
+ .video-container iframe {
219
+ position: absolute;
220
+ top: 0;
221
+ left: 0;
222
+ width: 100%;
223
+ height: 100%;
224
+ }
225
  </style>
indie_label_svelte/src/Auditing.svelte CHANGED
@@ -293,9 +293,6 @@
293
  {#if audit_results}
294
  <OverallResults
295
  data={audit_results}
296
- clusters={clusters}
297
- personalized_model={personalized_model}
298
- cluster={topic}
299
  />
300
  {/if}
301
  {:catch error}
 
293
  {#if audit_results}
294
  <OverallResults
295
  data={audit_results}
 
 
 
296
  />
297
  {/if}
298
  {:catch error}
indie_label_svelte/src/ClusterResults.svelte CHANGED
@@ -32,7 +32,7 @@
32
  export let show_checkboxes = true;
33
  export let table_width_pct = 80;
34
  export let rowsPerPage = 10;
35
- export let evidence;
36
  export let table_id;
37
  export let use_model = true;
38
  export let show_agree_disagree = false;
@@ -232,7 +232,7 @@
232
  <div class="row">
233
  <div class="col s8">
234
  <VegaLite
235
- {cluster_overview_data}
236
  spec={cluster_overview_spec}
237
  bind:view={cluster_overview_view}
238
  />
@@ -302,7 +302,7 @@
302
  <Cell>
303
  System<br>decision<br>
304
  {#if show_checkboxes}
305
- <span style="font-size:12px; max-width:125px">White = Non-toxic, <br>Grey = Toxic</span>
306
  {/if}
307
  </Cell>
308
  {#if show_num_ratings}
@@ -314,7 +314,7 @@
314
  <Cell>
315
  Potential error<br>type<br>
316
  {#if show_checkboxes}
317
- <span style="font-size:12px; max-width:125px">Darker red = Greater <br>potential system error</span>
318
  {/if}
319
  </Cell>
320
 
 
32
  export let show_checkboxes = true;
33
  export let table_width_pct = 80;
34
  export let rowsPerPage = 10;
35
+ export let evidence = null;
36
  export let table_id;
37
  export let use_model = true;
38
  export let show_agree_disagree = false;
 
232
  <div class="row">
233
  <div class="col s8">
234
  <VegaLite
235
+ data={cluster_overview_data}
236
  spec={cluster_overview_spec}
237
  bind:view={cluster_overview_view}
238
  />
 
302
  <Cell>
303
  System<br>decision<br>
304
  {#if show_checkboxes}
305
+ <span style="font-size:9px; max-width:125px">White = Non-toxic, <br>Grey = Toxic</span>
306
  {/if}
307
  </Cell>
308
  {#if show_num_ratings}
 
314
  <Cell>
315
  Potential error<br>type<br>
316
  {#if show_checkboxes}
317
+ <span style="font-size:9px; max-width:125px">Darker red = Greater <br>potential system error</span>
318
  {/if}
319
  </Cell>
320
 
indie_label_svelte/src/HypothesisPanel.svelte CHANGED
@@ -248,8 +248,8 @@
248
  <div class="panel_header">
249
  <div class="panel_header_content">
250
  <div class="page_header">
251
- <img src="/logo.png" style="height: 50px; padding: 0px 20px;" alt="IndieLabel" />
252
- <Button class="user_button" color="secondary" style="margin: 12px 10px;" >
253
  <Label>User: {cur_user}</Label>
254
  </Button>
255
  </div>
@@ -259,7 +259,7 @@
259
  on:click={() => (open = !open)}
260
  color="primary"
261
  disabled={model == null}
262
- style="float: right; padding: 10px; margin-right: 10px;"
263
  >
264
  {#if open}
265
  <Label>Close</Label>
@@ -584,18 +584,17 @@
584
 
585
  :global(.mdc-button.user_button span) {
586
  text-overflow: ellipsis;
587
- white-space: nowrap;
588
  overflow: hidden;
589
  }
590
 
591
  .page_header {
592
  width: 100%;
593
  background: #e3d6fd;
594
- /* padding: 21px 0; */
595
- /* border-bottom: 1px solid #e3d6fd; */
596
  padding: 10.5px 0;
597
  position: relative;
598
- display: inline-block;
 
 
599
  }
600
 
601
  .page_header:before {
@@ -608,9 +607,11 @@
608
  }
609
 
610
  .hypotheses_header {
611
- display: inline-block;
612
  width: 100%;
613
  padding: 10px 0;
614
  vertical-align: middle;
 
 
 
615
  }
616
  </style>
 
248
  <div class="panel_header">
249
  <div class="panel_header_content">
250
  <div class="page_header">
251
+ <img src="/logo.png" style="height: 50px;" alt="IndieLabel" />
252
+ <Button class="user_button" color="secondary" style="margin: 0 5px; padding: 0 5px;" >
253
  <Label>User: {cur_user}</Label>
254
  </Button>
255
  </div>
 
259
  on:click={() => (open = !open)}
260
  color="primary"
261
  disabled={model == null}
262
+ style="float: right; padding: 0 5px; margin: 0 5px; max-width: 200px;"
263
  >
264
  {#if open}
265
  <Label>Close</Label>
 
584
 
585
  :global(.mdc-button.user_button span) {
586
  text-overflow: ellipsis;
 
587
  overflow: hidden;
588
  }
589
 
590
  .page_header {
591
  width: 100%;
592
  background: #e3d6fd;
 
 
593
  padding: 10.5px 0;
594
  position: relative;
595
+ display: flex;
596
+ align-items: center;
597
+ justify-content: space-around;
598
  }
599
 
600
  .page_header:before {
 
607
  }
608
 
609
  .hypotheses_header {
 
610
  width: 100%;
611
  padding: 10px 0;
612
  vertical-align: middle;
613
+ display: flex;
614
+ align-items: center;
615
+ justify-content: space-around;
616
  }
617
  </style>
indie_label_svelte/src/MainPanel.svelte CHANGED
@@ -7,18 +7,20 @@
7
  import TabBar from "@smui/tab-bar";
8
  import { Icon } from "@smui/common";
9
 
10
- export let model;
11
  export let error_type;
12
  export let cur_user;
13
 
14
  // Handle routing
15
- let active = "labeling";
16
  let searchParams = new URLSearchParams(window.location.search);
17
  let tab = searchParams.get("tab");
18
  if (tab == "auditing") {
19
  active = "auditing";
20
  } else if (tab == "about") {
21
  active = "about";
 
 
22
  }
23
 
24
  </script>
 
7
  import TabBar from "@smui/tab-bar";
8
  import { Icon } from "@smui/common";
9
 
10
+ export let model = null;
11
  export let error_type;
12
  export let cur_user;
13
 
14
  // Handle routing
15
+ let active = "about"; // default tab on load
16
  let searchParams = new URLSearchParams(window.location.search);
17
  let tab = searchParams.get("tab");
18
  if (tab == "auditing") {
19
  active = "auditing";
20
  } else if (tab == "about") {
21
  active = "about";
22
+ } else if (tab == "labeling") {
23
+ active = "labeling";
24
  }
25
 
26
  </script>
indie_label_svelte/src/ModelPerf.svelte CHANGED
@@ -32,7 +32,7 @@
32
  <div>
33
  <!-- Performance visualization -->
34
  <div>
35
- <VegaLite {perf_plot_data} spec={perf_plot_spec} bind:view={perf_plot_view}/>
36
  </div>
37
  </div>
38
  </div>
 
32
  <div>
33
  <!-- Performance visualization -->
34
  <div>
35
+ <VegaLite data={perf_plot_data} spec={perf_plot_spec} bind:view={perf_plot_view}/>
36
  </div>
37
  </div>
38
  </div>
indie_label_svelte/src/OverallResults.svelte CHANGED
@@ -65,7 +65,7 @@
65
  {/if}
66
  <div class="row">
67
  <div class="col s8">
68
- <VegaLite {topic_overview_data} spec={topic_overview_spec} bind:view={topic_overview_view}/>
69
  </div>
70
  </div>
71
 
 
65
  {/if}
66
  <div class="row">
67
  <div class="col s8">
68
+ <VegaLite data={topic_overview_data} spec={topic_overview_spec} bind:view={topic_overview_view}/>
69
  </div>
70
  </div>
71