META-INF.resources.webjars.bycdao-ui.cdao.DApiUI.js Maven / Gradle / Ivy
/**
* Created by xiaoym on 2017/4/17.
*/
(function ($) {
//初始化类
var DApiUI={};
DApiUI.init=function () {
$.ajax({
url:"v2/api-docs",
//url:"menu1.json",
dataType:"json",
type:"get",
async:false,
success:function (data) {
//var menu=JSON.parse(data)
var menu=data;
DApiUI.definitions(menu);
DApiUI.log(menu);
DApiUI.createDescription(menu);
DApiUI.initTreeMenu(menu);
DApiUI.eachPath(menu);
}
})
}
/***
* 创建面板
*/
DApiUI.creatabTab=function () {
var divcontent=$('');
var ul=$(' 接口说明 '));
ul.append($(' 在线调试 '));
divcontent.append(ul);
var tabcontent=$('');
tabcontent.append($('接口详细说明Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型。在你项目中的每个页面都要参照下面的格式进行设置。
'));
tabcontent.append($('正在开发中,敬请期待......'));
divcontent.append(tabcontent);
//内容覆盖
DApiUI.getDoc().html("");
DApiUI.getDoc().append(divcontent);
DApiUI.log("动态激活...")
//liapi.addClass("active");
DApiUI.log("动态激活12...")
DApiUI.getDoc().find("#myTab a:first").tab('show')
//$('#myTab a:first').tab('show')
}
/***
* 检查对象属性,in并赋予默认值
* @param obj
* @param key
* @param defaultValue
* @param checkEmpty
* @returns {*}
*/
DApiUI.getValue=function (obj,key,defaultValue,checkEmpty) {
var val=defaultValue;
if(obj!=null&&obj!=undefined){
if (obj.hasOwnProperty(key)){
val=obj[key];
if (checkEmpty){
if (val==null||val==""){
val=defaultValue;
}
}
}
}
return val;
}
/***
* 创建简介table页面
* @param menu
*/
DApiUI.createDescription=function (menu) {
var table=$('
');
var title="",description="",name="",version="",termsOfService="";
var host=DApiUI.getValue(menu,"host","",true);
if (menu.hasOwnProperty("info")){
var info=menu.info;
title=DApiUI.getValue(info,"title","Swagger-Bootstrap-UI-前后端api接口文档",true);
description=DApiUI.getValue(info,"description","",true);
if(info.hasOwnProperty("contact")){
var contact=info["contact"];
name=DApiUI.getValue(contact,"name","",true);
}
version=DApiUI.getValue(info,"version","",true);
termsOfService=DApiUI.getValue(info,"termsOfService","",true);
}
//修改title
$("title").html("").html(title)
table.append($(''+title+' '));
var tbody=$('');
tbody.append($('简介 '+description+' '));
tbody.append($('作者 '+name+' '));
tbody.append($('版本 '+version+' '));
tbody.append($('host '+host+' '))
tbody.append($('服务url '+termsOfService+' '));
table.append(tbody);
var div=$('')
div.append(table);
//内容覆盖
DApiUI.getDoc().html("");
DApiUI.getDoc().append(div);
DApiUI.getDoc().data("data",menu);
}
/***
* 获取菜单结构
*/
DApiUI.getMenuConstructs=function () {
return DApiUI.getDoc().data("data");
}
DApiUI.toString=function (obj, defaultStr) {
if (obj!=null && typeof (obj)!="undefined"){
return obj.toString();
}
if (obj==undefined){
return defaultStr;
}
return defaultStr;
}
/***
* 初始化菜单树
* @param menu
*/
DApiUI.initTreeMenu=function (menu) {
//遍历tags
var tags=new Array();
//简介li
var dli=$(' ')
dli.on("click",function () {
DApiUI.log("简介click")
DApiUI.createDescription(menu);
dli.addClass("active");
})
DApiUI.getMenu().html("");
DApiUI.getMenu().append(dli);
var methodApis=DApiUI.eachPath(menu);
$.each(menu.tags,function (i, tag) {
var tagInfo=new TagInfo(tag.name,tag.description);
//查找childrens
$.each(methodApis,function (i, methodApi) {
//判断tags是否相同
if(methodApi.tag==tagInfo.name){
tagInfo.childrens.push(methodApi);
}
})
var len=tagInfo.childrens.length;
if(len==0){
var li=$(' ');
DApiUI.getMenu().append(li);
}else{
//存在子标签
var li=$('');
var titleA=$('');
li.append(titleA);
//循环树
var ul=$(' ')
$.each(tagInfo.childrens,function (i, children) {
var childrenLi=$(''+children.methodType.toUpperCase()+'-'+children.url+'
'+children.summary+' ');
//console.log(children)
//var childrenA=$('['+children.methodType+']
'+children.summary+'('+children.url+')');
//childrenLi.append(childrenA);
childrenLi.data("data",children);
ul.append(childrenLi);
})
li.append(ul);
DApiUI.getMenu().append(li);
}
})
DApiUI.log("菜单初始化完成...")
DApiUI.initLiClick();
}
DApiUI.eachPath=function (menu) {
var paths=menu.paths;
DApiUI.log(paths);
//paths是object对象,key是api接口地址,
var methodApis=[];
for(var key in paths){
var obj=paths[key];
//遍历obj,获取api接口访问方式
//八中方式类型,直接判断
if(obj.hasOwnProperty("get")){
//get方式
var apiInfo=new ApiInfo(obj["get"]);
apiInfo.methodType="get";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if(obj.hasOwnProperty("post")){
//post 方式
var apiInfo=new ApiInfo(obj["post"]);
apiInfo.methodType="post";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if(obj.hasOwnProperty("put")){
//put
var apiInfo=new ApiInfo(obj["put"]);
apiInfo.methodType="put";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if(obj.hasOwnProperty("delete")){
//delete
var apiInfo=new ApiInfo(obj["delete"]);
apiInfo.methodType="delete";
apiInfo.url=key;
methodApis.push(apiInfo);
}
}
//console.log(methodApis);
return methodApis;
}
/***
* li标签click事件
*/
DApiUI.initLiClick=function () {
DApiUI.getMenu().find(".menuLi").bind("click",function (e) {
e.preventDefault();
var that=$(this);
var data=that.data("data");
DApiUI.log("Li标签click事件");
DApiUI.log(data);
//获取parent-Li的class属性值
var parentLi=that.parent().parent();
DApiUI.log(parentLi);
var className=parentLi.prop("class");
DApiUI.log(className)
DApiUI.getMenu().find("li").removeClass("active");
//parentLi.addClass("active");
that.addClass("active");
DApiUI.createApiInfoTable(data);
DApiUI.createDebugTab(data);
})
}
DApiUI.getStringValue=function (obj) {
var str="";
if(typeof (obj)!='undefined'&&obj!=null){
str=obj.toString();
}
return str;
}
/***
* 格式化json
* @param text_value
*/
function formatterJson(text_value) {
var res="";
for(var i=0,j=0,k=0,ii,ele;i
')
ul.append($('