Skip to content

Commit c3279bb

Browse files
promises and algorithms
1 parent 91b6190 commit c3279bb

File tree

3 files changed

+73
-38
lines changed

3 files changed

+73
-38
lines changed

components/ExtensionSelector.vue

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
<FetchingData v-if="loading" />
33
<v-row
44
v-for="(
5-
output_extensions, geode_object
5+
output_extensions, output_geode_object
66
) in geode_objects_and_output_extensions"
77
:key="geode_object"
88
class="justify-left"
99
>
1010
<v-card class="card ma-2 pa-2" width="100%">
11-
<v-tooltip :text="`Export as a ${geode_object}`" location="bottom">
11+
<v-tooltip :text="`Export as a ${output_geode_object}`" location="bottom">
1212
<template v-slot:activator="{ props }">
1313
<v-card-title v-bind="props">
14-
{{ geode_object }}
14+
{{ output_geode_object }}
1515
</v-card-title>
1616
</template>
1717
</v-tooltip>
@@ -52,6 +52,7 @@
5252
</template>
5353

5454
<script setup>
55+
import _ from "lodash"
5556
import schema from "@/assets/schemas/ExtensionSelector.json"
5657
5758
const emit = defineEmits([
@@ -84,8 +85,28 @@
8485
reject()
8586
},
8687
response_function: (response) => {
87-
geode_objects_and_output_extensions.value =
88-
response._data.geode_objects_and_output_extensions
88+
console.log(filename)
89+
data = response._data.geode_objects_and_output_extensions
90+
if (_.isEmpty(geode_objects_and_output_extensions.value)) {
91+
geode_objects_and_output_extensions.value = data
92+
} else {
93+
for (const [geode_object, geode_object_value] of Object.entries(
94+
data,
95+
)) {
96+
console.log(geode_object)
97+
for (const [
98+
output_extension,
99+
output_extension_value,
100+
] of Object.entries(geode_object_value)) {
101+
console.log(output_extension)
102+
if (!output_extension_value["is_saveable"]) {
103+
geode_objects_and_output_extensions.value[geode_object][
104+
output_extension
105+
]["is_saveable"] = false
106+
}
107+
}
108+
}
109+
}
89110
resolve()
90111
},
91112
response_error_function: () => {
@@ -100,10 +121,10 @@
100121
toggle_loading()
101122
}
102123
103-
function set_variables(geode_object, output_extension) {
104-
if (geode_object != "" && output_extension != "") {
124+
function set_variables(output_geode_object, output_extension) {
125+
if (output_geode_object != "" && output_extension != "") {
105126
const keys_values_object = {
106-
output_geode_object: geode_object,
127+
output_geode_object,
107128
output_extension,
108129
}
109130
emit("update_values", keys_values_object)

components/MissingFilesSelector.vue

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -77,38 +77,48 @@
7777
has_missing_files.value = false
7878
mandatory_files.value = []
7979
additional_files.value = []
80+
var promise_array = []
8081
8182
for (const filename of filenames) {
8283
const params = { input_geode_object, filename }
83-
await api_fetch(
84-
{ schema, params },
85-
{
86-
request_error_function: () => {
87-
resolve()
84+
const promise = new Promise((resolve, reject) => {
85+
api_fetch(
86+
{ schema, params },
87+
{
88+
request_error_function: () => {
89+
reject()
90+
},
91+
response_function: (response) => {
92+
has_missing_files.value = response._data.has_missing_files
93+
? true
94+
: has_missing_files.value
95+
mandatory_files.value = [].concat(
96+
mandatory_files.value,
97+
response._data.mandatory_files,
98+
)
99+
additional_files.value = [].concat(
100+
additional_files.value,
101+
response._data.additional_files,
102+
)
103+
resolve()
104+
},
105+
response_error_function: () => {
106+
reject()
107+
},
88108
},
89-
response_function: (response) => {
90-
has_missing_files.value = response._data.has_missing_files
91-
mandatory_files.value = response._data.mandatory_files
92-
additional_files.value = 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-
emit("increment_step")
103-
}
104-
},
105-
response_error_function: () => {
106-
resolve()
107-
},
108-
},
109-
)
109+
)
110+
})
111+
promise_array.push(promise)
112+
}
113+
await Promise.all(promise_array)
114+
if (!has_missing_files.value) {
115+
emit("increment_step")
116+
} else {
117+
accept.value = []
118+
.concat(mandatory_files.value, additional_files.value)
119+
.map((filename) => "." + filename.split(".").pop())
120+
.join(",")
110121
}
111-
112122
toggle_loading()
113123
}
114124

components/ObjectSelector.vue

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,13 @@
6262
reject()
6363
},
6464
response_function: (response) => {
65-
console.log(response._data.allowed_objects)
66-
allowed_objects.value = response._data.allowed_objects
67-
65+
if (allowed_objects.value.length === 0) {
66+
allowed_objects.value = response._data.allowed_objects
67+
} else {
68+
allowed_objects.value.filter((value) =>
69+
response._data.allowed_objects.includes(value),
70+
)
71+
}
6872
resolve()
6973
},
7074
response_error_function: () => {

0 commit comments

Comments
 (0)