@geode/opengeodeweb-front 6.3.0-rc.1 → 6.3.0

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.
@@ -24,7 +24,9 @@
24
24
  </template>
25
25
 
26
26
  <script setup>
27
- import schema from "@/assets/schemas/CrsSelector.json"
27
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
28
+ const schema = schemas.opengeodeweb_back.geographic_coordinate_systems
29
+
28
30
  const emit = defineEmits([
29
31
  "update_values",
30
32
  "increment_step",
@@ -64,11 +66,13 @@
64
66
  async function get_crs_table() {
65
67
  const params = { input_geode_object }
66
68
  toggle_loading()
69
+ console.log("get_crs_table")
67
70
  await api_fetch(
68
71
  { schema, params },
69
72
  {
70
73
  response_function: (response) => {
71
74
  crs_list.value = response._data.crs_list
75
+ console.log("crs_list", response._data.crs_list)
72
76
  },
73
77
  },
74
78
  )
@@ -59,8 +59,8 @@
59
59
  </template>
60
60
 
61
61
  <script setup>
62
- import schema from "@/assets/schemas/ExtensionSelector.json"
63
-
62
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
63
+ const schema = schemas.opengeodeweb_back.geode_objects_and_output_extensions
64
64
  const emit = defineEmits([
65
65
  "update_values",
66
66
  "increment_step",
@@ -2,14 +2,15 @@
2
2
  <FetchingData v-if="loading" />
3
3
  <FileUploader
4
4
  v-else
5
- v-bind="{ multiple, accept, route }"
5
+ v-bind="{ multiple, accept }"
6
6
  @files_uploaded="files_uploaded_event"
7
7
  />
8
8
  </template>
9
9
 
10
10
  <script setup>
11
- import schema from "@/assets/schemas/FileSelector.json"
11
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
12
12
 
13
+ const schema = schemas.opengeodeweb_back.allowed_files
13
14
  const emit = defineEmits([
14
15
  "update_values",
15
16
  "increment_step",
@@ -19,10 +20,9 @@
19
20
  const props = defineProps({
20
21
  multiple: { type: Boolean, required: true },
21
22
  key: { type: String, required: false, default: "" },
22
- route: { type: String, required: false, default: "" },
23
23
  })
24
24
 
25
- const { multiple, key, route } = props
25
+ const { multiple, key } = props
26
26
 
27
27
  const accept = ref("")
28
28
  const loading = ref(false)
@@ -30,14 +30,16 @@
30
30
  </template>
31
31
 
32
32
  <script setup>
33
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
34
+ const schema = schemas.opengeodeweb_back.upload_file
35
+
33
36
  const emit = defineEmits(["files_uploaded", "decrement_step"])
34
37
 
35
38
  const props = defineProps({
36
39
  multiple: { type: Boolean, required: true },
37
40
  accept: { type: String, required: true },
38
- route: { type: String, required: true },
39
41
  })
40
- const { multiple, accept, route } = toRefs(props)
42
+ const { multiple, accept } = toRefs(props)
41
43
 
42
44
  const label = multiple ? "Please select file(s)" : "Please select a file"
43
45
  const files = ref([])
@@ -52,7 +54,7 @@
52
54
  for (const file of files.value) {
53
55
  const promise = new Promise((resolve, reject) => {
54
56
  upload_file(
55
- { route, file },
57
+ { route: schema.$id, file },
56
58
  {
57
59
  request_error_function: () => {
58
60
  reject()
@@ -26,7 +26,7 @@
26
26
  <v-row>
27
27
  <v-col cols="12">
28
28
  <FileUploader
29
- v-bind="{ multiple, accept, route }"
29
+ v-bind="{ multiple, accept }"
30
30
  @files_uploaded="files_uploaded_event"
31
31
  />
32
32
  </v-col>
@@ -43,7 +43,9 @@
43
43
  </template>
44
44
 
45
45
  <script setup>
46
- import schema from "@/assets/schemas/MissingFilesSelector.json"
46
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
47
+
48
+ const schema = schemas.opengeodeweb_back.missing_files
47
49
 
48
50
  const emit = defineEmits([
49
51
  "update_values",
@@ -55,10 +57,9 @@
55
57
  multiple: { type: Boolean, required: true },
56
58
  input_geode_object: { type: String, required: true },
57
59
  filenames: { type: Array, required: true },
58
- route: { type: String, required: true },
59
60
  })
60
61
 
61
- const { multiple, input_geode_object, filenames, route } = props
62
+ const { multiple, input_geode_object, filenames } = props
62
63
 
63
64
  const accept = ref("")
64
65
  const loading = ref(false)
@@ -68,6 +69,7 @@
68
69
  const toggle_loading = useToggle(loading)
69
70
 
70
71
  function files_uploaded_event(value) {
72
+ console.log("update_values")
71
73
  emit("update_values", { additional_files: value })
72
74
  missing_files()
73
75
  }
@@ -50,7 +50,9 @@
50
50
 
51
51
  <script setup>
52
52
  import geode_objects from "@/assets/geode_objects"
53
- import schema from "@/assets/schemas/ObjectSelector.json"
53
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
54
+
55
+ const schema = schemas.opengeodeweb_back.allowed_objects
54
56
 
55
57
  const emit = defineEmits(["update_values", "increment_step"])
56
58
 
@@ -12,7 +12,8 @@ export function api_fetch(
12
12
 
13
13
  const ajv = new Ajv()
14
14
 
15
- ajv.addKeyword("method")
15
+ ajv.addKeyword("methods")
16
+ ajv.addKeyword("route")
16
17
  ajv.addKeyword("max_retry")
17
18
  const valid = ajv.validate(schema, body)
18
19
  if (!valid) {
@@ -25,8 +26,10 @@ export function api_fetch(
25
26
  throw new Error(schema.$id.concat(": ", ajv.errorsText()))
26
27
  }
27
28
  geode_store.start_request()
28
-
29
- const request_options = { method: schema["method"] }
29
+ const method = schema.methods.filter((m) => m !== "OPTIONS")[0]
30
+ const request_options = {
31
+ method: method,
32
+ }
30
33
  if (!_.isEmpty(body)) {
31
34
  request_options.body = body
32
35
  }
package/package.json CHANGED
@@ -33,9 +33,10 @@
33
33
  },
34
34
  "description": "OpenSource Vue/Vuetify framework for web applications",
35
35
  "type": "module",
36
- "version": "6.3.0-rc.1",
36
+ "version": "6.3.0",
37
37
  "main": "./nuxt.config.js",
38
38
  "dependencies": {
39
+ "@geode/opengeodeweb-back": "3.3.2",
39
40
  "@kitware/vtk.js": "^29.4.6",
40
41
  "@mdi/font": "^7.4.47",
41
42
  "@pinia/nuxt": "^0.5.1",
@@ -44,7 +45,6 @@
44
45
  "@vueuse/core": "^10.7.2",
45
46
  "@vueuse/nuxt": "^10.7.2",
46
47
  "ajv": "^8.12.0",
47
- "lodash": "^4.17.21",
48
48
  "pinia": "^2.1.7",
49
49
  "sass": "^1.70.0",
50
50
  "semver": "^7.5.4",
@@ -8,15 +8,16 @@ import * as components from "vuetify/components"
8
8
  import * as directives from "vuetify/directives"
9
9
 
10
10
  import CrsSelector from "@/components/CrsSelector.vue"
11
- import schema from "@/assets/schemas/CrsSelector.json"
11
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
12
+
13
+ const crs_selector_schema =
14
+ schemas.opengeodeweb_back.geographic_coordinate_systems
12
15
 
13
16
  const vuetify = createVuetify({
14
17
  components,
15
18
  directives,
16
19
  })
17
20
 
18
- global.ResizeObserver = require("resize-observer-polyfill")
19
-
20
21
  describe("CrsSelector.vue", async () => {
21
22
  test(`BRep`, async () => {
22
23
  const crs_list = [
@@ -26,8 +27,8 @@ describe("CrsSelector.vue", async () => {
26
27
  name: "Anguilla 1957 / British West Indies Grid",
27
28
  },
28
29
  ]
29
- registerEndpoint(schema.$id, {
30
- method: schema.method,
30
+ registerEndpoint(crs_selector_schema.$id, {
31
+ method: crs_selector_schema.methods.filter((m) => m !== "OPTIONS")[0],
31
32
  handler: () => ({
32
33
  crs_list,
33
34
  }),
@@ -40,8 +41,10 @@ describe("CrsSelector.vue", async () => {
40
41
  props: { input_geode_object: "BRep", key_to_update },
41
42
  })
42
43
  const td = await wrapper.find("td")
43
- const imput = await td.find("input")
44
- await imput.trigger("click")
44
+ await wrapper.vm.$nextTick()
45
+ const input = await td.find("input")
46
+ console.log("toto", input)
47
+ await input.trigger("click")
45
48
  expect(wrapper.emitted()).toHaveProperty("update_values")
46
49
  expect(wrapper.emitted().update_values).toHaveLength(1)
47
50
  expect(wrapper.emitted().update_values[0][0]).toEqual({
@@ -8,23 +8,24 @@ import * as components from "vuetify/components"
8
8
  import * as directives from "vuetify/directives"
9
9
 
10
10
  import ExtensionSelector from "@/components/ExtensionSelector.vue"
11
- import schema from "@/assets/schemas/ExtensionSelector.json"
12
- import { flushPromises } from "@vue/test-utils"
11
+
12
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
13
+
14
+ const geode_objects_and_output_extensions =
15
+ schemas.opengeodeweb_back.geode_objects_and_output_extensions
13
16
 
14
17
  const vuetify = createVuetify({
15
18
  components,
16
19
  directives,
17
20
  })
18
21
 
19
- global.ResizeObserver = require("resize-observer-polyfill")
20
-
21
22
  describe("ExtensionSelector.vue", async () => {
22
23
  test(`Select geode_object & extension`, async () => {
23
24
  const output_geode_object = "BRep"
24
25
  const output_extension = "msh"
25
26
 
26
- registerEndpoint(schema.$id, {
27
- method: schema.method,
27
+ registerEndpoint(geode_objects_and_output_extensions.$id, {
28
+ method: geode_objects_and_output_extensions.methods[0],
28
29
  handler: () => ({
29
30
  geode_objects_and_output_extensions: {
30
31
  BRep: { msh: { is_saveable: true } },
@@ -10,19 +10,21 @@ import * as directives from "vuetify/directives"
10
10
 
11
11
  import FileSelector from "@/components/FileSelector.vue"
12
12
  import FileUploader from "@/components/FileUploader.vue"
13
- import schema from "@/assets/schemas/FileSelector.json"
13
+
14
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
15
+
16
+ const allowed_files_schema = schemas.opengeodeweb_back.allowed_files
17
+ const upload_file_schema = schemas.opengeodeweb_back.upload_file
14
18
 
15
19
  const vuetify = createVuetify({
16
20
  components,
17
21
  directives,
18
22
  })
19
23
 
20
- global.ResizeObserver = require("resize-observer-polyfill")
21
-
22
24
  describe("FileSelector.vue", async () => {
23
25
  test(`Select file`, async () => {
24
- registerEndpoint(schema.$id, {
25
- method: schema.method,
26
+ registerEndpoint(allowed_files_schema.$id, {
27
+ method: allowed_files_schema.methods[0],
26
28
  handler: () => ({
27
29
  extensions: ["1", "2", "3"],
28
30
  }),
@@ -36,8 +38,8 @@ describe("FileSelector.vue", async () => {
36
38
 
37
39
  const file_uploader = wrapper.findComponent(FileUploader)
38
40
 
39
- registerEndpoint("/upload", {
40
- method: "PUT",
41
+ registerEndpoint(upload_file_schema.$id, {
42
+ method: upload_file_schema.methods[1],
41
43
  handler: () => ({}),
42
44
  })
43
45
 
@@ -10,17 +10,19 @@ import * as directives from "vuetify/directives"
10
10
 
11
11
  import FileUploader from "@/components/FileUploader.vue"
12
12
 
13
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
14
+
15
+ const upload_file_schema = schemas.opengeodeweb_back.upload_file
16
+
13
17
  const vuetify = createVuetify({
14
18
  components,
15
19
  directives,
16
20
  })
17
21
 
18
- global.ResizeObserver = require("resize-observer-polyfill")
19
-
20
22
  describe("FileUploader.vue", async () => {
21
23
  test(`Upload file`, async () => {
22
- registerEndpoint("/upload", {
23
- method: "PUT",
24
+ registerEndpoint(upload_file_schema.$id, {
25
+ method: upload_file_schema.methods[0],
24
26
  handler: () => ({}),
25
27
  })
26
28
  const wrapper = await mountSuspended(FileUploader, {
@@ -35,6 +37,12 @@ describe("FileUploader.vue", async () => {
35
37
  await v_file_input.setValue(files)
36
38
  await v_file_input.trigger("change")
37
39
  const v_btn = wrapper.findComponent(components.VBtn)
40
+
41
+ registerEndpoint(upload_file_schema.$id, {
42
+ method: upload_file_schema.methods[1],
43
+ handler: () => ({}),
44
+ })
45
+
38
46
  await v_btn.trigger("click")
39
47
  await flushPromises()
40
48
  expect(wrapper.emitted().files_uploaded[0][0]).toEqual(files)
@@ -11,19 +11,20 @@ import * as directives from "vuetify/directives"
11
11
  import MissingFilesSelector from "@/components/MissingFilesSelector.vue"
12
12
  import FileUploader from "@/components/FileUploader.vue"
13
13
 
14
- import schema from "@/assets/schemas/MissingFilesSelector.json"
14
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
15
+
16
+ const missing_files_schema = schemas.opengeodeweb_back.missing_files
17
+ const upload_file_schema = schemas.opengeodeweb_back.upload_file
15
18
 
16
19
  const vuetify = createVuetify({
17
20
  components,
18
21
  directives,
19
22
  })
20
23
 
21
- global.ResizeObserver = require("resize-observer-polyfill")
22
-
23
24
  describe("MissingFilesSelector.vue", async () => {
24
25
  test(`Select file`, async () => {
25
- registerEndpoint(schema.$id, {
26
- method: schema.method,
26
+ registerEndpoint(missing_files_schema.$id, {
27
+ method: missing_files_schema.methods[0],
27
28
  handler: () => ({
28
29
  has_missing_files: true,
29
30
  mandatory_files: ["fake_file.txt"],
@@ -38,7 +39,6 @@ describe("MissingFilesSelector.vue", async () => {
38
39
  multiple: false,
39
40
  input_geode_object: "BRep",
40
41
  filenames: ["fake_file.txt"],
41
- route: "/upload_file",
42
42
  },
43
43
  })
44
44
 
@@ -52,8 +52,8 @@ describe("MissingFilesSelector.vue", async () => {
52
52
  await v_file_input.trigger("change")
53
53
  const v_btn = file_uploader.findComponent(components.VBtn)
54
54
 
55
- registerEndpoint("/upload_file", {
56
- method: "PUT",
55
+ registerEndpoint(upload_file_schema.$id, {
56
+ method: upload_file_schema.methods[1],
57
57
  handler: () => ({}),
58
58
  })
59
59
  await v_btn.trigger("click")
@@ -9,17 +9,16 @@ import * as components from "vuetify/components"
9
9
  import * as directives from "vuetify/directives"
10
10
 
11
11
  import ObjectSelector from "@/components/ObjectSelector.vue"
12
- import schema from "@/assets/schemas/ObjectSelector.json"
13
- import geode_objects from "@/assets/geode_objects"
12
+
13
+ import schemas from "@geode/opengeodeweb-back/schemas.json"
14
+
15
+ const allowed_objects = schemas.opengeodeweb_back.allowed_objects
14
16
 
15
17
  const vuetify = createVuetify({
16
18
  components,
17
19
  directives,
18
20
  })
19
21
 
20
- global.ResizeObserver = require("resize-observer-polyfill")
21
-
22
- // for (const [geode_object] of Object.entries(geode_objects)) {
23
22
  const geode_object = "BRep"
24
23
  describe("ObjectSelector.vue", async () => {
25
24
  test(`BRep`, async () => {
@@ -27,8 +26,8 @@ describe("ObjectSelector.vue", async () => {
27
26
  allowed_objects: {},
28
27
  }
29
28
  response["allowed_objects"][geode_object] = { is_loadable: true }
30
- registerEndpoint(schema.$id, {
31
- method: schema.method,
29
+ registerEndpoint(allowed_objects.$id, {
30
+ method: allowed_objects.methods[0],
32
31
  handler: () => response,
33
32
  })
34
33
  const wrapper = await mountSuspended(ObjectSelector, {
@@ -14,19 +14,17 @@ const vuetify = createVuetify({
14
14
  directives,
15
15
  })
16
16
 
17
- global.ResizeObserver = require("resize-observer-polyfill")
18
-
19
17
  describe("PackagesVersions.vue", async () => {
20
18
  test(`Mount`, async () => {
21
19
  const schema = {
22
20
  $id: "/versions",
23
- method: "GET",
21
+ methods: ["GET"],
24
22
  type: "object",
25
23
  properties: {},
26
24
  additionalProperties: false,
27
25
  }
28
26
  registerEndpoint(schema.$id, {
29
- method: schema.method,
27
+ method: schema.methods[0],
30
28
  handler: () => ({
31
29
  versions: [
32
30
  {
@@ -7,7 +7,7 @@ describe("api_fetch.js", () => {
7
7
  const schema = {
8
8
  $id: "/test",
9
9
  type: "object",
10
- method: "POST",
10
+ methods: ["POST"],
11
11
  properties: {
12
12
  test: {
13
13
  type: "string",
@@ -16,16 +16,18 @@ describe("api_fetch.js", () => {
16
16
  required: ["test"],
17
17
  additionalProperties: false,
18
18
  }
19
+ var params
20
+
19
21
  beforeEach(async () => {
20
22
  await errors_store.$patch({ errors: [] })
21
23
  })
22
24
 
23
25
  test("Ajv wrong params", async () => {
24
26
  registerEndpoint(schema.$id, {
25
- method: schema.method,
27
+ method: schema.methods[0],
26
28
  handler: () => ({ return: "toto" }),
27
29
  })
28
- const params = {}
30
+ params = {}
29
31
  try {
30
32
  await api_fetch({ schema, params })
31
33
  } catch (error) {
@@ -37,64 +39,32 @@ describe("api_fetch.js", () => {
37
39
  expect(errors_store.errors[0].code).toBe(400)
38
40
  })
39
41
 
40
- // test("onRequestError", async () => {
41
- // const schema = {
42
- // $id: "/test",
43
- // type: "object",
44
- // method: "POST",
45
- // properties: {
46
- // test: {
47
- // type: "string",
48
- // },
49
- // },
50
- // required: ["test"],
51
- // additionalProperties: false,
52
- // }
53
- // registerEndpoint(schema.$id, {
54
- // method: schema.method,
55
- // handler: async () => {
56
- // setTimeout(() => {}, 100 * 1000)
57
- // },
58
- // })
59
- // const params = { test: "test" }
60
- // var request_error_value
61
- // await api_fetch(
62
- // { schema, params },
63
- // {
64
- // request_error_function: () => {
65
- // request_error_value = "error"
66
- // },
67
- // },
68
- // )
69
- // expect(errors_store.errors.length).toBe(1)
70
- // expect(errors_store.errors[0].code).toBe(404)
71
- // expect(request_error_value).toBe("error")
72
- // })
73
-
74
42
  test("onResponse", async () => {
75
- registerEndpoint(schema.$id, {
76
- method: schema.method,
77
- handler: () => ({ return: "toto" }),
78
- })
79
- const params = { test: "test" }
80
43
  var response_value
81
- await api_fetch(
82
- { schema, params },
83
- {
84
- response_function: (response) => {
85
- response_value = response._data.return
44
+ for (var i = 0; i < 3; i++) {
45
+ registerEndpoint(schema.$id, {
46
+ method: schema.methods[0],
47
+ handler: () => ({ return: "toto" }),
48
+ })
49
+ params = { test: "test" }
50
+ await api_fetch(
51
+ { schema, params },
52
+ {
53
+ response_function: (response) => {
54
+ response_value = response._data.return
55
+ },
86
56
  },
87
- },
88
- )
89
- expect(errors_store.errors.length).toBe(0)
90
- expect(response_value).toBe("toto")
57
+ )
58
+ expect(errors_store.errors.length).toBe(0)
59
+ expect(response_value).toBe("toto")
60
+ }
91
61
  })
92
62
 
93
63
  test("onResponseError", async () => {
94
64
  const schema = {
95
65
  $id: "/toto",
96
66
  type: "object",
97
- method: "POST",
67
+ methods: ["POST"],
98
68
  properties: {
99
69
  test: {
100
70
  type: "string",
@@ -103,7 +73,7 @@ describe("api_fetch.js", () => {
103
73
  required: ["test"],
104
74
  additionalProperties: false,
105
75
  }
106
- const params = { test: "test" }
76
+ params = { test: "test" }
107
77
  var response_error_value
108
78
  await api_fetch(
109
79
  { schema, params },
@@ -1,12 +0,0 @@
1
- {
2
- "$id": "/tools/geographic_coordinate_systems",
3
- "type": "object",
4
- "method": "POST",
5
- "properties": {
6
- "input_geode_object": {
7
- "type": "string"
8
- }
9
- },
10
- "required": ["input_geode_object"],
11
- "additionalProperties": false
12
- }
@@ -1,15 +0,0 @@
1
- {
2
- "$id": "/tools/geode_objects_and_output_extensions",
3
- "type": "object",
4
- "method": "POST",
5
- "properties": {
6
- "input_geode_object": {
7
- "type": "string"
8
- },
9
- "filename": {
10
- "type": "string"
11
- }
12
- },
13
- "required": ["input_geode_object", "filename"],
14
- "additionalProperties": false
15
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$id": "/tools/allowed_files",
3
- "type": "object",
4
- "method": "POST",
5
- "properties": {
6
- "key": {
7
- "type": ["string", "null"]
8
- }
9
- },
10
- "required": ["key"],
11
- "additionalProperties": false
12
- }
@@ -1,15 +0,0 @@
1
- {
2
- "$id": "/tools/missing_files",
3
- "type": "object",
4
- "method": "POST",
5
- "properties": {
6
- "input_geode_object": {
7
- "type": "string"
8
- },
9
- "filename": {
10
- "type": "string"
11
- }
12
- },
13
- "required": ["input_geode_object", "filename"],
14
- "additionalProperties": false
15
- }
@@ -1,15 +0,0 @@
1
- {
2
- "$id": "/tools/allowed_objects",
3
- "type": "object",
4
- "method": "POST",
5
- "properties": {
6
- "filename": {
7
- "type": "string"
8
- },
9
- "key": {
10
- "type": ["string", "null"]
11
- }
12
- },
13
- "required": ["filename", "key"],
14
- "additionalProperties": false
15
- }