additional files

This commit is contained in:
2026-07-04 18:40:40 +00:00
parent 7a04fa7c84
commit 562c28b6cb
2 changed files with 551 additions and 588 deletions
+55 -92
View File
@@ -7,56 +7,23 @@
<!-- Tabs --> <!-- Tabs -->
<div class="admin-tabs"> <div class="admin-tabs">
<button <button class="tab-btn" [class.active]="activeTab() === 'shows'" (click)="activeTab.set('shows')">Shows</button>
class="tab-btn" <button class="tab-btn" [class.active]="activeTab() === 'events'"
[class.active]="activeTab() === 'shows'" (click)="activeTab.set('events')">Events</button>
(click)="activeTab.set('shows')" <button class="tab-btn" [class.active]="activeTab() === 'history'"
>Shows</button> (click)="activeTab.set('history')">History</button>
<button <button class="tab-btn" [class.active]="activeTab() === 'team'" (click)="activeTab.set('team')">Team</button>
class="tab-btn" <button class="tab-btn" [class.active]="activeTab() === 'community'"
[class.active]="activeTab() === 'events'" (click)="activeTab.set('community')">Community</button>
(click)="activeTab.set('events')" <button class="tab-btn" [class.active]="activeTab() === 'station'"
>Events</button> (click)="activeTab.set('station')">Station</button>
<button <button class="tab-btn" [class.active]="activeTab() === 'theme'"
class="tab-btn" (click)="activeTab.set('theme'); onTabChanged()">Theme</button>
[class.active]="activeTab() === 'history'" <button class="tab-btn" [class.active]="activeTab() === 'underwriters'"
(click)="activeTab.set('history')" (click)="activeTab.set('underwriters')">Underwriters</button>
>History</button> <button class="tab-btn" [class.active]="activeTab() === 'mobile-builds'"
<button (click)="activeTab.set('mobile-builds')">Mobile Builds</button>
class="tab-btn" <button class="tab-btn" [class.active]="activeTab() === 'stats'" (click)="activeTab.set('stats')">Stats</button>
[class.active]="activeTab() === 'team'"
(click)="activeTab.set('team')"
>Team</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'community'"
(click)="activeTab.set('community')"
>Community</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'station'"
(click)="activeTab.set('station')"
>Station</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'theme'"
(click)="activeTab.set('theme'); onTabChanged()"
>Theme</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'underwriters'"
(click)="activeTab.set('underwriters')"
>Underwriters</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'mobile-builds'"
(click)="activeTab.set('mobile-builds')"
>Mobile Builds</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'stats'"
(click)="activeTab.set('stats')"
>Stats</button>
</div> </div>
<!-- Shows Tab --> <!-- Shows Tab -->
@@ -97,7 +64,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="6" class="empty-row">No shows yet. Click "Add Show" to create one.</td></tr> <tr>
<td colspan="6" class="empty-row">No shows yet. Click "Add Show" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -137,7 +106,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="5" class="empty-row">No events yet. Click "Add Event" to create one.</td></tr> <tr>
<td colspan="5" class="empty-row">No events yet. Click "Add Event" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -177,7 +148,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="5" class="empty-row">No history entries yet. Click "Add Entry" to create one.</td></tr> <tr>
<td colspan="5" class="empty-row">No history entries yet. Click "Add Entry" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -217,7 +190,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="5" class="empty-row">No team members yet. Click "Add Member" to create one.</td></tr> <tr>
<td colspan="5" class="empty-row">No team members yet. Click "Add Member" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -257,7 +232,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="5" class="empty-row">No highlights yet. Click "Add Highlight" to create one.</td></tr> <tr>
<td colspan="5" class="empty-row">No highlights yet. Click "Add Highlight" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -341,10 +318,7 @@
<span class="harmony-rule">{{ getHarmonyLabel() }}</span> <span class="harmony-rule">{{ getHarmonyLabel() }}</span>
</div> </div>
<label class="auto-variants-toggle"> <label class="auto-variants-toggle">
<input <input type="checkbox" [(ngModel)]="themeAutoVariants">
type="checkbox"
[(ngModel)]="themeAutoVariants"
>
Auto-generate variants Auto-generate variants
</label> </label>
</div> </div>
@@ -361,11 +335,8 @@
@for (role of colorRoles; track role.field) { @for (role of colorRoles; track role.field) {
<div class="color-card" [class.has-issue]="hasHarmonyIssue(role.field)"> <div class="color-card" [class.has-issue]="hasHarmonyIssue(role.field)">
<div class="color-swatch" [style.background]="themeColors[role.field]"> <div class="color-swatch" [style.background]="themeColors[role.field]">
<input <input type="color" [value]="themeColors[role.field]"
type="color" (input)="onThemeColorChange(role.field, $event.target.value)">
[value]="themeColors[role.field]"
(input)="onThemeColorChange(role.field, $event.target.value)"
>
</div> </div>
<div class="color-info"> <div class="color-info">
<span class="color-name">{{ role.label }}</span> <span class="color-name">{{ role.label }}</span>
@@ -383,22 +354,9 @@
</div> </div>
<div class="theme-actions"> <div class="theme-actions">
<button <button type="button" class="btn btn-outline-theme" (click)="resetTheme()">Reset to Defaults</button>
type="button" <button type="button" class="btn btn-outline-theme" (click)="autoFixTheme()">Auto-Fix Harmony</button>
class="btn btn-outline-theme" <button type="button" class="btn btn-save-theme" (click)="saveTheme()" [disabled]="themeSaving">
(click)="resetTheme()"
>Reset to Defaults</button>
<button
type="button"
class="btn btn-outline-theme"
(click)="autoFixTheme()"
>Auto-Fix Harmony</button>
<button
type="button"
class="btn btn-save-theme"
(click)="saveTheme()"
[disabled]="themeSaving"
>
{{ themeSaving ? 'Saving…' : 'Save Theme' }} {{ themeSaving ? 'Saving…' : 'Save Theme' }}
</button> </button>
</div> </div>
@@ -445,7 +403,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="6" class="empty-row">No underwriters yet. Click "Add Underwriter" to create one.</td></tr> <tr>
<td colspan="6" class="empty-row">No underwriters yet. Click "Add Underwriter" to create one.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -547,11 +507,7 @@
<p class="status error">{{ mobileBuildErrorMessage }}</p> <p class="status error">{{ mobileBuildErrorMessage }}</p>
} }
<button <button class="btn btn-add" [disabled]="mobileBuildBusy" (click)="createAndUploadMobileBuildRequest()">
class="btn btn-add"
[disabled]="mobileBuildBusy"
(click)="createAndUploadMobileBuildRequest()"
>
{{ mobileBuildBusy ? 'Working…' : 'Create Draft + Upload Files' }} {{ mobileBuildBusy ? 'Working…' : 'Create Draft + Upload Files' }}
</button> </button>
</section> </section>
@@ -588,7 +544,9 @@
</td> </td>
</tr> </tr>
} @empty { } @empty {
<tr><td colspan="6" class="empty-row">No build requests yet.</td></tr> <tr>
<td colspan="6" class="empty-row">No build requests yet.</td>
</tr>
} }
</tbody> </tbody>
</table> </table>
@@ -600,9 +558,12 @@
<div class="tab-toolbar compact"> <div class="tab-toolbar compact">
<h3>Selected Request #{{ build.id }}</h3> <h3>Selected Request #{{ build.id }}</h3>
<div class="action-group"> <div class="action-group">
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy" (click)="runPreflightForSelectedBuild()">Run Preflight</button> <button class="btn-icon btn-edit" [disabled]="mobileBuildBusy" (click)="runPreflightForSelectedBuild()">Run
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy || !build.preflight_passed" (click)="triggerSelectedBuild()">Trigger Build</button> Preflight</button>
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy" (click)="refreshSelectedBuild()">Refresh</button> <button class="btn-icon btn-edit" [disabled]="mobileBuildBusy || !build.preflight_passed"
(click)="triggerSelectedBuild()">Trigger Build</button>
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy"
(click)="refreshSelectedBuild()">Refresh</button>
</div> </div>
</div> </div>
@@ -627,7 +588,8 @@
<div class="artifact-row"> <div class="artifact-row">
<div> <div>
<strong>{{ artifact.file_name }}</strong> <strong>{{ artifact.file_name }}</strong>
<div class="artifact-meta">{{ artifact.platform }} • {{ artifact.artifact_type }} • {{ artifact.sha256.slice(0, 12) }}…</div> <div class="artifact-meta">{{ artifact.platform }} • {{ artifact.artifact_type }} • {{
artifact.sha256.slice(0, 12) }}…</div>
</div> </div>
<a class="btn-icon btn-edit" [href]="getArtifactDownloadHref(artifact.download_url)">Download</a> <a class="btn-icon btn-edit" [href]="getArtifactDownloadHref(artifact.download_url)">Download</a>
</div> </div>
@@ -671,6 +633,7 @@
<app-admin-community-form [editItem]="editingCommunity" (saved)="onCommunitySaved()" (closed)="onCommunityClosed()" /> <app-admin-community-form [editItem]="editingCommunity" (saved)="onCommunitySaved()" (closed)="onCommunityClosed()" />
} }
@if (showUnderwriterForm) { @if (showUnderwriterForm) {
<app-admin-underwriter-form [editItem]="editingUnderwriter" (saved)="onUnderwriterSaved()" (closed)="onUnderwriterClosed()" /> <app-admin-underwriter-form [editItem]="editingUnderwriter" (saved)="onUnderwriterSaved()"
(closed)="onUnderwriterClosed()" />
} }
</section> </section>