fix(editor): 数据源字符串模板提示出错

fix #530
This commit is contained in:
roymondchen 2023-08-14 14:34:15 +08:00
parent babaadb0cf
commit 07a02714df

View File

@ -89,11 +89,13 @@ const dataSources = computed(() => dataSourceService?.get('dataSources') || []);
const setDisplayState = () => { const setDisplayState = () => {
displayState.value = []; displayState.value = [];
// es6
const matches = state.value.matchAll(/\$\{([\s\S]+?)\}/g); const matches = state.value.matchAll(/\$\{([\s\S]+?)\}/g);
let index = 0; let index = 0;
for (const match of matches) { for (const match of matches) {
if (typeof match.index === 'undefined') break; if (typeof match.index === 'undefined') break;
//
displayState.value.push({ displayState.value.push({
type: 'text', type: 'text',
value: state.value.substring(index, match.index), value: state.value.substring(index, match.index),
@ -103,6 +105,7 @@ const setDisplayState = () => {
let ds: DataSourceSchema | undefined; let ds: DataSourceSchema | undefined;
let fields: DataSchema[] | undefined; let fields: DataSchema[] | undefined;
//
match[1].split('.').forEach((item, index) => { match[1].split('.').forEach((item, index) => {
if (index === 0) { if (index === 0) {
ds = dataSources.value.find((ds) => ds.id === item); ds = dataSources.value.find((ds) => ds.id === item);
@ -243,17 +246,21 @@ const fieldQuerySearch = (
let result: DataSchema[] = []; let result: DataSchema[] = [];
const dsKey = queryString.substring(leftAngleIndex + 1, dotIndex); const dsKey = queryString.substring(leftAngleIndex + 1, dotIndex);
// xx.xx.xx // xx.xx.xx
const keys = dsKey.split('.'); const keys = dsKey.split('.');
// id // id
const ds = dataSources.value.find((ds) => ds.id === keys.shift()); const dsId = keys.shift();
const ds = dataSources.value.find((ds) => ds.id === dsId);
if (!ds) { if (!ds) {
cb([]);
return; return;
} }
let fields = ds.fields || []; let fields = ds.fields || [];
// //
let key = keys.shift(); let key = keys.shift();
while (key) { while (key) {
for (const field of fields) { for (const field of fields) {