Skip to content

Commit f03aa4f

Browse files
committed
update
1 parent 08090cd commit f03aa4f

9 files changed

Lines changed: 96 additions & 56 deletions

File tree

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
<body>
1717
<app-root></app-root>
1818
<noscript>Please enable JavaScript to continue using this application.</noscript>
19-
<link rel="modulepreload" href="chunk-JFW22RQ5.js"><link rel="modulepreload" href="chunk-N57AJHA5.js"><script src="polyfills-S3KRBCMK.js" type="module"></script><script src="scripts-TSGU23AO.js" defer></script><script src="main-OX5ROPX2.js" type="module"></script></body>
19+
<link rel="modulepreload" href="chunk-JZNPFRRO.js"><link rel="modulepreload" href="chunk-N57AJHA5.js"><script src="polyfills-S3KRBCMK.js" type="module"></script><script src="scripts-TSGU23AO.js" defer></script><script src="main-UO6SKLLT.js" type="module"></script></body>
2020
</html>
Lines changed: 35 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/ngsw.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"configVersion": 1,
3-
"timestamp": 1772461512345,
3+
"timestamp": 1772537715598,
44
"index": "/index.html",
55
"assetGroups": [
66
{
@@ -11,13 +11,13 @@
1111
"ignoreVary": true
1212
},
1313
"urls": [
14-
"/chunk-H7NWPCLV.js",
15-
"/chunk-JFW22RQ5.js",
14+
"/chunk-HDGNMTM2.js",
15+
"/chunk-JZNPFRRO.js",
1616
"/chunk-N57AJHA5.js",
1717
"/chunk-OPKXG5HT.js",
1818
"/favicon.ico",
1919
"/index.html",
20-
"/main-OX5ROPX2.js",
20+
"/main-UO6SKLLT.js",
2121
"/manifest.webmanifest",
2222
"/polyfills-S3KRBCMK.js",
2323
"/scripts-TSGU23AO.js",
@@ -123,13 +123,13 @@
123123
"/assets/proteinLists/pd.txt": "915c4a708c5dc7227d0b8fdc5eb51b17b2342746",
124124
"/assets/proteinLists/phosphatases.txt": "c350ec4656fee8be08c7dead8fdd42a0cd20e350",
125125
"/assets/proteinLists/pink1.txt": "6b73c270d0407981851903bae49a622c0c22e0f8",
126-
"/chunk-H7NWPCLV.js": "74079127031b4ca92ebc894c557b6403f427033c",
127-
"/chunk-JFW22RQ5.js": "e28497487fdc5e290b62a727b709288e46cfedd9",
126+
"/chunk-HDGNMTM2.js": "dbfa67a8de960293b30138e9cd0f76c4943be943",
127+
"/chunk-JZNPFRRO.js": "57c396a382a2ce0430eac448d459fcd19f7fa1de",
128128
"/chunk-N57AJHA5.js": "0596171feebf974cc1f5eeeef7f1e75616da8bca",
129129
"/chunk-OPKXG5HT.js": "d5030108cbfe5a8b71c1160d31ac71d9b73d38c0",
130130
"/favicon.ico": "22f6a4a3bcaafafb0254e0f2fa4ceb89e505e8b2",
131-
"/index.html": "bffa81de55481c6b0200898e13674a062bfd056b",
132-
"/main-OX5ROPX2.js": "d7cd4381e62477181353128ce25f52b00b479166",
131+
"/index.html": "bff615ddbb39ef9b77d4e279b8180c8495375186",
132+
"/main-UO6SKLLT.js": "6d312306c909550d03baecc2870a79bf07ac95ba",
133133
"/manifest.webmanifest": "0f6d8f1c753e9f503daf4cd303ebecc6b0b0a04b",
134134
"/polyfills-S3KRBCMK.js": "666124c1a3df4ed7eb66e54da096791013fab792",
135135
"/scripts-TSGU23AO.js": "e172440274ca0257fbf1b7e414f5bd41b03b202f",

src/app/app.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ <h5>Resources</h5>
1414
<a class="nav-link p-0 text-muted" href="https://www.pnas.org/doi/full/10.1073/pnas.2312676121" target="_blank">Publication</a>
1515
</li>
1616
<li class="nav-item">
17-
<a class="nav-link p-0 text-danger" href="{{baseURL}}/admin" target="_blank">Administration Portal</a>
17+
<a class="nav-link p-0 text-danger" href="{{baseURL}}admin" target="_blank">Administration Portal</a>
1818
</li>
1919
</ul>
2020
</div>

src/app/components/collection-landing/collection-landing.component.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ <h4 class="card-title mb-0">
2323
<i class="bi bi-arrow-up-right-square"></i> Open in App
2424
</button>
2525
}
26+
@if (collection()!.accessible_curtains.length > 0) {
27+
<button class="btn btn-sm btn-outline-primary" (click)="exportSessionsToCSV()" title="Export sessions to CSV">
28+
<i class="bi bi-download"></i> Export CSV
29+
</button>
30+
}
2631
<span class="badge bg-info">{{collection()!.accessible_curtains.length}} sessions</span>
2732
</div>
2833
</div>

src/app/components/collection-landing/collection-landing.component.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,43 @@ export class CollectionLandingComponent implements OnInit, OnDestroy {
130130
}
131131
});
132132
}
133+
134+
exportSessionsToCSV(): void {
135+
const col = this.collection();
136+
if (!col || col.accessible_curtains.length === 0) {
137+
return;
138+
}
139+
140+
const baseUrl = location.origin + '/#/';
141+
const headers = ['Name', 'Description', 'Link', 'Curtain Type', 'Created', 'Contact'];
142+
const rows = col.accessible_curtains.map(curtain => {
143+
const link = baseUrl + curtain.link_id;
144+
return [
145+
this.escapeCSV(curtain.description || 'Untitled Session'),
146+
this.escapeCSV(col.description || ''),
147+
this.escapeCSV(link),
148+
this.escapeCSV(curtain.curtain_type),
149+
this.escapeCSV(this.formatDate(curtain.created)),
150+
this.escapeCSV(col.owner_username)
151+
].join(',');
152+
});
153+
154+
const csvContent = [headers.join(','), ...rows].join('\n');
155+
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
156+
const url = URL.createObjectURL(blob);
157+
const link = document.createElement('a');
158+
link.setAttribute('href', url);
159+
link.setAttribute('download', `${col.name.replace(/[^a-zA-Z0-9]/g, '_')}_sessions.csv`);
160+
document.body.appendChild(link);
161+
link.click();
162+
document.body.removeChild(link);
163+
URL.revokeObjectURL(url);
164+
}
165+
166+
private escapeCSV(value: string): string {
167+
if (value.includes(',') || value.includes('"') || value.includes('\n')) {
168+
return `"${value.replace(/"/g, '""')}"`;
169+
}
170+
return value;
171+
}
133172
}

src/app/components/home/home.component.html

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,6 @@ <h6 class="alert-heading mb-1">
393393
{{uniqueLink}}
394394
</a>
395395
</div>
396-
@if (!permanent()) {
397-
<div class="small text-muted">
398-
<i class="bi bi-info-circle me-1"></i>
399-
This is a temporary link. Save your session to make it permanent.
400-
</div>
401-
}
402396
</div>
403397
<div class="d-flex flex-column gap-2">
404398
<button [ngClass]="isDarkMode() ? 'btn btn-sm btn-outline-light' : 'btn btn-sm btn-outline-dark'" (click)="copyToClipboard(uniqueLink)" title="Copy to clipboard">

0 commit comments

Comments
 (0)