生成内容包括:模型图、字典、示例列表、表单、JSON、列表查询接口、增删改查接口等。可直接在表属性页生成预览,也可以选择多个表导出md文件(不选默认全部):
生成脚本采用了较慢的js脚本。以往我都会默认写自己更熟悉的pas脚本,性能好资源少速度快,不过考虑到趋势,以后还是尽量用js了,方便大家参考和自定义修改。
生成Markdown的核心脚本位于Templates\MarkdownLib.js_,摘几段:
function getDemoJson(tb,row,opt){
//获取json对象(注意不是字符串)
var res={};
if(!tb)
return null;
//输出字段
if(!row)
row=tb.id;
var dispLv='sheet';
var incId=1;
if(opt){
if(opt.indexOf("[GRID]")>=0)
dispLv='grid';
if(opt.indexOf("[NEW]")>=0)
incId=0;
}
for(var k=0; k<tb.metaFields.count; k++)
{
var fd = tb.metaFields.getItem(k);
if(!fd.canDisplay(dispLv)){
if(fd.keyFieldType !='cfktId')
continue;
if(incId==0)
continue;
}
//字段名
var t=fd.name;
//字段值
var v=fd.genDemoData(row, opt, null);
res[t]=v;
}
return res;
}
function genApi_ListQuery(tb){
//列表查询接口
if(!tb)
return;
cout(listHeaderStrC+" 接口说明");
cout("");
cout(" 查询符合条件的记录,返回结果列表;不指定条件,则返回用户具体查看权限的所有记录;结果列表默认会进行分页处理。");
cout("");
cout(listHeaderStrC+" 请求地址");
cout("");
cout(" GET "+apiReqPath+ChnToPY(tb.name)+"/list?params");
cout("");
cout(listHeaderStrC+" 请求参数");
cout("");
//定义表头
var mL=getMaxFieldNameLen(tb,'[CHNPY]'); //获取字段名最大长度
var colWidths=[mL,mL,12,10,12,20,50];
var colTitles=['参数名','参数说明','类型','是否必填','默认值','示例值','备注'];
//输出表头
var s="|";
for(var idx in colTitles){
var t=colTitles[idx];
t=extstr(t,colWidths[idx]);
s+=" "+t+" |";
}
cout(s);
var s="|";
for(var idx in colTitles){
var t="---";
t=extstr(t,colWidths[idx],"-");
s+=" "+t+" |";
}
cout(s);
//输出通用参数
//['参数名','参数说明','类型','是否必填','默认值','示例值','备注'];
var commpars=[
["ids","ID串","String","","","123,23,4,5","逗号分隔,此参数有值时只返回指定ID的记录"],
["pageSize","分页大小","Integer","","20","50","如果传all则不分页返回全部数据"],
["pageNo","页码","Integer","","1","5","分页情况下,指定要返回的页码,不传则默认返回第1页"],
["searchKey","搜索关键词","String","","","abc 123","对所有可搜索字段进行模糊匹配,空格分隔多个关键词"],
["sortColumns","排序字段","String","","","name asc,id desc","指定排序字段和排序方式,逗号分隔多个字段"],
];
for(var ic in commpars){
var cpar=commpars[ic];
var s="|";
for(var idx in cpar){
var t=cpar[idx];
t=extstr(t,colWidths[idx]);
s+=" "+t+" |";
}
cout(s);
}
//....
}
function genMd(tb){
//主函数:输出表
if(!tb)
return;
//输出标题
cout(listHeaderStrA+" "+tb.UIDisplayName);
cout("");
//输出模型图
genGraph(tb);
//输出字典
cout(getNextSecListHeader()+" 字典");
cout("");
genDict(tb);
//输出示例列表
cout(getNextSecListHeader()+" 列表");
cout("");
genDemoList(tb);
//...
//输出删除接口
cout(getNextSecListHeader()+" 删除记录接口");
cout("");
genApi_ItemDelete(tb);
//输出测试用例
cout(getNextSecListHeader()+" THE END");
}
预览功能采用marked,需要从CDN(jsdelivr.net)加载。预览的原理是将生成结果替换掉MarkdownPreview.html里的内容再用浏览器打开,大家也可以自己修改这个预览文件。
另外考虑到生成页标签太多太杂,其实常用只有那几个,因此新版支持右键菜单自定义要显示哪些标签:
要显示哪些就打勾,一个都不勾则默认全部。
2021年12月25日 V3.22
生成Markdown格式文档,表“生成”页标签自定义。Bugs修复.
官网下载:http://www.ezdml.com
百度网盘:(参见官网链接)/s/1HI3EQ4n-Lb5Y2s1poNTujA
提取码: 8wj2