fastapi-voyager 0.15.0__py3-none-any.whl → 0.15.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastapi_voyager/er_diagram.py +57 -109
- fastapi_voyager/render.py +12 -2
- fastapi_voyager/server.py +1 -0
- fastapi_voyager/templates/dot/er_diagram.j2 +29 -0
- fastapi_voyager/version.py +1 -1
- fastapi_voyager/web/component/demo.js +5 -5
- fastapi_voyager/web/component/render-graph.js +60 -61
- fastapi_voyager/web/component/route-code-display.js +35 -37
- fastapi_voyager/web/component/schema-code-display.js +50 -53
- fastapi_voyager/web/graph-ui.js +90 -101
- fastapi_voyager/web/graphviz.svg.css +10 -10
- fastapi_voyager/web/graphviz.svg.js +306 -316
- fastapi_voyager/web/icon/site.webmanifest +11 -1
- fastapi_voyager/web/index.html +263 -110
- fastapi_voyager/web/store.js +109 -111
- fastapi_voyager/web/vue-main.js +329 -263
- {fastapi_voyager-0.15.0.dist-info → fastapi_voyager-0.15.2.dist-info}/METADATA +16 -4
- {fastapi_voyager-0.15.0.dist-info → fastapi_voyager-0.15.2.dist-info}/RECORD +21 -20
- {fastapi_voyager-0.15.0.dist-info → fastapi_voyager-0.15.2.dist-info}/WHEEL +0 -0
- {fastapi_voyager-0.15.0.dist-info → fastapi_voyager-0.15.2.dist-info}/entry_points.txt +0 -0
- {fastapi_voyager-0.15.0.dist-info → fastapi_voyager-0.15.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1 +1,11 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "",
|
|
3
|
+
"short_name": "",
|
|
4
|
+
"icons": [
|
|
5
|
+
{ "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
|
|
6
|
+
{ "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
|
|
7
|
+
],
|
|
8
|
+
"theme_color": "#ffffff",
|
|
9
|
+
"background_color": "#ffffff",
|
|
10
|
+
"display": "standalone"
|
|
11
|
+
}
|
fastapi_voyager/web/index.html
CHANGED
|
@@ -22,11 +22,7 @@
|
|
|
22
22
|
sizes="16x16"
|
|
23
23
|
href="fastapi-voyager-static/icon/favicon-16x16.png"
|
|
24
24
|
/>
|
|
25
|
-
<link
|
|
26
|
-
rel="icon"
|
|
27
|
-
href="fastapi-voyager-static/icon/favicon.ico"
|
|
28
|
-
sizes="any"
|
|
29
|
-
/>
|
|
25
|
+
<link rel="icon" href="fastapi-voyager-static/icon/favicon.ico" sizes="any" />
|
|
30
26
|
<link rel="manifest" href="fastapi-voyager-static/icon/site.webmanifest" />
|
|
31
27
|
<link
|
|
32
28
|
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
|
|
@@ -64,18 +60,70 @@
|
|
|
64
60
|
|
|
65
61
|
.inherit-flow {
|
|
66
62
|
/* stroke-width:2; */
|
|
67
|
-
stroke-dasharray: 8 6;
|
|
63
|
+
stroke-dasharray: 8 6; /* dash pattern */
|
|
68
64
|
stroke-linecap: round;
|
|
69
65
|
animation: dash 2s linear infinite;
|
|
70
66
|
animation-direction: reverse;
|
|
71
67
|
}
|
|
72
|
-
@keyframes dash {
|
|
68
|
+
@keyframes dash {
|
|
69
|
+
to {
|
|
70
|
+
stroke-dashoffset: -14;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
73
|
|
|
74
74
|
.adjust-fit {
|
|
75
75
|
height: calc(100vh - 54px);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
.github-corner:hover .octo-arm
|
|
78
|
+
.github-corner:hover .octo-arm {
|
|
79
|
+
animation: octocat-wave 560ms ease-in-out;
|
|
80
|
+
}
|
|
81
|
+
@keyframes octocat-wave {
|
|
82
|
+
0%,
|
|
83
|
+
100% {
|
|
84
|
+
transform: rotate(0);
|
|
85
|
+
}
|
|
86
|
+
20%,
|
|
87
|
+
60% {
|
|
88
|
+
transform: rotate(-25deg);
|
|
89
|
+
}
|
|
90
|
+
40%,
|
|
91
|
+
80% {
|
|
92
|
+
transform: rotate(10deg);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
@media (max-width: 500px) {
|
|
96
|
+
.github-corner:hover .octo-arm {
|
|
97
|
+
animation: none;
|
|
98
|
+
}
|
|
99
|
+
.github-corner .octo-arm {
|
|
100
|
+
animation: octocat-wave 560ms ease-in-out;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Tag Navigator Collapse Button */
|
|
105
|
+
.tag-navigator-collapse-btn-right {
|
|
106
|
+
position: absolute;
|
|
107
|
+
bottom: 8px;
|
|
108
|
+
left: 8px;
|
|
109
|
+
width: 32px;
|
|
110
|
+
height: 32px;
|
|
111
|
+
border-radius: 50%;
|
|
112
|
+
background: #009485;
|
|
113
|
+
color: white;
|
|
114
|
+
border: 2px solid white;
|
|
115
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
116
|
+
cursor: pointer;
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
z-index: 100;
|
|
121
|
+
transition: all 0.2s ease;
|
|
122
|
+
}
|
|
123
|
+
.tag-navigator-collapse-btn-right:hover {
|
|
124
|
+
background: #007a6d;
|
|
125
|
+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
|
|
126
|
+
}
|
|
79
127
|
|
|
80
128
|
/* App boot loading overlay & gating */
|
|
81
129
|
#app-loading-overlay {
|
|
@@ -87,10 +135,19 @@
|
|
|
87
135
|
gap: 12px;
|
|
88
136
|
background: #ffffff;
|
|
89
137
|
z-index: 9999;
|
|
90
|
-
font-family:
|
|
138
|
+
font-family:
|
|
139
|
+
-apple-system,
|
|
140
|
+
BlinkMacSystemFont,
|
|
141
|
+
Segoe UI,
|
|
142
|
+
Roboto,
|
|
143
|
+
Helvetica,
|
|
144
|
+
Arial,
|
|
145
|
+
sans-serif;
|
|
91
146
|
color: #009485;
|
|
92
147
|
}
|
|
93
|
-
.loading-text {
|
|
148
|
+
.loading-text {
|
|
149
|
+
font-size: 14px;
|
|
150
|
+
}
|
|
94
151
|
.spinner {
|
|
95
152
|
width: 20px;
|
|
96
153
|
height: 20px;
|
|
@@ -99,10 +156,18 @@
|
|
|
99
156
|
border-radius: 50%;
|
|
100
157
|
animation: frv-spin 0.8s linear infinite;
|
|
101
158
|
}
|
|
102
|
-
@keyframes frv-spin {
|
|
159
|
+
@keyframes frv-spin {
|
|
160
|
+
to {
|
|
161
|
+
transform: rotate(360deg);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
103
164
|
/* While JS not ready: hide app, show overlay */
|
|
104
|
-
body.app-loading #q-app {
|
|
105
|
-
|
|
165
|
+
body.app-loading #q-app {
|
|
166
|
+
visibility: hidden;
|
|
167
|
+
}
|
|
168
|
+
body.app-loading #app-loading-overlay {
|
|
169
|
+
display: flex;
|
|
170
|
+
}
|
|
106
171
|
</style>
|
|
107
172
|
<body class="app-loading">
|
|
108
173
|
<!-- App boot loading overlay: shown until JS initializes -->
|
|
@@ -113,14 +178,21 @@
|
|
|
113
178
|
<div id="q-app">
|
|
114
179
|
<q-layout view="hHh lpR fff">
|
|
115
180
|
<q-header bordered class="bg-primary text-white">
|
|
116
|
-
<q-toolbar
|
|
181
|
+
<q-toolbar
|
|
182
|
+
class="row text-grey-9 bg-white"
|
|
183
|
+
style="width: 100%; border-bottom: 2px solid #009485"
|
|
184
|
+
>
|
|
117
185
|
<div
|
|
118
186
|
class="col-auto text-primary"
|
|
119
|
-
style="font-size: 18px; font-weight: bold; display: flex; align-items: baseline
|
|
187
|
+
style="font-size: 18px; font-weight: bold; display: flex; align-items: baseline"
|
|
120
188
|
>
|
|
121
189
|
<q-icon class="q-mr-sm" name="satellite_alt"></q-icon>
|
|
122
190
|
<span> FastAPI Voyager </span>
|
|
123
|
-
<span
|
|
191
|
+
<span
|
|
192
|
+
v-if="store.state.version"
|
|
193
|
+
style="font-size: 12px; margin-left: 8px; font-weight: normal"
|
|
194
|
+
>{{ store.state.version }}</span
|
|
195
|
+
>
|
|
124
196
|
</div>
|
|
125
197
|
<div class="col-auto">
|
|
126
198
|
<q-btn
|
|
@@ -145,8 +217,7 @@
|
|
|
145
217
|
dense
|
|
146
218
|
/>
|
|
147
219
|
</div>
|
|
148
|
-
<div class="col-auto q-ml-auto">
|
|
149
|
-
</div>
|
|
220
|
+
<div class="col-auto q-ml-auto"></div>
|
|
150
221
|
<div class="col-auto row items-center q-gutter-sm">
|
|
151
222
|
<q-select
|
|
152
223
|
v-show="!store.state.search.invisible"
|
|
@@ -162,23 +233,23 @@
|
|
|
162
233
|
option-value="value"
|
|
163
234
|
emit-value
|
|
164
235
|
map-options
|
|
165
|
-
style="min-width: 320px
|
|
236
|
+
style="min-width: 320px"
|
|
166
237
|
clearable
|
|
167
238
|
label="Select schema"
|
|
168
239
|
@update:model-value="onSearchSchemaChange"
|
|
169
240
|
@filter="filterSearchSchemas"
|
|
170
241
|
@clear="resetSearch"
|
|
171
242
|
>
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
243
|
+
<template v-slot:option="scope">
|
|
244
|
+
<q-item v-bind="scope.itemProps">
|
|
245
|
+
<q-item-section>
|
|
246
|
+
<q-item-label>{{ scope.opt.label }}</q-item-label>
|
|
247
|
+
<q-item-label caption>{{ scope.opt.desc }}</q-item-label>
|
|
248
|
+
</q-item-section>
|
|
249
|
+
</q-item>
|
|
250
|
+
</template>
|
|
251
|
+
</q-select>
|
|
252
|
+
|
|
182
253
|
<q-select
|
|
183
254
|
v-show="!store.state.search.invisible"
|
|
184
255
|
dense
|
|
@@ -213,29 +284,52 @@
|
|
|
213
284
|
aria-label="Help"
|
|
214
285
|
style="margin-right: 50px; margin-left: 20px"
|
|
215
286
|
>
|
|
216
|
-
<q-tooltip
|
|
217
|
-
anchor="bottom middle"
|
|
218
|
-
self="top middle"
|
|
219
|
-
:offset="[0,8]"
|
|
220
|
-
>
|
|
287
|
+
<q-tooltip anchor="bottom middle" self="top middle" :offset="[0,8]">
|
|
221
288
|
<div
|
|
222
289
|
class="column items-start text-left"
|
|
223
290
|
style="line-height: 1.4; font-size: 12px"
|
|
224
291
|
>
|
|
225
292
|
<ul>
|
|
226
293
|
<li>scroll to zoom in/out</li>
|
|
227
|
-
<li>
|
|
228
|
-
|
|
229
|
-
</li>
|
|
230
|
-
<li>
|
|
231
|
-
shift + click to search the schema and highlight related nodes.
|
|
232
|
-
</li>
|
|
294
|
+
<li>double click node to view details.</li>
|
|
295
|
+
<li>shift + click to search the schema and highlight related nodes.</li>
|
|
233
296
|
</ul>
|
|
234
297
|
</div>
|
|
235
298
|
</q-tooltip>
|
|
236
299
|
</q-btn>
|
|
237
|
-
|
|
238
|
-
|
|
300
|
+
<a
|
|
301
|
+
href="https://github.com/allmonday/fastapi-voyager"
|
|
302
|
+
target="_blank"
|
|
303
|
+
class="github-corner"
|
|
304
|
+
aria-label="View source on GitHub"
|
|
305
|
+
><svg
|
|
306
|
+
width="52"
|
|
307
|
+
height="52"
|
|
308
|
+
viewBox="0 0 250 250"
|
|
309
|
+
style="
|
|
310
|
+
fill: #009485;
|
|
311
|
+
color: #fff;
|
|
312
|
+
position: absolute;
|
|
313
|
+
top: 0;
|
|
314
|
+
border: 0;
|
|
315
|
+
right: 0;
|
|
316
|
+
"
|
|
317
|
+
aria-hidden="true"
|
|
318
|
+
>
|
|
319
|
+
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
|
|
320
|
+
<path
|
|
321
|
+
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
|
|
322
|
+
fill="currentColor"
|
|
323
|
+
style="transform-origin: 130px 106px"
|
|
324
|
+
class="octo-arm"
|
|
325
|
+
/>
|
|
326
|
+
<path
|
|
327
|
+
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
|
|
328
|
+
fill="currentColor"
|
|
329
|
+
class="octo-body"
|
|
330
|
+
/></svg
|
|
331
|
+
></a>
|
|
332
|
+
</div>
|
|
239
333
|
</q-toolbar>
|
|
240
334
|
</q-header>
|
|
241
335
|
|
|
@@ -243,25 +337,25 @@
|
|
|
243
337
|
v-model="store.state.rightDrawer.drawer"
|
|
244
338
|
:width="store.state.rightDrawer.width"
|
|
245
339
|
side="right"
|
|
246
|
-
style="border-left: 1px solid #888
|
|
340
|
+
style="border-left: 1px solid #888"
|
|
247
341
|
bordered
|
|
248
342
|
overlay
|
|
249
343
|
>
|
|
250
|
-
<div
|
|
344
|
+
<div
|
|
251
345
|
@mousedown="startDragDrawer"
|
|
252
346
|
style="
|
|
253
|
-
position: absolute;
|
|
254
|
-
left: -3px;
|
|
255
|
-
top: 0;
|
|
256
|
-
width: 6px;
|
|
257
|
-
height: 100%;
|
|
258
|
-
cursor: col-resize;
|
|
347
|
+
position: absolute;
|
|
348
|
+
left: -3px;
|
|
349
|
+
top: 0;
|
|
350
|
+
width: 6px;
|
|
351
|
+
height: 100%;
|
|
352
|
+
cursor: col-resize;
|
|
259
353
|
background: transparent;
|
|
260
354
|
z-index: 10;
|
|
261
355
|
"
|
|
262
356
|
title="drag to resize"
|
|
263
357
|
></div>
|
|
264
|
-
|
|
358
|
+
|
|
265
359
|
<div style="z-index: 11; position: absolute; left: -17px; top: 9px">
|
|
266
360
|
<q-btn
|
|
267
361
|
@click="store.state.rightDrawer.drawer = !store.state.rightDrawer.drawer"
|
|
@@ -282,7 +376,7 @@
|
|
|
282
376
|
<q-splitter
|
|
283
377
|
v-model="store.state.leftPanel.width"
|
|
284
378
|
unit="px"
|
|
285
|
-
:limits="store.state.mode === 'voyager' ? [
|
|
379
|
+
:limits="store.state.mode === 'voyager' ? [0, 800] : [0, 0]"
|
|
286
380
|
class="adjust-fit"
|
|
287
381
|
>
|
|
288
382
|
<template #before>
|
|
@@ -310,60 +404,92 @@
|
|
|
310
404
|
>
|
|
311
405
|
<template #header>
|
|
312
406
|
<div class="" style="white-space: nowrap; width: 100%">
|
|
407
|
+
<q-icon
|
|
408
|
+
style="vertical-align: top"
|
|
409
|
+
class="q-mr-sm"
|
|
410
|
+
:name="store.state.leftPanel.tag == tag.name ? 'folder' : 'folder_open'"
|
|
411
|
+
></q-icon>
|
|
412
|
+
<span
|
|
413
|
+
>{{ tag.name }}
|
|
414
|
+
<q-chip style="position: relative; top: -1px" class="q-ml-md" dense
|
|
415
|
+
>{{ tag.routes.length }}</q-chip
|
|
416
|
+
></span
|
|
417
|
+
>
|
|
418
|
+
<a
|
|
419
|
+
v-if="store.state.leftPanel._tag == tag.name"
|
|
420
|
+
target="_blank"
|
|
421
|
+
class="q-ml-sm"
|
|
422
|
+
v-if="store.state.swagger.url"
|
|
423
|
+
:href="store.state.swagger.url + '#/' + tag.name"
|
|
424
|
+
>
|
|
313
425
|
<q-icon
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
426
|
+
color="primary"
|
|
427
|
+
size=""
|
|
428
|
+
name="link"
|
|
429
|
+
title="open in swagger"
|
|
317
430
|
></q-icon>
|
|
318
|
-
|
|
319
|
-
<a v-if="store.state.leftPanel._tag == tag.name" target="_blank" class="q-ml-sm" v-if="store.state.swagger.url" :href="store.state.swagger.url + '#/' + tag.name">
|
|
320
|
-
<q-icon color="primary" size="" name="link" title="open in swagger"></q-icon>
|
|
321
|
-
</a>
|
|
431
|
+
</a>
|
|
322
432
|
</div>
|
|
323
433
|
</template>
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
434
|
+
<q-list separator style="overflow: auto; max-height: 60vh">
|
|
435
|
+
<q-item
|
|
436
|
+
v-for="route in (store.state.filter.hidePrimitiveRoute ? tag.routes.filter(r => !r.is_primitive) :tag.routes || [])"
|
|
437
|
+
:key="route.id"
|
|
438
|
+
clickable
|
|
439
|
+
v-ripple
|
|
440
|
+
:active="store.state.leftPanel.routeId === route.id"
|
|
441
|
+
active-class=""
|
|
442
|
+
@click="selectRoute(route.id)"
|
|
443
|
+
>
|
|
444
|
+
<q-item-section>
|
|
445
|
+
<span class="q-ml-lg" style="white-space: nowrap">
|
|
446
|
+
<q-icon class="q-mr-sm" name="data_object"></q-icon>
|
|
447
|
+
{{ route.name }}
|
|
448
|
+
<a
|
|
449
|
+
v-if="store.state.leftPanel.routeId == route.id"
|
|
450
|
+
target="_blank"
|
|
451
|
+
class="q-ml-md"
|
|
452
|
+
v-if="store.state.swagger.url"
|
|
453
|
+
:href="store.state.swagger.url + '#/' + tag.name + '/' + route.unique_id"
|
|
454
|
+
>
|
|
336
455
|
<q-icon
|
|
337
|
-
|
|
338
|
-
|
|
456
|
+
color="primary"
|
|
457
|
+
size=""
|
|
458
|
+
name="link"
|
|
459
|
+
title="open in swagger"
|
|
339
460
|
></q-icon>
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
v-if="!tag.routes || tag.routes.length === 0"
|
|
349
|
-
dense
|
|
350
|
-
>
|
|
351
|
-
<q-item-section class="text-grey-6"
|
|
352
|
-
>No routes</q-item-section
|
|
353
|
-
>
|
|
354
|
-
</q-item>
|
|
355
|
-
</q-list>
|
|
356
|
-
</q-scroll-area>
|
|
461
|
+
</a>
|
|
462
|
+
</span>
|
|
463
|
+
</q-item-section>
|
|
464
|
+
</q-item>
|
|
465
|
+
<q-item v-if="!tag.routes || tag.routes.length === 0" dense>
|
|
466
|
+
<q-item-section class="text-grey-6">No routes</q-item-section>
|
|
467
|
+
</q-item>
|
|
468
|
+
</q-list>
|
|
357
469
|
</q-expansion-item>
|
|
358
470
|
</q-list>
|
|
471
|
+
</q-scroll-area>
|
|
359
472
|
</div>
|
|
360
473
|
</template>
|
|
361
474
|
|
|
362
475
|
<template #after>
|
|
363
|
-
<div style="position: relative; width: 100%; height: 100
|
|
476
|
+
<div style="position: relative; width: 100%; height: 100%">
|
|
364
477
|
<div id="graph" class="adjust-fit"></div>
|
|
365
|
-
<div
|
|
366
|
-
|
|
478
|
+
<div
|
|
479
|
+
style="
|
|
480
|
+
position: absolute;
|
|
481
|
+
left: 8px;
|
|
482
|
+
top: 8px;
|
|
483
|
+
z-index: 10;
|
|
484
|
+
background: rgba(255, 255, 255, 0.85);
|
|
485
|
+
border-radius: 4px;
|
|
486
|
+
padding: 2px 8px;
|
|
487
|
+
"
|
|
488
|
+
>
|
|
489
|
+
<div
|
|
490
|
+
class="q-mt-sm"
|
|
491
|
+
v-if="store.state.modeControl.briefModeEnabled && store.state.search.mode === false && store.state.mode === 'voyager'"
|
|
492
|
+
>
|
|
367
493
|
<q-toggle
|
|
368
494
|
v-if="store.state.modeControl.briefModeEnabled"
|
|
369
495
|
dense
|
|
@@ -373,7 +499,10 @@
|
|
|
373
499
|
title="skip middle classes, config module_prefix to enable it"
|
|
374
500
|
/>
|
|
375
501
|
</div>
|
|
376
|
-
<div
|
|
502
|
+
<div
|
|
503
|
+
class="q-mt-sm"
|
|
504
|
+
v-if="store.state.search.mode === false && store.state.mode === 'voyager'"
|
|
505
|
+
>
|
|
377
506
|
<q-toggle
|
|
378
507
|
v-model="store.state.filter.hidePrimitiveRoute"
|
|
379
508
|
@update:model-value="(val) => toggleHidePrimitiveRoute(val)"
|
|
@@ -391,7 +520,10 @@
|
|
|
391
520
|
title="show module cluster"
|
|
392
521
|
/>
|
|
393
522
|
</div>
|
|
394
|
-
<div
|
|
523
|
+
<div
|
|
524
|
+
class="q-mt-sm"
|
|
525
|
+
v-if="store.state.mode == 'voyager' && store.state.config.enable_pydantic_resolve_meta"
|
|
526
|
+
>
|
|
395
527
|
<q-toggle
|
|
396
528
|
v-model="store.state.modeControl.pydanticResolveMetaEnabled"
|
|
397
529
|
@update:model-value="(val) => togglePydanticResolveMeta(val)"
|
|
@@ -400,6 +532,20 @@
|
|
|
400
532
|
title="show fields with pydantic resolve/post/expose/collector info"
|
|
401
533
|
/>
|
|
402
534
|
</div>
|
|
535
|
+
</div>
|
|
536
|
+
|
|
537
|
+
<!-- Collapse toggle button for tag navigator - at bottom-left of right panel -->
|
|
538
|
+
<div
|
|
539
|
+
v-show="store.state.mode === 'voyager'"
|
|
540
|
+
class="tag-navigator-collapse-btn-right"
|
|
541
|
+
@click="toggleTagNavigatorCollapse"
|
|
542
|
+
:title="store.state.leftPanel.collapsed ? 'Expand tag navigator' : 'Collapse tag navigator'"
|
|
543
|
+
>
|
|
544
|
+
<q-icon
|
|
545
|
+
:name="store.state.leftPanel.collapsed ? 'chevron_right' : 'chevron_left'"
|
|
546
|
+
size="18px"
|
|
547
|
+
/>
|
|
548
|
+
</div>
|
|
403
549
|
</div>
|
|
404
550
|
</template>
|
|
405
551
|
</q-splitter>
|
|
@@ -407,11 +553,7 @@
|
|
|
407
553
|
</q-layout>
|
|
408
554
|
|
|
409
555
|
<!-- Schema Field Filter Dialog -->
|
|
410
|
-
<q-dialog
|
|
411
|
-
v-model="store.state.searchDialog.show"
|
|
412
|
-
:persistent="true"
|
|
413
|
-
:maximized="true"
|
|
414
|
-
>
|
|
556
|
+
<q-dialog v-model="store.state.searchDialog.show" :persistent="true" :maximized="true">
|
|
415
557
|
<schema-field-filter
|
|
416
558
|
:schemas="store.state.graph.schemaMap"
|
|
417
559
|
:schema-name="store.state.searchDialog.schema"
|
|
@@ -427,11 +569,15 @@
|
|
|
427
569
|
/>
|
|
428
570
|
</q-card>
|
|
429
571
|
</q-dialog>
|
|
430
|
-
|
|
431
572
|
</div>
|
|
432
573
|
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
|
|
433
574
|
<script src="fastapi-voyager-static/quasar.min.js"></script>
|
|
434
|
-
<script
|
|
575
|
+
<script
|
|
576
|
+
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"
|
|
577
|
+
integrity="sha512-egJ/Y+22P9NQ9aIyVCh0VCOsfydyn8eNmqBy+y2CnJG+fpRIxXMS6jbWP8tVKp0jp+NO5n8WtMUAnNnGoJKi4w=="
|
|
578
|
+
crossorigin="anonymous"
|
|
579
|
+
referrerpolicy="no-referrer"
|
|
580
|
+
></script>
|
|
435
581
|
<script
|
|
436
582
|
src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"
|
|
437
583
|
integrity="sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A=="
|
|
@@ -439,7 +585,12 @@
|
|
|
439
585
|
referrerpolicy="no-referrer"
|
|
440
586
|
></script>
|
|
441
587
|
<script src="https://unpkg.com/@hpcc-js/wasm@2.20.0/dist/graphviz.umd.js"></script>
|
|
442
|
-
<script
|
|
588
|
+
<script
|
|
589
|
+
src="https://cdnjs.cloudflare.com/ajax/libs/d3-graphviz/5.6.0/d3-graphviz.min.js"
|
|
590
|
+
integrity="sha512-Le8HpIpS2Tc7SDHLM6AOgAKq6ZR4uDwLhjPSR20DtXE5dFb9xECHRwgpc1nxxnU0Dv+j6FNMoSddky5gyvI3lQ=="
|
|
591
|
+
crossorigin="anonymous"
|
|
592
|
+
referrerpolicy="no-referrer"
|
|
593
|
+
></script>
|
|
443
594
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script>
|
|
444
595
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-color/2.1.2/jquery.color.min.js"></script>
|
|
445
596
|
<script src="fastapi-voyager-static/graphviz.svg.js"></script>
|
|
@@ -449,18 +600,20 @@
|
|
|
449
600
|
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css"
|
|
450
601
|
/>
|
|
451
602
|
<script type="module">
|
|
452
|
-
window.addEventListener(
|
|
603
|
+
window.addEventListener("DOMContentLoaded", async () => {
|
|
453
604
|
if (!window.hljs) {
|
|
454
605
|
try {
|
|
455
|
-
const { default: hljs } =
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
606
|
+
const { default: hljs } =
|
|
607
|
+
await import("https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/highlight.min.js")
|
|
608
|
+
const { default: python } =
|
|
609
|
+
await import("https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/es/languages/python.min.js")
|
|
610
|
+
hljs.registerLanguage("python", python)
|
|
611
|
+
window.hljs = hljs
|
|
459
612
|
} catch (e) {
|
|
460
|
-
console.warn("Failed to preload highlight.js", e)
|
|
613
|
+
console.warn("Failed to preload highlight.js", e)
|
|
461
614
|
}
|
|
462
615
|
}
|
|
463
|
-
})
|
|
616
|
+
})
|
|
464
617
|
</script>
|
|
465
618
|
<script type="module" src="fastapi-voyager-static/vue-main.js"></script>
|
|
466
619
|
|