web UI:手动合并的视频文件也能点选,一次可选多个

之前只有弹幕框挂了「浏览…」,视频框只能手填,或者用那个原生多选下拉
(要按 Ctrl、点一下就把手填的内容整段覆盖、手机上根本没法用)。原因是
视频框是「一行一个、可能多个」的形态,而浏览弹窗当时只支持单选。

改成同一个弹窗支持多选:

- 「浏览…」多带一个多选开关,视频框用它打开;列表里点文件名即勾选、
  再点取消,条目左边有勾选框,底部显示「已选 N 项」并能一键清空。
  勾选状态由页面保管、换目录不清,所以可以进别的文件夹继续勾、跨盘攒。
- 选用是**追加**到框里:手填的行和之前选好的行都留着,重复的不加第二遍。
  双击某个文件=把这一个一起追加进去并关窗(和单选的「双击即选用」一致)。
- 填入时录播目录下的文件只写文件名(跟着保存目录走),别处的写绝对路径;
  单选的弹幕框也按同一规则,顺手让框里干净些。
- 多选框取第一行当起点,不再把整段多行文本当路径去解析。

顺带修一个连带问题:手动合并的视频/弹幕框不进配置,refresh 也不会回填它们,
之前选完却会打上「未保存」标记 —— 顶栏那句「有未保存的修改」永远亮着,
点保存也清不掉。现在只对设置表单里的框打标记。

verify_pick.py 扩到 48 项断言(勾选/取消/跨目录累积/清空/追加不覆盖/填文件名
还是绝对路径/手机端点选/配置全程没动)全部通过;verify_settings.py 与
verify_streamer_br.py 重跑无回归;go test ./...、gofmt、go vet 干净。
This commit is contained in:
tamakyi
2026-09-25 16:43:21 +08:00
parent 7a396a8852
commit eb250bb842
3 changed files with 107 additions and 21 deletions
+2
View File
@@ -160,6 +160,8 @@ web UI 默认通过`http://localhost:51880`访问(端口对应`webPort`),
目录和文件两条路都行:直接在框里填,或者点框右边的`浏览`逐级点选。弹窗里可以一路点进子文件夹、点`C:`/`D:`这类按钮(Linux 上是`/`、`/home`、`/mnt` 这些常用位置)换根位置,地址栏本身也能粘贴路径回车跳转,随时在点选和手填之间切换;选好点`选用这个文件夹`填回设置框,仍然是按回车或点保存才生效。填的是文件时(比如 ffmpeg 路径)列出的是文件,双击即选中并填入。默认不显示以点开头的隐藏项,需要时勾上`显示隐藏项`。
要选的是一组文件时(`手动合并`里的视频框,一行一个)用的是同一套弹窗,区别只是能多选:点一下文件名即勾选、再点一下取消(手机上也一样点,不用按 Ctrl),可以换到别的文件夹继续勾,底部显示`已选 N 项`、点`清空`能重来,双击某个文件则是「把这一个一起追加进去并关窗」。选完点`选用这 N 个文件`是**追加**到框里,手填的内容和其他已经选好的行都不会被清掉,重复的不会加两遍。填入时**录播目录下的文件只写文件名**(跟着保存目录走,以后改了保存目录也还认得),别的文件夹里的文件写绝对路径。这个视频框和旁边的弹幕框都只服务于一次手动合并,不属于设置项,所以选完不会有`有未保存的修改`提示,也不用去点`保存设置`,直接点`开始合并`即可。
页面每 3 秒从服务端取一次状态回填表单,但**不会覆盖你改过还没提交的字段**,所以填好的数字不会过几秒又被刷回旧值;有没提交的内容时顶栏会显示`有未保存的修改`(保存按钮右上角也有个红点),此时离开或刷新页面浏览器会再问一次。保存失败(比如成片目录填了个不存在的路径)时提示里会带上原因,并且**输入框里填的内容会保留**,改对了再存即可;开关和下拉框的立即保存不会带上前述还没提交的文本框内容,所以某个框填错也不会连累开关保存失败。
顶栏右上角一直显示当前状态(`录制中 N` / `直播中 N` / `空闲`)。窄屏上按钮收起成短文案、标题居中,手机上也能正常用;页面跟随系统的深浅色设置,深色模式下日志和表单自动变深色,不用额外配置。