@if (activeTab() === 'shows') {
@if (shows$ | async; as shows) {
Shows ({{ shows.length }})
| Order |
Title |
Host |
Genre |
Slots |
Actions |
@for (show of shows; track show.id) {
| {{ show.display_order }} |
{{ show.title }} |
{{ show.host }} |
{{ show.genre }} |
@for (slot of show.schedules; track slot.id) {
{{ slot.day_label.charAt(0) }} {{ slot.time }}
}
|
|
} @empty {
| No shows yet. Click "Add Show" to create one. |
}
}
}
@if (activeTab() === 'events') {
@if (events$ | async; as events) {
Events ({{ events.length }})
| Date |
Title |
Location |
Active |
Actions |
@for (event of events; track event.id) {
| {{ event.date }} |
{{ event.title }} |
{{ event.location }} |
{{ event.active ? 'Yes' : 'No' }} |
|
} @empty {
| No events yet. Click "Add Event" to create one. |
}
}
}
@if (activeTab() === 'history') {
@if (historyEntries$ | async; as entries) {
History Timeline ({{ entries.length }})
| Year |
Title |
Order |
Active |
Actions |
@for (entry of entries; track entry.id) {
| {{ entry.year }} |
{{ entry.title }} |
{{ entry.display_order }} |
{{ entry.active ? 'Yes' : 'No' }} |
|
} @empty {
| No history entries yet. Click "Add Entry" to create one. |
}
}
}
@if (activeTab() === 'team') {
@if (teamMembers$ | async; as members) {
Team Members ({{ members.length }})
| Name |
Title |
Order |
Active |
Actions |
@for (member of members; track member.id) {
| {{ member.name }} |
{{ member.title }} |
{{ member.display_order }} |
{{ member.active ? 'Yes' : 'No' }} |
|
} @empty {
| No team members yet. Click "Add Member" to create one. |
}
}
}
@if (activeTab() === 'community') {
@if (communityHighlights$ | async; as highlights) {
Community Highlights ({{ highlights.length }})
| Icon |
Title |
Order |
Active |
Actions |
@for (highlight of highlights; track highlight.id) {
| {{ highlight.icon }} |
{{ highlight.title }} |
{{ highlight.display_order }} |
{{ highlight.active ? 'Yes' : 'No' }} |
|
} @empty {
| No highlights yet. Click "Add Highlight" to create one. |
}
}
}
@if (activeTab() === 'station') {
@if (stationConfig$ | async; as config) {
Station Configuration
Callsign
{{ config.callsign }}
Name
{{ config.name_primary }} {{ config.name_secondary }}
Tagline
{{ config.tagline }}
Frequency
{{ config.frequency }}
Founded
{{ config.founded_year }}
Nonprofit
{{ config.nonprofit_type }} — EIN {{ config.ein }}
Email
{{ config.email }}
Phone
{{ config.phone }}
Website
{{ config.website }}
Donation URL
{{ config.donation_url || '(not set)' }}
Play Store URL
{{ config.play_store_url || '(not set)' }}
App Store Embed
{{ config.app_store_embed_html ? 'Configured' : '(not set)' }}
}
}
@if (activeTab() === 'theme') {
Color Theme
@if (themeSaveSuccess) {
{{ themeSaveSuccess }}
}
@if (themeSaveError) {
{{ themeSaveError }}
}
@for (role of colorRoles; track role.field) {
{{ role.label }}
{{ themeColors[role.field] }}
@if (hasHarmonyIssue(role.field)) {
⚠
} @else if (role.group !== 'neutral') {
✓
}
}
}
@if (activeTab() === 'underwriters') {
@if (underwriters$ | async; as underwriters) {
Underwriters ({{ underwriters.length }})
| Name |
Description |
Website |
Order |
Active |
Actions |
@for (uw of underwriters; track uw.id) {
| {{ uw.name }} |
{{ uw.description }} |
@if (uw.website_url) {
{{ uw.website_url }}
} @else {
—
}
|
{{ uw.display_order }} |
{{ uw.active ? 'Yes' : 'No' }} |
|
} @empty {
| No underwriters yet. Click "Add Underwriter" to create one. |
}
}
}
@if (activeTab() === 'mobile-builds') {
Mobile Build Orchestration
Derived Defaults
@if (mobileBuildDefaults; as defaults) {
Tenant: {{ defaults.tenant_key }}
App Name: {{ defaults.app_name }}
Support Email: {{ defaults.support_email }}
Website: {{ defaults.website }}
Stream URL: {{ defaults.stream_url || '(not set)' }}
} @else {
Defaults unavailable. Check station config.
}
Theme Export
@if (themeJsonStatus$ | async; as status) {
@if (status.exists) {
theme.json — ready
Path: {{ status.path }}
Generated: {{ status.generated_at }}
Size: {{ status.size }} bytes
} @else {
theme.json not found at {{ status.path }}
Regenerate to create it from the current station config.
}
} @else {
@if (themeJsonLoading$ | async) {
Loading...
}
}
Build Requests
@if (mobileBuilds$ | async; as builds) {
| ID |
Platforms |
Version |
Status |
Preflight |
Actions |
@for (build of builds; track build.id) {
| #{{ build.id }} |
{{ build.platform_android ? 'Android' : '' }}
{{ build.platform_android && build.platform_ios ? ' + ' : '' }}
{{ build.platform_ios ? 'iOS' : '' }}
|
{{ build.version_name }} ({{ build.build_number }}) |
{{ build.status }} |
{{ build.preflight_passed ? 'Passed' : 'Pending/Failed' }} |
|
} @empty {
| No build requests yet. |
}
}
@if (selectedMobileBuild; as build) {
@if (mobileBuildPreflightIssues.length > 0) {
Preflight issues:
@for (issue of mobileBuildPreflightIssues; track issue) {
- {{ issue }}
}
}
@if (build.error_message) {
Error: {{ build.error_message }}
}
Artifacts
@for (artifact of build.artifacts; track artifact.id) {
{{ artifact.file_name }}
{{ artifact.platform }} • {{ artifact.artifact_type }} • {{
artifact.sha256.slice(0, 12) }}…
Download
} @empty {
No artifacts available yet.
}
Build Log
{{ build.build_log || 'No logs yet.' }}
}
}
@if (activeTab() === 'stats') {
}
@if (showShowForm) {