diff --git a/config/changelog.yaml b/config/changelog.yaml index 8e0e22006f8..e882679bf3d 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,8 +1,12 @@ 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: - date: 2022-07-03 + date: 2022-07-02 Changed: core: diff --git a/designs/charlie/config/index.js b/designs/charlie/config/index.js index 3fd9903e31f..66d137eafd1 100644 --- a/designs/charlie/config/index.js +++ b/designs/charlie/config/index.js @@ -71,7 +71,7 @@ export default { frontPocketFacing: 'frontPocket', backPocketFacing: 'backPocket', backPocketInterfacing: 'backPocket', - backPocketJet: 'backPocketFacing', + backPocketWelt: 'backPocketFacing', flyFacing: 'front', flyExtension: 'flyFacing', }, diff --git a/designs/charlie/src/back-pocket-jet.js b/designs/charlie/src/back-pocket-welt.js similarity index 83% rename from designs/charlie/src/back-pocket-jet.js rename to designs/charlie/src/back-pocket-welt.js index c1b5e3b5e12..9cc1c5e21e1 100644 --- a/designs/charlie/src/back-pocket-jet.js +++ b/designs/charlie/src/back-pocket-welt.js @@ -6,13 +6,13 @@ export default (part) => { for (let id in paths) delete paths[id] 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.bottomRight = points.bottomLeft.flipX() - points.midLeft = points.bottomLeft.shift(90, jetHeight) - points.midRight = points.bottomRight.shift(90, jetHeight) - points.topLeft = points.bottomLeft.shift(90, jetHeight * 2) - points.topRight = points.bottomRight.shift(90, jetHeight * 2) + points.midLeft = points.bottomLeft.shift(90, weltHeight) + points.midRight = points.bottomRight.shift(90, weltHeight) + points.topLeft = points.bottomLeft.shift(90, weltHeight * 2) + points.topRight = points.bottomRight.shift(90, weltHeight * 2) points.leftNotch = new Point(points.leftNotch.x, points.midRight.y) points.rightNotch = points.leftNotch.flipX() @@ -34,7 +34,7 @@ export default (part) => { macro('title', { at: points.titleAnchor, nr: 4, - title: 'backPocketJet', + title: 'backPocketWelt', scale: 0.5, }) points.grainlineTop = points.topLeft.shiftFractionTowards(points.topRight, 0.15) diff --git a/designs/charlie/src/index.js b/designs/charlie/src/index.js index b1b0eddff2e..e5650336070 100644 --- a/designs/charlie/src/index.js +++ b/designs/charlie/src/index.js @@ -15,7 +15,7 @@ import draftFrontPocketFacing from './front-pocket-facing' import draftBackPocket from './back-pocket' import draftBackPocketFacing from './back-pocket-facing' import draftBackPocketInterfacing from './back-pocket-interfacing' -import draftBackPocketJet from './back-pocket-jet' +import draftBackPocketWelt from './back-pocket-welt' import draftFlyFacing from './fly-facing' import draftFlyExtension from './fly-extension' import draftBeltLoops from './beltloops' @@ -40,7 +40,7 @@ Charlie.prototype.draftFrontPocketFacing = (part) => draftFrontPocketFacing(part Charlie.prototype.draftBackPocket = (part) => draftBackPocket(part) Charlie.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(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.draftFlyExtension = (part) => draftFlyExtension(part) Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part) diff --git a/designs/theo/config/index.js b/designs/theo/config/index.js index 6936522c09f..190bd88d87a 100644 --- a/designs/theo/config/index.js +++ b/designs/theo/config/index.js @@ -1,4 +1,6 @@ import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { steps, pctBasedOn } = configHelpers export default { version, @@ -34,7 +36,8 @@ export default { // Constants // 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 legWidth: { pct: 10, min: 0, max: 30 }, diff --git a/designs/theo/src/back.js b/designs/theo/src/back.js index 7a70bb06387..2ad01910b4f 100644 --- a/designs/theo/src/back.js +++ b/designs/theo/src/back.js @@ -1,11 +1,12 @@ export default function (part) { - let { + const { store, sa, Point, points, Path, paths, + absoluteOptions, options, complete, paperless, @@ -45,7 +46,7 @@ export default function (part) { points[0] = new Point(0, 0) points[1] = new Point( 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[201] = points[2].shift(-90, 10) diff --git a/designs/theo/src/belt-loop.js b/designs/theo/src/belt-loop.js index 0e65cdca203..01cdbc6ab29 100644 --- a/designs/theo/src/belt-loop.js +++ b/designs/theo/src/belt-loop.js @@ -1,7 +1,7 @@ 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 points.topRight = new Point(width / 2, 0) diff --git a/designs/theo/src/waistband-interfacing-left.js b/designs/theo/src/waistband-interfacing-left.js index 683d17675bc..76bd55d4617 100644 --- a/designs/theo/src/waistband-interfacing-left.js +++ b/designs/theo/src/waistband-interfacing-left.js @@ -4,7 +4,7 @@ export default function (part) { points, Path, paths, - options, + absoluteOptions, complete, paperless, measurements, @@ -14,7 +14,7 @@ export default function (part) { } = part.shorthand() 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[3] = new Point(points[0].x, points[2].y) diff --git a/designs/theo/src/waistband-interfacing-right.js b/designs/theo/src/waistband-interfacing-right.js index cbb3c943049..b57ebcbf159 100644 --- a/designs/theo/src/waistband-interfacing-right.js +++ b/designs/theo/src/waistband-interfacing-right.js @@ -4,7 +4,7 @@ export default function (part) { points, Path, paths, - options, + absoluteOptions, complete, paperless, measurements, @@ -14,7 +14,7 @@ export default function (part) { } = part.shorthand() 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[3] = new Point(points[0].x, points[2].y) diff --git a/packages/i18n/src/locales/de/parts.yaml b/packages/i18n/src/locales/de/parts.yaml index 89365fafb35..40903a4d4f6 100644 --- a/packages/i18n/src/locales/de/parts.yaml +++ b/packages/i18n/src/locales/de/parts.yaml @@ -1,6 +1,7 @@ --- back: Rückseite backBase: Rückseite Basis +backPocketWelt: Back pocket welt base: Basis bentBack: Rückseite Bent bentBase: Basis Bent diff --git a/packages/i18n/src/locales/en/parts.yaml b/packages/i18n/src/locales/en/parts.yaml index cae47214e0d..fbe657504ab 100644 --- a/packages/i18n/src/locales/en/parts.yaml +++ b/packages/i18n/src/locales/en/parts.yaml @@ -1,5 +1,6 @@ back: Back backBase: Back base +backPocketWelt: Back pocket welt base: Base bentBack: Bent back bentBase: Bent base diff --git a/packages/i18n/src/locales/es/parts.yaml b/packages/i18n/src/locales/es/parts.yaml index 85a72ff1e6c..42ab5726032 100644 --- a/packages/i18n/src/locales/es/parts.yaml +++ b/packages/i18n/src/locales/es/parts.yaml @@ -1,6 +1,7 @@ --- back: Atrás backBase: Base trasera +backPocketWelt: Back pocket welt base: Base bentBack: Trasero Bent bentBase: Base Bent diff --git a/packages/i18n/src/locales/fr/parts.yaml b/packages/i18n/src/locales/fr/parts.yaml index 321f4ec22cf..4d28587c380 100644 --- a/packages/i18n/src/locales/fr/parts.yaml +++ b/packages/i18n/src/locales/fr/parts.yaml @@ -1,6 +1,7 @@ --- back: Retour backBase: Base dos +backPocketWelt: Back pocket welt base: Base bentBack: Dos de Bent bentBase: Base de Bent diff --git a/packages/i18n/src/locales/nl/parts.yaml b/packages/i18n/src/locales/nl/parts.yaml index db714d04e51..c79d9820a9f 100644 --- a/packages/i18n/src/locales/nl/parts.yaml +++ b/packages/i18n/src/locales/nl/parts.yaml @@ -1,6 +1,7 @@ --- back: Achterzijde backBase: Basis rug +backPocketWelt: Back pocket welt base: Basis bentBack: Achterzijde Bent bentBase: Basis Bent diff --git a/sites/lab/components/search.js b/sites/lab/components/search.js index ad4e17b5767..bbec67460a4 100644 --- a/sites/lab/components/search.js +++ b/sites/lab/components/search.js @@ -1 +1,3 @@ -export default () => null +const noSearch = () => null + +export default noSearch diff --git a/sites/shared/components/workbench/inputs/measurement.js b/sites/shared/components/workbench/inputs/measurement.js index 2da333722b0..362095eab9d 100644 --- a/sites/shared/components/workbench/inputs/measurement.js +++ b/sites/shared/components/workbench/inputs/measurement.js @@ -1,7 +1,7 @@ import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react' import { useTranslation } from 'next-i18next' import { isDegreeMeasurement } from '../../../config/measurements' -import measurementAsMm from '@freesewing/utils/measurementAsMm' +import { measurementAsMm } from 'shared/utils' /* * This is a single input for a measurements diff --git a/sites/shared/components/workbench/menu/design-options/option-input.js b/sites/shared/components/workbench/menu/design-options/option-input.js index 9a4fd7f8849..641f4a6d09f 100644 --- a/sites/shared/components/workbench/menu/design-options/option-input.js +++ b/sites/shared/components/workbench/menu/design-options/option-input.js @@ -1,6 +1,7 @@ import PctDegOption from 'shared/components/workbench/inputs/design-option-pct-deg' import CountOption from 'shared/components/workbench/inputs/design-option-count' import ListOption from 'shared/components/workbench/inputs/design-option-list' +import Popout from 'shared/components/popout' export const Tmp = props =>

not yet

@@ -9,6 +10,6 @@ export const inputs = { count: CountOption, deg: props => (), list: ListOption, - mm: (

Mm options are not supported. Please report this.

), + mm: () => Mm options are deprecated. Please report this, constant: Tmp, } diff --git a/sites/shared/components/workbench/menu/design-options/option.js b/sites/shared/components/workbench/menu/design-options/option.js index 67a7c00137a..127db7e01ee 100644 --- a/sites/shared/components/workbench/menu/design-options/option.js +++ b/sites/shared/components/workbench/menu/design-options/option.js @@ -13,9 +13,7 @@ const Option = props => { const Value = values[type] const hide = opt.hide && opt.hide(props.draft.settings); - if (hide) { - return
  • - } + if (hide) return
  • if (type === 'bool') { const toggleBoolean = () => { diff --git a/sites/shared/utils.mjs b/sites/shared/utils.mjs index 26b76a7b4e9..9a462f01f79 100644 --- a/sites/shared/utils.mjs +++ b/sites/shared/utils.mjs @@ -124,3 +124,38 @@ export const getCrumbs = (app, slug=false, title) => { 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; +}