EZDML新版支持生成导出Markdown格式文本文档

生成内容包括:模型图、字典、示例列表、表单、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值