@geode/opengeodeweb-front 4.0.0 → 5.0.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.
- package/components/CrsSelector.vue +14 -14
- package/components/Errors/Banner.vue +0 -6
- package/components/ExtensionSelector.vue +61 -34
- package/components/FetchingData.vue +17 -0
- package/components/FileSelector.vue +30 -32
- package/components/FileUploader.vue +72 -0
- package/components/Header.vue +1 -8
- package/components/Launcher.vue +3 -8
- package/components/Loading.vue +1 -1
- package/components/MissingFilesSelector.vue +115 -0
- package/components/ObjectSelector.vue +18 -17
- package/components/Recaptcha.vue +0 -2
- package/components/RemoteRenderingView.vue +0 -1
- package/components/Step.vue +17 -17
- package/components/Wrapper.vue +4 -3
- package/nuxt.config.js +1 -1
- package/package.json +1 -1
- package/stores/errors.js +0 -1
|
@@ -24,18 +24,19 @@
|
|
|
24
24
|
</template>
|
|
25
25
|
|
|
26
26
|
<script setup>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const emit = defineEmits([
|
|
28
|
+
"update_values",
|
|
29
|
+
"increment_step",
|
|
30
|
+
"decrement_step",
|
|
31
|
+
])
|
|
31
32
|
|
|
32
33
|
const props = defineProps({
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
input_geode_object: { type: String, required: true },
|
|
35
|
+
key_to_update: { type: String, required: true },
|
|
35
36
|
schema: { type: Object, required: true },
|
|
36
37
|
})
|
|
37
38
|
|
|
38
|
-
const {
|
|
39
|
+
const { input_geode_object, key_to_update, schema } = props
|
|
39
40
|
|
|
40
41
|
const search = ref("")
|
|
41
42
|
const data_table_loading = ref(false)
|
|
@@ -45,14 +46,13 @@
|
|
|
45
46
|
|
|
46
47
|
watch(selected_crs, (new_value) => {
|
|
47
48
|
const crs = get_selected_crs(new_value[0])
|
|
48
|
-
|
|
49
|
+
const keys_values_object = {
|
|
50
|
+
[key_to_update]: crs,
|
|
51
|
+
}
|
|
52
|
+
emit("update_values", keys_values_object)
|
|
53
|
+
emit("increment_step")
|
|
49
54
|
})
|
|
50
55
|
|
|
51
|
-
function set_crs(crs_value) {
|
|
52
|
-
stepper_tree[variable_to_update] = crs_value
|
|
53
|
-
stepper_tree[variable_to_increment]++
|
|
54
|
-
}
|
|
55
|
-
|
|
56
56
|
function get_selected_crs(crs_code) {
|
|
57
57
|
for (let i = 0; i <= crs_list.value.length; i++) {
|
|
58
58
|
if (crs_list.value[i]["code"] == crs_code) {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
async function get_crs_table() {
|
|
65
|
-
const params = {
|
|
65
|
+
const params = { input_geode_object }
|
|
66
66
|
toggle_loading()
|
|
67
67
|
await api_fetch(
|
|
68
68
|
{ schema, params },
|
|
@@ -1,61 +1,88 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
<FetchingData v-if="loading" />
|
|
3
|
+
<v-row
|
|
4
|
+
v-for="item in geode_objects_and_output_extensions"
|
|
5
|
+
:key="item.geode_object"
|
|
6
|
+
class="justify-left"
|
|
7
|
+
>
|
|
8
|
+
<v-card class="card ma-2 pa-2" width="100%">
|
|
9
|
+
<v-tooltip :text="`Export as a ${item.geode_object}`" location="bottom">
|
|
10
|
+
<template v-slot:activator="{ props }">
|
|
11
|
+
<v-card-title v-bind="props">
|
|
12
|
+
{{ item.geode_object }}
|
|
13
|
+
</v-card-title>
|
|
14
|
+
</template>
|
|
15
|
+
</v-tooltip>
|
|
16
|
+
<v-card-text>
|
|
17
|
+
<v-row>
|
|
18
|
+
<v-col
|
|
19
|
+
v-for="output_extension in item.output_extensions"
|
|
20
|
+
:key="output_extension"
|
|
21
|
+
cols="auto"
|
|
22
|
+
class="pa-0"
|
|
23
|
+
>
|
|
24
|
+
<v-card
|
|
25
|
+
class="card ma-2"
|
|
26
|
+
color="primary"
|
|
27
|
+
hover
|
|
28
|
+
@click="set_variables(item.geode_object, output_extension)"
|
|
29
|
+
>
|
|
30
|
+
<v-card-title align="center">
|
|
31
|
+
{{ output_extension }}
|
|
32
|
+
</v-card-title>
|
|
33
|
+
</v-card>
|
|
34
|
+
</v-col>
|
|
35
|
+
</v-row>
|
|
36
|
+
</v-card-text>
|
|
37
|
+
</v-card>
|
|
19
38
|
</v-row>
|
|
20
39
|
</template>
|
|
21
40
|
|
|
22
41
|
<script setup>
|
|
23
|
-
const
|
|
24
|
-
|
|
42
|
+
const emit = defineEmits([
|
|
43
|
+
"update_values",
|
|
44
|
+
"increment_step",
|
|
45
|
+
"decrement_step",
|
|
46
|
+
])
|
|
25
47
|
|
|
26
48
|
const props = defineProps({
|
|
27
|
-
|
|
28
|
-
variable_to_increment: { type: String, required: true },
|
|
49
|
+
input_geode_object: { type: String, required: true },
|
|
29
50
|
schema: { type: Object, required: true },
|
|
30
51
|
})
|
|
31
|
-
const {
|
|
52
|
+
const { input_geode_object, schema } = props
|
|
32
53
|
|
|
33
|
-
const
|
|
54
|
+
const geode_objects_and_output_extensions = ref([])
|
|
55
|
+
const loading = ref(false)
|
|
56
|
+
|
|
57
|
+
const toggle_loading = useToggle(loading)
|
|
34
58
|
|
|
35
59
|
async function get_output_file_extensions() {
|
|
36
|
-
|
|
60
|
+
toggle_loading()
|
|
61
|
+
const params = { input_geode_object }
|
|
37
62
|
await api_fetch(
|
|
38
63
|
{ schema, params },
|
|
39
64
|
{
|
|
40
65
|
response_function: (response) => {
|
|
41
|
-
|
|
66
|
+
geode_objects_and_output_extensions.value =
|
|
67
|
+
response._data.geode_objects_and_output_extensions
|
|
42
68
|
},
|
|
43
69
|
},
|
|
44
70
|
)
|
|
71
|
+
toggle_loading()
|
|
45
72
|
}
|
|
46
73
|
|
|
47
|
-
function
|
|
48
|
-
|
|
49
|
-
|
|
74
|
+
function set_variables(geode_object, output_extension) {
|
|
75
|
+
if (geode_object != "" && output_extension != "") {
|
|
76
|
+
const keys_values_object = {
|
|
77
|
+
output_geode_object: geode_object,
|
|
78
|
+
output_extension,
|
|
79
|
+
}
|
|
80
|
+
emit("update_values", keys_values_object)
|
|
81
|
+
emit("increment_step")
|
|
82
|
+
}
|
|
50
83
|
}
|
|
51
84
|
|
|
52
85
|
onMounted(() => {
|
|
53
86
|
get_output_file_extensions()
|
|
54
87
|
})
|
|
55
88
|
</script>
|
|
56
|
-
|
|
57
|
-
<style scoped>
|
|
58
|
-
.card {
|
|
59
|
-
border-radius: 15px;
|
|
60
|
-
}
|
|
61
|
-
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Transition name="slide-fade" class="pa-0">
|
|
3
|
+
<v-row align="center" class="pa-0">
|
|
4
|
+
<v-col cols="auto" class="pa-0">
|
|
5
|
+
<v-progress-circular
|
|
6
|
+
:size="22"
|
|
7
|
+
:width="3"
|
|
8
|
+
color="primary"
|
|
9
|
+
indeterminate
|
|
10
|
+
/>
|
|
11
|
+
</v-col>
|
|
12
|
+
<v-col cols="auto">
|
|
13
|
+
<p>Fetching data...</p>
|
|
14
|
+
</v-col>
|
|
15
|
+
</v-row>
|
|
16
|
+
</Transition>
|
|
17
|
+
</template>
|
|
@@ -1,58 +1,56 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
:rules="[(value) => !!value || 'The file is mandatory']"
|
|
8
|
-
color="primary"
|
|
9
|
-
chips
|
|
10
|
-
counter
|
|
11
|
-
show-size
|
|
12
|
-
@click:clear="stepper_tree.files = []"
|
|
2
|
+
<FetchingData v-if="loading" />
|
|
3
|
+
<FileUploader
|
|
4
|
+
v-else
|
|
5
|
+
v-bind="{ multiple, accept, route }"
|
|
6
|
+
@files_uploaded="files_uploaded_event"
|
|
13
7
|
/>
|
|
14
8
|
</template>
|
|
15
9
|
|
|
16
10
|
<script setup>
|
|
17
|
-
const
|
|
11
|
+
const emit = defineEmits([
|
|
12
|
+
"update_values",
|
|
13
|
+
"increment_step",
|
|
14
|
+
"decrement_step",
|
|
15
|
+
])
|
|
18
16
|
|
|
19
17
|
const props = defineProps({
|
|
20
18
|
multiple: { type: Boolean, required: true },
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
variable_to_increment: { type: String, required: true },
|
|
19
|
+
key: { type: String, required: false, default: "" },
|
|
20
|
+
route: { type: String, required: false, default: "" },
|
|
24
21
|
schema: { type: Object, required: true },
|
|
25
22
|
})
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
|
|
24
|
+
const { multiple, key, route, schema } = props
|
|
28
25
|
|
|
29
26
|
const accept = ref("")
|
|
30
|
-
const
|
|
27
|
+
const loading = ref(false)
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
stepper_tree[variable_to_update] = value
|
|
34
|
-
stepper_tree[variable_to_increment]++
|
|
35
|
-
})
|
|
29
|
+
const toggle_loading = useToggle(loading)
|
|
36
30
|
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
function files_uploaded_event(value) {
|
|
32
|
+
if (value.length) {
|
|
33
|
+
emit("update_values", { files: value })
|
|
34
|
+
emit("increment_step")
|
|
35
|
+
}
|
|
42
36
|
}
|
|
43
37
|
|
|
44
38
|
async function get_allowed_files() {
|
|
39
|
+
toggle_loading()
|
|
40
|
+
const params = { key }
|
|
45
41
|
await api_fetch(
|
|
46
|
-
{ schema },
|
|
42
|
+
{ schema, params },
|
|
47
43
|
{
|
|
48
44
|
response_function: (response) => {
|
|
49
|
-
|
|
45
|
+
accept.value = response._data.extensions
|
|
46
|
+
.map((extension) => "." + extension)
|
|
47
|
+
.join(",")
|
|
50
48
|
},
|
|
51
49
|
},
|
|
52
50
|
)
|
|
51
|
+
toggle_loading()
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
await get_allowed_files()
|
|
53
|
+
onMounted(() => {
|
|
54
|
+
get_allowed_files()
|
|
57
55
|
})
|
|
58
56
|
</script>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-row>
|
|
3
|
+
<v-col class="pa-0">
|
|
4
|
+
<v-file-input
|
|
5
|
+
v-model="files"
|
|
6
|
+
:multiple="multiple"
|
|
7
|
+
:label="label"
|
|
8
|
+
:accept="accept"
|
|
9
|
+
:rules="[(value) => !!value || 'The file is mandatory']"
|
|
10
|
+
color="primary"
|
|
11
|
+
chips
|
|
12
|
+
counter
|
|
13
|
+
show-size
|
|
14
|
+
@click:clear="clear()"
|
|
15
|
+
/>
|
|
16
|
+
</v-col>
|
|
17
|
+
</v-row>
|
|
18
|
+
<v-row>
|
|
19
|
+
<v-col cols="auto">
|
|
20
|
+
<v-btn
|
|
21
|
+
@click="upload_files()"
|
|
22
|
+
color="primary"
|
|
23
|
+
:disabled="!files.length && !files_uploaded"
|
|
24
|
+
:loading="loading"
|
|
25
|
+
class="pa-2"
|
|
26
|
+
>
|
|
27
|
+
Upload file(s)</v-btn
|
|
28
|
+
>
|
|
29
|
+
</v-col>
|
|
30
|
+
</v-row>
|
|
31
|
+
</template>
|
|
32
|
+
|
|
33
|
+
<script setup>
|
|
34
|
+
const emit = defineEmits(["files_uploaded", "decrement_step"])
|
|
35
|
+
|
|
36
|
+
const props = defineProps({
|
|
37
|
+
multiple: { type: Boolean, required: true },
|
|
38
|
+
accept: { type: String, required: true },
|
|
39
|
+
route: { type: String, required: true },
|
|
40
|
+
})
|
|
41
|
+
const { multiple, accept, route } = toRefs(props)
|
|
42
|
+
|
|
43
|
+
const label = multiple ? "Please select file(s)" : "Please select a file"
|
|
44
|
+
const files = ref([])
|
|
45
|
+
const loading = ref(false)
|
|
46
|
+
const files_uploaded = ref(false)
|
|
47
|
+
|
|
48
|
+
const toggle_loading = useToggle(loading)
|
|
49
|
+
|
|
50
|
+
async function upload_files() {
|
|
51
|
+
toggle_loading()
|
|
52
|
+
await upload_file(
|
|
53
|
+
{ route, files: multiple ? files.value : [files.value[0]] },
|
|
54
|
+
{
|
|
55
|
+
response_function: () => {
|
|
56
|
+
files_uploaded.value = true
|
|
57
|
+
emit("files_uploaded", files.value)
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
)
|
|
61
|
+
toggle_loading()
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function clear() {
|
|
65
|
+
files.value = []
|
|
66
|
+
emit("files_uploaded", files.value)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
watch(files, () => {
|
|
70
|
+
files_uploaded.value = false
|
|
71
|
+
})
|
|
72
|
+
</script>
|
package/components/Header.vue
CHANGED
|
@@ -6,14 +6,7 @@
|
|
|
6
6
|
<v-col>
|
|
7
7
|
<v-row class="justify-center">
|
|
8
8
|
<v-col v-for="(card, i) in cards_list" :key="i" cols="11" md="5">
|
|
9
|
-
<v-card
|
|
10
|
-
class="card"
|
|
11
|
-
hover
|
|
12
|
-
elevation="5"
|
|
13
|
-
:href="card.href"
|
|
14
|
-
rounded
|
|
15
|
-
target="_blank"
|
|
16
|
-
>
|
|
9
|
+
<v-card class="card" hover :href="card.href" rounded target="_blank">
|
|
17
10
|
<v-card-title
|
|
18
11
|
primary-title
|
|
19
12
|
class="justify-center text-h6"
|
package/components/Launcher.vue
CHANGED
|
@@ -10,9 +10,7 @@
|
|
|
10
10
|
<h4 class="pb-3">Please complete the recaptcha to launch the app</h4>
|
|
11
11
|
<Recaptcha :site_key="site_key" />
|
|
12
12
|
</v-col>
|
|
13
|
-
<v-col
|
|
14
|
-
v-else-if="!cloud_store.is_running && cloud_store.is_connexion_launched"
|
|
15
|
-
>
|
|
13
|
+
<v-col v-else-if="!is_running && is_connexion_launched">
|
|
16
14
|
<Loading />
|
|
17
15
|
</v-col>
|
|
18
16
|
</v-row>
|
|
@@ -22,7 +20,8 @@
|
|
|
22
20
|
<script setup>
|
|
23
21
|
const websocket_store = use_websocket_store()
|
|
24
22
|
const cloud_store = use_cloud_store()
|
|
25
|
-
const { is_captcha_validated } =
|
|
23
|
+
const { is_captcha_validated, is_connexion_launched, is_running } =
|
|
24
|
+
storeToRefs(cloud_store)
|
|
26
25
|
|
|
27
26
|
const site_key = useRuntimeConfig().public.RECAPTCHA_SITE_KEY
|
|
28
27
|
|
|
@@ -32,8 +31,4 @@
|
|
|
32
31
|
await websocket_store.ws_connect()
|
|
33
32
|
}
|
|
34
33
|
})
|
|
35
|
-
|
|
36
|
-
onMounted(() => {
|
|
37
|
-
console.log("onMounted", useRuntimeConfig())
|
|
38
|
-
})
|
|
39
34
|
</script>
|
package/components/Loading.vue
CHANGED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FetchingData v-if="loading" />
|
|
3
|
+
<v-container v-else-if="has_missing_files">
|
|
4
|
+
<v-row v-if="mandatory_files.length" align="center">
|
|
5
|
+
<v-col cols="auto" class="pa-0">
|
|
6
|
+
<v-icon color="warning" icon="mdi-file-document-alert-outline" />
|
|
7
|
+
</v-col>
|
|
8
|
+
<p class="pa-1">Mandatory files:</p>
|
|
9
|
+
<v-col v-for="mandatory_file in mandatory_files" cols="auto" class="pa-0">
|
|
10
|
+
<v-chip>{{ mandatory_file }}</v-chip>
|
|
11
|
+
</v-col>
|
|
12
|
+
</v-row>
|
|
13
|
+
<v-row v-if="additional_files.length" align="center">
|
|
14
|
+
<v-col cols="auto" class="pa-0">
|
|
15
|
+
<v-icon color="accent" icon="mdi-file-document-plus-outline" />
|
|
16
|
+
</v-col>
|
|
17
|
+
<p class="pa-1">Additional files:</p>
|
|
18
|
+
<v-col
|
|
19
|
+
v-for="additional_file in additional_files"
|
|
20
|
+
cols="auto"
|
|
21
|
+
class="pa-0"
|
|
22
|
+
>
|
|
23
|
+
<v-chip>{{ additional_file }}</v-chip>
|
|
24
|
+
</v-col>
|
|
25
|
+
</v-row>
|
|
26
|
+
<v-row>
|
|
27
|
+
<v-col cols="12">
|
|
28
|
+
<FileUploader
|
|
29
|
+
v-bind="{ multiple, accept, route }"
|
|
30
|
+
@files_uploaded="files_uploaded"
|
|
31
|
+
/>
|
|
32
|
+
</v-col>
|
|
33
|
+
</v-row>
|
|
34
|
+
<v-row>
|
|
35
|
+
<v-col
|
|
36
|
+
v-if="!mandatory_files.length && additional_files.length"
|
|
37
|
+
cols="auto"
|
|
38
|
+
>
|
|
39
|
+
<v-btn @click="skip_step()" color="warning"> Skip step </v-btn>
|
|
40
|
+
</v-col>
|
|
41
|
+
</v-row>
|
|
42
|
+
</v-container>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup>
|
|
46
|
+
const emit = defineEmits([
|
|
47
|
+
"update_values",
|
|
48
|
+
"increment_step",
|
|
49
|
+
"decrement_step",
|
|
50
|
+
])
|
|
51
|
+
|
|
52
|
+
const props = defineProps({
|
|
53
|
+
multiple: { type: Boolean, required: true },
|
|
54
|
+
input_geode_object: { type: String, required: true },
|
|
55
|
+
files: { type: Array, required: true },
|
|
56
|
+
route: { type: String, required: true },
|
|
57
|
+
schema: { type: Object, required: true },
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const { multiple, input_geode_object, files, route, schema } = props
|
|
61
|
+
|
|
62
|
+
const accept = ref("")
|
|
63
|
+
const loading = ref(false)
|
|
64
|
+
const has_missing_files = ref(false)
|
|
65
|
+
const mandatory_files = ref([])
|
|
66
|
+
const additional_files = ref([])
|
|
67
|
+
const toggle_loading = useToggle(loading)
|
|
68
|
+
|
|
69
|
+
function files_uploaded(value) {
|
|
70
|
+
emit("update_values", { additional_files: value })
|
|
71
|
+
missing_files()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function missing_files() {
|
|
75
|
+
has_missing_files.value = false
|
|
76
|
+
mandatory_files.value = []
|
|
77
|
+
additional_files.value = []
|
|
78
|
+
toggle_loading()
|
|
79
|
+
for (const file of files) {
|
|
80
|
+
const params = { input_geode_object, filename: file.name }
|
|
81
|
+
await api_fetch(
|
|
82
|
+
{ schema, params },
|
|
83
|
+
{
|
|
84
|
+
response_function: (response) => {
|
|
85
|
+
has_missing_files.value = response._data.has_missing_files
|
|
86
|
+
mandatory_files.value = [].concat(
|
|
87
|
+
mandatory_files.value,
|
|
88
|
+
response._data.mandatory_files,
|
|
89
|
+
)
|
|
90
|
+
additional_files.value = [].concat(
|
|
91
|
+
additional_files.value,
|
|
92
|
+
response._data.additional_files,
|
|
93
|
+
)
|
|
94
|
+
const files_list = [].concat(
|
|
95
|
+
mandatory_files.value,
|
|
96
|
+
additional_files.value,
|
|
97
|
+
)
|
|
98
|
+
accept.value = files_list
|
|
99
|
+
.map((filename) => "." + filename.split(".").pop())
|
|
100
|
+
.join(",")
|
|
101
|
+
if (!has_missing_files.value) {
|
|
102
|
+
console.log("MISSING FILESSELECTOR increment_step")
|
|
103
|
+
emit("increment_step")
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
toggle_loading()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
onMounted(() => {
|
|
113
|
+
missing_files()
|
|
114
|
+
})
|
|
115
|
+
</script>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<FetchingData v-if="loading" />
|
|
3
|
+
<v-row v-else-if="allowed_objects.length" class="justify-left">
|
|
3
4
|
<v-col v-for="object in allowed_objects" :key="object" cols="2" md="2">
|
|
4
|
-
<v-card v-ripple class="card ma-2" hover
|
|
5
|
+
<v-card v-ripple class="card ma-2" hover rounded>
|
|
5
6
|
<v-img
|
|
6
7
|
:src="geode_objects[object].image"
|
|
7
8
|
cover
|
|
@@ -14,7 +15,7 @@
|
|
|
14
15
|
</v-col>
|
|
15
16
|
</v-row>
|
|
16
17
|
<v-row v-else class="pa-5">
|
|
17
|
-
<v-card class="card" variant="tonal"
|
|
18
|
+
<v-card class="card" variant="tonal" rounded>
|
|
18
19
|
<v-card-text>
|
|
19
20
|
This file format isn't supported! Please check the
|
|
20
21
|
<a
|
|
@@ -32,21 +33,24 @@
|
|
|
32
33
|
<script setup>
|
|
33
34
|
import geode_objects from "@/assets/geode_objects"
|
|
34
35
|
|
|
35
|
-
const
|
|
36
|
-
const { files } = stepper_tree
|
|
36
|
+
const emit = defineEmits(["update_values", "increment_step"])
|
|
37
37
|
|
|
38
38
|
const props = defineProps({
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
files: { type: Array, required: true },
|
|
40
|
+
key: { type: String, required: false, default: null },
|
|
41
41
|
schema: { type: Object, required: true },
|
|
42
42
|
})
|
|
43
43
|
|
|
44
|
-
const {
|
|
44
|
+
const { files, key, schema } = props
|
|
45
45
|
|
|
46
|
+
const loading = ref(false)
|
|
46
47
|
const allowed_objects = ref([])
|
|
47
48
|
|
|
49
|
+
const toggle_loading = useToggle(loading)
|
|
50
|
+
|
|
48
51
|
async function get_allowed_objects() {
|
|
49
|
-
const params = { filename: files[0].name }
|
|
52
|
+
const params = { filename: files[0].name, key }
|
|
53
|
+
toggle_loading()
|
|
50
54
|
await api_fetch(
|
|
51
55
|
{ schema, params },
|
|
52
56
|
{
|
|
@@ -55,20 +59,17 @@
|
|
|
55
59
|
},
|
|
56
60
|
},
|
|
57
61
|
)
|
|
62
|
+
toggle_loading()
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
function set_geode_object(geode_object) {
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
if (geode_object != "") {
|
|
67
|
+
emit("update_values", { input_geode_object: geode_object })
|
|
68
|
+
emit("increment_step")
|
|
69
|
+
}
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
onMounted(() => {
|
|
66
73
|
get_allowed_objects()
|
|
67
74
|
})
|
|
68
75
|
</script>
|
|
69
|
-
|
|
70
|
-
<style scoped>
|
|
71
|
-
.card {
|
|
72
|
-
border-radius: 15px;
|
|
73
|
-
}
|
|
74
|
-
</style>
|
package/components/Recaptcha.vue
CHANGED
package/components/Step.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card class="pa-5
|
|
2
|
+
<v-card class="pa-5">
|
|
3
3
|
<v-row align="center" @click="set_current_step(step_index)">
|
|
4
4
|
<v-col cols="auto">
|
|
5
5
|
<v-icon
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
<component
|
|
42
42
|
:is="steps[step_index].component.component_name"
|
|
43
43
|
v-bind="steps[step_index].component.component_options"
|
|
44
|
+
@update_values="update_values_event"
|
|
45
|
+
@increment_step="increment_step()"
|
|
46
|
+
@decrement_step="decrement_step()"
|
|
44
47
|
/>
|
|
45
|
-
<v-btn v-if="skippable()" @click="skipStep()" color="primary"
|
|
46
|
-
>Skip step</v-btn
|
|
47
|
-
>
|
|
48
48
|
</v-col>
|
|
49
49
|
</Transition>
|
|
50
50
|
</v-card>
|
|
@@ -58,28 +58,28 @@
|
|
|
58
58
|
const stepper_tree = inject("stepper_tree")
|
|
59
59
|
const { current_step_index, steps } = toRefs(stepper_tree)
|
|
60
60
|
|
|
61
|
-
function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
function set_current_step(step_index) {
|
|
62
|
+
stepper_tree.current_step_index = step_index
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function update_values_event(keys_values_object) {
|
|
66
|
+
console.log("update_values_event", keys_values_object)
|
|
67
|
+
for (const [key, value] of Object.entries(keys_values_object)) {
|
|
68
|
+
console.log(key, value)
|
|
69
|
+
stepper_tree[key] = value
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
|
|
69
|
-
function
|
|
73
|
+
function increment_step() {
|
|
70
74
|
stepper_tree.current_step_index++
|
|
71
75
|
}
|
|
72
76
|
|
|
73
|
-
function
|
|
74
|
-
stepper_tree.current_step_index
|
|
77
|
+
function decrement_step() {
|
|
78
|
+
stepper_tree.current_step_index--
|
|
75
79
|
}
|
|
76
80
|
</script>
|
|
77
81
|
|
|
78
|
-
<style>
|
|
79
|
-
.card {
|
|
80
|
-
border-radius: 15px;
|
|
81
|
-
}
|
|
82
|
-
|
|
82
|
+
<style scoped>
|
|
83
83
|
.slide-fade-enter-active {
|
|
84
84
|
transition: all 0.5s ease-out;
|
|
85
85
|
}
|
package/components/Wrapper.vue
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
<v-col>
|
|
5
5
|
<Header :tool_name="tool_name" :cards_list="cards_list" />
|
|
6
6
|
</v-col>
|
|
7
|
-
<v-col v-if="!
|
|
7
|
+
<v-col v-if="!is_running">
|
|
8
8
|
<Launcher />
|
|
9
9
|
</v-col>
|
|
10
|
-
<v-col v-if="
|
|
10
|
+
<v-col v-if="is_running">
|
|
11
11
|
<Stepper />
|
|
12
12
|
</v-col>
|
|
13
|
-
<v-col v-if="
|
|
13
|
+
<v-col v-if="is_running">
|
|
14
14
|
<PackagesVersions :schema="versions_schema" />
|
|
15
15
|
</v-col>
|
|
16
16
|
</v-row>
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<script setup>
|
|
21
21
|
const cloud_store = use_cloud_store()
|
|
22
|
+
const { is_running } = storeToRefs(cloud_store)
|
|
22
23
|
|
|
23
24
|
const props = defineProps({
|
|
24
25
|
versions_schema: { type: Object, required: true },
|
package/nuxt.config.js
CHANGED
package/package.json
CHANGED