diff --git a/plugins/plugin-annotations/src/title.mjs b/plugins/plugin-annotations/src/title.mjs index 3dd0e4f5cd2..28731e227b1 100644 --- a/plugins/plugin-annotations/src/title.mjs +++ b/plugins/plugin-annotations/src/title.mjs @@ -16,6 +16,7 @@ const macroDefaults = { scale: 1, title: 'plugin-annotations:noName', notes: false, + brand: 'FreeSewing', classes: { notes: 'text-md fill-current', date: 'text-sm fill-current', @@ -135,14 +136,14 @@ const title = function (config, { Point, points, scale, locale, store, part, log .clone() .shift(-90, shift) .addText( - `FreeSewing ${capitalize( + `${mc.brand} ${capitalize( (store.data?.name || 'plugin-annotations:noName').replace('@freesewing/', '') - )} v${store.data?.version || 'plugin-annotations:noVersion'} ( `, + )} v${store.data?.version || 'plugin-annotations:noVersion'} (`, `${mc.classes.name} ${mc.align}` ) .addText(store.data?.for ? store.data.for : 'ephemeral') - .addText(' )') + .addText(')') .attr('data-text-transform', transform) .attr('data-render-always', 1) // Render even when outside the part bounding box shift += mc.dy @@ -162,7 +163,7 @@ const title = function (config, { Point, points, scale, locale, store, part, log * Iterate over materials */ for (const [material, instructions] of Object.entries(partCutlist.materials)) { - instructions.forEach(({ cut, identical, onBias, onFold }, c) => { + instructions.forEach(({ cut, identical, onBias, onFold }) => { /* * Concat line */ diff --git a/plugins/plugin-annotations/tests/title.test.mjs b/plugins/plugin-annotations/tests/title.test.mjs index 83e82e4364a..65cca5c89dd 100644 --- a/plugins/plugin-annotations/tests/title.test.mjs +++ b/plugins/plugin-annotations/tests/title.test.mjs @@ -39,12 +39,12 @@ describe('Title Plugin Tests', () => { expect(p.attributes.get('data-text')).to.equal('unitTest') expect(p.attributes.get('data-text-class')).to.equal('text-lg fill-current font-bold left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-26') + expect(p.attributes.get('data-text-y')).to.equal('-18') p = pattern.parts[0].test.points.__macro_title_title_name - expect(p.attributes.get('data-text')).to.equal('testPattern v99') + expect(p.attributes.get('data-text')).to.equal('FreeSewing TestPattern v99 ( ephemeral )') expect(p.attributes.get('data-text-class')).to.equal('fill-note left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-18') + expect(p.attributes.get('data-text-y')).to.equal('-10') p = pattern.parts[0].test.points.__macro_title_title_date expect(p.attributes.get('data-text')).to.include(', 202') }) @@ -117,12 +117,12 @@ describe('Title Plugin Tests', () => { expect(p.attributes.get('data-text')).to.equal('unitTest') expect(p.attributes.get('data-text-class')).to.equal('text-lg fill-current font-bold left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-26') + expect(p.attributes.get('data-text-y')).to.equal('-18') p = pattern.parts[0].test.points.__macro_title_foo_name - expect(p.attributes.get('data-text')).to.equal('testPattern v99') + expect(p.attributes.get('data-text')).to.equal('FreeSewing TestPattern v99 ( ephemeral )') expect(p.attributes.get('data-text-class')).to.equal('fill-note left') expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-18') + expect(p.attributes.get('data-text-y')).to.equal('-10') }) it('Should run the title macro with custom alignment', () => { @@ -209,4 +209,63 @@ describe('Title Plugin Tests', () => { ) expect(p.__macro_title_title_name.attributes.get('data-text-class')).to.equal('fill-note left') }) + + it('Should run the title macro with notes', () => { + const notes = 'These are the notes\nHere are some more notes' + const part = { + name: 'test', + draft: ({ points, Point, macro, part }) => { + points.anchor = new Point(-12, -34) + macro('title', { + at: points.anchor, + nr: 3, + title: 'unitTest', + notes, + }) + + return part + }, + plugins: [annotationsPlugin], + } + // Note that we're not loading core plugins but the local plugin + const Pattern = new Design({ + data: { name: 'testPattern', version: 99 }, + parts: [part], + noCorePlugins: true, + }) + const pattern = new Pattern() + pattern.draft().render() + let p = pattern.parts[0].test.points.__macro_title_title_notes + expect(p.attributes.get('data-text')).to.equal(notes) + }) + + it('Should run the title macro with a custom brand', () => { + const brand = 'Bazooka Patterns' + const part = { + name: 'test', + draft: ({ points, Point, macro, part }) => { + points.anchor = new Point(-12, -34) + macro('title', { + at: points.anchor, + nr: 3, + title: 'unitTest', + brand, + id: 'foo', + }) + + return part + }, + plugins: [annotationsPlugin], + } + // Note that we're not loading core plugins but the local plugin + const Pattern = new Design({ + data: { name: 'testPattern', version: 99 }, + parts: [part], + noCorePlugins: true, + }) + const pattern = new Pattern() + pattern.draft().render() + let p = pattern.parts[0].test.points.__macro_title_foo_name + expect(p.attributes.get('data-text')).to.equal(`${brand} TestPattern v99 ( ephemeral )`) + }) })