Repository navigation
修复配置页错误码输入与详细日志复制按钮 - #443
Merged
Merged
Conversation
原实现把错误码输入框设计为受控组件,value 直接由解析后的数组派生,且 onChange 在每次按键即时解析并回写数组:分隔符(逗号/空格)被立即切分丢弃,小于 100 的 中间输入(如 4、40)因不满足范围被过滤成空,导致无法录入多个错误码,也无法输入 过程中的中间数字,表现为输入框无法填写内容。 新实现新增独立输入组件:编辑态保留原始文本,按键时把已解析的数组回写配置(保证 点击保存时取到最新值),失焦时再归一化显示,仅保留 100-599 的合法状态码。 前端无测试约定,故不引入测试文件。Docker 直接 COPY 仓库内的 dist,已重新构建并提交。
复制 JSON 原仅调用 navigator.clipboard.writeText,该 API 仅在安全上下文 (https / localhost)可用;通过 http + 局域网 IP 访问面板时 navigator.clipboard 为 undefined,复制失败,且失败提示走全局 Modal(z-50)被详细日志弹窗(z-60)遮挡, 表现为点击无响应。 现增加非安全上下文兜底:navigator.clipboard 不可用时退回临时 textarea + execCommand; 反馈改为弹窗内就地显示(按钮旁已复制/复制失败),不再依赖被遮挡的全局 Modal。
复制成功/失败提示原为按钮右侧,出现时会把关闭按钮向右推挤、改变布局。 现移至「复制 JSON」按钮左侧,关闭按钮位置固定,按钮布局不被破坏。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题
csv_numbers类型) 输入框无法录入内容:原实现为受控组件,value 直接由解析后的数组派生,onChange 在每次按键即时解析并回写数组,分隔符被即时切分丢弃、
小于 100 的中间输入被即时过滤为空,导致无法录入多个错误码,也无法输入过程中的中间数字。
navigator.clipboard.writeText,该 API 仅在安全上下文(https / localhost)可用;通过 http + 局域网 IP 访问面板时
navigator.clipboard为 undefined,复制失败;且成功/失败提示走全局 Modal(z-50),被详细日志弹窗(z-60)遮挡,界面表现为点击无反应。
修复
CsvNumbersField。编辑态保留原始文本,按键时把已解析的数组回写配置(保证点击保存时取到最新值),失焦时再归一化显示;解析仅保留 100-599 的合法状态码、去重升序。
组件置于文件顶部、主组件之前,与页面既有辅助函数约定一致。
navigator.clipboard不可用时退回临时 textarea + execCommand;反馈改为弹窗内就地显示(按钮左侧的「已复制 / 复制失败」),不再依赖被遮挡的全局 Modal。
行为范围
navigator.clipboard;非安全上下文走 execCommand 兜底;反馈在弹窗内就地显示,关闭按钮位置固定。
测试
本地验证(未随仓库提交,位于
_localtests/):test_csv_numbers.mjs:覆盖 CsvNumbersField 解析契约(单码/多码/去重/非法 token/越界/空白换行分隔/空输入/边界 100 与 599/负数小数),以及上游原受控输入实现对比(无法录入多码、单码亦损坏)。
test_copy_json.mjs:覆盖分支实现的复制策略(安全上下文走 clipboard、非安全走 execCommand 兜底、成功/失败映射),以及上游原实现(无兜底、非安全上下文直接失败)对照。