1
0
Fork 0

feat(shared): Optional ordering for design options and menus

This commit is contained in:
Benjamin Fan 2024-02-12 08:29:04 -08:00
parent bafb33755c
commit a1392cba2e
2 changed files with 23 additions and 11 deletions

View file

@ -11,32 +11,44 @@ how options are presented.
## Add menu structure
Because FreeSewing designs hae been written with the expectation that
Because FreeSewing designs have been written with the expectation that
they will be used primarily through the freesewing.org website,
their options have been extended with menu information.
```js
options: {
// Fit
waistEase: { pct: 2, min: 0, max: 10, menu: 'fit' },
seatEase: { pct: 5, min: 0, max: 15, menu: 'fit' },
waistEase: { pct: 2, min: 0, max: 10, menu: 'fit', sort: '100' },
seatEase: { pct: 5, min: 0, max: 15, menu: 'fit', sort: '200' },
// Style
waistHeight: { pct: 5, min: 0, max: 100, menu: 'style' },
lengthBonus: { pct: 0, min: -15, max: 10, menu: 'style' },
waistHeight: { pct: 5, min: 0, max: 100, menu: 'style', sort: '400' },
lengthBonus: { pct: 0, min: -15, max: 10, menu: 'style', sort: '300' },
elasticatedCuff: { bool: true, menu: 'style' },
buttons = { count: 7, min: 4, max: 12, menu: 'style.closure' }
extraTopButton = { bool: true, menu: 'style.closure' }
buttons = { count: 7, min: 4, max: 12, menu: 'style.closure', sort: '800' }
extraTopButton = { bool: true, menu: 'style.closure', sort: '850' }
}
```
In the above example, the added `menu` attributes provide the
the freesewing.org website UI with information about the options
freesewing.org website UI with information about the options
should appear in menus.
The `waistEase` and `seatEase` options should appear in the `fit`
- The `waistEase` and `seatEase` options should appear in the `fit`
menu while the other options go in the `style` menu.
Additionally, the `buttons` and `extraTopButton` options should
- Additionally, the `buttons` and `extraTopButton` options should
appear in a `closure` submenu under the `style` menu.
The optional 'sort' attributes provide the UI with information about
the order in which options and menus should appear.
- Within the `fit` menu, `waistEase` should come before `seatEase`.
- Within the `style` menu, options should be in the order
`lengthBonus`, `waistHeight`, `buttons`, `extraTopButton`, and
`elasticatedCuff`.
- The `elasticatedCuff` option does not have a `sort` attribute,
so it should appear after the options that do.
- Because the `fit` menu has an option with a sort value that comes
before any of the sort values for options in the `style` menu,
the `fit` menu should appear before the `style` menu.
<Note>
##### This is not a core feature