Skip to content

Commit ec290e0

Browse files
Sort scheduling/activity parameters according to optional order provided in the metadata
1 parent afd5dc0 commit ec290e0

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/components/parameters/ParameterRecStruct.svelte

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import ParameterName from './ParameterName.svelte';
1313
import ParameterRec from './ParameterRec.svelte';
1414
import ParameterUnits from './ParameterUnits.svelte';
15+
import { compare } from '../../utilities/generic';
1516
1617
export let disabled: boolean = false;
1718
export let expanded: boolean = false;
@@ -33,22 +34,25 @@
3334
3435
function getSubFormParameters(formParameter: FormParameter<ValueSchemaStruct>): FormParameter[] {
3536
const { schema, value = [] } = formParameter;
36-
const { items: keys } = schema;
37+
const { items: keys, metadata } = schema;
38+
const order = metadata?.item_order;
3739
const structKeys = Object.keys(keys).sort();
3840
3941
const subFormParameters = structKeys.map((key, index) => {
4042
let subFormParameter: FormParameter = {
4143
errors: null,
4244
key,
4345
name: key,
44-
order: index,
46+
order: order ? order.indexOf(key) : index,
4547
schema: schema.items[key],
4648
value: value !== null ? value[key] : null,
4749
valueSource: formParameter.valueSource,
4850
};
4951
return subFormParameter;
5052
});
5153
54+
subFormParameters.sort((a, b) => compare(a.order, b.order));
55+
5256
return subFormParameters;
5357
}
5458

src/components/scheduling/goals/SchedulingGoal.svelte

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@
6161
const schema = version?.parameter_schema;
6262
6363
if (schema && schema.type === 'struct') {
64-
formParameters = Object.entries(schema.items).map(([name, subschema], i) => {
64+
const { items, metadata } = schema;
65+
const order = metadata?.item_order;
66+
formParameters = Object.entries(items).map(([name, subschema], i) => {
6567
return {
6668
errors: null,
6769
name,
68-
order: i,
70+
order: order ? order.indexOf(name) : i,
6971
required: true,
7072
schema: subschema,
7173
value:

0 commit comments

Comments
 (0)