1
0
Fork 0
freesewing/sites/shared/components/workbench/views/print/config.mjs

63 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-06-04 09:59:47 -05:00
import { measurementAsMm } from 'shared/utils.mjs'
export const printSettingsPath = ['print', 'pages']
2023-06-04 09:59:47 -05:00
export const defaultPrintSettings = (units, inMm = true) => {
const margin = units === 'imperial' ? 0.5 : 1
return {
size: 'a4',
orientation: 'portrait',
margin: inMm ? measurementAsMm(margin, units) : margin,
coverPage: true,
cutlist: true,
}
}
const sizes = ['a4', 'a3', 'a2', 'a1', 'a0', 'letter', 'legal', 'tabloid']
2023-06-04 09:59:47 -05:00
export const loadPrintConfig = (units) => {
const defaults = defaultPrintSettings(units, false)
const config = {
size: {
control: 2,
list: sizes,
dflt: defaults.size,
choiceTitles: {},
valueTitles: {},
},
orientation: {
control: 2,
list: ['portrait', 'landscape'],
choiceTitles: {
portrait: 'portrait',
landscape: 'landscape',
},
valueTitles: {
portrait: 'portrait',
landscape: 'landscape',
},
2023-06-04 09:59:47 -05:00
dflt: defaults.orientation,
},
margin: {
control: 2,
min: units === 'imperial' ? 0.25 : 0.5,
max: 2.5,
step: units === 'imperial' ? 0.125 : 0.1,
dflt: defaults.margin,
},
coverPage: {
control: 3,
dflt: defaults.coverPage,
},
cutlist: {
control: 3,
dflt: defaults.cutlist,
},
}
sizes.forEach((s) => {
config.size.choiceTitles[s] = s
config.size.valueTitles[s] = s
})
return config
}