From be1dfad45bd3d379d65e3a7be723c75a015b6e4a Mon Sep 17 00:00:00 2001 From: Benjamin F Date: Sun, 4 Sep 2022 19:50:20 -0700 Subject: [PATCH] Port Charlie to v3. Investigating issue. --- designs/charlie/config/index.js | 154 ------------------ designs/charlie/src/back-pocket-facing.mjs | 10 +- .../charlie/src/back-pocket-interfacing.mjs | 10 +- designs/charlie/src/back-pocket-welt.mjs | 10 +- designs/charlie/src/back-pocket.mjs | 10 +- designs/charlie/src/back.mjs | 25 ++- designs/charlie/src/beltloops.mjs | 13 +- designs/charlie/src/fly-extension.mjs | 10 +- designs/charlie/src/fly-facing.mjs | 10 +- designs/charlie/src/front-pocket-facing.mjs | 10 +- designs/charlie/src/front-pocket.mjs | 10 +- designs/charlie/src/front.mjs | 88 +++++++++- designs/charlie/src/index.mjs | 76 ++++----- designs/charlie/src/waistband-curved.mjs | 13 +- designs/charlie/src/waistband.mjs | 16 +- 15 files changed, 251 insertions(+), 214 deletions(-) delete mode 100644 designs/charlie/config/index.js diff --git a/designs/charlie/config/index.js b/designs/charlie/config/index.js deleted file mode 100644 index 2cbcbeaf8fc..00000000000 --- a/designs/charlie/config/index.js +++ /dev/null @@ -1,154 +0,0 @@ -import pkg from '../package.json' assert { type: 'json' } -import configHelpers from '@freesewing/config-helpers' - -const { elastics, pctBasedOn } = configHelpers -const { version } = pkg - -export default { - version, - name: 'charlie', - design: 'Joost De Cock', - code: 'Joost De Cock', - department: 'bottoms', - type: 'pattern', - difficulty: 3, - optionGroups: { - fit: ['seatEase', 'kneeEase', 'waistEase', 'waistbandCurve'], - style: ['waistHeight', 'waistbandWidth', 'lengthBonus', 'crotchDrop'], - pockets: [ - { - backPockets: [ - 'backPocketHorizontalPlacement', - 'backPocketVerticalPlacement', - 'backPocketWidth', - 'backPocketDepth', - 'backPocketFacing', - ], - frontPockets: [ - 'frontPocketSlantDepth', - 'frontPocketSlantWidth', - 'frontPocketSlantRound', - 'frontPocketSlantBend', - 'frontPocketWidth', - 'frontPocketDepth', - 'frontPocketFacing', - ], - }, - ], - advanced: [ - 'crossSeamCurveStart', - 'crossSeamCurveBend', - 'crossSeamCurveAngle', - 'crotchSeamCurveStart', - 'crotchSeamCurveBend', - 'crotchSeamCurveAngle', - 'grainlinePosition', - 'legBalance', - 'waistBalance', - 'beltLoops', - { - fly: ['flyCurve', 'flyLength', 'flyWidth'], - }, - ], - }, - measurements: [ - 'crossSeam', - 'crossSeamFront', - 'knee', - 'seat', - 'seatBack', - 'waist', - 'waistBack', - 'waistToFloor', - 'waistToKnee', - 'waistToHips', - 'waistToSeat', - 'waistToUpperLeg', - ], - hide: ['titanBack', 'titanFront'], - inject: { - back: 'titanBack', - front: 'titanFront', - frontPocket: 'front', - frontPocketFacing: 'frontPocket', - backPocketFacing: 'backPocket', - backPocketInterfacing: 'backPocket', - backPocketWelt: 'backPocketFacing', - flyFacing: 'front', - flyExtension: 'flyFacing', - }, - parts: ['beltLoops'], - dependencies: { - // The inheritance makes this a bit messy - titanFront: 'titanBack', - back: ['titanBack', 'titanFront', 'front'], - waistband: ['titanBack', 'titanFront', 'front', 'back'], - waistbandCurved: ['titanBack', 'titanFront', 'front', 'back'], - beltLoops: 'waistband', - backPocket: 'back', - }, - options: { - // Constants (from Titan) - titanPaperless: true, - fitCrossSeam: true, - fitCrossSeamFront: true, - fitCrossSeamBack: true, - fitGuides: false, - // Lock titan options - fitKnee: true, - - // Charlie constants - waistbandReduction: 0.25, // See src/index.js - waistbandFactor: 0.1, - - // Fit (Charlie) - waistbandCurve: { pct: 0, min: 0, max: 35 }, - - // Fit (from Titan) - waistEase: { pct: 1, min: 0, max: 5 }, - seatEase: { pct: 5, min: 0, max: 10 }, - kneeEase: { pct: 15, min: 10, max: 30 }, - - // Style (from Titan) - waistHeight: { pct: -4, min: -15, max: 40 }, - waistbandWidth: { pct: 3, min: 1, max: 6, snap: elastics, ...pctBasedOn('waistToFloor') }, - //waistbandWidth: { pct: 3.5, min: 2, max: 5 }, - lengthBonus: { pct: 2, min: -20, max: 10 }, - crotchDrop: { pct: 2, min: 0, max: 15 }, - - // Advanced (from Titan) - legBalance: { pct: 57.5, min: 52.5, max: 62.5 }, - crossSeamCurveStart: { pct: 85, min: 60, max: 100 }, - crossSeamCurveBend: { pct: 65, min: 45, max: 85 }, - crossSeamCurveAngle: { deg: 12, min: 0, max: 20 }, - crotchSeamCurveStart: { pct: 80, min: 60, max: 95 }, - crotchSeamCurveBend: { pct: 80, min: 45, max: 100 }, - crotchSeamCurveAngle: { deg: 25, min: 0, max: 35 }, - waistBalance: { pct: 55, min: 30, max: 90 }, - grainlinePosition: { pct: 50, min: 30, max: 60 }, - - // Back pockets - backPocketVerticalPlacement: { pct: 24, min: 18, max: 30 }, - backPocketHorizontalPlacement: { pct: 55, min: 48, max: 62 }, - backPocketWidth: { pct: 55, min: 50, max: 60 }, - backPocketDepth: { pct: 60, min: 40, max: 80 }, - backPocketFacing: { bool: true }, - - // Front pockets - frontPocketSlantDepth: { pct: 85, min: 70, max: 100 }, - frontPocketSlantWidth: { pct: 25, min: 15, max: 35 }, - frontPocketSlantRound: { pct: 30, min: 5, max: 50 }, - frontPocketSlantBend: { pct: 25, min: 5, max: 50 }, - frontPocketWidth: { pct: 55, min: 45, max: 65 }, - frontPocketDepth: { pct: 100, min: 85, max: 110 }, - frontPocketFacing: { pct: 45, min: 25, max: 65 }, - - // Fly - flyCurve: { pct: 72, min: 50, max: 100 }, - flyLength: { pct: 45, min: 30, max: 60 }, - flyWidth: { pct: 15, min: 10, max: 20 }, - - // Waistband - beltLoops: { count: 8, min: 6, max: 12 }, - }, -} diff --git a/designs/charlie/src/back-pocket-facing.mjs b/designs/charlie/src/back-pocket-facing.mjs index f52aed12541..7cac9f2e0b8 100644 --- a/designs/charlie/src/back-pocket-facing.mjs +++ b/designs/charlie/src/back-pocket-facing.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { backPocket } from './back-pocket.mjs' + +function draftCharlieBackPocketFacing (part) { // Shorthand let { points, Point, paths, Path, complete, paperless, macro, snippets, sa } = part.shorthand() @@ -65,3 +67,9 @@ export default (part) => { return part } + +export const backPocketFacing = { + name: 'charlie.backPocketFacing', + from: backPocket, + draft: draftCharlieBackPocketFacing, +} diff --git a/designs/charlie/src/back-pocket-interfacing.mjs b/designs/charlie/src/back-pocket-interfacing.mjs index 1c0a78c8fbd..7501fe78c7b 100644 --- a/designs/charlie/src/back-pocket-interfacing.mjs +++ b/designs/charlie/src/back-pocket-interfacing.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { backPocket } from './back-pocket.mjs' + +function draftCharlieBackPocketInterfacing (part) { // Shorthand let { points, Point, paths, Path, complete, paperless, macro, snippets } = part.shorthand() @@ -56,3 +58,9 @@ export default (part) => { return part } + +export const backPocketInterfacing = { + name: 'charlie.backPocketInterfacing', + from: backPocket, + draft: draftCharlieBackPocketInterfacing, +} diff --git a/designs/charlie/src/back-pocket-welt.mjs b/designs/charlie/src/back-pocket-welt.mjs index 9cc1c5e21e1..d3fc138fda6 100644 --- a/designs/charlie/src/back-pocket-welt.mjs +++ b/designs/charlie/src/back-pocket-welt.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { backPocketFacing } from './back-pocket-facing.mjs' + +function draftCharlieBackPocketWelt (part) { // Shorthand let { points, Point, paths, Path, complete, paperless, macro, snippets } = part.shorthand() @@ -60,3 +62,9 @@ export default (part) => { return part } + +export const backPocketWelt = { + name: 'charlie.backPocketWelt', + from: backPocketFacing, + draft: draftCharlieBackPocketWelt, +} diff --git a/designs/charlie/src/back-pocket.mjs b/designs/charlie/src/back-pocket.mjs index 8c983d90fa3..c055460b818 100644 --- a/designs/charlie/src/back-pocket.mjs +++ b/designs/charlie/src/back-pocket.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { back } from './back.mjs' + +function draftCharlieBackPocket (part) { // Shorthand let { points, Point, paths, Path, complete, paperless, store, macro, snippets, Snippet, sa } = part.shorthand() @@ -90,3 +92,9 @@ export default (part) => { return part } + +export const backPocket = { + name: 'charlie.backPocket', + after: back, + draft: draftCharlieBackPocket, +} diff --git a/designs/charlie/src/back.mjs b/designs/charlie/src/back.mjs index 10fb5448dbb..0b46707771e 100644 --- a/designs/charlie/src/back.mjs +++ b/designs/charlie/src/back.mjs @@ -1,4 +1,8 @@ -export default (part) => { +import { back as titanBack } from '@freesewing/titan' +import { front } from './front.mjs' +import { front as titanFront } from '@freesewing/titan' + +function draftCharlieBack (part) { // Helper method to draw the outseam path const drawOutseam = () => { let outseam = new Path() @@ -303,3 +307,22 @@ export default (part) => { return part } + +export const back = { + name: 'charlie.back', + from: titanBack, + after: [ titanBack, titanFront, front ], + hideDependencies: true, + options: { + backPocketVerticalPlacement: { pct: 24, min: 18, max: 30, + menu: 'pockets.backpockets' }, + backPocketHorizontalPlacement: { pct: 55, min: 48, max: 62, + menu: 'pockets.backpockets' }, + backPocketWidth: { pct: 55, min: 50, max: 60, + menu: 'pockets.backpockets' }, + backPocketDepth: { pct: 60, min: 40, max: 80, + menu: 'pockets.backpockets' }, + backPocketFacing: { bool: true, menu: 'pockets.backpockets' }, + }, + draft: draftCharlieBack, +} diff --git a/designs/charlie/src/beltloops.mjs b/designs/charlie/src/beltloops.mjs index 9a79a8c9056..533edfff953 100644 --- a/designs/charlie/src/beltloops.mjs +++ b/designs/charlie/src/beltloops.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { waistband } from './waistband.mjs' + +function draftCharlieBeltLoops (part) { // Shorthand let { store, points, Point, paths, Path, options, complete, paperless, macro, sa } = part.shorthand() @@ -72,3 +74,12 @@ export default (part) => { return part } + +export const beltLoops = { + name: 'charlie.beltLoops', + after: waistband, + options: { + beltLoops: { count: 8, min: 6, max: 12, menu: 'advanced' }, + }, + draft: draftCharlieBeltLoops, +} diff --git a/designs/charlie/src/fly-extension.mjs b/designs/charlie/src/fly-extension.mjs index a4eb3a56976..d9a65eaf190 100644 --- a/designs/charlie/src/fly-extension.mjs +++ b/designs/charlie/src/fly-extension.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { flyFacing } from './fly-facing.mjs' + +function draftCharlieFlyExtension (part) { // Shorthand let { points, paths, Path, complete, macro, sa } = part.shorthand() @@ -58,3 +60,9 @@ export default (part) => { return part } + +export const flyExtension = { + name: 'charlie.flyExtension', + from: flyFacing, + draft: draftCharlieFlyExtension, +} diff --git a/designs/charlie/src/fly-facing.mjs b/designs/charlie/src/fly-facing.mjs index a88f18f1b67..e4855e2ec7e 100644 --- a/designs/charlie/src/fly-facing.mjs +++ b/designs/charlie/src/fly-facing.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { front } from './front.mjs' + +function draftCharlieFlyFacing (part) { // Shorthand let { points, Point, paths, Path, complete, macro, snippets, sa } = part.shorthand() @@ -47,3 +49,9 @@ export default (part) => { return part } + +export const flyFacing = { + name: 'charlie.flyFacing', + from: front, + draft: draftCharlieFlyFacing, +} diff --git a/designs/charlie/src/front-pocket-facing.mjs b/designs/charlie/src/front-pocket-facing.mjs index 1ec63900029..6554c314a78 100644 --- a/designs/charlie/src/front-pocket-facing.mjs +++ b/designs/charlie/src/front-pocket-facing.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { frontPocket } from './front-pocket.mjs' + +function draftCharlieFrontPocketFacing (part) { // Shorthand let { points, Point, paths, Path, complete, macro, snippets, sa } = part.shorthand() @@ -46,3 +48,9 @@ export default (part) => { return part } + +export const frontPocketFacing = { + name: 'charlie.frontPocketFacing', + from: frontPocket, + draft: draftCharlieFrontPocketFacing, +} diff --git a/designs/charlie/src/front-pocket.mjs b/designs/charlie/src/front-pocket.mjs index 977cad87d39..11e1cef49ee 100644 --- a/designs/charlie/src/front-pocket.mjs +++ b/designs/charlie/src/front-pocket.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { front } from './front.mjs' + +function draftCharlieFrontPocket (part) { // Shorthand let { points, paths, Path, complete, paperless, macro, snippets, Snippet, sa } = part.shorthand() @@ -70,3 +72,9 @@ export default (part) => { return part } + +export const frontPocket = { + name: 'charlie.frontPocket', + from: front, + draft: draftCharlieFrontPocket, +} diff --git a/designs/charlie/src/front.mjs b/designs/charlie/src/front.mjs index adad77ccc51..4f550b1394e 100644 --- a/designs/charlie/src/front.mjs +++ b/designs/charlie/src/front.mjs @@ -1,4 +1,8 @@ -export default (part) => { +import { elastics } from '@freesewing/snapseries' +import { pctBasedOn } from '@freesewing/core' +import { front as titanFront } from '@freesewing/titan' + +function draftCharlieFront (part) { // Helper method to draw the outseam path const drawOutseam = () => new Path() @@ -345,3 +349,85 @@ export default (part) => { return part } + +export const front = { + name: 'charlie.front', + from: titanFront, + hideDependencies: true, + measurements: [ + 'crossSeam', + 'crossSeamFront', + 'knee', + 'seat', + 'seatBack', + 'waist', + 'waistBack', + 'waistToFloor', + 'waistToKnee', + 'waistToHips', + 'waistToSeat', + 'waistToUpperLeg', + ], + options: { + // Constants (from Titan) + titanPaperless: true, + fitCrossSeam: true, + fitCrossSeamFront: true, + fitCrossSeamBack: true, + fitGuides: false, + // Lock titan options + fitKnee: true, + // Charlie constants + waistbandReduction: 0.25, // See src/index.js + waistbandFactor: 0.1, + + // Fit (from Titan) + waistEase: { pct: 1, min: 0, max: 5, menu: 'fit' }, + seatEase: { pct: 5, min: 0, max: 10, menu: 'fit' }, + kneeEase: { pct: 15, min: 10, max: 30, menu: 'fit' }, + + // Style (from Titan) + waistHeight: { pct: -4, min: -15, max: 40, menu: 'style' }, + waistbandWidth: { pct: 3, min: 1, max: 6, snap: elastics, + ...pctBasedOn('waistToFloor'), menu: 'style' }, + //waistbandWidth: { pct: 3.5, min: 2, max: 5 }, + lengthBonus: { pct: 2, min: -20, max: 10, menu: 'style' }, + crotchDrop: { pct: 2, min: 0, max: 15, menu: 'style' }, + + // Advanced (from Titan) + crossSeamCurveStart: { pct: 85, min: 60, max: 100, menu: 'advanced' }, + crossSeamCurveBend: { pct: 65, min: 45, max: 85, menu: 'advanced' }, + crossSeamCurveAngle: { deg: 12, min: 0, max: 20, menu: 'advanced' }, + crotchSeamCurveStart: { pct: 80, min: 60, max: 95, menu: 'advanced' }, + crotchSeamCurveBend: { pct: 80, min: 45, max: 100, menu: 'advanced' }, + crotchSeamCurveAngle: { deg: 25, min: 0, max: 35, menu: 'advanced' }, + grainlinePosition: { pct: 50, min: 30, max: 60, menu: 'advanced' }, + legBalance: { pct: 57.5, min: 52.5, max: 62.5, menu: 'advanced' }, + waistBalance: { pct: 55, min: 30, max: 90, menu: 'advanced' }, + + // Front pockets + frontPocketSlantDepth: { pct: 85, min: 70, max: 100, + menu: 'pockets.frontpockets' }, + frontPocketSlantWidth: { pct: 25, min: 15, max: 35, + menu: 'pockets.frontpockets' }, + frontPocketSlantRound: { pct: 30, min: 5, max: 50, + menu: 'pockets.frontpockets' }, + frontPocketSlantBend: { pct: 25, min: 5, max: 50, + menu: 'pockets.frontpockets' }, + frontPocketWidth: { pct: 55, min: 45, max: 65, + menu: 'pockets.frontpockets' }, + frontPocketDepth: { pct: 100, min: 85, max: 110, + menu: 'pockets.frontpockets' }, + frontPocketFacing: { pct: 45, min: 25, max: 65, + menu: 'pockets.frontpockets' }, + + // Fly + flyCurve: { pct: 72, min: 50, max: 100, + menu: 'advanced.fly' }, + flyLength: { pct: 45, min: 30, max: 60, + menu: 'advanced.fly' }, + flyWidth: { pct: 15, min: 10, max: 20, + menu: 'advanced.fly' }, + }, + draft: draftCharlieFront, +} diff --git a/designs/charlie/src/index.mjs b/designs/charlie/src/index.mjs index e5650336070..05ab50d4a2d 100644 --- a/designs/charlie/src/index.mjs +++ b/designs/charlie/src/index.mjs @@ -1,52 +1,34 @@ -import freesewing from '@freesewing/core' -import Titan from '@freesewing/titan' -import plugins from '@freesewing/plugin-bundle' -import mirrorPlugin from '@freesewing/plugin-mirror' -import buttonsPlugin from '@freesewing/plugin-buttons' -import bartackPlugin from '@freesewing/plugin-bartack' -import config from '../config' +import { Design } from '@freesewing/core' +import { data } from '../data.mjs' // Parts -import draftBack from './back' -import draftFront from './front' -import draftWaistband from './waistband' -import draftWaistbandCurved from './waistband-curved' -import draftFrontPocket from './front-pocket' -import draftFrontPocketFacing from './front-pocket-facing' -import draftBackPocket from './back-pocket' -import draftBackPocketFacing from './back-pocket-facing' -import draftBackPocketInterfacing from './back-pocket-interfacing' -import draftBackPocketWelt from './back-pocket-welt' -import draftFlyFacing from './fly-facing' -import draftFlyExtension from './fly-extension' -import draftBeltLoops from './beltloops' +import { back } from './back.mjs' +import { front } from './front.mjs' +import { waistband } from './waistband.mjs' +import { waistbandCurved } from './waistband-curved.mjs' +import { frontPocket } from './front-pocket.mjs' +import { frontPocketFacing } from './front-pocket-facing.mjs' +import { backPocket } from './back-pocket.mjs' +import { backPocketFacing } from './back-pocket-facing.mjs' +import { backPocketInterfacing } from './back-pocket-interfacing.mjs' +import { backPocketWelt } from './back-pocket-welt.mjs' +import { flyFacing } from './fly-facing.mjs' +import { flyExtension } from './fly-extension.mjs' +import { beltLoops } from './beltloops.mjs' // Create design -const Charlie = new freesewing.Design(config, [plugins, mirrorPlugin, buttonsPlugin, bartackPlugin]) - -// Attach titan draft methods to prototype -for (let p of ['Front', 'Back']) { - Charlie.prototype[`draftTitan${p}`] = function (part) { - return new Titan(this.settings)[`draft${p}`](part) - } -} - -// Attach charlie draft methods to prototype -Charlie.prototype.draftBack = (part) => draftBack(part) -Charlie.prototype.draftFront = (part) => draftFront(part) -Charlie.prototype.draftWaistband = (part) => draftWaistband(part) -Charlie.prototype.draftWaistbandCurved = (part) => draftWaistbandCurved(part) -Charlie.prototype.draftFrontPocket = (part) => draftFrontPocket(part) -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.draftBackPocketWelt = (part) => draftBackPocketWelt(part) -Charlie.prototype.draftFlyFacing = (part) => draftFlyFacing(part) -Charlie.prototype.draftFlyExtension = (part) => draftFlyExtension(part) -Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part) +const Charlie = new Design({ + data, + parts: [ + front, back, waistband, waistbandCurved, frontPocket, frontPocketFacing, + backPocket, backPocketFacing, backPocketInterfacing, backPocketWelt, + flyFacing, flyExtension, beltLoops, + ], +}) // Named exports -export { config, Charlie } - -// Default export -export default Charlie +export { + front, back, waistband, waistbandCurved, frontPocket, frontPocketFacing, + backPocket, backPocketFacing, backPocketInterfacing, backPocketWelt, + flyFacing, flyExtension, beltLoops, + Charlie, +} diff --git a/designs/charlie/src/waistband-curved.mjs b/designs/charlie/src/waistband-curved.mjs index 00a73fc3917..72ea0260f40 100644 --- a/designs/charlie/src/waistband-curved.mjs +++ b/designs/charlie/src/waistband-curved.mjs @@ -1,4 +1,9 @@ -export default (part) => { +import { front } from './front.mjs' +import { back } from './back.mjs' +import { front as titanFront } from '@freesewing/titan' +import { back as titanBack } from '@freesewing/titan' + +function draftCharlieWaistbandCurved (part) { // Shorthand let { points, @@ -284,3 +289,9 @@ export default (part) => { return part } + +export const waistbandCurved = { + name: 'charlie.waistbandCurved', + after: [ titanBack, titanFront, front, back ], + draft: draftCharlieWaistbandCurved, +} diff --git a/designs/charlie/src/waistband.mjs b/designs/charlie/src/waistband.mjs index 14a317d5d83..c14320895a9 100644 --- a/designs/charlie/src/waistband.mjs +++ b/designs/charlie/src/waistband.mjs @@ -1,4 +1,9 @@ -export default (part) => { +import { front } from './front.mjs' +import { back } from './back.mjs' +import { front as titanFront } from '@freesewing/titan' +import { back as titanBack } from '@freesewing/titan' + +function draftCharlieWaistband (part) { // Shorthand let { points, @@ -135,3 +140,12 @@ export default (part) => { return part } + +export const waistband = { + name: 'charlie.waistband', + after: [ titanBack, titanFront, back, front ], + options: { + waistbandCurve: { pct: 0, min: 0, max: 35, menu: 'fit' }, + }, + draft: draftCharlieWaistband, +}