From 5fc33ba19055103580acc62985e6d11129ff5ffc Mon Sep 17 00:00:00 2001 From: ielgnaw Date: Tue, 30 Jul 2024 19:18:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E3=80=81=E6=94=B9?= =?UTF-8?q?=E8=BF=9B=E7=BC=96=E8=BE=91=E5=99=A8=E8=A1=8C=E5=8F=B7=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E9=80=BB=E8=BE=91=20(#770)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 修复前端问题 # Reviewed, transaction id: 5102 * feat: 修复前端问题 # Reviewed, transaction id: 5117 * feat: 修复前端问题 # Reviewed, transaction id: 5195 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 5205 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 5206 * feat: 修复前端问题 # Reviewed, transaction id: 5227 * fix: 修复体验问题 * feat: 修复前端问题 # Reviewed, transaction id: 5345 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 5346 * feat: 修复前端问题 # Reviewed, transaction id: 5348 * fix: 体验问题修复 * feat: 修复前端问题 # Reviewed, transaction id: 5483 * fix: 修复体验问题 * feat: 修复前端问题 # Reviewed, transaction id: 5629 * feat: 前端版本日志 # Reviewed, transaction id: 5675 * feat: 【APIgateway1.13 】发布失败的日志点进去,时间超长 # Reviewed, transaction id: 5703 * fix: 修复体验问题 * feat: 修复前端问题 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 5928 * feat: 文案修改 # Reviewed, transaction id: 5951 * feat: 修复前端问题 # Reviewed, transaction id: 6015 * fix: 修复体验问题 * feat: 修复前端问题 # Reviewed, transaction id: 6094 * feat: 修复前端问题 # Reviewed, transaction id: 6095 * feat: 修复前端问题 # Reviewed, transaction id: 6197 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 6198 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 6198 , # Reviewed, transaction id: 6199 * fix: 修复体验问题 * fix: 体验问题修复 * feat: 修复前端问题 # Reviewed, transaction id: 6414 * fix: 修复体验问题 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 6617 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 6617 , # Reviewed, transaction id: 6619 * feat: 修复无法登出的问题 # Reviewed, transaction id: 6626 * fix: 体验问题修复 * feat: 修复前端问题 # Reviewed, transaction id: 6763 * fix: 体验问题修复 * fix: 修复体验问题 * fix: 体验问题修复 * feat: 修复前端问题 # Reviewed, transaction id: 7052 * fix: 修复体验问题 * fix: 修复体验问题 * fix: 修复体验问题 * feat: 【必须】点击编辑后,光标应该落在输入框内,需要支持回车 与 鼠标失焦都能保存 # Reviewed, transaction id: 7357 * fix: 修复体验问题 * fix: 修复体验问题 * fix: 修复体验问题 * feature: 小窗登录iframe方式改为window.open * fix: 修复体验问题 * feat: 修复前端问题 # Reviewed, transaction id: 7793 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 7802 * feat: 修复 新建资源页面,环境配置中的超时时间是 30 秒,但添加资源时变成了 0 秒,数据未同步 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 7804 * fix: 修复体验问题 * fix: 修复体验问题 * fix: 变量管理 编辑时才显示增加删除按钮 * feat: 国际化 * feat: 国际化 * feat: 国际化 * feat: 修复插件管理问题 * feat: 退出登录加上 is_from_logout 参数 * fix: 体验问题修复 * feat: 修复前端问题 * feat: eslint 问题 * fix: 体验问题修复 * fix: 修复体验问题 * fix: 体验问题修复 * feat: 修复基本信息编辑时,弹框中维护人员不显示的问题 * feat: 修复前端问题 * feat: 修复通知中心访问地址 # Reviewed, transaction id: 9800 * feat: 修复通知中心访问地址 # Reviewed, transaction id: 9823 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 9890 * feat: 修复编辑基础信息弹框中维护人员不回显的问题 # Reviewed, transaction id: 10102 * feat: 修复编辑基础信息弹框中维护人员不回显的问题 (#703) # Reviewed, transaction id: 10102 * feat: 修复编辑基础信息弹框中维护人员不回显的问题 # Reviewed, transaction id: 10119 * feat: 全局配置开发完成 * feat: 全局配置 # Reviewed, transaction id: 10271 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 10480 * feat: 日志优化前端功能开发&&“校验并查看地址”展示的路径不全时没有tooltips&&发布记录:导航样式不对&&通过环境概览页面发布资源后,页面下方资源信息未更新 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 10706 * feat: 1.14功能开发 # Reviewed, transaction id: 10707 * feat: 1.14功能开发 * feat: 修复基本信息编辑时,弹框中维护人员不显示的问题;获取全局配置 BK_APP_CODE 动态获取 # Reviewed, transaction id: 10785 * feat: 1.14版本开发 * feat: 优化全局配置相关逻辑;全局配置增加本地开发 mock 接口 # Reviewed, transaction id: 10838 * feat: 1.14版本开发 * feat: 1.14开发 * feat: 1.14功能开发 * feat: 1.14 开发 # Reviewed, transaction id: 11175 * feat: 1.14 开发 (#63) * feat: 1.14 开发 # Reviewed, transaction id: 11212 * feat: 修复编辑基础信息弹框中维护人员不回显的问题 # Reviewed, transaction id: 11297 * feat: 1.14 开发 (#64) * feat: 1.14 开发 * feat: 1.14 开发 * feat: 修复资源配置列表 标签列 filter 导致页面加载错误的问题 # Reviewed, transaction id: 11334 * feat: 修复资源配置列表 标签列 filter 导致页面加载错误的问题 # Reviewed, transaction id: 11425 * feat: 1.14 开发 (#65) * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 (#66) * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * Merge remote-tracking branch 'base/master' , # Reviewed, transaction id: 11681 * feat: 1.14 在线调试开发 (#67) * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 在线调试开发 * feat: 1.14 在线调试开发 # Reviewed, transaction id: 12647 * Ft resource import(新版资源导入) (#69) * feat: 资源配置页代码编辑器静态样式 * feat: 调整样式 * feat: 编辑器行号左侧 linting 提示静态样式 * feat: 编辑器跳转和高亮 * feat: 编辑器错误消息台开关逻辑及滚动条样式 * feat: 编辑器错误消息行号解析 * feat: 完成编辑器错误代码行高亮及跳转 * feat: 错误消息显示行号列号 * feat: 代码校验后可选择是否跳转 * feat: 代码校验失败禁止跳转,行号推导逻辑优化 * feat: 用正则重写行号解析逻辑 * feat: 搜索面板切换逻辑 * fix: 修复代码样式 * feat: 编辑器页新样式 * feat: “导入资源配置”页基本样式 * feat: 表头批量修改 config 的 UI * chore: 整理代码 * feat: 批量修改认证和公开设置 * feat: 资源编辑逻辑 * fix: 修复 footer 样式 * feat: 资源名称路径快筛 * feat: 插件列 Tooltip 显示插件名称 * feat: 导入确认 Dialog * feat: 文本高亮 * feat: 接口文档 Slider * feat: 覆盖文档的 Switcher * chore: 整理代码 * feat: 编辑器语法校验button及校验通过消息 * feat: 编辑器语法校验button及校验通过消息 # Reviewed, transaction id: 13205 * feat: 语法校验按钮的loading/disabled状态 # Reviewed, transaction id: 13212 * feat: 把 json_path 展示到错误消息中 # Reviewed, transaction id: 13214 * fix: 修复行号解析逻辑 # Reviewed, transaction id: 13215 * fix: 修复router报错 # Reviewed, transaction id: 13224 * refactor: 优化并列的 await 调用 # Reviewed, transaction id: 13231 * feat: 编辑器错误消息跳转按钮 * feat: 编辑器全屏功能 * fix: 修复样式 * feat: 更新 i18n 翻译 * feat: 切换字号功能 * feat: 切换字号功能 # Reviewed, transaction id: 13338 * feat: 错误消息栏自动折叠 * refactor: 优化i18n插值调用 # Reviewed, transaction id: 13370 * feat: 新版资源导入 # Reviewed, transaction id: 13374 * feat: 1.14 在线调试 (#68) * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 开发 * feat: 1.14 在线调试开发 * feat: 1.14 在线调试 * feat: 1.14 在线调试 * feat: 1.14 在线调试功能开发 # Reviewed, transaction id: 13376 * Fix 编辑器高度错误 (#71) * feat: 资源配置页代码编辑器静态样式 * feat: 调整样式 * feat: 编辑器行号左侧 linting 提示静态样式 * feat: 编辑器跳转和高亮 * feat: 编辑器错误消息台开关逻辑及滚动条样式 * feat: 编辑器错误消息行号解析 * feat: 完成编辑器错误代码行高亮及跳转 * feat: 错误消息显示行号列号 * feat: 代码校验后可选择是否跳转 * feat: 代码校验失败禁止跳转,行号推导逻辑优化 * feat: 用正则重写行号解析逻辑 * feat: 搜索面板切换逻辑 * fix: 修复代码样式 * feat: 编辑器页新样式 * feat: “导入资源配置”页基本样式 * feat: 表头批量修改 config 的 UI * chore: 整理代码 * feat: 批量修改认证和公开设置 * feat: 资源编辑逻辑 * fix: 修复 footer 样式 * feat: 资源名称路径快筛 * feat: 插件列 Tooltip 显示插件名称 * feat: 导入确认 Dialog * feat: 文本高亮 * feat: 接口文档 Slider * feat: 覆盖文档的 Switcher * chore: 整理代码 * feat: 编辑器语法校验button及校验通过消息 * feat: 编辑器语法校验button及校验通过消息 # Reviewed, transaction id: 13205 * feat: 语法校验按钮的loading/disabled状态 # Reviewed, transaction id: 13212 * feat: 把 json_path 展示到错误消息中 # Reviewed, transaction id: 13214 * fix: 修复行号解析逻辑 # Reviewed, transaction id: 13215 * fix: 修复router报错 # Reviewed, transaction id: 13224 * refactor: 优化并列的 await 调用 # Reviewed, transaction id: 13231 * feat: 编辑器错误消息跳转按钮 * feat: 编辑器全屏功能 * fix: 修复样式 * feat: 更新 i18n 翻译 * feat: 切换字号功能 * feat: 切换字号功能 # Reviewed, transaction id: 13338 * feat: 错误消息栏自动折叠 * refactor: 优化i18n插值调用 # Reviewed, transaction id: 13370 * fix: 修复编辑器 ResizeLayout 折叠后的高度错误问题 # Reviewed, transaction id: 13388 * Merge branch 'master' into ft_resource_import , # Reviewed, transaction id: 13397 * Merge Master , # Reviewed, transaction id: 13401 * fix: 修复编辑器错误消息不能折叠/展开的问题 # Reviewed, transaction id: 13437 * Ft 修复、改进编辑器行号解析逻辑 (#72) * feat: 资源配置页代码编辑器静态样式 * feat: 调整样式 * feat: 编辑器行号左侧 linting 提示静态样式 * feat: 编辑器跳转和高亮 * feat: 编辑器错误消息台开关逻辑及滚动条样式 * feat: 编辑器错误消息行号解析 * feat: 完成编辑器错误代码行高亮及跳转 * feat: 错误消息显示行号列号 * feat: 代码校验后可选择是否跳转 * feat: 代码校验失败禁止跳转,行号推导逻辑优化 * feat: 用正则重写行号解析逻辑 * feat: 搜索面板切换逻辑 * fix: 修复代码样式 * feat: 编辑器页新样式 * feat: “导入资源配置”页基本样式 * feat: 表头批量修改 config 的 UI * chore: 整理代码 * feat: 批量修改认证和公开设置 * feat: 资源编辑逻辑 * fix: 修复 footer 样式 * feat: 资源名称路径快筛 * feat: 插件列 Tooltip 显示插件名称 * feat: 导入确认 Dialog * feat: 文本高亮 * feat: 接口文档 Slider * feat: 覆盖文档的 Switcher * chore: 整理代码 * feat: 编辑器语法校验button及校验通过消息 * feat: 编辑器语法校验button及校验通过消息 # Reviewed, transaction id: 13205 * feat: 语法校验按钮的loading/disabled状态 # Reviewed, transaction id: 13212 * feat: 把 json_path 展示到错误消息中 # Reviewed, transaction id: 13214 * fix: 修复行号解析逻辑 # Reviewed, transaction id: 13215 * fix: 修复router报错 # Reviewed, transaction id: 13224 * refactor: 优化并列的 await 调用 # Reviewed, transaction id: 13231 * feat: 编辑器错误消息跳转按钮 * feat: 编辑器全屏功能 * fix: 修复样式 * feat: 更新 i18n 翻译 * feat: 切换字号功能 * feat: 切换字号功能 # Reviewed, transaction id: 13338 * feat: 错误消息栏自动折叠 * refactor: 优化i18n插值调用 # Reviewed, transaction id: 13370 * fix: 修复编辑器 ResizeLayout 折叠后的高度错误问题 # Reviewed, transaction id: 13388 * Merge branch 'master' into ft_resource_import , # Reviewed, transaction id: 13397 * Merge Master , # Reviewed, transaction id: 13401 * fix: 修复编辑器错误消息不能折叠/展开的问题 # Reviewed, transaction id: 13437 * fix: 修复对数组成员的行号解析错误问题 * fix: 修复对数组成员的行号解析错误问题 # Reviewed, transaction id: 13466 * feat: 优化编辑器行号解析逻辑 * Merge branch 'master' into ft_resource_import , # Reviewed, transaction id: 13507 * chore: 整理代码 # Reviewed, transaction id: 13509 * fix: 修复整数判断 # Reviewed, transaction id: 13517 --------- Co-authored-by: lhzzforever Co-authored-by: shuzhenyang Co-authored-by: 逍遥尊者 <46641918+lhzzforever@users.noreply.github.com> Co-authored-by: wklken Co-authored-by: shuzhenyang <148324706+shuzhenyang@users.noreply.github.com> Co-authored-by: KDZhu --- .../src/views/resource/setting/import.vue | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/dashboard-front/src/views/resource/setting/import.vue b/src/dashboard-front/src/views/resource/setting/import.vue index 3ea03a946..18bad9058 100644 --- a/src/dashboard-front/src/views/resource/setting/import.vue +++ b/src/dashboard-front/src/views/resource/setting/import.vue @@ -1056,12 +1056,11 @@ const handleCheckData = async ({ changeView }: { changeView: boolean }) => { // 匹配项在 editor 中的 Position let position: IPosition | null = null; // 生成用于搜索 jsonpath 所在行的正则 - // 判断 jsonpath 指向的是否为数组成员,是的话不传入 key - if (Number.isInteger(Number.parseInt(lastPath, 10))) { - regex = getRegexFromObj({ objValue: pathValue }); - } else { - regex = getRegexFromObj({ objKey: lastPath, objValue: pathValue }); - } + // 判断 jsonpath 指向的是否为数组成员,是的话传入倒数第二个 path + const isInteger = Number.isInteger(Number(lastPath)) && lastPath.trim() !== ''; + const objKey = isInteger ? paths[paths.length - 2] : lastPath; + regex = getRegexFromObj({ objKey, objValue: pathValue }); + offset = resourceEditorRef.value.getValue() .search(regex); // 用 editor 的 api 找到 Position @@ -1222,23 +1221,31 @@ const handleErrorShiftClick = (action: 'prev' | 'next') => { }; // 从把 jsonpath 指向的对象转换成正则 -const getRegexFromObj = ({ objKey, objValue }: { objKey?: string, objValue: any }): RegExp => { - let exp = ''; - if (objKey) { - exp = `\\b${objKey}\\b:[\\s\\S\\n\\r]*?`; - } - if (_.isObject(objValue)) { - Object.entries(objValue) - .forEach((e) => { - exp += `\\b${e[0]}\\b[\\s\\S\\n\\r]*?`; - if (!_.isObject(e[1])) { - exp += `${e[1]}[\\s\\S\\n\\r]*?`; +const getRegexFromObj = ({ objKey, objValue }: { objKey: string, objValue: any }): RegExp => { + const exp = `\\b${objKey}\\b:${getRegexString(objValue)}`; + return new RegExp(exp, 'gm'); +}; + +// 递归地把变量转换成可以生成正则表达式的字符串 +const getRegexString = (value: any): string => { + let expStr = `[-"\\s\\n\\r]*?`; + + if (_.isObject(value)) { + Object.entries(value) + .forEach(([key, val]) => { + expStr += `\\b${key}\\b:`; + if (_.isObject(val)) { + expStr += getRegexString(val); + } else { + expStr += `["\\s\\n\\r]*?${val}["\\s\\n\\r]*?`; } }); } else { - exp += `\\b${objValue}[\\s\\S\\n\\r]*?` + expStr += `${value || ''}["\\s\\n\\r]*?` } - return new RegExp(exp, 'gm'); + + // 把 $ 开头的变量转义,并与\b交换位置,否则无法正确匹配,如:\b$var => \$\bvar + return expStr.replaceAll('\\b$', '\\$\\b'); }; // 获取字符串中第一个被 '' 包裹的值