fastapi-voyager 0.12.7__tar.gz → 0.12.8__tar.gz

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.
Files changed (58) hide show
  1. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/PKG-INFO +1 -1
  2. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/docs/changelog.md +2 -0
  3. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/version.py +1 -1
  4. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/index.html +22 -21
  5. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/vue-main.js +13 -16
  6. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/programatic.py +1 -1
  7. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/.github/workflows/publish.yml +0 -0
  10. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/.gitignore +0 -0
  11. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/.python-version +0 -0
  12. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/CONTRIBUTING.md +0 -0
  13. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/LICENSE +0 -0
  14. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/README.md +0 -0
  15. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/docs/idea.md +0 -0
  16. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/pyproject.toml +0 -0
  17. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/release.md +0 -0
  18. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/__init__.py +0 -0
  19. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/cli.py +0 -0
  20. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/filter.py +0 -0
  21. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/module.py +0 -0
  22. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/render.py +0 -0
  23. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/server.py +0 -0
  24. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/type.py +0 -0
  25. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/type_helper.py +0 -0
  26. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/voyager.py +0 -0
  27. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/component/demo.js +0 -0
  28. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/component/render-graph.js +0 -0
  29. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/component/route-code-display.js +0 -0
  30. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/component/schema-code-display.js +0 -0
  31. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/graph-ui.js +0 -0
  32. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/graphviz.svg.css +0 -0
  33. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/graphviz.svg.js +0 -0
  34. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/android-chrome-192x192.png +0 -0
  35. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/android-chrome-512x512.png +0 -0
  36. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/apple-touch-icon.png +0 -0
  37. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/favicon-16x16.png +0 -0
  38. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/favicon-32x32.png +0 -0
  39. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/favicon.ico +0 -0
  40. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/icon/site.webmanifest +0 -0
  41. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/quasar.min.css +0 -0
  42. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/quasar.min.js +0 -0
  43. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/src/fastapi_voyager/web/store.js +0 -0
  44. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/__init__.py +0 -0
  45. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/demo.py +0 -0
  46. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/demo_anno.py +0 -0
  47. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/service/__init__.py +0 -0
  48. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/service/schema/__init__.py +0 -0
  49. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/service/schema/extra.py +0 -0
  50. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/service/schema/schema.py +0 -0
  51. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_analysis.py +0 -0
  52. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_filter.py +0 -0
  53. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_generic.py +0 -0
  54. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_import.py +0 -0
  55. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_module.py +0 -0
  56. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/tests/test_type_helper.py +0 -0
  57. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/uv.lock +0 -0
  58. {fastapi_voyager-0.12.7 → fastapi_voyager-0.12.8}/voyager.jpg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.12.7
3
+ Version: 0.12.8
4
4
  Summary: Visualize FastAPI application's routing tree and dependencies
5
5
  Project-URL: Homepage, https://github.com/allmonday/fastapi-voyager
6
6
  Project-URL: Source, https://github.com/allmonday/fastapi-voyager
@@ -122,6 +122,8 @@
122
122
  - 0.12.7
123
123
  - [x] remove search component, integrated into main page
124
124
  - 0.12.8
125
+ - [x] optimize ui elements, change icons, update reset behavior
126
+ - 0.12.9
125
127
  - [ ] refactor vue-main.js, move methods to store
126
128
  - [ ] refactor render.py
127
129
 
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.12.7"
2
+ __version__ = "0.12.8"
@@ -55,6 +55,12 @@
55
55
  flex: 1 1 auto;
56
56
  overflow: auto;
57
57
  }
58
+ .tag-bg {
59
+ /* background-color: #287e75; */
60
+ /* border-bottom: 2px solid #009485;
61
+ border-left: 2px solid #009485;
62
+ border-top: 0; */
63
+ }
58
64
 
