98 lines
3.8 KiB
HTML
98 lines
3.8 KiB
HTML
{{define "config_preview"}}
|
|
{{template "device_nav" .}}
|
|
<div class="card">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2>配置预览</h2>
|
|
<div class="muted small">基于模板、Profile 和 Overlay 生成完整配置预览;此页面不会下发到设备。</div>
|
|
</div>
|
|
<a class="btn ghost" href="/ui/devices/{{.Device.DeviceID}}">返回节点详情</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>生成配置预览</h2>
|
|
{{if .ConfigSources.Root}}<div class="muted small">Media 仓库:<span class="mono">{{.ConfigSources.Root}}</span></div>{{end}}
|
|
<form method="post" action="/ui/devices/{{.Device.DeviceID}}/config-preview" style="margin-top:12px">
|
|
<div class="row">
|
|
<div>
|
|
<div class="muted small">模板</div>
|
|
<select name="template">
|
|
{{range .ConfigSources.Templates}}
|
|
<option value="{{.Name}}" {{if eq .Name "workshop_face_shoe_alarm"}}selected{{end}}>{{.Name}}</option>
|
|
{{end}}
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<div class="muted small">Profile</div>
|
|
<select name="profile">
|
|
{{range .ConfigSources.Profiles}}
|
|
<option value="{{.Name}}" {{if eq .Name "local_3588_test"}}selected{{end}}>{{.Name}}</option>
|
|
{{end}}
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<div class="muted small">config_id</div>
|
|
<input name="config_id" value="preview_{{.Device.DeviceID}}" />
|
|
</div>
|
|
<div>
|
|
<div class="muted small">config_version</div>
|
|
<input name="config_version" placeholder="留空自动生成" />
|
|
</div>
|
|
</div>
|
|
<div style="margin-top:12px">
|
|
<div class="muted small">Overlay</div>
|
|
<div class="actions" style="margin-top:6px">
|
|
{{range .ConfigSources.Overlays}}
|
|
<label class="btn ghost">
|
|
<input type="checkbox" name="overlay" value="{{.Name}}" {{if eq .Name "face_debug"}}checked{{end}} />
|
|
{{.Name}}
|
|
</label>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
<div class="actions" style="margin-top:12px">
|
|
<button type="submit">生成预览</button>
|
|
<button type="button" disabled>上传为候选配置</button>
|
|
<button type="button" disabled>应用候选配置</button>
|
|
<a class="btn ghost" href="/ui/devices/{{.Device.DeviceID}}">查看当前运行配置</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
{{if .ConfigPreview}}
|
|
<div class="card">
|
|
<h2>预览摘要</h2>
|
|
<div class="row" style="margin-top:10px">
|
|
<div><div class="muted small">配置 ID</div><div class="mono">{{index .ConfigPreview.Metadata "config_id"}}</div></div>
|
|
<div><div class="muted small">版本</div><div class="mono">{{index .ConfigPreview.Metadata "config_version"}}</div></div>
|
|
<div><div class="muted small">模板</div><div class="mono">{{index .ConfigPreview.Metadata "template"}}</div></div>
|
|
<div><div class="muted small">Profile</div><div class="mono">{{index .ConfigPreview.Metadata "profile"}}</div></div>
|
|
<div><div class="muted small">大小</div><div class="mono">{{.ConfigPreview.Size}} bytes</div></div>
|
|
</div>
|
|
<div style="margin-top:10px">
|
|
<div class="muted small">SHA256</div>
|
|
<div class="mono small">{{.ConfigPreview.Sha256}}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>完整 JSON</h2>
|
|
<form method="post" action="/ui/devices/{{.Device.DeviceID}}/config-candidate" class="actions" style="margin-bottom:10px">
|
|
<input type="hidden" name="json" value="{{.ConfigPreview.JSON}}" />
|
|
<button type="submit">上传为候选配置</button>
|
|
<button type="submit" formaction="/ui/devices/{{.Device.DeviceID}}/config-candidate/apply">应用候选配置</button>
|
|
<a class="btn ghost" href="/ui/devices/{{.Device.DeviceID}}">查看当前运行配置</a>
|
|
</form>
|
|
<pre>{{.ConfigPreview.JSON}}</pre>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .RawText}}
|
|
<div class="card">
|
|
<h2>上传结果</h2>
|
|
<pre>{{.RawText}}</pre>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|