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 -->
<div class="admin-tabs">
<button
class="tab-btn"
[class.active]="activeTab() === 'shows'"
(click)="activeTab.set('shows')"
>Shows</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'events'"
(click)="activeTab.set('events')"
>Events</button>
<button
class="tab-btn"
[class.active]="activeTab() === 'history'"
(click)="activeTab.set('history')"
>History</button>
<button
class="tab-btn"
[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>
<button class="tab-btn" [class.active]="activeTab() === 'shows'" (click)="activeTab.set('shows')">Shows</button>
<button class="tab-btn" [class.active]="activeTab() === 'events'"
(click)="activeTab.set('events')">Events</button>
<button class="tab-btn" [class.active]="activeTab() === 'history'"
(click)="activeTab.set('history')">History</button>
<button class="tab-btn" [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>
<!-- Shows Tab -->
@@ -97,7 +64,9 @@
</td>
</tr>
} @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>
</table>
@@ -137,7 +106,9 @@
</td>
</tr>
} @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>
</table>
@@ -177,7 +148,9 @@
</td>
</tr>
} @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>
</table>
@@ -217,7 +190,9 @@
</td>
</tr>
} @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>
</table>
@@ -257,7 +232,9 @@
</td>
</tr>
} @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>
</table>
@@ -341,10 +318,7 @@
<span class="harmony-rule">{{ getHarmonyLabel() }}</span>
</div>
<label class="auto-variants-toggle">
<input
type="checkbox"
[(ngModel)]="themeAutoVariants"
>
<input type="checkbox" [(ngModel)]="themeAutoVariants">
Auto-generate variants
</label>
</div>
@@ -361,11 +335,8 @@
@for (role of colorRoles; track role.field) {
<div class="color-card" [class.has-issue]="hasHarmonyIssue(role.field)">
<div class="color-swatch" [style.background]="themeColors[role.field]">
<input
type="color"
[value]="themeColors[role.field]"
(input)="onThemeColorChange(role.field, $event.target.value)"
>
<input type="color" [value]="themeColors[role.field]"
(input)="onThemeColorChange(role.field, $event.target.value)">
</div>
<div class="color-info">
<span class="color-name">{{ role.label }}</span>
@@ -383,22 +354,9 @@
</div>
<div class="theme-actions">
<button
type="button"
class="btn btn-outline-theme"
(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"
>
<button type="button" class="btn btn-outline-theme" (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' }}
</button>
</div>
@@ -445,7 +403,9 @@
</td>
</tr>
} @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>
</table>
@@ -547,11 +507,7 @@
<p class="status error">{{ mobileBuildErrorMessage }}</p>
}
<button
class="btn btn-add"
[disabled]="mobileBuildBusy"
(click)="createAndUploadMobileBuildRequest()"
>
<button class="btn btn-add" [disabled]="mobileBuildBusy" (click)="createAndUploadMobileBuildRequest()">
{{ mobileBuildBusy ? 'Working…' : 'Create Draft + Upload Files' }}
</button>
</section>
@@ -588,7 +544,9 @@
</td>
</tr>
} @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>
</table>
@@ -600,9 +558,12 @@
<div class="tab-toolbar compact">
<h3>Selected Request #{{ build.id }}</h3>
<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 || !build.preflight_passed" (click)="triggerSelectedBuild()">Trigger Build</button>
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy" (click)="refreshSelectedBuild()">Refresh</button>
<button class="btn-icon btn-edit" [disabled]="mobileBuildBusy" (click)="runPreflightForSelectedBuild()">Run
Preflight</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>
@@ -627,7 +588,8 @@
<div class="artifact-row">
<div>
<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>
<a class="btn-icon btn-edit" [href]="getArtifactDownloadHref(artifact.download_url)">Download</a>
</div>
@@ -671,6 +633,7 @@
<app-admin-community-form [editItem]="editingCommunity" (saved)="onCommunitySaved()" (closed)="onCommunityClosed()" />
}
@if (showUnderwriterForm) {
<app-admin-underwriter-form [editItem]="editingUnderwriter" (saved)="onUnderwriterSaved()" (closed)="onUnderwriterClosed()" />
<app-admin-underwriter-form [editItem]="editingUnderwriter" (saved)="onUnderwriterSaved()"
(closed)="onUnderwriterClosed()" />
}
</section>