Skip to content

Commit aaaa81f

Browse files
Merge pull request #223 from Geode-solutions/next
Next
2 parents a338a9f + c458e03 commit aaaa81f

File tree

20 files changed

+173
-92
lines changed

20 files changed

+173
-92
lines changed

.github/workflows/Branch-protection.yml

Lines changed: 0 additions & 11 deletions
This file was deleted.

.github/workflows/CICD.yml

Lines changed: 0 additions & 37 deletions
This file was deleted.

.github/workflows/pr_update.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Pull request
2+
3+
on:
4+
pull_request:
5+
types: [opened, reopened]
6+
branches:
7+
- master
8+
9+
jobs:
10+
update-branch:
11+
uses: Geode-solutions/actions/.github/workflows/update-branch.yml@master

.github/workflows/prepare_pr.yml

Lines changed: 0 additions & 11 deletions
This file was deleted.

.github/workflows/test.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Test
2+
3+
on:
4+
push:
5+
branches-ignore:
6+
- master
7+
- next
8+
9+
jobs:
10+
test:
11+
uses: Geode-solutions/actions/.github/workflows/js-test.yml@master
12+
with:
13+
repos: ${{ vars.REPOS }}
14+
secrets: inherit

.github/workflows/test_pr.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: Test PR
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
6+
7+
jobs:
8+
test:
9+
uses: Geode-solutions/actions/.github/workflows/js-test-pr.yml@master
10+
with:
11+
repos: ${{ vars.REPOS }}
12+
secrets: inherit

.oxlintrc.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"categories": {
3+
"correctness": "error",
4+
"suspicious": "error",
5+
"pedantic": "warn",
6+
"perf": "error",
7+
"style": "error",
8+
"restriction": "error"
9+
},
10+
"plugins": ["import", "node", "oxc", "promise", "unicorn", "vitest"]
11+
}

.releaserc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
plugins: [
77
'@semantic-release/commit-analyzer',
88
'@semantic-release/release-notes-generator',
9-
'@semantic-release/github',
10-
'@semantic-release/npm'
9+
'@semantic-release/github'
1110
]
1211
}

commitlint.config.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export default {
2+
extends: ["@commitlint/config-angular"],
3+
rules: {
4+
"scope-empty": [2, "never"],
5+
"subject-empty": [2, "never"],
6+
"subject-max-length": [0],
7+
"body-leading-blank": [0],
8+
"footer-leading-blank": [0],
9+
"header-max-length": [0],
10+
"scope-case": [0],
11+
"subject-case": [0],
12+
"subject-full-stop": [0],
13+
"type-case": [0],
14+
"type-empty": [0],
15+
},
16+
}

components/ObjectSelector.vue

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<v-img
2525
:src="geode_objects[key].image"
2626
cover
27-
:class="!value['is_loadable'] ? 'disabled' : ''"
27+
:class="!value['is_loadable'] ? 'disabled' : undefined"
2828
/>
2929
</v-card>
3030
</span>
@@ -66,44 +66,81 @@
6666
const allowed_objects = ref({})
6767
const toggle_loading = useToggle(loading)
6868
69+
function select_geode_object(object_map) {
70+
const object_keys = Object.keys(object_map)
71+
if (!object_keys.length) {
72+
return undefined
73+
}
74+
if (
75+
object_keys.length === 1 &&
76+
object_map[object_keys[0]].is_loadable > 0
77+
) {
78+
return object_keys[0]
79+
}
80+
const highest_load_score = Math.max(
81+
...object_keys.map((key) => object_map[key].is_loadable),
82+
)
83+
if (highest_load_score <= 0) {
84+
return undefined
85+
}
86+
const best_score_objects = object_keys.filter(
87+
(key) => object_map[key].is_loadable === highest_load_score,
88+
)
89+
if (best_score_objects.length === 1) {
90+
return best_score_objects[0]
91+
}
92+
const highest_priority = Math.max(
93+
...best_score_objects.map(
94+
(key) => object_map[key].object_priority ?? -Infinity,
95+
),
96+
)
97+
const best_priority_objects = best_score_objects.filter(
98+
(key) => object_map[key].object_priority === highest_priority,
99+
)
100+
if (highest_priority !== -Infinity && best_priority_objects.length === 1) {
101+
return best_priority_objects[0]
102+
}
103+
return undefined
104+
}
105+
69106
async function get_allowed_objects() {
70107
toggle_loading()
71108
allowed_objects.value = {}
72-
var promise_array = []
73-
for (const filename of filenames) {
109+
const promise_array = filenames.map((filename) => {
74110
const params = { filename, supported_feature }
75-
const promise = api_fetch({ schema, params })
76-
promise_array.push(promise)
77-
}
111+
return api_fetch({ schema, params })
112+
})
78113
const responses = await Promise.all(promise_array)
79-
let values = []
80-
for (const response of responses) {
81-
values.push(response.data.value.allowed_objects)
82-
}
83-
const all_keys = [...new Set(values.flatMap((value) => Object.keys(value)))]
84-
const common_keys = all_keys.filter(
85-
(i) => !values.some((j) => !Object.keys(j).includes(i)),
114+
const allowed_objects_list = responses.map(
115+
(response) => response.data.value.allowed_objects,
116+
)
117+
const all_keys = [...new Set(allowed_objects_list.flatMap(Object.keys))]
118+
const common_keys = all_keys.filter((key) =>
119+
allowed_objects_list.every((obj) => key in obj),
86120
)
87-
var final_object = {}
121+
const final_object = {}
88122
for (const key of common_keys) {
89-
for (const value of values) {
90-
if (value[key].is_loadable == false) {
91-
final_object[key] = { is_loadable: false }
92-
} else {
93-
final_object[key] = { is_loadable: true }
94-
}
123+
const load_scores = allowed_objects_list.map(
124+
(obj) => obj[key].is_loadable,
125+
)
126+
const priorities = allowed_objects_list
127+
.map((obj) => obj[key].object_priority)
128+
.filter((p) => p !== undefined && p !== null)
129+
final_object[key] = { is_loadable: Math.min(...load_scores) }
130+
if (priorities.length) {
131+
final_object[key].object_priority = Math.max(...priorities)
95132
}
96133
}
97-
98134
allowed_objects.value = final_object
99-
if (Object.keys(allowed_objects.value).length == 1) {
100-
set_geode_object(Object.keys(allowed_objects.value)[0])
135+
const selected_object = select_geode_object(final_object)
136+
if (selected_object) {
137+
set_geode_object(selected_object)
101138
}
102139
toggle_loading()
103140
}
104141
105142
function set_geode_object(input_geode_object) {
106-
if (input_geode_object != "") {
143+
if (input_geode_object) {
107144
emit("update_values", { input_geode_object })
108145
emit("increment_step")
109146
}

0 commit comments

Comments
 (0)