Merge branch 'develop' into eriese-fix-workflows
This commit is contained in:
commit
93d915d8b6
19 changed files with 75 additions and 26 deletions
|
@ -1,8 +1,12 @@
|
||||||
Unreleased:
|
Unreleased:
|
||||||
Added:
|
Changed:
|
||||||
|
charlie:
|
||||||
|
- Renamed back pocket jet to back pocket welt
|
||||||
|
theo:
|
||||||
|
- migrated `waistbandWidth` option from `mm` to snapped `pct` option
|
||||||
|
|
||||||
2.21.3:
|
2.21.3:
|
||||||
date: 2022-07-03
|
date: 2022-07-02
|
||||||
|
|
||||||
Changed:
|
Changed:
|
||||||
core:
|
core:
|
||||||
|
|
|
@ -71,7 +71,7 @@ export default {
|
||||||
frontPocketFacing: 'frontPocket',
|
frontPocketFacing: 'frontPocket',
|
||||||
backPocketFacing: 'backPocket',
|
backPocketFacing: 'backPocket',
|
||||||
backPocketInterfacing: 'backPocket',
|
backPocketInterfacing: 'backPocket',
|
||||||
backPocketJet: 'backPocketFacing',
|
backPocketWelt: 'backPocketFacing',
|
||||||
flyFacing: 'front',
|
flyFacing: 'front',
|
||||||
flyExtension: 'flyFacing',
|
flyExtension: 'flyFacing',
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,13 +6,13 @@ export default (part) => {
|
||||||
for (let id in paths) delete paths[id]
|
for (let id in paths) delete paths[id]
|
||||||
delete snippets.logo
|
delete snippets.logo
|
||||||
|
|
||||||
const jetHeight = points.bottomRight.x / 5
|
const weltHeight = points.bottomRight.x / 5
|
||||||
points.bottomLeft = points.curveStartLeft.shift(-90, points.rightNotch.x / 1.75)
|
points.bottomLeft = points.curveStartLeft.shift(-90, points.rightNotch.x / 1.75)
|
||||||
points.bottomRight = points.bottomLeft.flipX()
|
points.bottomRight = points.bottomLeft.flipX()
|
||||||
points.midLeft = points.bottomLeft.shift(90, jetHeight)
|
points.midLeft = points.bottomLeft.shift(90, weltHeight)
|
||||||
points.midRight = points.bottomRight.shift(90, jetHeight)
|
points.midRight = points.bottomRight.shift(90, weltHeight)
|
||||||
points.topLeft = points.bottomLeft.shift(90, jetHeight * 2)
|
points.topLeft = points.bottomLeft.shift(90, weltHeight * 2)
|
||||||
points.topRight = points.bottomRight.shift(90, jetHeight * 2)
|
points.topRight = points.bottomRight.shift(90, weltHeight * 2)
|
||||||
points.leftNotch = new Point(points.leftNotch.x, points.midRight.y)
|
points.leftNotch = new Point(points.leftNotch.x, points.midRight.y)
|
||||||
points.rightNotch = points.leftNotch.flipX()
|
points.rightNotch = points.leftNotch.flipX()
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ export default (part) => {
|
||||||
macro('title', {
|
macro('title', {
|
||||||
at: points.titleAnchor,
|
at: points.titleAnchor,
|
||||||
nr: 4,
|
nr: 4,
|
||||||
title: 'backPocketJet',
|
title: 'backPocketWelt',
|
||||||
scale: 0.5,
|
scale: 0.5,
|
||||||
})
|
})
|
||||||
points.grainlineTop = points.topLeft.shiftFractionTowards(points.topRight, 0.15)
|
points.grainlineTop = points.topLeft.shiftFractionTowards(points.topRight, 0.15)
|
|
@ -15,7 +15,7 @@ import draftFrontPocketFacing from './front-pocket-facing'
|
||||||
import draftBackPocket from './back-pocket'
|
import draftBackPocket from './back-pocket'
|
||||||
import draftBackPocketFacing from './back-pocket-facing'
|
import draftBackPocketFacing from './back-pocket-facing'
|
||||||
import draftBackPocketInterfacing from './back-pocket-interfacing'
|
import draftBackPocketInterfacing from './back-pocket-interfacing'
|
||||||
import draftBackPocketJet from './back-pocket-jet'
|
import draftBackPocketWelt from './back-pocket-welt'
|
||||||
import draftFlyFacing from './fly-facing'
|
import draftFlyFacing from './fly-facing'
|
||||||
import draftFlyExtension from './fly-extension'
|
import draftFlyExtension from './fly-extension'
|
||||||
import draftBeltLoops from './beltloops'
|
import draftBeltLoops from './beltloops'
|
||||||
|
@ -40,7 +40,7 @@ Charlie.prototype.draftFrontPocketFacing = (part) => draftFrontPocketFacing(part
|
||||||
Charlie.prototype.draftBackPocket = (part) => draftBackPocket(part)
|
Charlie.prototype.draftBackPocket = (part) => draftBackPocket(part)
|
||||||
Charlie.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part)
|
Charlie.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part)
|
||||||
Charlie.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part)
|
Charlie.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part)
|
||||||
Charlie.prototype.draftBackPocketJet = (part) => draftBackPocketJet(part)
|
Charlie.prototype.draftBackPocketWelt = (part) => draftBackPocketWelt(part)
|
||||||
Charlie.prototype.draftFlyFacing = (part) => draftFlyFacing(part)
|
Charlie.prototype.draftFlyFacing = (part) => draftFlyFacing(part)
|
||||||
Charlie.prototype.draftFlyExtension = (part) => draftFlyExtension(part)
|
Charlie.prototype.draftFlyExtension = (part) => draftFlyExtension(part)
|
||||||
Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part)
|
Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part)
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import { version } from '../package.json'
|
import { version } from '../package.json'
|
||||||
|
import configHelpers from '@freesewing/config-helpers'
|
||||||
|
const { steps, pctBasedOn } = configHelpers
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
version,
|
version,
|
||||||
|
@ -34,7 +36,8 @@ export default {
|
||||||
// Constants
|
// Constants
|
||||||
|
|
||||||
// Millimeter
|
// Millimeter
|
||||||
waistbandWidth: { mm: 40, min: 5, max: 80 },
|
//waistbandWidth: { mm: 40, min: 5, max: 80 },
|
||||||
|
waistbandWidth: { pct: 3, min: 2, max: 6, snap: steps, ...pctBasedOn('waistToFloor') },
|
||||||
|
|
||||||
// Percentages
|
// Percentages
|
||||||
legWidth: { pct: 10, min: 0, max: 30 },
|
legWidth: { pct: 10, min: 0, max: 30 },
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
export default function (part) {
|
export default function (part) {
|
||||||
let {
|
const {
|
||||||
store,
|
store,
|
||||||
sa,
|
sa,
|
||||||
Point,
|
Point,
|
||||||
points,
|
points,
|
||||||
Path,
|
Path,
|
||||||
paths,
|
paths,
|
||||||
|
absoluteOptions,
|
||||||
options,
|
options,
|
||||||
complete,
|
complete,
|
||||||
paperless,
|
paperless,
|
||||||
|
@ -45,7 +46,7 @@ export default function (part) {
|
||||||
points[0] = new Point(0, 0)
|
points[0] = new Point(0, 0)
|
||||||
points[1] = new Point(
|
points[1] = new Point(
|
||||||
0,
|
0,
|
||||||
measurements.crotchDepth - measurements.waistToHips - options.waistbandWidth
|
measurements.crotchDepth - measurements.waistToHips - absoluteOptions.waistbandWidth
|
||||||
)
|
)
|
||||||
points[2] = new Point(0, points[1].y + measurements.inseam + store.get('lengthBonus'))
|
points[2] = new Point(0, points[1].y + measurements.inseam + store.get('lengthBonus'))
|
||||||
points[201] = points[2].shift(-90, 10)
|
points[201] = points[2].shift(-90, 10)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
export default function (part) {
|
export default function (part) {
|
||||||
let { options, Point, points, Path, paths, complete, paperless, macro } = part.shorthand()
|
let { absoluteOptions, Point, points, Path, paths, complete, paperless, macro } = part.shorthand()
|
||||||
|
|
||||||
let height = options.waistbandWidth + 30
|
let height = absoluteOptions.waistbandWidth + 30
|
||||||
let width = (height - 30) / 2
|
let width = (height - 30) / 2
|
||||||
|
|
||||||
points.topRight = new Point(width / 2, 0)
|
points.topRight = new Point(width / 2, 0)
|
||||||
|
|
|
@ -4,7 +4,7 @@ export default function (part) {
|
||||||
points,
|
points,
|
||||||
Path,
|
Path,
|
||||||
paths,
|
paths,
|
||||||
options,
|
absoluteOptions,
|
||||||
complete,
|
complete,
|
||||||
paperless,
|
paperless,
|
||||||
measurements,
|
measurements,
|
||||||
|
@ -14,7 +14,7 @@ export default function (part) {
|
||||||
} = part.shorthand()
|
} = part.shorthand()
|
||||||
|
|
||||||
points[0] = new Point(0, 0)
|
points[0] = new Point(0, 0)
|
||||||
points[2] = new Point(options.waistbandWidth, measurements.hips / 2 + 60)
|
points[2] = new Point(absoluteOptions.waistbandWidth, measurements.hips / 2 + 60)
|
||||||
points[1] = new Point(points[2].x, points[0].y)
|
points[1] = new Point(points[2].x, points[0].y)
|
||||||
points[3] = new Point(points[0].x, points[2].y)
|
points[3] = new Point(points[0].x, points[2].y)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ export default function (part) {
|
||||||
points,
|
points,
|
||||||
Path,
|
Path,
|
||||||
paths,
|
paths,
|
||||||
options,
|
absoluteOptions,
|
||||||
complete,
|
complete,
|
||||||
paperless,
|
paperless,
|
||||||
measurements,
|
measurements,
|
||||||
|
@ -14,7 +14,7 @@ export default function (part) {
|
||||||
} = part.shorthand()
|
} = part.shorthand()
|
||||||
|
|
||||||
points[0] = new Point(0, 0)
|
points[0] = new Point(0, 0)
|
||||||
points[2] = new Point(options.waistbandWidth, measurements.hips / 2 + 40)
|
points[2] = new Point(absoluteOptions.waistbandWidth, measurements.hips / 2 + 40)
|
||||||
points[1] = new Point(points[2].x, points[0].y)
|
points[1] = new Point(points[2].x, points[0].y)
|
||||||
points[3] = new Point(points[0].x, points[2].y)
|
points[3] = new Point(points[0].x, points[2].y)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
back: Rückseite
|
back: Rückseite
|
||||||
backBase: Rückseite Basis
|
backBase: Rückseite Basis
|
||||||
|
backPocketWelt: Back pocket welt
|
||||||
base: Basis
|
base: Basis
|
||||||
bentBack: Rückseite Bent
|
bentBack: Rückseite Bent
|
||||||
bentBase: Basis Bent
|
bentBase: Basis Bent
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
back: Back
|
back: Back
|
||||||
backBase: Back base
|
backBase: Back base
|
||||||
|
backPocketWelt: Back pocket welt
|
||||||
base: Base
|
base: Base
|
||||||
bentBack: Bent back
|
bentBack: Bent back
|
||||||
bentBase: Bent base
|
bentBase: Bent base
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
back: Atrás
|
back: Atrás
|
||||||
backBase: Base trasera
|
backBase: Base trasera
|
||||||
|
backPocketWelt: Back pocket welt
|
||||||
base: Base
|
base: Base
|
||||||
bentBack: Trasero Bent
|
bentBack: Trasero Bent
|
||||||
bentBase: Base Bent
|
bentBase: Base Bent
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
back: Retour
|
back: Retour
|
||||||
backBase: Base dos
|
backBase: Base dos
|
||||||
|
backPocketWelt: Back pocket welt
|
||||||
base: Base
|
base: Base
|
||||||
bentBack: Dos de Bent
|
bentBack: Dos de Bent
|
||||||
bentBase: Base de Bent
|
bentBase: Base de Bent
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
back: Achterzijde
|
back: Achterzijde
|
||||||
backBase: Basis rug
|
backBase: Basis rug
|
||||||
|
backPocketWelt: Back pocket welt
|
||||||
base: Basis
|
base: Basis
|
||||||
bentBack: Achterzijde Bent
|
bentBack: Achterzijde Bent
|
||||||
bentBase: Basis Bent
|
bentBase: Basis Bent
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
export default () => null
|
const noSearch = () => null
|
||||||
|
|
||||||
|
export default noSearch
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react'
|
import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import { isDegreeMeasurement } from '../../../config/measurements'
|
import { isDegreeMeasurement } from '../../../config/measurements'
|
||||||
import measurementAsMm from '@freesewing/utils/measurementAsMm'
|
import { measurementAsMm } from 'shared/utils'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is a single input for a measurements
|
* This is a single input for a measurements
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import PctDegOption from 'shared/components/workbench/inputs/design-option-pct-deg'
|
import PctDegOption from 'shared/components/workbench/inputs/design-option-pct-deg'
|
||||||
import CountOption from 'shared/components/workbench/inputs/design-option-count'
|
import CountOption from 'shared/components/workbench/inputs/design-option-count'
|
||||||
import ListOption from 'shared/components/workbench/inputs/design-option-list'
|
import ListOption from 'shared/components/workbench/inputs/design-option-list'
|
||||||
|
import Popout from 'shared/components/popout'
|
||||||
|
|
||||||
export const Tmp = props => <p>not yet</p>
|
export const Tmp = props => <p>not yet</p>
|
||||||
|
|
||||||
|
@ -9,6 +10,6 @@ export const inputs = {
|
||||||
count: CountOption,
|
count: CountOption,
|
||||||
deg: props => (<PctDegOption {...props} type='deg' />),
|
deg: props => (<PctDegOption {...props} type='deg' />),
|
||||||
list: ListOption,
|
list: ListOption,
|
||||||
mm: (<p>Mm options are not supported. Please report this.</p>),
|
mm: () => <Popout fixme compact>Mm options are deprecated. Please report this</Popout>,
|
||||||
constant: Tmp,
|
constant: Tmp,
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,7 @@ const Option = props => {
|
||||||
const Value = values[type]
|
const Value = values[type]
|
||||||
const hide = opt.hide && opt.hide(props.draft.settings);
|
const hide = opt.hide && opt.hide(props.draft.settings);
|
||||||
|
|
||||||
if (hide) {
|
if (hide) return <Li></Li>
|
||||||
return <Li></Li>
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type === 'bool') {
|
if (type === 'bool') {
|
||||||
const toggleBoolean = () => {
|
const toggleBoolean = () => {
|
||||||
|
|
|
@ -124,3 +124,38 @@ export const getCrumbs = (app, slug=false, title) => {
|
||||||
return crumbs
|
return crumbs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const measurementAsMm = (value, units = "metric") => {
|
||||||
|
if (typeof value === "number")
|
||||||
|
return value * (units === "imperial" ? 25.4 : 10);
|
||||||
|
|
||||||
|
if (value.endsWith('.'))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (units === "metric") {
|
||||||
|
value = Number(value);
|
||||||
|
if (isNaN(value)) return false;
|
||||||
|
return value * 10;
|
||||||
|
} else {
|
||||||
|
const imperialFractionToMm = value => {
|
||||||
|
let chunks = value.trim().split("/");
|
||||||
|
if (chunks.length !== 2 || chunks[1] === "") return false;
|
||||||
|
let num = Number(chunks[0]);
|
||||||
|
let denom = Number(chunks[1]);
|
||||||
|
if (isNaN(num) || isNaN(denom)) return false;
|
||||||
|
else return (num * 25.4) / denom;
|
||||||
|
};
|
||||||
|
let chunks = value.split(" ");
|
||||||
|
if (chunks.length === 1) {
|
||||||
|
let val = chunks[0];
|
||||||
|
if (!isNaN(Number(val))) return Number(val) * 25.4;
|
||||||
|
else return imperialFractionToMm(val);
|
||||||
|
} else if (chunks.length === 2) {
|
||||||
|
let inches = Number(chunks[0]);
|
||||||
|
if (isNaN(inches)) return false;
|
||||||
|
let fraction = imperialFractionToMm(chunks[1]);
|
||||||
|
if (fraction === false) return false;
|
||||||
|
return inches * 25.4 + fraction;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue