mirror of
https://github.com/OpenBankProject/API-Explorer-II.git
synced 2026-02-06 10:47:04 +00:00
REFACTOR: url path and external links
This commit is contained in:
parent
c4fbed1dc3
commit
da3cbeedc6
@ -5,11 +5,10 @@
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>API Explorer</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/highlightjs-line-numbers.js@2.8.0/dist/highlightjs-line-numbers.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlightjs-themes@1.0.0/androidstudio.css"/>
|
||||
<link rel="stylesheet" href="/styles/default.min.css">
|
||||
<link rel="stylesheet" href="/styles/androidstudio.min.css">
|
||||
<script src="/js/highlight.min.js"></script>
|
||||
<script src="/js/highlightjs-line-numbers.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.1.0",
|
||||
"@fontsource/roboto": "^4.5.8",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"class-transformer": "^0.5.1",
|
||||
"class-validator": "^0.14.0",
|
||||
|
||||
1361
public/js/highlight.min.js
vendored
Normal file
1361
public/js/highlight.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/js/highlightjs-line-numbers.min.js
vendored
Normal file
1
public/js/highlightjs-line-numbers.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(r,o){"use strict";var e,i="hljs-ln",l="hljs-ln-line",h="hljs-ln-code",s="hljs-ln-numbers",c="hljs-ln-n",m="data-line-number",a=/\r\n|\r|\n/g;function u(e){for(var n=e.toString(),t=e.anchorNode;"TD"!==t.nodeName;)t=t.parentNode;for(var r=e.focusNode;"TD"!==r.nodeName;)r=r.parentNode;var o=parseInt(t.dataset.lineNumber),a=parseInt(r.dataset.lineNumber);if(o==a)return n;var i,l=t.textContent,s=r.textContent;for(a<o&&(i=o,o=a,a=i,i=l,l=s,s=i);0!==n.indexOf(l);)l=l.slice(1);for(;-1===n.lastIndexOf(s);)s=s.slice(0,-1);for(var c=l,u=function(e){for(var n=e;"TABLE"!==n.nodeName;)n=n.parentNode;return n}(t),d=o+1;d<a;++d){var f=p('.{0}[{1}="{2}"]',[h,m,d]);c+="\n"+u.querySelector(f).textContent}return c+="\n"+s}function n(e){try{var n=o.querySelectorAll("code.hljs,code.nohighlight");for(var t in n)n.hasOwnProperty(t)&&(n[t].classList.contains("nohljsln")||d(n[t],e))}catch(e){r.console.error("LineNumbers error: ",e)}}function d(e,n){"object"==typeof e&&r.setTimeout(function(){e.innerHTML=f(e,n)},0)}function f(e,n){var t,r,o=(t=e,{singleLine:function(e){return!!e.singleLine&&e.singleLine}(r=(r=n)||{}),startFrom:function(e,n){var t=1;isFinite(n.startFrom)&&(t=n.startFrom);var r=function(e,n){return e.hasAttribute(n)?e.getAttribute(n):null}(e,"data-ln-start-from");return null!==r&&(t=function(e,n){if(!e)return n;var t=Number(e);return isFinite(t)?t:n}(r,1)),t}(t,r)});return function e(n){var t=n.childNodes;for(var r in t){var o;t.hasOwnProperty(r)&&(o=t[r],0<(o.textContent.trim().match(a)||[]).length&&(0<o.childNodes.length?e(o):v(o.parentNode)))}}(e),function(e,n){var t=g(e);""===t[t.length-1].trim()&&t.pop();if(1<t.length||n.singleLine){for(var r="",o=0,a=t.length;o<a;o++)r+=p('<tr><td class="{0} {1}" {3}="{5}"><div class="{2}" {3}="{5}"></div></td><td class="{0} {4}" {3}="{5}">{6}</td></tr>',[l,s,c,m,h,o+n.startFrom,0<t[o].length?t[o]:" "]);return p('<table class="{0}">{1}</table>',[i,r])}return e}(e.innerHTML,o)}function v(e){var n=e.className;if(/hljs-/.test(n)){for(var t=g(e.innerHTML),r=0,o="";r<t.length;r++){o+=p('<span class="{0}">{1}</span>\n',[n,0<t[r].length?t[r]:" "])}e.innerHTML=o.trim()}}function g(e){return 0===e.length?[]:e.split(a)}function p(e,t){return e.replace(/\{(\d+)\}/g,function(e,n){return void 0!==t[n]?t[n]:e})}r.hljs?(r.hljs.initLineNumbersOnLoad=function(e){"interactive"===o.readyState||"complete"===o.readyState?n(e):r.addEventListener("DOMContentLoaded",function(){n(e)})},r.hljs.lineNumbersBlock=d,r.hljs.lineNumbersValue=function(e,n){if("string"!=typeof e)return;var t=document.createElement("code");return t.innerHTML=e,f(t,n)},(e=o.createElement("style")).type="text/css",e.innerHTML=p(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[i,c,m]),o.getElementsByTagName("head")[0].appendChild(e)):r.console.error("highlight.js not detected!"),document.addEventListener("copy",function(e){var n,t=window.getSelection();!function(e){for(var n=e;n;){if(n.className&&-1!==n.className.indexOf("hljs-ln-code"))return 1;n=n.parentNode}}(t.anchorNode)||(n=-1!==window.navigator.userAgent.indexOf("Edge")?u(t):t.toString(),e.clipboardData.setData("text/plain",n),e.preventDefault())})}(window,document);
|
||||
1
public/styles/androidstudio.min.css
vendored
Normal file
1
public/styles/androidstudio.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#282b2e}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#6897bb}.hljs-deletion,.hljs-keyword,.hljs-selector-tag{color:#cc7832}.hljs-link,.hljs-template-variable,.hljs-variable{color:#629755}.hljs-comment,.hljs-quote{color:grey}.hljs-meta{color:#bbb529}.hljs-addition,.hljs-attribute,.hljs-string{color:#6a8759}.hljs-section,.hljs-title,.hljs-type{color:#ffc66d}.hljs-name,.hljs-selector-class,.hljs-selector-id{color:#e8bf6a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|
||||
9
public/styles/default.min.css
vendored
Normal file
9
public/styles/default.min.css
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/*!
|
||||
Theme: Default
|
||||
Description: Original highlight.js style
|
||||
Author: (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
|
||||
Maintainer: @highlightjs/core-team
|
||||
Website: https://highlightjs.org/
|
||||
License: see project LICENSE
|
||||
Touched: 2021
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f3f3f3;color:#444}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|
||||
@ -40,7 +40,7 @@ watchEffect(() => {
|
||||
>
|
||||
{{ $t('header.portal_home') }}
|
||||
</a>
|
||||
<RouterLink class="router-link" id="header-nav-tags" to="/tags">{{
|
||||
<RouterLink class="router-link" id="header-nav-tags" to="/operationid">{{
|
||||
$t('header.api_explorer')
|
||||
}}</RouterLink>
|
||||
<RouterLink class="router-link" id="header-nav-glossary" to="/glossary">{{
|
||||
|
||||
@ -20,14 +20,20 @@ onBeforeMount(() => {
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
let element
|
||||
const elements = document.getElementsByClassName('api-router-link')
|
||||
const id = route.params.id
|
||||
for (const element of elements) {
|
||||
if (element.id === id) {
|
||||
element.click()
|
||||
for (const el of elements) {
|
||||
if (el.id === id) {
|
||||
element = el
|
||||
break
|
||||
}
|
||||
}
|
||||
if (element) {
|
||||
element.click()
|
||||
} else {
|
||||
elements.item(0).click()
|
||||
}
|
||||
})
|
||||
|
||||
const sortLinks = (items: any) => {
|
||||
|
||||
@ -10,17 +10,20 @@ import { getOBPResourceDocs, getGroupedResourceDocs } from './obp/resource-docs'
|
||||
|
||||
import 'element-plus/dist/index.css'
|
||||
import './assets/main.css'
|
||||
import '@fontsource/roboto/300.css'
|
||||
import '@fontsource/roboto/400.css'
|
||||
import '@fontsource/roboto/700.css'
|
||||
;(async () => {
|
||||
const app = createApp(App)
|
||||
|
||||
const cache = await caches.open('obp-resource-docs-cache')
|
||||
const response = await cache.match('/tags')
|
||||
const response = await cache.match('/operationid')
|
||||
let docs
|
||||
if (response) {
|
||||
docs = await response.json()
|
||||
} else {
|
||||
docs = await getOBPResourceDocs()
|
||||
await cache.put('/tags', new Response(JSON.stringify(docs)))
|
||||
await cache.put('/operationid', new Response(JSON.stringify(docs)))
|
||||
}
|
||||
const groupedDocs = await getGroupedResourceDocs(docs)
|
||||
app.provide('OBP-ResourceDocs', docs)
|
||||
|
||||
@ -12,7 +12,7 @@ const router = createRouter({
|
||||
routes: [
|
||||
{
|
||||
path: '/',
|
||||
redirect: '/tags'
|
||||
redirect: '/operationid'
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
@ -25,13 +25,13 @@ const router = createRouter({
|
||||
component: GlossaryView
|
||||
},
|
||||
{
|
||||
path: '/tags',
|
||||
name: 'tags',
|
||||
path: '/operationid',
|
||||
name: 'operationid',
|
||||
component: BodyView
|
||||
},
|
||||
{
|
||||
path: '/tags/:id',
|
||||
name: 'tags-path',
|
||||
path: '/operationid/:id',
|
||||
name: 'operationid-path',
|
||||
component: BodyView,
|
||||
children: [
|
||||
{
|
||||
|
||||
@ -24,10 +24,10 @@ import Menu from '../components/Menu.vue'
|
||||
<RouterView class="preview" name="preview" />
|
||||
</el-aside>
|
||||
</el-container>
|
||||
<el-footer>
|
||||
<!--Bottom -->
|
||||
Footer
|
||||
</el-footer>
|
||||
<!--<el-footer> -->
|
||||
<!--Bottom -->
|
||||
<!--Footer
|
||||
</el-footer>-->
|
||||
</el-container>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
||||
@ -3,3 +3,16 @@
|
||||
<template>
|
||||
<main>Glossary</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
main {
|
||||
margin-top: -60px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #39455f;
|
||||
font-family: 'Roboto';
|
||||
font-size: 30px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -3,3 +3,16 @@
|
||||
<template>
|
||||
<main>404 | Page Not Found</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
main {
|
||||
margin-top: -60px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #39455f;
|
||||
font-family: 'Roboto';
|
||||
font-size: 30px;
|
||||
}
|
||||
</style>
|
||||
|
||||
15
tsconfig.server.json
Normal file
15
tsconfig.server.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"esModuleInterop": true,
|
||||
"target": "ES6",
|
||||
"outDir": "server-dist",
|
||||
"rootDir": "server",
|
||||
"resolveJsonModule": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"allowJs": true,
|
||||
},
|
||||
"exclude": ["src"],
|
||||
"include": ["server"]
|
||||
}
|
||||
@ -475,6 +475,11 @@
|
||||
dependencies:
|
||||
"@floating-ui/core" "^1.2.6"
|
||||
|
||||
"@fontsource/roboto@^4.5.8":
|
||||
version "4.5.8"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-4.5.8.tgz#56347764786079838faf43f0eeda22dd7328437f"
|
||||
integrity sha512-CnD7zLItIzt86q4Sj3kZUiLcBk1dSk81qcqgMGaZe7SQ1P8hFNxhMl5AZthK1zrDM5m74VVhaOpuMGIL4gagaA==
|
||||
|
||||
"@highlightjs/vue-plugin@^2.1.0":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz#b7c41e3597a46975665b10cad57882cbde1d1594"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user