diff --git a/win_text_editor/assets/config/uft_macro_list.yaml b/win_text_editor/assets/config/uft_macro_list.yaml index 9fa7708..9417e24 100644 --- a/win_text_editor/assets/config/uft_macro_list.yaml +++ b/win_text_editor/assets/config/uft_macro_list.yaml @@ -5,15 +5,16 @@ templates: body: | ][ {{#keyFields}} - {{value}} = @{{value}} {{^isLast}}, {{/isLast}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} {{/keyFields}} ] - footer: | [继续执行] [记录为空][{{tableName}}] { - [报错返回][ERR_???][{{#keyFields}}{{value}} = @{{value}}{{^isLast}}, {{/isLast}}{{/keyFields}}] - } + [报错返回][ERR_???][{{#keyFields}}{{name}} = @{{name}}{{^isLast}}, {{/isLast}}{{/keyFields}}] + }else{ + footer: "}" + 获取记录数: header: "[获取记录数][{{tableName}}][@count]" @@ -25,23 +26,87 @@ templates: body: | ][ {{#fields}} - {{value}} = @{{value}} {{^isLast}}, {{/isLast}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} {{/fields}} ] footer: | [索引冲突] { - [继续执行] - - [获取记录][{{tableName}}({{keyName}})][ - {{#keyFields}} - {{value}} = @{{value}} - {{/keyFields}} - ] - - [修改记录][{{tableName}}][ - {{#fields}} - {{value}} = @{{value}} - {{/fields}} - ] - } \ No newline at end of file + [继续执行] + + [获取记录][{{tableName}}({{keyName}})][ + {{#keyFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + + [修改记录][{{tableName}}][ + {{#fields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/fields}} + ] + + [修改索引字段][{{tableName}}][ + {{#keyFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + } + + 修改记录: + header: "[获取记录][{{tableName}}({{keyName}})" + body: | + ][ + {{#keyFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + footer: | + [继续执行] + [记录不为空][{{tableName}}] + { + [修改记录][{{tableName}}][ + {{#selectedFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/selectedFields}} + ] + + [修改索引字段][{{tableName}}][ + {{#keyFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + } + + 删除记录: + header: "[获取记录][{{tableName}}({{keyName}})" + body: | + ][ + {{#keyFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + footer: | + [继续执行] + [记录不为空][{{tableName}}] + { + [删除记录][{{tableName}}] + } + + 遍历记录: + header: "[遍历记录开始][{{tableName}}({{selectIndexOrKey.name}})" + body: | + ][ + {{#selectIndexOrKey.fields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/selectIndexOrKey.fields}} + ][ + {{#selectedFields}} + {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{/selectedFields}} + ] + footer: | + { + //balabala + } + [遍历记录结束] \ No newline at end of file diff --git a/win_text_editor/lib/modules/memory_table/controllers/memory_table_controller.dart b/win_text_editor/lib/modules/memory_table/controllers/memory_table_controller.dart index 20d21bf..3d466f6 100644 --- a/win_text_editor/lib/modules/memory_table/controllers/memory_table_controller.dart +++ b/win_text_editor/lib/modules/memory_table/controllers/memory_table_controller.dart @@ -49,11 +49,14 @@ class MemoryTableController extends BaseContentController { // 新增:获取当前MemoryTable MemoryTable get memoryTable => _memoryTable; - String? genCodeString(List macroList) { + void initTemplateService() { if (!templateService.inited) { templateService.init(); } + } + String? genCodeString(List macroList) { + initTemplateService(); return templateService.renderTemplate(macroList, _memoryTable.toMap()); } diff --git a/win_text_editor/lib/modules/memory_table/models/memory_table.dart b/win_text_editor/lib/modules/memory_table/models/memory_table.dart index a0a8d3d..df91bd5 100644 --- a/win_text_editor/lib/modules/memory_table/models/memory_table.dart +++ b/win_text_editor/lib/modules/memory_table/models/memory_table.dart @@ -59,7 +59,24 @@ class MemoryTable { return []; } + Index get selectIndexOrKey { + for (var index in indexes) { + if (index.isSelected) { + return index; + } + } + for (var index in indexes) { + if (index.isPrimary) { + return index; + } + } + return indexes[0]; + } + + List get selectFields => columns.where((field) => field.isSelected).toList(); + Map toMap() { + var index = selectIndexOrKey; return { 'tableName': tableName, 'fields': @@ -70,26 +87,35 @@ class MemoryTable { 'name': field.name, 'chineseName': field.chineseName, 'type': field.type, - 'isSelected': field.isSelected, + 'isLast': columns.indexOf(field) == columns.length - 1, }, ) .toList(), - 'indexes': - indexes + 'selectedFields': + selectFields .map( - (index) => { - 'indexName': index.indexName, - 'isPrimary': index.isPrimary, - 'indexFields': index.indexFields, - 'rule': index.rule, - 'isSelected': index.isSelected, + (field) => { + 'id': field.id, + 'name': field.name, + 'chineseName': field.chineseName, + 'type': field.type, + 'isLast': selectFields.indexOf(field) == selectFields.length - 1, }, ) .toList(), + 'selectIndexOrKey': { + 'name': index.indexName, + 'isPrimary': index.isPrimary, + 'fields': + index.fields.asMap().entries.map((entry) { + return {'name': entry.value, 'isLast': entry.key == keyFields.length - 1}; + }).toList(), + 'rule': index.rule, + }, 'keyName': keyName, 'keyFields': keyFields.asMap().entries.map((entry) { - return {'value': entry.value, 'isLast': entry.key == keyFields.length - 1}; + return {'name': entry.value, 'isLast': entry.key == keyFields.length - 1}; }).toList(), }; } diff --git a/win_text_editor/lib/modules/memory_table/widgets/memory_table_right_side.dart b/win_text_editor/lib/modules/memory_table/widgets/memory_table_right_side.dart index 60c8c96..e3fd01c 100644 --- a/win_text_editor/lib/modules/memory_table/widgets/memory_table_right_side.dart +++ b/win_text_editor/lib/modules/memory_table/widgets/memory_table_right_side.dart @@ -18,6 +18,7 @@ class _MemoryTableRightSideState extends State { @override void initState() { super.initState(); + widget.controller.initTemplateService(); widget.controller.addListener(_updateDisplay); }