optimized search
This commit is contained in:
parent
b4b145873c
commit
8413dd6135
|
@ -36,9 +36,11 @@ import org.beetl.core.Template;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.power.doc.constants.DocGlobalConstants.FILE_SEPARATOR;
|
||||
import static com.power.doc.constants.DocGlobalConstants.SEARCH_JS;
|
||||
|
||||
/**
|
||||
* @author yu 2019/9/26.
|
||||
|
@ -147,6 +149,46 @@ public class DocBuilderTemplate extends BaseDocBuilderTemplate {
|
|||
FileUtil.nioWriteFile(tpl.render(), outPath + FILE_SEPARATOR + outPutFileName);
|
||||
}
|
||||
|
||||
public void buildSearchJs(ApiConfig config, JavaProjectBuilder javaProjectBuilder, List<ApiDoc> apiDocList, String template) {
|
||||
List<ApiErrorCode> errorCodeList = errorCodeDictToList(config);
|
||||
Template tpl = BeetlTemplateUtil.getByName(template);
|
||||
// directory tree
|
||||
List<ApiDoc> apiDocs = new ArrayList<>();
|
||||
for (ApiDoc apiDoc1 : apiDocList) {
|
||||
apiDoc1.setOrder(apiDocs.size() + 1);
|
||||
apiDocs.add(apiDoc1);
|
||||
}
|
||||
Map<String, String> titleMap = setDirectoryLanguageVariable(config, tpl);
|
||||
// set error code
|
||||
if (CollectionUtil.isNotEmpty(errorCodeList)) {
|
||||
ApiDoc apiDoc1 = new ApiDoc();
|
||||
apiDoc1.setOrder(apiDocs.size() + 1);
|
||||
apiDoc1.setDesc(titleMap.get(TemplateVariable.ERROR_LIST_TITLE.getVariable()));
|
||||
apiDoc1.setList(new ArrayList<>(0));
|
||||
apiDoc1.setLink("error_code_list");
|
||||
apiDoc1.setAlias("error");
|
||||
apiDocs.add(apiDoc1);
|
||||
}
|
||||
// set dict list
|
||||
List<ApiDocDict> apiDocDictList = buildDictionary(config, javaProjectBuilder);
|
||||
ApiDoc apiDoc1 = new ApiDoc();
|
||||
apiDoc1.setOrder(apiDocs.size() + 1);
|
||||
apiDoc1.setLink("dict_list");
|
||||
apiDoc1.setAlias("dict");
|
||||
apiDoc1.setDesc(titleMap.get(TemplateVariable.DICT_LIST_TITLE.getVariable()));
|
||||
List<ApiMethodDoc> methodDocs = new ArrayList<>();
|
||||
for (ApiDocDict apiDocDict : apiDocDictList) {
|
||||
ApiMethodDoc methodDoc = new ApiMethodDoc();
|
||||
methodDoc.setOrder(apiDocDict.getOrder());
|
||||
methodDoc.setDesc(apiDocDict.getTitle());
|
||||
methodDocs.add(methodDoc);
|
||||
}
|
||||
apiDoc1.setList(methodDocs);
|
||||
apiDocs.add(apiDoc1);
|
||||
tpl.binding(TemplateVariable.API_DOC_LIST.getVariable(), apiDocs);
|
||||
FileUtil.nioWriteFile(tpl.render(), config.getOutPath() + FILE_SEPARATOR + SEARCH_JS);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* build error_code adoc
|
||||
|
|
|
@ -87,7 +87,7 @@ public class HtmlApiDocBuilder {
|
|||
} else {
|
||||
builderTemplate.buildAllInOne(apiDocList, config, javaProjectBuilder, ALL_IN_ONE_HTML_TPL, INDEX_HTML);
|
||||
}
|
||||
buildSearchJs(apiDocList, config,"js/search_all.js.btl");
|
||||
builderTemplate.buildSearchJs(config,javaProjectBuilder,apiDocList, "js/search_all.js.btl");
|
||||
} else {
|
||||
String indexAlias;
|
||||
if (config.isCreateDebugPage()) {
|
||||
|
@ -103,7 +103,7 @@ public class HtmlApiDocBuilder {
|
|||
"error.html", indexAlias);
|
||||
builderTemplate.buildDirectoryDataDoc(config, javaProjectBuilder, apiDocList,
|
||||
SINGLE_DICT_HTML_TPL, "dict.html", indexAlias);
|
||||
buildSearchJs(apiDocList, config,"js/search.js.btl");
|
||||
builderTemplate.buildSearchJs(config,javaProjectBuilder,apiDocList, "js/search.js.btl");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -132,10 +132,4 @@ public class HtmlApiDocBuilder {
|
|||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
private static void buildSearchJs(List<ApiDoc> apiDocList, ApiConfig config, String template) {
|
||||
Template tpl = BeetlTemplateUtil.getByName(template);
|
||||
tpl.binding(TemplateVariable.API_DOC_LIST.getVariable(), apiDocList);
|
||||
FileUtil.nioWriteFile(tpl.render(), config.getOutPath() + FILE_SEPARATOR + "search.js");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,8 +52,11 @@ public interface DocGlobalConstants {
|
|||
|
||||
String MARKDOWN_CSS_TPL = "markdown.css";
|
||||
|
||||
String SEARCH_JS = "search.js";
|
||||
|
||||
String DEBUG_PAGE_TPL = "mock.html";
|
||||
|
||||
|
||||
String DEBUG_PAGE_ALL_TPL = "mock-all.html";
|
||||
|
||||
String DEBUG_PAGE_SINGLE_TPL = "html/mock.html";
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
package com.power.doc.model;
|
||||
|
||||
|
||||
import com.power.common.util.StringUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
@ -57,6 +59,11 @@ public class ApiDoc implements Comparable<ApiDoc> {
|
|||
*/
|
||||
private String desc;
|
||||
|
||||
/**
|
||||
* link
|
||||
*/
|
||||
private String link;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
@ -97,6 +104,17 @@ public class ApiDoc implements Comparable<ApiDoc> {
|
|||
this.alias = alias;
|
||||
}
|
||||
|
||||
public String getLink() {
|
||||
if (StringUtil.isNotEmpty(link)) {
|
||||
return link;
|
||||
}
|
||||
return desc.replace(" ", "_").toLowerCase();
|
||||
}
|
||||
|
||||
public void setLink(String link) {
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ApiDoc o) {
|
||||
if (Objects.nonNull(o.getDesc())) {
|
||||
|
@ -105,6 +123,7 @@ public class ApiDoc implements Comparable<ApiDoc> {
|
|||
return name.compareTo(o.getName());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder sb = new StringBuilder("{");
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
package com.power.doc.model;
|
||||
|
||||
import com.power.common.util.StringUtil;
|
||||
import com.power.doc.constants.DocGlobalConstants;
|
||||
import com.power.doc.model.request.ApiRequestExample;
|
||||
|
||||
|
@ -154,12 +155,12 @@ public class ApiMethodDoc implements Serializable {
|
|||
/**
|
||||
* return schema
|
||||
*/
|
||||
private Map<String,Object> returnSchema;
|
||||
private Map<String, Object> returnSchema;
|
||||
|
||||
/**
|
||||
* request schema
|
||||
*/
|
||||
private Map<String,Object> requestSchema;
|
||||
private Map<String, Object> requestSchema;
|
||||
|
||||
/**
|
||||
* api group
|
||||
|
@ -171,6 +172,11 @@ public class ApiMethodDoc implements Serializable {
|
|||
*/
|
||||
private boolean download;
|
||||
|
||||
/**
|
||||
* link
|
||||
*/
|
||||
private String link;
|
||||
|
||||
public String getMethodId() {
|
||||
return methodId;
|
||||
}
|
||||
|
@ -372,6 +378,17 @@ public class ApiMethodDoc implements Serializable {
|
|||
this.download = download;
|
||||
}
|
||||
|
||||
public String getLink() {
|
||||
if (StringUtil.isNotEmpty(link)) {
|
||||
return link;
|
||||
}
|
||||
return desc.replace(" ", "_").toLowerCase();
|
||||
}
|
||||
|
||||
public void setLink(String link) {
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder sb = new StringBuilder("{");
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
padding: 0em;
|
||||
}</style>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/highlight.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header"><%if(isNotEmpty(projectName)){%><h1>${projectName}</h1><%}%>
|
||||
|
|
|
@ -1,207 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<meta name='viewport' content='width=device-width initial-scale=1'>
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<link rel="stylesheet" href="index.css?v=${version}"/>
|
||||
<title>api doc</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="book without-animation with-summary font-size-2 font-family-1">
|
||||
<div class="book-summary">
|
||||
<div id="book-search-input"><input id="search" type="text" placeholder="Type to search"></div>
|
||||
<nav role="navigation">
|
||||
<ul class="summary">
|
||||
<li><ul id="reference">API Reference</ul></li>
|
||||
<li class="divider"></li>
|
||||
<div id="doc">
|
||||
<%
|
||||
for(api in apiDocList){
|
||||
%>
|
||||
<li class="chapter " data-level="${api.alias}" data-path="${api.alias}.html">
|
||||
<a href="javascript:void(0)" onclick="go('${api.alias}', '${api.desc}');">${api.order} ${api.desc}</a>
|
||||
<ul class="articles">
|
||||
<%
|
||||
for(doc in api.list){
|
||||
%>
|
||||
<li class="chapter " data-level="${api.alias}" data-path="${api.alias}.html">
|
||||
<%if(doc.deprecated){%>
|
||||
<a href="javascript:void(0)" onclick="go('${api.alias}', '${doc.desc}');">${api.order}.${doc.order} <span class="line-through">${doc.desc}</span></a></li>
|
||||
<%}else{%>
|
||||
<a href="javascript:void(0)" onclick="go('${api.alias}', '${doc.desc}');">${api.order}.${doc.order} ${doc.desc}</a></li>
|
||||
<%}%>
|
||||
<%}%>
|
||||
</ul>
|
||||
</li>
|
||||
<%}%>
|
||||
</div>
|
||||
|
||||
<%if(isNotEmpty(errorCodeList)){%>
|
||||
<li class="chapter " data-level="error_code" data-path="error_code.html">
|
||||
<a href="error_code.html?v=${version}" target="book_iframe">${apiDocList.~size+1}. ${errorListTitle}</a>
|
||||
</li>
|
||||
<%}%>
|
||||
<%if(isNotEmpty(dictList)){%>
|
||||
<li class="chapter " data-level="dict" data-path="dict.html">
|
||||
<a href="dict.html?v=${version}" target="book_iframe">${dictListOrder}. ${dictListTitle}</a>
|
||||
<ul class="articles">
|
||||
<%
|
||||
for(dict in dictList){
|
||||
%>
|
||||
<li class="chapter " data-level="${dict.title}" data-path="dict.html">
|
||||
<a href="dict.html?v=${version}" target="book_iframe">${dictListOrder}.${dictLP.index} ${dict.title}</a></li>
|
||||
<%}%>
|
||||
</ul>
|
||||
</li>
|
||||
<%}%>
|
||||
<li class="divider"></li>
|
||||
<li class="footer_link"><a href="https://github.com/smart-doc-group/smart-doc" target="_blank" class="gitbook-link">Created by smart-doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div id="book-body" class="book-body" height="100%">
|
||||
<iframe src="${homePage}.html?v=${version}" frameborder="0" id="book_iframe" name="book_iframe" width="100%" height="100%"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var api = [];
|
||||
|
||||
function changeFrameHeight() {
|
||||
var ifm = document.getElementById("book_iframe");
|
||||
ifm.height = document.documentElement.clientHeight;
|
||||
}
|
||||
|
||||
function toPage() {
|
||||
var page = localStorage.getItem('page');
|
||||
var title = localStorage.getItem('title');
|
||||
if(page) {
|
||||
var iframe = document.getElementById("book_iframe");
|
||||
iframe.src = page + ".html";
|
||||
var obj = iframe.contentWindow;
|
||||
obj.onload = function(){
|
||||
var h2 = obj.document.getElementsByTagName('h2');
|
||||
for(j = 0; j < h2.length; j++) {
|
||||
var dom = h2[j];
|
||||
if(dom.innerText == title){
|
||||
obj.scroll(0, dom.offsetTop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
toPage();
|
||||
|
||||
function go(alias, desc) {
|
||||
console.log(alias, desc);
|
||||
var iframe = document.getElementById("book_iframe");
|
||||
var page = localStorage.getItem('page');
|
||||
|
||||
if(page != alias){
|
||||
iframe.src = alias + ".html";
|
||||
}
|
||||
|
||||
localStorage.setItem('page', alias);
|
||||
localStorage.setItem('title', desc);
|
||||
|
||||
setTimeout(() => {
|
||||
var obj = iframe.contentWindow;
|
||||
var h2 = obj.document.getElementsByTagName('h2');
|
||||
for(j = 0; j < h2.length; j++) {
|
||||
var dom = h2[j];
|
||||
if(dom.innerText == desc){
|
||||
obj.scroll(0, dom.offsetTop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, 200)
|
||||
}
|
||||
|
||||
changeFrameHeight();
|
||||
setInterval(function(){changeFrameHeight(); }, 500);
|
||||
|
||||
document.onkeydown = keyDownSearch;
|
||||
function keyDownSearch(e) {
|
||||
var theEvent = e || window.event;
|
||||
var code = theEvent.keyCode || theEvent.which || theEvent.charCode;
|
||||
if (code == 13) {
|
||||
var search = document.getElementById('search');
|
||||
var searchArr = [];
|
||||
<% for(api in apiDocList) { %>
|
||||
searchArr.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
api.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
<% for(doc in api.list) { %>
|
||||
api[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
if('${doc.desc}'.indexOf(search.value) > -1) {
|
||||
searchArr[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
}
|
||||
<%}%>
|
||||
<%}%>
|
||||
var searchResult = searchArr.filter(obj => obj.list.length > 0);
|
||||
if(searchResult.length > 0) {
|
||||
var html = '';
|
||||
for(j = 0; j < searchResult.length; j++) {
|
||||
html += '<li class="chapter " data-level="' + searchResult[j].alias + '" data-path="' + searchResult[j].alias + '.html">';
|
||||
html += ' <a href="javascript:void(0)" onclick="go(\'' + searchResult[j].alias + '\', \'' + searchResult[j].desc + '\');">' + searchResult[j].order + ' ' + searchResult[j].desc + '</a>';
|
||||
|
||||
|
||||
html += ' <ul class="articles">';
|
||||
|
||||
var doc = searchResult[j].list;
|
||||
for(m = 0; m < doc.length; m++) {
|
||||
html += ' <li class="chapter " data-level="' + searchResult[j].alias + '" data-path="' + searchResult[j].alias + '.html">';
|
||||
html += ' <a href="javascript:void(0)" onclick="go(\'' + searchResult[j].alias + '\', \'' + doc[m].desc + '\');">' + searchResult[j].order + '.' + doc[m].order + ' ' + doc[m].desc + '</a></li>';
|
||||
html += ' </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
}
|
||||
document.getElementById('doc').innerHTML = html;
|
||||
} else {
|
||||
if(search.value == '') {
|
||||
var html = '';
|
||||
for(j = 0; j < api.length; j++) {
|
||||
html += '<li class="chapter " data-level="' + api[j].alias + '" data-path="' + api[j].alias + '.html">';
|
||||
html += ' <a href="javascript:void(0)" onclick="go(\'' + api[j].alias + '\', \'' + api[j].desc + '\');">' + api[j].order + ' ' +api[j].desc + '</a>';
|
||||
html += ' <ul class="articles">';
|
||||
|
||||
var doc = api[j].list;
|
||||
for(m = 0; m < doc.length; m++) {
|
||||
html += ' <li class="chapter " data-level="' + searchResult[j].alias + '" data-path="' + searchResult[j].alias + '.html">';
|
||||
html += ' <a href="javascript:void(0)" onclick="go(\'' + api[j].alias + '\', \'' + doc[m].desc + '\');">' + searchResult[j].order + '.' + doc[m].order + ' ' + doc[m].desc + '</a></li>';
|
||||
html += ' </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
}
|
||||
|
||||
document.getElementById('doc').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('doc').innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -17,7 +17,7 @@
|
|||
padding: 0em;
|
||||
}</style>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/highlight.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
padding: 0em;
|
||||
}</style>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/highlight.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
|
@ -54,7 +54,7 @@
|
|||
<%}%><%}%><%if(isNotEmpty(errorCodeList)){%>
|
||||
<li class="open"><a href="error.html#header">${apiDocList.~size+1}.${errorListTitle}</a>
|
||||
<ul class="sectlevel2" style="display: block">
|
||||
<li><a href="dict.html#_${apiDocList.~size+1}_1_${errorListTitle}">${apiDocList.~size+1}.1. ${errorListTitle}</a>
|
||||
<li><a href="error.html#_${apiDocList.~size+1}_1_${errorListTitle}">${apiDocList.~size+1}.1. ${errorListTitle}</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
}
|
||||
</style>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/highlight.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<link rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
|
||||
<link rel="stylesheet" href="AllInOne.css?v=${version}"/>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
|
|
|
@ -1,135 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<meta name='viewport' content='width=device-width initial-scale=1'>
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<link rel="stylesheet" href="index.css?v=${version}"/>
|
||||
<link rel="stylesheet" href="markdown.css?v=${version}"/>
|
||||
<title>api doc</title>
|
||||
</head>
|
||||
<div class="book without-animation with-summary font-size-2 font-family-1">
|
||||
<div class="book-summary">
|
||||
<div id="book-search-input"><input type="text" placeholder="Type to search"></div>
|
||||
<nav role="navigation">
|
||||
<ul class="summary">
|
||||
<li><ul id="reference">API Reference</ul></li>
|
||||
<li class="divider"></li>
|
||||
<%
|
||||
for(api in apiDocList){
|
||||
%>
|
||||
<li class="chapter " data-level="${api.alias}" data-path="${api.alias}.html">
|
||||
<a href="#_${api.desc}">${api.order}. ${api.desc}</a>
|
||||
<ul class="articles">
|
||||
<%
|
||||
for(doc in api.list){
|
||||
%>
|
||||
<li class="chapter " data-level="${api.alias}" data-path="${api.alias}.html">
|
||||
<a href="#_${doc.desc}">${api.order}.${doc.order} ${doc.desc}</a></li>
|
||||
<%}%>
|
||||
</ul>
|
||||
</li>
|
||||
<%}%>
|
||||
<li class="chapter " data-level="error_code" data-path="error_code.html">
|
||||
<a href="error_code.html?v=${version}" target="book_iframe">${errorListTitle}</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="footer_link"><a href="https://github.com/shalousun/smart-doc" target="_blank" class="gitbook-link">Created by smart-doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div id="book-body" class="book-body" height="100%">
|
||||
<div class="markdown-body">
|
||||
<%
|
||||
for(api in apiDocList){
|
||||
%>
|
||||
<h1 id="_${api.desc}">
|
||||
<a class="anchor" href="#_${api.desc}"></a><a class="link" href="#_${api.desc}">${api.order}. ${api.desc}</a>
|
||||
</h1>
|
||||
<%
|
||||
for(doc in api.list){
|
||||
%>
|
||||
<h2 id="_${doc.desc}">
|
||||
<a class="anchor" href="#_${doc.desc}"></a><a class="link" href="#_${doc.desc}">${api.order}.${doc.order} ${doc.desc}</a>
|
||||
</h2>
|
||||
<p><strong>URL:</strong>${doc.url}</p>
|
||||
<p><strong>Type:</strong>${doc.type}</p>
|
||||
<p><strong>Content-Type:</strong> ${doc.contentType}</p>
|
||||
<p><strong>Description:</strong> ${doc.detail}</p>
|
||||
|
||||
<%if(isNotEmpty(doc.requestHeaders)){%>
|
||||
<p><strong>Request-headers:</strong></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Header</th><th>Type</th><th>Description</th><th>Required</th><th>Since</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%
|
||||
for(header in doc.requestHeaders){
|
||||
%>
|
||||
<tr><td>${header.name}</td><td>${header.type}</td><td>${header.desc}</td><td>${header.required}</td><td>${header.since}</td></tr>
|
||||
<%}%>
|
||||
</tbody>
|
||||
</table>
|
||||
<%}%>
|
||||
|
||||
<%if(isNotEmpty(doc.requestParams)){%>
|
||||
<p><strong>Request-parameters:</strong></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Parameter</th><th>Type</th><th>Description</th><th>Required</th><th>Since</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%
|
||||
for(param in doc.requestParams){
|
||||
%>
|
||||
<tr><td>${param.field}</td><td>${param.type}</td><td>${param.desc}</td><td>${param.required}</td><td>${param.version}</td></tr>
|
||||
<%}%>
|
||||
</tbody>
|
||||
</table>
|
||||
<%}%>
|
||||
<%if(isNotEmpty(doc.requestUsage)&&isRequestExample){%>
|
||||
<p><strong>Request-example:</strong></p>
|
||||
<pre><code>${doc.requestUsage}
|
||||
</code></pre>
|
||||
<%}%>
|
||||
|
||||
<%if(isNotEmpty(doc.responseParams)){%>
|
||||
<p><strong>Response-fields:</strong></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Field</th><th>Type</th><th>Description</th><th>Since</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%
|
||||
for(param in doc.responseParams){
|
||||
%>
|
||||
<tr><td> ${param.field}</td><td>${param.type}</td><td>${param.desc}</td><td>${param.version}</td></tr>
|
||||
<%}%>
|
||||
</tbody>
|
||||
</table>
|
||||
<%}%>
|
||||
|
||||
<%if(isNotEmpty(doc.responseUsage)&&isResponseExample){%>
|
||||
<p><strong>Response-example:</strong></p>
|
||||
<pre><code>${doc.responseUsage}
|
||||
</code></pre>
|
||||
<%}%>
|
||||
<%}%>
|
||||
<%}%>
|
||||
|
||||
<footer class="page-footer">
|
||||
<span class="copyright">Generated by smart-doc at ${createTime}</span>
|
||||
<span class="footer-modification">Suggestions, contact, support and error reporting on
|
||||
<a href="https://gitee.com/smart-doc-team/smart-doc" target="_blank">Gitee</a> or
|
||||
<a href="https://github.com/smart-doc-group/smart-doc" target="_blank">Github</a>
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,232 +0,0 @@
|
|||
.book-summary {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -300px;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
overflow-y: auto;
|
||||
width: 300px;
|
||||
color: #364149;
|
||||
background: #fafafa;
|
||||
border-right: 1px solid rgba(0, 0, 0, .07);
|
||||
-webkit-transition: left 250ms ease;
|
||||
-moz-transition: left 250ms ease;
|
||||
-o-transition: left 250ms ease;
|
||||
transition: left 250ms ease
|
||||
}
|
||||
|
||||
.book-summary ul.summary {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-transition: top .5s ease;
|
||||
-moz-transition: top .5s ease;
|
||||
-o-transition: top .5s ease;
|
||||
transition: top .5s ease
|
||||
}
|
||||
|
||||
.book-summary ul.summary li {
|
||||
list-style: none
|
||||
}
|
||||
|
||||
.book-summary ul.summary li.header {
|
||||
padding: 10px 15px;
|
||||
padding-top: 20px;
|
||||
text-transform: uppercase;
|
||||
color: #939da3
|
||||
}
|
||||
|
||||
.book-summary ul.summary li.divider {
|
||||
height: 1px;
|
||||
margin: 7px 0;
|
||||
overflow: hidden;
|
||||
background: rgba(0, 0, 0, .07)
|
||||
}
|
||||
|
||||
.book-summary ul.summary li i.fa-check {
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 9px;
|
||||
top: 16px;
|
||||
font-size: 9px;
|
||||
color: #3c3
|
||||
}
|
||||
|
||||
.book-summary ul.summary li.done > a {
|
||||
color: #364149;
|
||||
font-weight: 400
|
||||
}
|
||||
|
||||
.book-summary ul.summary li.done > a i {
|
||||
display: inline
|
||||
}
|
||||
|
||||
.book-summary ul.summary li a, .book-summary {
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
border-bottom: 0;
|
||||
color: #364149;
|
||||
background: 0;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
position: relative
|
||||
}
|
||||
|
||||
.book-summary ul.summary li a:hover {
|
||||
text-decoration: underline
|
||||
}
|
||||
|
||||
.book-summary ul.summary li a:focus {
|
||||
outline: 0
|
||||
}
|
||||
|
||||
.book-summary ul.summary li.active > a {
|
||||
color: #008cff;
|
||||
background: 0;
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.book-summary ul.summary li ul {
|
||||
padding-left: 20px
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.book-summary {
|
||||
width: calc(100% - 60px);
|
||||
bottom: 0;
|
||||
left: -100%
|
||||
}
|
||||
}
|
||||
|
||||
.book.with-summary .book-summary {
|
||||
left: 0
|
||||
}
|
||||
|
||||
.book.without-animation .book-summary {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
-o-transition: none !important;
|
||||
transition: none !important
|
||||
}
|
||||
|
||||
.book {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.book.with-summary .book-body {
|
||||
left: 300px
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.book.with-summary {
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
.book.with-summary .book-body {
|
||||
-webkit-transform: translate(calc(100% - 60px), 0);
|
||||
-moz-transform: translate(calc(100% - 60px), 0);
|
||||
-ms-transform: translate(calc(100% - 60px), 0);
|
||||
-o-transform: translate(calc(100% - 60px), 0);
|
||||
transform: translate(calc(100% - 60px), 0)
|
||||
}
|
||||
}
|
||||
|
||||
.book.without-animation .book-body {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
-o-transition: none !important;
|
||||
transition: none !important
|
||||
}
|
||||
|
||||
.book-body {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
overflow-y: hidden;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
-webkit-transition: left 250ms ease;
|
||||
-moz-transition: left 250ms ease;
|
||||
-o-transition: left 250ms ease;
|
||||
transition: left 250ms ease
|
||||
}
|
||||
|
||||
@media (max-width: 1240px) {
|
||||
.book-body {
|
||||
-webkit-transition: -webkit-transform 250ms ease;
|
||||
-moz-transition: -moz-transform 250ms ease;
|
||||
-o-transition: -o-transform 250ms ease;
|
||||
transition: transform 250ms ease;
|
||||
padding-bottom: 20px
|
||||
}
|
||||
}
|
||||
|
||||
#book-search-input {
|
||||
padding: 6px;
|
||||
background: 0;
|
||||
transition: top .5s ease;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, .07);
|
||||
border-top: 1px solid rgba(0, 0, 0, .07);
|
||||
margin-bottom: 10px;
|
||||
margin-top: -1px
|
||||
}
|
||||
|
||||
#book-search-input input, #book-search-input input:focus, #book-search-input input:hover {
|
||||
width: 100%;
|
||||
background: 0;
|
||||
border: 1px solid transparent;
|
||||
box-shadow: none;
|
||||
outline: 0;
|
||||
line-height: 22px;
|
||||
padding: 7px 7px;
|
||||
color: inherit
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
body, html {
|
||||
height: 100%
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 62.5%
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0
|
||||
}
|
||||
|
||||
body {
|
||||
text-rendering: optimizeLegibility;
|
||||
font-smoothing: antialiased;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
letter-spacing: .2px;
|
||||
text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%
|
||||
}
|
||||
|
||||
#reference {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 15px
|
||||
}
|
||||
|
||||
.footer_link {
|
||||
margin-bottom: 45px
|
||||
}
|
||||
|
||||
.line-through {
|
||||
text-decoration: line-through;
|
||||
}
|
|
@ -1,76 +1,104 @@
|
|||
let api = [];
|
||||
<%for(api in apiDocList){%>
|
||||
api.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
link: '${api.link}',
|
||||
list: []
|
||||
})
|
||||
<%for(doc in api.list) {%>
|
||||
api[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
<%}%>
|
||||
<%}%>
|
||||
document.onkeydown = keyDownSearch;
|
||||
|
||||
function keyDownSearch(e) {
|
||||
let j;
|
||||
let m;
|
||||
let doc;
|
||||
let html;
|
||||
const theEvent = e || window.event;
|
||||
const code = theEvent.keyCode || theEvent.which || theEvent.charCode;
|
||||
if (code == 13) {
|
||||
const search = document.getElementById('search');
|
||||
const searchArr = [];
|
||||
<%for(api in apiDocList){%>
|
||||
searchArr.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
api.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
|
||||
<%for (doc in api.list) {%>
|
||||
api[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
if ('${doc.desc}'.indexOf(search.value) > -1) {
|
||||
searchArr[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
}
|
||||
<%}%>
|
||||
<%}%>
|
||||
const searchResult = searchArr.filter(obj => obj.list.length > 0);
|
||||
if (searchResult.length > 0) {
|
||||
html = '';
|
||||
for (j = 0; j < searchResult.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="' + searchResult[j].alias + '.html#header">' + searchResult[j].order + '. ' + searchResult[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = searchResult[j].list;
|
||||
for (m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="' + searchResult[j].alias + '.html#_' + searchResult[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + searchResult[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
const searchValue = search.value;
|
||||
let searchArr = [];
|
||||
for (let i = 0; i < api.length; i++) {
|
||||
let apiData = api[i];
|
||||
const desc = apiData.desc;
|
||||
if (desc.indexOf(searchValue) > -1) {
|
||||
searchArr.push({
|
||||
order: apiData.order,
|
||||
desc: apiData.desc,
|
||||
link: apiData.link,
|
||||
alias: apiData.alias,
|
||||
list: apiData.list
|
||||
});
|
||||
} else {
|
||||
let methodList = apiData.list || [];
|
||||
let methodListTemp = [];
|
||||
for (let j = 0; j < methodList.length; j++) {
|
||||
const methodData = methodList[j];
|
||||
const methodDesc = methodData.desc;
|
||||
if (methodDesc.indexOf(searchValue) > -1) {
|
||||
methodListTemp.push(methodData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (methodListTemp.length > 0) {
|
||||
const data = {
|
||||
order: apiData.order,
|
||||
desc: apiData.desc,
|
||||
alias: apiData.alias,
|
||||
link: apiData.link,
|
||||
list: methodListTemp
|
||||
};
|
||||
searchArr.push(data);
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
}
|
||||
let html;
|
||||
if (searchValue == '') {
|
||||
html = buildAccordion(api);
|
||||
console.log(html);
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
} else {
|
||||
if (search.value == '') {
|
||||
html = '';
|
||||
for (j = 0; j < api.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="' + api[j].alias + '.html#header">' + api[j].order + '. ' + api[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = api[j].list;
|
||||
for (m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="' + api[j].alias + '.html#_' + searchResult[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + searchResult[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('accordion').innerHTML = '';
|
||||
html = buildAccordion(searchArr);
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
}
|
||||
const Accordion = function (el, multiple) {
|
||||
this.el = el || {};
|
||||
this.multiple = multiple || false;
|
||||
const links = this.el.find('.dd');
|
||||
links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown);
|
||||
};
|
||||
Accordion.prototype.dropdown = function (e) {
|
||||
const $el = e.data.el;
|
||||
$this = $(this), $next = $this.next();
|
||||
$next.slideToggle();
|
||||
$this.parent().toggleClass('open');
|
||||
if (!e.data.multiple) {
|
||||
$el.find('.submenu').not($next).slideUp("20").parent().removeClass('open');
|
||||
}
|
||||
};
|
||||
new Accordion($('#accordion'), false);
|
||||
}
|
||||
}
|
||||
|
||||
function buildAccordion(apiData) {
|
||||
let html = "";
|
||||
let doc;
|
||||
if (apiData.length > 0) {
|
||||
for (let j = 0; j < apiData.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="' + apiData[j].alias + '.html#header">' + apiData[j].order + '. ' + apiData[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = apiData[j].list;
|
||||
for (m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="' + apiData[j].alias + '.html#_' + apiData[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + apiData[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
}
|
||||
return html;
|
||||
}
|
|
@ -1,76 +1,102 @@
|
|||
let api = [];
|
||||
<%for(api in apiDocList){%>
|
||||
api.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
link: '${api.link}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
<%for(doc in api.list) {%>
|
||||
api[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
<%}%>
|
||||
<%}%>
|
||||
document.onkeydown = keyDownSearch;
|
||||
|
||||
function keyDownSearch(e) {
|
||||
let j;
|
||||
let m;
|
||||
let doc;
|
||||
let html;
|
||||
const theEvent = e || window.event;
|
||||
const code = theEvent.keyCode || theEvent.which || theEvent.charCode;
|
||||
if (code == 13) {
|
||||
const search = document.getElementById('search');
|
||||
const searchArr = [];
|
||||
<%for(api in apiDocList){%>
|
||||
searchArr.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
api.push({
|
||||
alias: '${api.alias}',
|
||||
order: '${api.order}',
|
||||
desc: '${api.desc}',
|
||||
list: []
|
||||
})
|
||||
|
||||
<%for (doc in api.list) {%>
|
||||
api[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
if ('${doc.desc}'.indexOf(search.value) > -1) {
|
||||
searchArr[${apiLP.dataIndex}].list.push({
|
||||
order: '${doc.order}',
|
||||
desc: '${doc.desc}',
|
||||
});
|
||||
}
|
||||
<%}%>
|
||||
<%}%>
|
||||
const searchResult = searchArr.filter(obj => obj.list.length > 0);
|
||||
if (searchResult.length > 0) {
|
||||
html = '';
|
||||
for (j = 0; j < searchResult.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="#_' + searchResult[j].desc + '">' + searchResult[j].order + '. ' + searchResult[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = searchResult[j].list;
|
||||
for (m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="#_' + searchResult[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + searchResult[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
const searchValue = search.value;
|
||||
let searchArr = [];
|
||||
for (let i = 0; i < api.length; i++) {
|
||||
let apiData = api[i];
|
||||
const desc = apiData.desc;
|
||||
if (desc.indexOf(searchValue) > -1) {
|
||||
searchArr.push({
|
||||
order: apiData.order,
|
||||
desc: apiData.desc,
|
||||
link: apiData.link,
|
||||
list: apiData.list
|
||||
});
|
||||
} else {
|
||||
let methodList = apiData.list || [];
|
||||
let methodListTemp = [];
|
||||
for (let j = 0; j < methodList.length; j++) {
|
||||
const methodData = methodList[j];
|
||||
const methodDesc = methodData.desc;
|
||||
if (methodDesc.indexOf(searchValue) > -1) {
|
||||
methodListTemp.push(methodData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (methodListTemp.length > 0) {
|
||||
const data = {
|
||||
order: apiData.order,
|
||||
desc: apiData.desc,
|
||||
link: apiData.link,
|
||||
list: methodListTemp
|
||||
};
|
||||
searchArr.push(data);
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
}
|
||||
let html;
|
||||
if (searchValue == '') {
|
||||
html = buildAccordion(api);
|
||||
console.log(html);
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
} else {
|
||||
if (search.value == '') {
|
||||
html = '';
|
||||
for (j = 0; j < api.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="#_' + api[j].desc + '">' + api[j].order + '. ' + api[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = api[j].list;
|
||||
for (m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="#_' + searchResult[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + searchResult[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
} else {
|
||||
document.getElementById('accordion').innerHTML = '';
|
||||
html = buildAccordion(searchArr);
|
||||
document.getElementById('accordion').innerHTML = html;
|
||||
}
|
||||
const Accordion = function (el, multiple) {
|
||||
this.el = el || {};
|
||||
this.multiple = multiple || false;
|
||||
const links = this.el.find('.dd');
|
||||
links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown);
|
||||
};
|
||||
Accordion.prototype.dropdown = function (e) {
|
||||
const $el = e.data.el;
|
||||
$this = $(this), $next = $this.next();
|
||||
$next.slideToggle();
|
||||
$this.parent().toggleClass('open');
|
||||
if (!e.data.multiple) {
|
||||
$el.find('.submenu').not($next).slideUp("20").parent().removeClass('open');
|
||||
}
|
||||
};
|
||||
new Accordion($('#accordion'), false);
|
||||
}
|
||||
}
|
||||
|
||||
function buildAccordion(apiData) {
|
||||
let html = "";
|
||||
let doc;
|
||||
if (apiData.length > 0) {
|
||||
for (let j = 0; j < apiData.length; j++) {
|
||||
html += '<li class="open">';
|
||||
html += ' <a class="dd" href="#_' + apiData[j].link + '">' + apiData[j].order + '. ' + apiData[j].desc + '</a>';
|
||||
html += ' <ul class="sectlevel2" style="display: block">';
|
||||
doc = apiData[j].list;
|
||||
for (let m = 0; m < doc.length; m++) {
|
||||
html += '<li><a href="#_' + apiData[j].order + '_' + doc[m].order + '_' + doc[m].desc + '">' + apiData[j].order + '.' + doc[m].order + '. ' + doc[m].desc + '</a> </li>';
|
||||
}
|
||||
html += '</ul>';
|
||||
html += '</li>';
|
||||
}
|
||||
}
|
||||
return html;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
body{margin:0;padding:0;height:auto;bottom:0;top:0;left:0;right:0;font-size:1rem;line-height:1.42857;overflow-x:hidden;background:inherit;tab-size:4}.margin-tb-zero,.markdown-body ol ol,.markdown-body ul ol,.markdown-body ol ul,.markdown-body ul ul,.markdown-body ol ul ol,.markdown-body ul ul ol,.markdown-body ol ul ul,.markdown-body ul ul ul{margin-top:0;margin-bottom:0}.markdown-body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;color:#333;line-height:1.6;word-wrap:break-word;padding:45px;background:#fff;#border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;#max-width:55%;#margin-left:15%;border-radius:0 0 3px 3px;max-width:800px;margin:0 auto;padding:30px 30px 100px}.markdown-body>*:first-child{margin-top:0!important}.markdown-body>*:last-child{margin-bottom:0!important}.markdown-body *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1em;margin-bottom:16px;font-weight:bold;line-height:1.4}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin-top:0;margin-bottom:16px}.markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom:1px solid #eee}.markdown-body h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom:1px solid #eee}.markdown-body h3{font-size:1.5em;line-height:1.43}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ul,.markdown-body ul ul{list-style-type:circle}.markdown-body ol ul ul,.markdown-body ul ul ul{list-style-type:square}.markdown-body ol{list-style-type:decimal}.markdown-body ul{list-style-type:disc}.markdown-body blockquote{margin-left:0;margin-right:0;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body table{#display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all;border-collapse:collapse;border-spacing:0;text-align:left}thead{background-color:#f8f8f8}.markdown-body table tr{#background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid #ddd}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;-webkit-border-radius:3px;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;font-size:100%;line-height:inherit;word-wrap:normal;white-space:pre;border:0;-webkit-border-radius:3px;border-radius:3px;background-color:transparent}.markdown-body pre code:before,.markdown-body pre code:after{content:normal}.markdown-body code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,0.04);-webkit-border-radius:3px;border-radius:3px}.markdown-body code:before,.markdown-body code:after{letter-spacing:-0.2em;content:"\00a0"}.markdown-body a{color:#4078c0;text-decoration:none;background:transparent}.markdown-body img{max-width:100%;max-height:100%;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 0 10px #555;box-shadow:0 0 10px #555}.markdown-body strong{font-weight:bold}.markdown-body em{font-style:italic}.markdown-body del{text-decoration:line-through}.task-list-item{list-style-type:none}.task-list-item input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";margin:0 .35em .25em -1.6em;vertical-align:middle}.task-list-item input[disabled]{cursor:default}.task-list-item input[type="checkbox"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.task-list-item input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body .page-footer{margin-top:45px;height:50px;border-top:1px solid #ccc;overflow:hidden;padding:10px 0;font-size:14px;color:gray}.markdown-body .footer-modification{float:right}.markdown-body .footer-modification a{text-decoration:none}
|
|
@ -8,7 +8,7 @@
|
|||
<link rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
|
||||
<link rel="stylesheet" href="AllInOne.css?v=${version}"/>
|
||||
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header"><%if(isNotEmpty(projectName)){%><h1>${projectName}</h1><%}%>
|
||||
|
|
Loading…
Reference in New Issue