fastapi-voyager 0.11.3__py3-none-any.whl → 0.11.4__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.
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.11.3"
2
+ __version__ = "0.11.4"
@@ -14,6 +14,8 @@ export default defineComponent({
14
14
  props: {
15
15
  schemaName: { type: String, required: true },
16
16
  schemas: { type: Object, default: () => ({}) },
17
+ // visibility from parent (e.g., dialog v-model)
18
+ modelValue: { type: Boolean, default: true },
17
19
  },
18
20
  setup(props, { emit }) {
19
21
  const code = ref("");
@@ -21,6 +23,7 @@ export default defineComponent({
21
23
  const error = ref("");
22
24
  const fields = ref([]); // schema fields list
23
25
  const tab = ref("fields");
26
+ const loading = ref(false);
24
27
 
25
28
 
26
29
  async function highlightLater() {
@@ -45,12 +48,22 @@ export default defineComponent({
45
48
  });
46
49
  }
47
50
 
51
+ function resetState() {
52
+ code.value = "";
53
+ link.value = "";
54
+ error.value = null;
55
+ fields.value = [];
56
+ // tab.value = "fields";
57
+ loading.value = true;
58
+ }
59
+
48
60
  async function loadSource() {
49
61
  if (!props.schemaName) return;
50
62
 
51
63
  error.value = null;
52
64
  code.value = "";
53
65
  link.value = "";
66
+ loading.value = true;
54
67
 
55
68
  // try to fetch from server: /source/{schema_name}
56
69
  const payload = { schema_name: props.schemaName };
@@ -71,13 +84,8 @@ export default defineComponent({
71
84
  } else {
72
85
  error.value = (data && data.error) || "Failed to load source";
73
86
  }
74
- } catch (e) {
75
- error.value = "Failed to load source";
76
- } finally {
77
- }
78
87
 
79
- try {
80
- const resp = await fetch(`vscode-link`, {
88
+ const resp2 = await fetch(`vscode-link`, {
81
89
  method: "POST",
82
90
  headers: {
83
91
  Accept: "application/json",
@@ -85,16 +93,16 @@ export default defineComponent({
85
93
  },
86
94
  body: JSON.stringify(payload),
87
95
  });
88
- // surface server-side validation message for bad request
89
- const data = await resp.json().catch(() => ({}));
90
- if (resp.ok) {
91
- link.value = data.link || "// no vscode link available";
96
+ const data2 = await resp2.json().catch(() => ({}));
97
+ if (resp2.ok) {
98
+ link.value = data2.link || "// no vscode link available";
92
99
  } else {
93
- error.value += (data && data.error) || "Failed to load source";
100
+ error.value = (error.value || "") + ((data2 && data2.error) || "Failed to load source");
94
101
  }
95
102
  } catch (e) {
96
103
  error.value = "Failed to load source";
97
104
  } finally {
105
+ loading.value = false;
98
106
  }
99
107
 
100
108
  const schema = props.schemas && props.schemas[props.schemaName];
@@ -118,18 +126,36 @@ export default defineComponent({
118
126
  watch(
119
127
  () => props.schemaName,
120
128
  () => {
129
+ resetState();
121
130
  loadSource();
122
131
  },
123
132
  );
124
133
 
134
+ // respond to visibility changes: when shown, clear old data and reload
135
+ watch(
136
+ () => props.modelValue,
137
+ (val) => {
138
+ if (val) {
139
+ resetState();
140
+ loadSource();
141
+ }
142
+ }
143
+ );
144
+
125
145
  onMounted(() => {
126
- loadSource();
146
+ if (props.modelValue) {
147
+ resetState();
148
+ loadSource();
149
+ }
127
150
  });
128
151
 
129
- return { link, code, error, fields, tab };
152
+ return { link, code, error, fields, tab, loading };
130
153
  },
131
154
  template: `
132
155
  <div class="frv-code-display" style="border: 1px solid #ccc; border-left: none; position:relative; height:100%; background:#fff;">
156
+ <div v-show="loading" style="position:absolute; top:0; left:0; right:0; z-index:10;">
157
+ <q-linear-progress indeterminate color="primary" size="2px"/>
158
+ </div>
133
159
  <div class="q-ml-lg q-mt-md">
134
160
  <a :href="link" target="_blank" rel="noopener" style="font-size:12px; color:#3b82f6;">
135
161
  Open in VSCode
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-voyager
3
- Version: 0.11.3
3
+ Version: 0.11.4
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
@@ -272,7 +272,8 @@ or you can open router_viz.dot with vscode extension `graphviz interactive previ
272
272
  - 0.11.3
273
273
  - [x] support online repo url
274
274
  - 0.11.4
275
- - [ ] add loading for field detail panel
275
+ - [x] add loading for field detail panel
276
+ - 0.11.5
276
277
  - [ ] logging information
277
278
  - [ ] sort field name
278
279
  - [ ] set max limit for fields
@@ -6,7 +6,7 @@ fastapi_voyager/render.py,sha256=vdwqIync2wsP8gMPY0v_XjRhdPBtbKyRT8yTBa_Ep3Y,874
6
6
  fastapi_voyager/server.py,sha256=cRTUQik4rvrdZgfkFabCs6LBZnC1FVU4z3lwd1r8GNk,6839
7
7
  fastapi_voyager/type.py,sha256=VmcTB1G-LOT70EWCzi4LU_FUkSGWUIBJX15T_J5HnOo,1764
8
8
  fastapi_voyager/type_helper.py,sha256=QqP4c642vEkoWTZAtl_Vvt-kys3MkVDp4BNkLrw5mHQ,9477
9
- fastapi_voyager/version.py,sha256=lbhVTyfJZpsKCnUAXtQjVxbGBg1jjoqiyaCQRf2W6hk,49
9
+ fastapi_voyager/version.py,sha256=lobCg9xkZcHdx90ArKw3qvuqtqO2TtEs2LNIn1dQpHg,49
10
10
  fastapi_voyager/voyager.py,sha256=hNal25S5Hi_ZRe-gnmdUKt8tnRd-BRCrzaybAEJ_1HI,13498
11
11
  fastapi_voyager/web/graph-ui.js,sha256=DTedkpZNbtufexONVkJ8mOwF_-VnvxoReYHtox6IKR4,5842
12
12
  fastapi_voyager/web/graphviz.svg.css,sha256=zDCjjpT0Idufu5YOiZI76PL70-avP3vTyzGPh9M85Do,1563
@@ -17,7 +17,7 @@ fastapi_voyager/web/quasar.min.js,sha256=h0ftyPMW_CRiyzeVfQqiup0vrVt4_QWojpqmpnp
17
17
  fastapi_voyager/web/vue-main.js,sha256=sUjLmn06jYy1guwxAcouHwkcjxGD2UgZgkiiIEDbk04,10663
18
18
  fastapi_voyager/web/component/render-graph.js,sha256=e8Xgh2Kl-nYU0P1gstEmAepCgFnk2J6UdxW8TlMafGs,2322
19
19
  fastapi_voyager/web/component/route-code-display.js,sha256=8NJPPjNRUC21gjpY8XYEQs4RBbhX1pCiqEhJp39ku6k,3678
20
- fastapi_voyager/web/component/schema-code-display.js,sha256=UgFotzvqSuhnPXNOr6w_r1fV2_savRiCdokEvferutE,6244
20
+ fastapi_voyager/web/component/schema-code-display.js,sha256=FjoD3CLl967VMfbZNQMdbiEnS0z-doLJDJIeDCmKGew,6983
21
21
  fastapi_voyager/web/component/schema-field-filter.js,sha256=c--XiXJrhIS7sYo1x8ZwMoqak0k9xLkNYTWoli-zd38,6253
22
22
  fastapi_voyager/web/icon/android-chrome-192x192.png,sha256=35sBy6jmUFJCcquStaafHH1qClZIbd-X3PIKSeLkrNo,37285
23
23
  fastapi_voyager/web/icon/android-chrome-512x512.png,sha256=eb2eDjCwIruc05029_0L9hcrkVkv8KceLn1DJMYU0zY,210789
@@ -26,8 +26,8 @@ fastapi_voyager/web/icon/favicon-16x16.png,sha256=JC07jEzfIYxBIoQn_FHXvyHuxESdhW
26
26
  fastapi_voyager/web/icon/favicon-32x32.png,sha256=C7v1h58cfWOsiLp9yOIZtlx-dLasBcq3NqpHVGRmpt4,1859
27
27
  fastapi_voyager/web/icon/favicon.ico,sha256=tZolYIXkkBcFiYl1A8ksaXN2VjGamzcSdes838dLvNc,15406
28
28
  fastapi_voyager/web/icon/site.webmanifest,sha256=ep4Hzh9zhmiZF2At3Fp1dQrYQuYF_3ZPZxc1KcGBvwQ,263
29
- fastapi_voyager-0.11.3.dist-info/METADATA,sha256=2yD09_89vwgOEDQuiGN48d98XWowh8wTr4rnNNu7mVU,9960
30
- fastapi_voyager-0.11.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
- fastapi_voyager-0.11.3.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
- fastapi_voyager-0.11.3.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
- fastapi_voyager-0.11.3.dist-info/RECORD,,
29
+ fastapi_voyager-0.11.4.dist-info/METADATA,sha256=OjV-VKj6FgPn3tg_nykssxznKqACjxwN7c_nx4BZKqE,9969
30
+ fastapi_voyager-0.11.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
+ fastapi_voyager-0.11.4.dist-info/entry_points.txt,sha256=pEIKoUnIDXEtdMBq8EmXm70m16vELIu1VPz9-TBUFWM,53
32
+ fastapi_voyager-0.11.4.dist-info/licenses/LICENSE,sha256=lNVRR3y_bFVoFKuK2JM8N4sFaj3m-7j29kvL3olFi5Y,1067
33
+ fastapi_voyager-0.11.4.dist-info/RECORD,,