139 lines
3.3 KiB
JavaScript
139 lines
3.3 KiB
JavaScript
/**
|
||
* 以树形方式生成并展示:
|
||
* /api
|
||
* /data
|
||
* /getDateList
|
||
* post
|
||
* get
|
||
* @author 暮光:城中城
|
||
* @since 2018年5月26日
|
||
*/
|
||
|
||
/**
|
||
* 把原始的json字符串转换成对象列表的方式,方便后续使用
|
||
* @param json swagger的原始对象
|
||
* @returns
|
||
*/
|
||
function createTreeViewByTree(json, keywords) {
|
||
var pathIndex = [];
|
||
if (isEmptyObject(json)) {
|
||
return;
|
||
}
|
||
//console.log(paths);
|
||
var lastId = "";
|
||
for (var i = 0; i < json.length; i++) {
|
||
var service = json[i].service;
|
||
var method = json[i].method;
|
||
//console.log(key, paths[key]);
|
||
if (!findInPathsValue(json[i], keywords)) {
|
||
continue;
|
||
}
|
||
var interfaceTemp = service + "." + method;
|
||
var keyArr = interfaceTemp.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 = findNode(pathIndex, nowPath);
|
||
if (nowPathObj == null) {
|
||
nowPathObj = {
|
||
id: pathIndex.length,
|
||
label: nowPath, children: []
|
||
};
|
||
pathIndex.push(nowPathObj);
|
||
}
|
||
lastId = nowPathObj.id;
|
||
nowPathObj = nowPathObj.children;
|
||
} else {
|
||
var tempPathObj = findNode(nowPathObj, nowPath);
|
||
if(tempPathObj == null) {
|
||
tempPathObj = {
|
||
id: lastId + "." + nowPathObj.length,
|
||
label: nowPath, children: []
|
||
};
|
||
nowPathObj.push(tempPathObj);
|
||
}
|
||
lastId = tempPathObj.id;
|
||
nowPathObj = tempPathObj.children;
|
||
if (index == keyArr.length - 1) {
|
||
var tempPath = interfaceTemp;
|
||
tempPathObj.children = null;
|
||
tempPathObj.method = method;
|
||
tempPathObj.interface = tempPath;
|
||
app.treePathDataMap.set(tempPath, json[i]);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
// console.log(pathIndex);
|
||
return pathIndex;
|
||
}
|
||
|
||
function createTreeViewByTreeWithMerge(json, keywords) {
|
||
var pathIndex = createTreeViewByTree(json, keywords);
|
||
mergeNode(pathIndex);
|
||
return pathIndex;
|
||
}
|
||
|
||
/**
|
||
* 查找node节点
|
||
*/
|
||
function findNode(arr, service){
|
||
for (var i = 0; i < arr.length; i++) {
|
||
if(arr[i].label == service) {
|
||
return arr[i];
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/**
|
||
* 多层级合并
|
||
*/
|
||
function mergeNode(node) {
|
||
for (var i = 0; i < node.length; i++) {
|
||
var tempNode = node[i];
|
||
if (tempNode.children == null
|
||
|| tempNode.children[0].children == null
|
||
|| tempNode.children[0].children[0].children == null) {
|
||
continue;
|
||
}
|
||
if (tempNode.children.length == 1) {
|
||
tempNode.label = tempNode.label + "." + tempNode.children[0].label;
|
||
tempNode.children = tempNode.children[0].children;
|
||
i--;
|
||
}
|
||
mergeNode(tempNode.children);
|
||
}
|
||
}
|
||
|
||
function findInPathsValue(pathsValue, keywords) {
|
||
if (isEmpty(keywords)) {
|
||
return true;
|
||
}
|
||
keywords = keywords.toLowerCase();
|
||
// 找路径和说明里面包含关键字的
|
||
var service = pathsValue.service;
|
||
if (isNotEmpty(service) && service.toLowerCase().indexOf(keywords) >= 0) {
|
||
return true;
|
||
}
|
||
var paramType = pathsValue.paramType;
|
||
if (getNotEmptyStr(paramType).toLowerCase().indexOf(keywords) >= 0) {
|
||
return true;
|
||
}
|
||
var resultType = pathsValue.resultType;
|
||
if (getNotEmptyStr(resultType).toLowerCase().indexOf(keywords) >= 0) {
|
||
return true;
|
||
}
|
||
var method = pathsValue.method;
|
||
if (getNotEmptyStr(method).toLowerCase().indexOf(keywords) >= 0) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|