fix(core): Update Pattern.sampleOptions() to work with additional option types
This commit is contained in:
parent
3a15f7a730
commit
969d481585
1 changed files with 20 additions and 6 deletions
|
@ -767,17 +767,18 @@ Pattern.prototype.__isStackHidden = function (stackName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates an array of settings.options objects for sampling a list option
|
* Generates an array of settings.options objects for sampling a list or boolean option
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {string} optionName - Name of the option to sample
|
* @param {string} optionName - Name of the option to sample
|
||||||
* @return {Array} sets - The list of settings objects
|
* @return {Array} sets - The list of settings objects
|
||||||
*/
|
*/
|
||||||
Pattern.prototype.__listOptionSets = function (optionName) {
|
Pattern.prototype.__listBoolOptionSets = function (optionName) {
|
||||||
let option = this.config.options[optionName]
|
let option = this.config.options[optionName]
|
||||||
const base = this.__setBase()
|
const base = this.__setBase()
|
||||||
const sets = []
|
const sets = []
|
||||||
let run = 1
|
let run = 1
|
||||||
|
if (typeof option.bool !== 'undefined') option = { list: [false, true] }
|
||||||
for (const choice of option.list) {
|
for (const choice of option.list) {
|
||||||
const settings = {
|
const settings = {
|
||||||
...base,
|
...base,
|
||||||
|
@ -1080,11 +1081,15 @@ Pattern.prototype.__needs = function (partName, set = 0) {
|
||||||
* @return {Array} sets - The list of settings objects
|
* @return {Array} sets - The list of settings objects
|
||||||
*/
|
*/
|
||||||
Pattern.prototype.__optionSets = function (optionName) {
|
Pattern.prototype.__optionSets = function (optionName) {
|
||||||
let option = this.config.options[optionName]
|
|
||||||
if (typeof option?.list === 'object') return this.__listOptionSets(optionName)
|
|
||||||
const sets = []
|
const sets = []
|
||||||
|
if (!(optionName in this.config.options)) return sets
|
||||||
|
let option = this.config.options[optionName]
|
||||||
|
if (typeof option.list === 'object' || typeof option.bool !== 'undefined')
|
||||||
|
return this.__listBoolOptionSets(optionName)
|
||||||
let factor = 1
|
let factor = 1
|
||||||
let step, val
|
let step, val
|
||||||
|
let numberRuns = 10
|
||||||
|
let stepFactor = numberRuns - 1
|
||||||
if (typeof option.min === 'undefined' || typeof option.max === 'undefined') {
|
if (typeof option.min === 'undefined' || typeof option.max === 'undefined') {
|
||||||
const min = option * 0.9
|
const min = option * 0.9
|
||||||
const max = option * 1.1
|
const max = option * 1.1
|
||||||
|
@ -1092,9 +1097,16 @@ Pattern.prototype.__optionSets = function (optionName) {
|
||||||
}
|
}
|
||||||
if (typeof option.pct !== 'undefined') factor = 100
|
if (typeof option.pct !== 'undefined') factor = 100
|
||||||
val = option.min / factor
|
val = option.min / factor
|
||||||
step = (option.max / factor - val) / 9
|
if (typeof option.count !== 'undefined' || typeof option.mm !== 'undefined') {
|
||||||
|
const numberOfCounts = option.max - option.min + 1
|
||||||
|
if (numberOfCounts < 10) {
|
||||||
|
numberRuns = numberOfCounts
|
||||||
|
stepFactor = Math.max(numberRuns - 1, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
step = (option.max / factor - val) / stepFactor
|
||||||
const base = this.__setBase()
|
const base = this.__setBase()
|
||||||
for (let run = 1; run < 11; run++) {
|
for (let run = 1; run <= numberRuns; run++) {
|
||||||
const settings = {
|
const settings = {
|
||||||
...base,
|
...base,
|
||||||
options: {
|
options: {
|
||||||
|
@ -1106,6 +1118,8 @@ Pattern.prototype.__optionSets = function (optionName) {
|
||||||
settings.options[optionName] = val
|
settings.options[optionName] = val
|
||||||
sets.push(settings)
|
sets.push(settings)
|
||||||
val += step
|
val += step
|
||||||
|
if (typeof option.count !== 'undefined' || typeof option.mm !== 'undefined')
|
||||||
|
val = Math.round(val)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sets
|
return sets
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue