Files
zyplayer-doc/zyplayer-doc-swagger/src/main/resources/webjars/open-doc/js/mg-ui-tree.js
2019-01-28 22:26:34 +08:00

144 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 以树形方式生成并展示:
* /api
* /data
* /getDateList
* post
* get
* @author 暮光:城中城
* @since 2018年5月26日
*/
/**
* 把原始的json字符串转换成对象列表的方式方便后续使用
* @param json swagger的原始对象
* @returns
*/
function createTreeViewByTree(json, keywords) {
var pathIndex = {};
var paths = json.paths;
var domain = json.domainUrl;// 服务器代理会返回此属性
var rewriteDomainUrl = json.rewriteDomainUrl;// 服务器代理会返回此属性
if(isEmpty(domain)) {
domain = "http://" + json.host + json.basePath;
}
if(domain.endWith("/")) {
domain = domain.substring(0, domain.length - 1);
}
if (isEmptyObject(paths)) {
return;
}
//console.log(paths);
Object.keys(paths).forEach(function(key){
//console.log(key, paths[key]);
if(!findInPathsValue(key, paths[key], keywords)) {
return;
}
var keyArr = key.split("/");
var nowPathObj = null;
keyArr.forEach(function(val, index) {
//console.log(val, index);
if(isEmpty(val) && index == 0) {
return;
}
var nowPath = "/" + val;
if(nowPathObj == null) {
nowPathObj = {};
nowPathObj[nowPath] = pathIndex[nowPath];
if(nowPathObj[nowPath] == null) {
nowPathObj[nowPath] = {};
pathIndex[nowPath] = nowPathObj[nowPath];
}
}
var tempPathObj = nowPathObj[nowPath];
if(isEmpty(tempPathObj)) {
tempPathObj = nowPathObj[nowPath] = {};
}
nowPathObj = tempPathObj;
if(index == keyArr.length - 1) {
//get, head, post, put, patch, delete, options, trace
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "get");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "head");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "post");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "put");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "patch");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "delete");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "options");
setRequestMethodForTree(rewriteDomainUrl, domain, paths[key], tempPathObj, key, "trace");
}
});
});
var htmlStr = '<li>';
htmlStr += '<a href="#">'+json.info.title+'</a>';
htmlStr += '<ul>';
htmlStr += getTreeHtmlForTree(pathIndex, projectTreeIdIndex);
htmlStr += '</ul>';
htmlStr += '</li>';
$('#apiPathTree .projects').append(htmlStr);
projectTreeIdIndex++;
}
/**
* 设置对象的各种请求方式,存在则复制
* @param source 资源原始json的paths的指定对象
* @param pathObj 当前的待赋值对象
* @param url url绝对路径
* @param method 请求方式post、get...
* @returns
*/
function setRequestMethodForTree(rewriteDomainUrl, domain, source, pathObj, url, method) {
if (isEmpty(source[method])) {
return;
}
var tempPath = projectTreeIdIndex + url + "." + method;
pathObj[method] = source[method];
pathObj[method].path = tempPath;
pathObj[method].url = url;
pathObj[method].method = method;
pathObj[method].domain = domain;
pathObj[method].rewriteDomainUrl = rewriteDomainUrl;
treePathDataMap.set(tempPath, source[method]);
}
/**
* 将对象列表递归的方式转换成文档格式html字符串
* @param pathData 处理后的对象列表
* @returns 生成的html字符串
*/
function getTreeHtmlForTree(pathData, treeIdStr) {
var tempStr = "";
var indexNow = 1;
Object.keys(pathData).forEach(function(key){
var tempNode = pathData[key];
var tempTreeId = treeIdStr + "_" + indexNow;
var nodeSub = getObjectFirstAttributeIfOnly(tempNode);
if(nodeSub != null && isNotEmpty(nodeSub.method)) {
//console.log(nodeSub);
nodeSub.treeId = tempTreeId;
var summary = isEmpty(nodeSub.summary) ? "" : "("+nodeSub.summary+")";
if(summary.length > 10){
summary = summary.substring(0, 10)+"...)";// 防止被撑得太长只显示10个字
}
tempStr += '<li m-id="'+tempTreeId+'"><a href="#" class="show-doc" path="'+nodeSub.path+'">'+key+'<span>'+summary+'</span></a></li>';
} else if(key.indexOf("/") < 0) {
//console.log(tempTreeId);
tempNode.treeId = tempTreeId;
var summary = isEmpty(tempNode.summary) ? "" : "("+tempNode.summary+")";
if(summary.length > 10){
summary = summary.substring(0, 10)+"...)";// 防止被撑得太长只显示10个字
}
tempStr += '<li m-id="'+tempTreeId+'"><a href="#" class="show-doc" path="'+tempNode.path+'">'+key+'<span>'+summary+'</span></a></li>';
} else {
tempStr += '<li>';
tempStr += '<a href="#">'+key+'</a>';
tempStr += '<ul>';
tempStr += getTreeHtmlForTree(tempNode, tempTreeId);
tempStr += '</ul>';
tempStr += '</li>';
}
indexNow++;
});
return tempStr;
}