59
65
  .adjust-fit {
60
66
  height: calc(100vh - 54px);
@@ -107,9 +113,20 @@
107
113
  <span> FastAPI Voyager </span>
108
114
  <span v-if="store.state.version" style="font-size: 12px; margin-left: 8px; font-weight: normal;">{{ store.state.version }}</span>
109
115
  </div>
116
+ <div class="col-auto">
117
+ <q-btn
118
+ style="margin-left: 80px"
119
+ outline
120
+ @click="onReset"
121
+ title="clear tag, route selection"
122
+ icon="open_in_full"
123
+ color="primary"
124
+ flat
125
+ class="q-mx-md"
126
+ />
127
+ </div>
110
128
  <div class="col-auto" style="font-size: 16px">
111
129
  <q-option-group
112
- style="margin-left: 80px"
113
130
  v-model="store.state.filter.showFields"
114
131
  :options="store.state.fieldOptions"
115
132
  @update:model-value="(val) => toggleShowField(val)"
@@ -149,28 +166,11 @@
149
166
  v-model="store.state.search.fieldName"
150
167
  :disable="!store.state.search.schemaName || store.state.search.fieldOptions.length===0"
151
168
  :options="store.state.search.fieldOptions"
169
+ @update:model-value="onSearch"
152
170
  style="min-width: 180px"
153
171
  clearable
154
172
  label="Select field (optional)"
155
173
  ></q-select>
156
- <q-btn
157
- outline
158
- icon="search"
159
- flat
160
- class="q-mr-none"
161
- :disable="!store.state.search.schemaName"
162
- :loading="store.state.generating"
163
- @click="onSearch"
164
- ></q-btn>
165
- <q-btn
166
- outline
167
- @click="onReset"
168
- dense
169
- title="full graph"
170
- icon="border_all"
171
- flat
172
- class="q-mr-sm"
173
- />
174
174
  </div>
175
175
  <div class="col-auto">
176
176
  <q-btn
@@ -179,7 +179,7 @@
179
179
  flat
180
180
  icon="help_outline"
181
181
  aria-label="Help"
182
- style="margin-right: 40px"
182
+ style="margin-right: 50px; margin-left: 20px"
183
183
  >
184
184
  <q-tooltip
185
185
  anchor="bottom middle"
@@ -272,7 +272,8 @@
272
272
  expand-separator
273
273
  :model-value="store.state.leftPanel._tag === tag.name || store.state.search.mode"
274
274
  @update:model-value="(val) => toggleTag(tag.name, val)"
275
- :header-class="store.state.leftPanel.tag === tag.name ? 'text-primary text-bold' : ''"
275
+ @click="() => toggleTag(tag.name, true)"
276
+ :header-class="store.state.leftPanel.tag === tag.name ? 'text-primary text-bold tag-bg' : 'tag-bg'"
276
277
  content-class="q-pa-none"
277
278
  >
278
279
  <template #header>
@@ -64,6 +64,7 @@ const app = createApp({
64
64
  function onSearchSchemaChange(val) {
65
65
  store.state.search.schemaName = val;
66
66
  store.state.search.mode = false;
67
+ onSearch()
67
68
  }
68
69
 
69
70
  function readQuerySelection() {
@@ -134,15 +135,18 @@ const app = createApp({
134
135
  store.state.leftPanel.tag = null;
135
136
  store.state.leftPanel._tag = null;
136
137
  store.state.leftPanel.routeId = null;
138
+ syncSelectionToUrl()
137
139
  await loadSearchedTags();
138
140
  renderBasedOnInitialPolicy()
139
141
  }
140
142
 
141
143
  async function onSearch() {
144
+ console.log('start search')
142
145
  store.state.search.mode = true;
143
146
  store.state.leftPanel.tag = null;
144
147
  store.state.leftPanel._tag = null;
145
148
  store.state.leftPanel.routeId = null;
149
+ syncSelectionToUrl()
146
150
  await loadSearchedTags();
147
151
  await onGenerate();
148
152
  }
@@ -203,9 +207,10 @@ const app = createApp({
203
207
  syncSelectionToUrl();
204
208
  onGenerate();
205
209
  return;
210
+ } else {
211
+ store.state.config.initial_page_policy = data.initial_page_policy
212
+ renderBasedOnInitialPolicy()
206
213
  }
207
- store.state.config.initial_page_policy = data.initial_page_policy
208
- renderBasedOnInitialPolicy()
209
214
 
210
215
  // default route options placeholder
211
216
  } catch (e) {
@@ -228,6 +233,7 @@ const app = createApp({
228
233
  ? store.state.leftPanel.tags[0].name
229
234
  : null;
230
235
  store.state.leftPanel._tag = store.state.leftPanel.tag;
236
+ syncSelectionToUrl()
231
237
  onGenerate();
232
238
  return;
233
239
  }
@@ -300,20 +306,11 @@ const app = createApp({
300
306
  }
301
307
 
302
308
  async function onReset() {
303
- store.state.leftPanel.tag = null;
304
- store.state.leftPanel._tag = null;
305
- store.state.leftPanel.routeId = null;
306
-
307
- store.state.graph.schemaId = null;
308
-
309
- store.state.search.mode = false;
310
- store.state.search.schemaName = null;
311
- store.state.search.fieldName = null;
312
- store.state.search.fieldOptions = [];
313
- store.state.search.schemaOptions = allSchemaOptions.value.slice();
314
-
315
- store.state.schemaDetail.schemaCodeName = "";
316
- resetSearch()
309
+ store.state.leftPanel.tag = null;
310
+ store.state.leftPanel._tag = null;
311
+ store.state.leftPanel.routeId = null;
312
+ syncSelectionToUrl()
313
+ onGenerate()
317
314
  }
318
315
 
319
316
  function toggleTag(tagName, expanded = null) {
@@ -6,7 +6,7 @@ app.mount(
6
6
  '/voyager',
7
7
  create_voyager(
8
8
  app,
9
- module_color={"tests.service": "purple", "tests.demo": "#00b1cc", "tests": "green"},
9
+ module_color={"tests.service": "purple"},
10
10
  module_prefix="tests.service",
11
11
  swagger_url="/docs",
12
12
  initial_page_policy='first',