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 () {
DApiUI.createGroupTab();
}
/**
* 创建分组
*/
DApiUI.createGroupTab=function () {
$.ajax({
url:"swagger-resources",
type:"get",
async:false,
success:function (data) {
//获取分组名称
var groupData=data;
DApiUI.initGroupSele(groupData);
}
})
}
/***
* 创建面板
*/
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);
}
/***
* 离线文档功能页面
* @param menu
*/
DApiUI.createMarkdownTab=function (menu) {
var description="swagger-bootstrap-ui 提供markdwon格式类型的离线文档,开发者可拷贝该内容通过其他markdown转换工具进行转换为html或pdf.";
var divdes=$(''+description+'');
var div=$('');
div.append(divdes);
//toolbar按钮组
var toolbarDiv=$('');
var copyBtn=$('');
toolbarDiv.append(copyBtn);
div.append(toolbarDiv);
//添加textarea
var txtDiv=$("")
div.append(txtDiv);
//内容覆盖
DApiUI.getDoc().html("");
DApiUI.getDoc().append(div);
DApiUI.getDoc().data("data",menu);
//初始化copy按钮功能
var clipboard = new ClipboardJS('#btnCopy');
clipboard.on('success', function(e) {
layer.msg("复制成功")
});
clipboard.on('error', function(e) {
layer.msg("复制失败,您当前浏览器版本不兼容,请手动复制.")
});
}
/***
* 获取菜单结构
*/
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.initGroupSele=function (groupData) {
//遍历tags
var tags=new Array();
//创建分组flag
var groupli=$('');
var groupSele=$("");
$.each(groupData,function (i, group) {
var groupOption=$("");
groupSele.append(groupOption);
})
groupli.append(groupSele);
groupSele.on("change",function () {
var that=$(this);
DApiUI.log(that)
var apiurl=that.find("option:selected").attr("data-url");
DApiUI.log("分组::");
DApiUI.log(apiurl);
DApiUI.initApiTree(apiurl);
})
DApiUI.getMenu().html("");
DApiUI.getMenu().append(groupli);
var url=groupData[0].location;
//默认加载第一个url
DApiUI.initApiTree(url);
}
DApiUI.initApiTree=function (url) {
var idx=url.indexOf("/");
if(idx==0){
url=url.substr(1);
}
DApiUI.log("截取后的url:"+url);
$.ajax({
//url:"v2/api-docs",
url:url,
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.createDetailMenu(menu);
}
})
}
/***
* 创建分组详情菜单
* @param menu
*/
DApiUI.createDetailMenu=function (menu) {
DApiUI.getMenu().find(".detailMenu").remove();
//简介li
var dli=$(' ')
dli.on("click",function () {
DApiUI.log("简介click")
DApiUI.createDescription(menu);
dli.addClass("active");
})
DApiUI.getMenu().append(dli);
//离线文档功能
var mddocli=$(" ");
mddocli.on("click",function () {
DApiUI.log("离线文档功能click")
DApiUI.createMarkdownTab(menu);
DApiUI.getMenu().find("li").removeClass("active");
mddocli.addClass("active");
})
DApiUI.getMenu().append(mddocli);
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是否相同
$.each(methodApi.tag,function(i,tagName){
if(tagName==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);
}
//扩展 支持http其余请求方法接口
//add by xiaoymin 2018-4-28 07:16:12
if (obj.hasOwnProperty("patch")){
//patch
var apiInfo=new ApiInfo(obj["patch"]);
apiInfo.methodType="patch";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if (obj.hasOwnProperty("options")){
//OPTIONS
var apiInfo=new ApiInfo(obj["options"]);
apiInfo.methodType="options";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if (obj.hasOwnProperty("trace")){
//TRACE
var apiInfo=new ApiInfo(obj["trace"]);
apiInfo.methodType="trace";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if (obj.hasOwnProperty("head")){
//HEAD
var apiInfo=new ApiInfo(obj["head"]);
apiInfo.methodType="head";
apiInfo.url=key;
methodApis.push(apiInfo);
}
if (obj.hasOwnProperty("connect")){
//CONNECT
var apiInfo=new ApiInfo(obj["connect"]);
apiInfo.methodType="connect";
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($('
');
div.append(headdiv1);
//请求参数
var divp=$('
请求参数
');
respcontent.append(resp1);
resptab.append(respcontent)
respcleanDiv.append(resptab);
var jsondiv=$('');
jsondiv.JSONView(res);
resp1.find(".panel-body").append(jsondiv);
resptab.find("a:first").tab("show");
}catch (err){
//nothing to do,default to show
respcleanDiv.html(ret);
}
})
}else{
$.ajax({
url:url,
headers:headerparams,
type:DApiUI.getStringValue(apiInfo.methodType),
data:reqdata,
contentType:contType,
success:function (data,status,xhr) {
var resptab=$('')
var ulresp=$(' ')
resptab.append(ulresp);
var respcontent=$('');
var resp1=$('