144 lines
5.2 KiB
HTML
144 lines
5.2 KiB
HTML
{{define "asset_tabs"}}
|
|
<div class="card-tabs asset-tab-wrap">
|
|
<ul class="nav nav-tabs asset-tabs" role="tablist" aria-label="配置管理页面">
|
|
<li class="nav-item" role="presentation">
|
|
<a href="/ui/assets" class="nav-link{{if eq .AssetTab "overview"}} active{{end}}" role="tab" {{if eq .AssetTab "overview"}}aria-selected="true"{{else}}aria-selected="false"{{end}}>总览</a>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<a href="/ui/assets/templates" class="nav-link{{if eq .AssetTab "templates"}} active{{end}}" role="tab" {{if eq .AssetTab "templates"}}aria-selected="true"{{else}}aria-selected="false"{{end}}>模板</a>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<a href="/ui/assets/profiles" class="nav-link{{if eq .AssetTab "profiles"}} active{{end}}" role="tab" {{if eq .AssetTab "profiles"}}aria-selected="true"{{else}}aria-selected="false"{{end}}>业务配置</a>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<a href="/ui/assets/overlays" class="nav-link{{if eq .AssetTab "overlays"}} active{{end}}" role="tab" {{if eq .AssetTab "overlays"}}aria-selected="true"{{else}}aria-selected="false"{{end}}>叠加项</a>
|
|
</li>
|
|
</ul>
|
|
<div class="tab-content">
|
|
<div class="card tab-pane active show asset-tab-card">
|
|
<div class="card-body asset-panel-body">
|
|
{{end}}
|
|
|
|
{{define "asset_tabs_end"}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{define "assets"}}
|
|
{{template "asset_tabs" .}}
|
|
|
|
<div class="stats">
|
|
<div class="stat accent-teal">
|
|
<div class="k metric-label">{{icon "template"}}<span>模板</span></div>
|
|
<div class="v">{{len .AssetTemplates}}</div>
|
|
<div class="hint">{{if .ConfigSources.Root}}{{.ConfigSources.Root}}{{else}}未定位到配置仓库{{end}}</div>
|
|
</div>
|
|
<div class="stat accent-green">
|
|
<div class="k metric-label">{{icon "profile"}}<span>业务配置</span></div>
|
|
<div class="v">{{len .AssetProfiles}}</div>
|
|
<div class="hint">业务场景与通道参数</div>
|
|
</div>
|
|
<div class="stat accent-slate">
|
|
<div class="k metric-label">{{icon "overlay"}}<span>叠加项</span></div>
|
|
<div class="v">{{len .AssetOverlays}}</div>
|
|
<div class="hint">调试与敏感度变化</div>
|
|
</div>
|
|
<div class="stat accent-amber">
|
|
<div class="k metric-label">{{icon "release"}}<span>视频通道</span></div>
|
|
<div class="v">{{.AssetInstanceCount}}</div>
|
|
<div class="hint">业务配置中定义的通道数</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2 class="title-with-icon">{{icon "assets"}}<span>资产操作</span></h2>
|
|
</div>
|
|
<form method="post" action="/ui/assets/import">
|
|
<button type="submit" class="btn secondary">{{icon "apply"}}<span>导入现有 JSON</span></button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="quad-grid">
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2 class="title-with-icon">{{icon "template"}}<span>模板</span></h2>
|
|
</div>
|
|
</div>
|
|
<div class="asset-list">
|
|
{{range .AssetTemplates}}
|
|
<a class="asset-row asset-link" href="/ui/assets/templates/{{.Name}}">
|
|
<span class="mono">{{.Name}}</span>
|
|
<span class="muted small">{{.NodeCount}}节点 / {{.EdgeCount}}连线</span>
|
|
</a>
|
|
{{else}}
|
|
<div class="empty-state compact">
|
|
<div class="empty-title">还没有模板</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2 class="title-with-icon">{{icon "profile"}}<span>业务配置</span></h2>
|
|
</div>
|
|
</div>
|
|
<div class="asset-list">
|
|
{{range .AssetProfiles}}
|
|
<a class="asset-row asset-link" href="/ui/assets/profiles/{{.Name}}">
|
|
<span>{{.Name}}</span>
|
|
<span class="muted small">{{len .Instances}} 路通道</span>
|
|
</a>
|
|
{{else}}
|
|
<div class="empty-state compact">
|
|
<div class="empty-title">还没有业务配置</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2 class="title-with-icon">{{icon "overlay"}}<span>叠加项</span></h2>
|
|
</div>
|
|
</div>
|
|
<div class="asset-list">
|
|
{{range .AssetOverlays}}
|
|
<a class="asset-row asset-link" href="/ui/assets/overlays/{{.Name}}">
|
|
<span>{{.Name}}</span>
|
|
<span class="muted small">{{.OverrideTargetNum}} 个目标</span>
|
|
</a>
|
|
{{else}}
|
|
<div class="empty-state compact">
|
|
<div class="empty-title">还没有叠加项</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2 class="title-with-icon">{{icon "config"}}<span>资产说明</span></h2>
|
|
</div>
|
|
</div>
|
|
<div class="info-list compact-list">
|
|
<div><span>模板</span><strong>定义处理链与共享服务接入</strong></div>
|
|
<div><span>业务配置</span><strong>定义站点、视频源、输出流与通道参数</strong></div>
|
|
<div><span>叠加项</span><strong>定义调试、敏感度和运行模式差异</strong></div>
|
|
<div><span>原则</span><strong>不回到手工维护多份完整 JSON</strong></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{if .Error}}<div class="error">{{.Error}}</div>{{end}}
|
|
{{template "asset_tabs_end" .}}
|
|
{{end}}
|