From cc12518c7c6cfbd11ef53ebd6c06b96bf5715072 Mon Sep 17 00:00:00 2001 From: Rachel Stone Date: Wed, 20 Nov 2024 14:52:06 -0600 Subject: [PATCH] WIP - formatted slides 1-6 --- .../treasure-hunt-ppt-properties.service.ts | 20 +-- .../treasure-hunt-ppt.service.ts | 119 ++++++++++-------- 2 files changed, 67 insertions(+), 72 deletions(-) diff --git a/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt-properties.service.ts b/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt-properties.service.ts index 0029b699a..ddd5abf9c 100644 --- a/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt-properties.service.ts +++ b/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt-properties.service.ts @@ -12,25 +12,7 @@ import moment from 'moment'; export class TreasureHuntPptPropertiesService { constructor(private treasureHuntReportService: TreasureHuntReportService) { } - - getSlideTitleProperties(): pptxgen.TextPropsOptions { - let slideTitleProps: pptxgen.TextPropsOptions = { - x: 0.67, - y: 0, - w: 11.08, - h: 1.18, - align: 'center', - bold: true, - color: 'FFFFFF', - fontSize: 32, - fontFace: 'Arial (Headings)', - valign: 'middle', - isTextBox: true, - autoFit: true - }; - return slideTitleProps; - } - + getPieChartProperties() { let pieChartOptions: pptxgen.IChartOpts = { x: 5.54, diff --git a/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt.service.ts b/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt.service.ts index ab9256ef1..62ed916e6 100644 --- a/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt.service.ts +++ b/src/app/treasure-hunt/treasure-hunt-report/treasure-hunt-ppt/treasure-hunt-ppt.service.ts @@ -26,6 +26,11 @@ export class TreasureHuntPptService { let pptTitle = this.getpptTitle(settings); let date: string = this.getCurrentDate(); + + let pieChartOptions: pptxgen.IChartOpts = this.treasureHuntPptPropertiesService.getPieChartProperties(); + let doughnutChartOptions: pptxgen.IChartOpts; + let teamSummaryData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getTeamSummaryData(opportunityCardsData); + let paybackBarData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getPaybackData(opportunitiesPaybackDetails, settings); pptx.layout = "LAYOUT_WIDE"; @@ -33,9 +38,9 @@ export class TreasureHuntPptService { title: "Title Slide", background: { data: betterPlantsPPTimg.betterPlantsTitleSlide }, objects: [ - {placeholder: { options:{ name:'title', type:'title', x:0.27, y:2.67, w:5.73, h:1.02, align: 'center', bold: true, color: '1D428A', fontSize: 26, fontFace: 'Arial (Headings)', valign: 'middle' }, + {placeholder: { options:{ name:'title', type:'title', x:0.27, y:2.67, w:5.73, h:1.02, align: 'left', bold: true, color: '1D428A', fontSize: 26, fontFace: 'Arial (Headings)', valign: 'middle' }, text:'Click to add title' }}, - {placeholder: { options:{ name:'body', type:'body', x:0.3, y:4.07, w:4.34, h:0.74, align: 'left', color: '8B93B1', fontSize: 20, fontFace: 'Arial (Body)', valign: 'top', }, text:'Click to add subtitle' }} + {placeholder: { options:{ name:'body', type:'body', x:0.3, y:4.07, w:4.34, h:0.74, align: 'left', color: '8B93B1', fontSize: 20, fontFace: 'Arial (Body)', valign: 'middle', }, text:'Click to add subtitle' }} ], margin: 0.0 }); @@ -44,7 +49,7 @@ export class TreasureHuntPptService { title: "Section Header", background: { data: betterPlantsPPTimg.betterPlantsSectionSlide }, objects: [ - {placeholder: { options:{ name:'title', type:'title', x:1.38, y:2.97, w:9.42, h:0.99 }, text:'Click To Edit Master Title Style' }}, + {placeholder: { options:{ name:'title', type:'title', x:1.38, y:2.97, w:9.42, h:0.99, align: 'left', bold: true, color: '1D428A', fontSize: 26, fontFace: 'Arial (Headings)', valign: 'middle' }, text:'Click To Edit Master Title Style' }}, ], margin: 0.0 }); @@ -53,8 +58,17 @@ export class TreasureHuntPptService { title: "Title and Content", background: { data: betterPlantsPPTimg.betterPlantsSlide }, objects: [ - {placeholder: { options:{ name:'title', type:'title', x:0.67, y:0, w:11.08, h:1.18 }, text:'Click to add title' }}, - {placeholder: { options:{ name:'body', type:'body', x:0.67, y:1.68, w:12, h:4.95, bullet: true }, text:'Click to add text' }} + {placeholder: { options:{ name:'title', type:'title', x: 0.67, y: 0, w: 11.08, h: 1.18, align: 'left', bold: true, color: 'FFFFFF', fontSize: 32, fontFace: 'Arial (Headings)', valign: 'middle'}, text:'Click to add title' }}, + {placeholder: { options:{ name:'body', type:'body', x:0.67, y:1.68, w:12, h:4.95, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle', bullet: true }, text:'Click to add text' }} + ], + margin: 0.0 + }); + + pptx.defineSlideMaster({ + title: "Title Only", + background: { data: betterPlantsPPTimg.betterPlantsSlide }, + objects: [ + {placeholder: { options:{ name:'title', type:'title', x: 0.67, y: 0, w: 11.08, h: 1.18, align: 'left', bold: true, color: 'FFFFFF', fontSize: 32, fontFace: 'Arial (Headings)', valign: 'middle'}, text:'Click to add title' }} ], margin: 0.0 }); @@ -63,9 +77,9 @@ export class TreasureHuntPptService { title: "Two Content", background: { data: betterPlantsPPTimg.betterPlantsSlide }, objects: [ - {placeholder: { options:{ name:'title', type:'title', x:0.67, y:0, w:11.08, h:1.18 }, text:'Click to add title' }}, - {placeholder: { options:{ name:'body', type:'body', x:0.67, y:1.75, w:5.74, h:4.95, bullet: true }, text:'Click to add text' }}, - {placeholder: { options:{ name:'body', type:'body', x:6.93, y:1.75, w:5.74, h:4.95, bullet: true }, text:'Click to add text' }} + {placeholder: { options:{ name:'title', type:'title', x:0.67, y:0, w:11.08, h:1.18, align: 'left', bold: true, color: 'FFFFFF', fontSize: 32, fontFace: 'Arial (Headings)', valign: 'middle' }, text:'Click to add title' }}, + {placeholder: { options:{ name:'body1', type:'body', x:0.67, y:1.75, w:5.74, h:4.95, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle', bullet: true }, text:'Click to add text' }}, + {placeholder: { options:{ name:'body2', type:'body', x:6.93, y:1.75, w:5.74, h:4.95, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle', bullet: true }, text:'Click to add text' }} ], margin: 0.0 }); @@ -74,30 +88,31 @@ export class TreasureHuntPptService { title: "Comparison", background: { data: betterPlantsPPTimg.betterPlantsSlide }, objects: [ - {placeholder: { options:{ name:'title', type:'title', x:0.67, y:0, w:11.08, h:1.18 }, text:'Click to add title' }}, - {placeholder: { options:{ name:'body', type:'body', x:0.67, y:1.56, w:5.89, h:0.7 }, text:'Click to add text' }}, - {placeholder: { options:{ name:'body', type:'body', x:6.77, y:1.56, w:5.89, h:0.7 }, text:'Click to add text' }}, - {placeholder: { options:{ name:'body', type:'body', x:0.67, y:2.38, w:5.89, h:4.32, bullet: true }, text:'Click to add text' }}, - {placeholder: { options:{ name:'body', type:'body', x:6.77, y:2.38, w:5.89, h:4.32, bullet: true }, text:'Click to add text' }} + {placeholder: { options:{ name:'title', type:'title', x:0.67, y:0, w:11.08, h:1.18, align: 'left', bold: true, color: 'FFFFFF', fontSize: 32, fontFace: 'Arial (Headings)', valign: 'middle' }, text:'Click to add title' }}, + {placeholder: { options:{ name:'subTitle1', type:'body', x:0.67, y:1.56, w:5.89, h:0.7, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle' }, text:'Click to add text' }}, + {placeholder: { options:{ name:'subTitle2', type:'body', x:6.77, y:1.56, w:5.89, h:0.7, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle' }, text:'Click to add text' }}, + {placeholder: { options:{ name:'body1', type:'body', x:0.67, y:2.38, w:5.89, h:4.32, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle', bullet: true }, text:'Click to add text' }}, + {placeholder: { options:{ name:'body2', type:'body', x:6.77, y:2.38, w:5.89, h:4.32, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'middle', bullet: true }, text:'Click to add text' }} ], margin: 0.0 }); - let slideTitleProperties: pptxgen.TextPropsOptions = this.treasureHuntPptPropertiesService.getSlideTitleProperties(); - let pieChartOptions: pptxgen.IChartOpts = this.treasureHuntPptPropertiesService.getPieChartProperties(); - let doughnutChartOptions: pptxgen.IChartOpts; - let teamSummaryData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getTeamSummaryData(opportunityCardsData); - let paybackBarData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getPaybackData(opportunitiesPaybackDetails, settings); + pptx.defineSlideMaster({ + title: "Blank", + background: { data: betterPlantsPPTimg.betterPlantsSlide }, + margin: 0.0 + }); + let slide1 = pptx.addSlide({ masterName: "Title Slide" }); slide1.addText(pptTitle, {placeholder: 'title'}); slide1.addText(date, {placeholder: 'body'}); let thBackground = pptx.addSlide({ masterName: "Title and Content" }); - thBackground.addText('Energy Treasure Hunt Background', slideTitleProperties); + thBackground.addText('Energy Treasure Hunt Background', {placeholder: 'title'}); thBackground.addText( "An Energy Treasure Hunt is a 2 - 3 day event focusing on day-to-day operational energy efficiency improvements\nProcess involves observing the facility during idle/partially idle times (frequently a Sunday) to identify energy waste\n{COMPANY/FACILITY} awarded treasure hunt through a competitive process", - { x: 0.67, y: 1.4, w: 12, h: 2.8, margin: .25, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'top', bullet: true } + {placeholder: 'body'} ); thBackground.addText( "Operational Efficiency Improvements", @@ -107,44 +122,42 @@ export class TreasureHuntPptService { "Turn off equipment when not in use\nChanging set points\nAutomating shutdowns\nReducing load on the equipment\nRecover wasted energy", { x: 7.27, y: 4.35, w: 5.72, h: 2.76, margin: .25, align: 'left', color: '000000', fontSize: 22, fontFace: 'Arial (Body)', valign: 'top', bullet: true } ); - thBackground.addImage({ data: betterPlantsPPTimg.energyTHFocusChart, x: 1.8, y: 3.8, w: 4.8, h: 3 }); + thBackground.addImage({ data: betterPlantsPPTimg.energyTHFocusChart, x: 1.8, y: 3.9, w: 4.8, h: 3 }); thBackground.addText( "Areas of Energy Efficiency Improvement", { x: 4.5, y: 6.3, w: 1.9, h: 0.5, margin: .25, align: 'left', color: '000000', fontSize: 10, fontFace: 'Arial (Body)', valign: 'top' } ); let thConcept = pptx.addSlide({ masterName: "Title and Content" }); - thConcept.addText('Energy Treasure Hunt Concept', slideTitleProperties); + thConcept.addText('Energy Treasure Hunt Concept', {placeholder: 'title'}); thConcept.addText( "Cross-functional teams engage employees and outside personnel to brainstorm ways to reduce energy use throughout the plant\nFinding low cost/no cost actions to reduce energy consumption\nLearning a repeatable process to continuously improve and reduce energy consumption\nParticipants learn skills to quantify opportunities using standard methodologies, tools, and calculations", - { x: 0.67, y: 1.4, w: 12, h: 3.7, margin: .25, align: 'left', color: '000000', fontSize: 24, fontFace: 'Arial (Body)', valign: 'top', bullet: true } + {placeholder: 'body'} ); thConcept.addText( "Employees implement the Treasure Hunt process!", { x: 2.54, y: 5.34, w: 8.25, h: 0.6, margin: .25, align: 'left', color: '#2F5597', fontSize: 24, fontFace: 'Arial (Body)', valign: 'top' } ); - let previousResults = pptx.addSlide({ masterName: "Title and Content" }); - previousResults.addText('Previous DOE Energy Treasure Hunt Results', slideTitleProperties); + let previousResults = pptx.addSlide({ masterName: "Title Only" }); + previousResults.addText('Previous DOE Energy Treasure Hunt Results', {placeholder: 'title'}); previousResults.addImage({ data: betterPlantsPPTimg.previousTHChart, x: 1.22, y: 1.57, w: 10.9, h: 5.08 }); - let thOverview = pptx.addSlide({ masterName: "Title and Content" }); - thOverview.addText('{FACILITY NAME} Treasure Hunt Overview', slideTitleProperties); + let thOverview = pptx.addSlide({ masterName: "Two Content" }); + thOverview.addText('{FACILITY NAME} Treasure Hunt Overview', {placeholder: 'title'}); thOverview.addText( "{TREASURE HUNT DATES}\nLocation: {FACILITY LOCATION}\nAfter kickoff, safety briefing, and tool training, we will employ the treasure hunt process\nConclude with report out to plant management", - { x: 0.3, y: 1.4, w: 5.9, h: 2.14, margin: .25, align: 'left', color: '000000', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } + { placeholder: 'body1' } ); - thOverview.addImage({ data: betterPlantsPPTimg.thOverviewFlowChart, x: 1.69, y: 3.96, w: 2.97, h: 2.63 }); - thOverview.addText('Placeholder for agenda day 1', { x: 6.3, y: 1.3, w: 6.9, h: 1.5, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 10, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); - thOverview.addText('Placeholder for agenda day 2', { x: 6.3, y: 2.85, w: 6.9, h: 2, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 10, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); - thOverview.addText('Placeholder for agenda day 3', { x: 6.3, y: 4.9, w: 6.9, h: 1.9, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 10, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); - + thOverview.addImage({ data: betterPlantsPPTimg.thOverviewFlowChart, x: 3.44, y: 4.32, w: 2.97, h: 2.63 }); + thOverview.addText('Placeholder for agenda day 1\nPlaceholder for agenda day 2\nPlaceholder for agenda day 3', { placeholder: 'body2' }); + let facilitySlide = pptx.addSlide({ masterName: "Title and Content" }); - facilitySlide.addText('{Facility Name} Hunt Overview', slideTitleProperties); - facilitySlide.addText('Placeholder for group picture', { x: 2.17, y: 1.34, w: 9, h: 6, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 18, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); + facilitySlide.addText('{Facility Name} Hunt Overview', {placeholder: 'title'}); + facilitySlide.addText('Placeholder for group picture', {placeholder: 'body'}); let slide2 = pptx.addSlide({ masterName: "Title and Content" }); - slide2.addText('Cost Summary', slideTitleProperties); + slide2.addText('Cost Summary', {placeholder: 'title'}); slide2 = this.treasureHuntPptTableService.getCostSummaryTable(slide2, treasureHuntResults); let costSavingsData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getCostSavingsData(treasureHuntResults); doughnutChartOptions = this.treasureHuntPptPropertiesService.getDoughnutChartProperties(); @@ -155,17 +168,17 @@ export class TreasureHuntPptService { let slide3 = pptx.addSlide({ masterName: "Title and Content" }); - slide3.addText('Detailed Summary', slideTitleProperties); + slide3.addText('Detailed Summary', {placeholder: 'title'}); slide3 = this.treasureHuntPptTableService.getDetailedSummaryTable(slide3, treasureHuntResults, settings); let slide4 = pptx.addSlide({ masterName: "Title and Content" }); - slide4.addText('Energy Utility Usage & Cost', slideTitleProperties); + slide4.addText('Energy Utility Usage & Cost', {placeholder: 'title'}); if (treasureHunt.currentEnergyUsage) { slide4 = this.treasureHuntPptTableService.getEnergyUtilityTable(slide4, treasureHunt.currentEnergyUsage, settings); } let slide5 = pptx.addSlide({ masterName: "Title and Content" }); - slide5.addText('Electricity & Natural Gas Usage', slideTitleProperties); + slide5.addText('Electricity & Natural Gas Usage', {placeholder: 'title'}); if (treasureHuntResults.electricity.energySavings) { let electricitySavingsData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getElectricitySavingsData(treasureHuntResults); slide5.addChart("doughnut", electricitySavingsData, doughnutChartOptions); @@ -185,7 +198,7 @@ export class TreasureHuntPptService { } let slide6 = pptx.addSlide({ masterName: "Title and Content" }); - slide6.addText('Utility Usage & Savings', slideTitleProperties); + slide6.addText('Utility Usage & Savings', {placeholder: 'title'}); if (treasureHuntResults.water.energySavings) { let waterSavingsData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getWaterSavingsData(treasureHuntResults); doughnutChartOptions = this.treasureHuntPptPropertiesService.getDoughnutChartProperties(); @@ -259,7 +272,7 @@ export class TreasureHuntPptService { let slide7 = pptx.addSlide({ masterName: "Title and Content" }); - slide7.addText('Carbon Emission Results (tonne CO2)', slideTitleProperties); + slide7.addText('Carbon Emission Results (tonne CO2)', {placeholder: 'title'}); doughnutChartOptions = this.treasureHuntPptPropertiesService.getDoughnutChartProperties(); slide7 = this.treasureHuntPptTableService.getCarbonSummaryTable(slide7, treasureHuntResults.co2EmissionsResults); let carbonSavingsData: PptxgenjsChartData[] = this.treasureHuntPptDataService.getCarbonSavingsData(treasureHuntResults.co2EmissionsResults); @@ -271,7 +284,7 @@ export class TreasureHuntPptService { if (this.treasureHuntReportService.getTeamData(opportunityCardsData).length > 0) { let slide8 = pptx.addSlide({ masterName: "Title and Content" }); - slide8.addText('Team Summary ($)', slideTitleProperties); + slide8.addText('Team Summary ($)', {placeholder: 'title'}); slide8 = this.treasureHuntPptTableService.getTeamSummaryTable(slide8, opportunityCardsData); slide8.addChart("pie", teamSummaryData, pieChartOptions); @@ -283,7 +296,7 @@ export class TreasureHuntPptService { teamTitle.addText('Team ' + team.team, { w: '100%', h: '100%', align: 'center', bold: true, color: 'FFFFFF', fontSize: 68, fontFace: 'Arial (Headings)', valign: 'middle', isTextBox: true, autoFit: true }); let slideTeamTopOpps = pptx.addSlide({ masterName: "Title and Content" }); - slideTeamTopOpps.addText('Team ' + team.team + ' - Top Opportunities', slideTitleProperties); + slideTeamTopOpps.addText('Team ' + team.team + ' - Top Opportunities', {placeholder: 'title'}); slideTeamTopOpps.addText( "additional notes here", { x: 2.17, y: 6, w: 9, h: 1, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } @@ -317,7 +330,7 @@ export class TreasureHuntPptService { slideTeamTopOpps.addTable(rows, { x: 0.14, y: 2.5, w: 11.05, colW: [2, 1.5, 1.5, 0.8, 1.25, 1.25, 1.25, 1.25, 1.25, 1], color: "1D428A", fontSize: 12, fontFace: 'Arial (Body)', border: { type: "solid", color: '1D428A' }, fill: { color: 'BDEEFF' }, align: 'left', valign: 'middle' }); let slideTeamSummary = pptx.addSlide({ masterName: "Title and Content" }); - slideTeamSummary.addText('Team ' + team.team, slideTitleProperties); + slideTeamSummary.addText('Team ' + team.team, {placeholder: 'title'}); slideTeamSummary.addText('Placeholder for picture', { x: 8.32, y: 1.8, w: 4.43, h: 2.81, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 18, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); slideTeamSummary.addText('Team Members:', slideTextProps); @@ -327,7 +340,7 @@ export class TreasureHuntPptService { opportunityCardsData.forEach((opp: OpportunityCardData) => { if (opp.opportunitySheet.owner == team.team && opp.selected == true) { let newSlide = pptx.addSlide({ masterName: "Title and Content" }); - newSlide.addText('Opportunity: ' + opp.name, slideTitleProperties); + newSlide.addText('Opportunity: ' + opp.name, {placeholder: 'title'}); let slideText: { text: pptxgen.TextProps[], options: pptxgen.TextPropsOptions } = this.getOpportunitySlideText(opp.opportunitySheet); newSlide.addText(slideText.text, slideText.options); newSlide.addText('Placeholder for picture', { x: 8.32, y: 1.8, w: 4.43, h: 2.81, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 18, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); @@ -362,7 +375,7 @@ export class TreasureHuntPptService { }); let slideTeamAllOpps = pptx.addSlide({ masterName: "Title and Content" }); - slideTeamAllOpps.addText('Team ' + team.team + ' - All Opportunities', slideTitleProperties); + slideTeamAllOpps.addText('Team ' + team.team + ' - All Opportunities', {placeholder: 'title'}); for (let i = 3; i < teamOpportunities.length; i++) { let x: OpportunitySummary = teamOpportunities[i]; if (x) { @@ -372,7 +385,7 @@ export class TreasureHuntPptService { slideTeamAllOpps.addTable(rows, { x: 0.14, y: 1.5, w: 11.05, colW: [2, 1.5, 1.5, 0.8, 1.25, 1.25, 1.25, 1.25, 1.25, 1], color: "1D428A", fontSize: 12, fontFace: 'Arial (Body)', border: { type: "solid", color: '1D428A' }, fill: { color: 'BDEEFF' }, align: 'left', valign: 'middle' }); let slideTeamBestPractices = pptx.addSlide({ masterName: "Title and Content" }); - slideTeamBestPractices.addText('Team ' + team.team + ' - Best Practices', slideTitleProperties); + slideTeamBestPractices.addText('Team ' + team.team + ' - Best Practices', {placeholder: 'title'}); slideTeamBestPractices.addText( "Outline key best practices identified in Treasure Hunt here\ntype here\ntype here", { x: 2.17, y: 1.4, w: 9, h: 5.5, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } @@ -388,7 +401,7 @@ export class TreasureHuntPptService { opportunityCardsData.forEach((opp) => { if (!opp.opportunitySheet.owner && opp.selected == true) { let newSlide = pptx.addSlide({ masterName: "Title and Content" }); - newSlide.addText('Opportunity: ' + opp.name, slideTitleProperties); + newSlide.addText('Opportunity: ' + opp.name, {placeholder: 'title'}); let slideText: { text: pptxgen.TextProps[], options: pptxgen.TextPropsOptions } = this.getOpportunitySlideText(opp.opportunitySheet); newSlide.addText(slideText.text, slideText.options); newSlide.addText('Placeholder for picture', { x: 8.32, y: 1.8, w: 4.43, h: 2.81, align: 'center', fill: { color: 'BDEEFF' }, color: 'BFBFBF', fontSize: 18, fontFace: 'Arial (Body)', valign: 'middle', isTextBox: true, autoFit: true }); @@ -427,33 +440,33 @@ export class TreasureHuntPptService { let slide9 = pptx.addSlide({ masterName: "Title and Content" }); - slide9.addText('Opportunity Payback Details ($)', slideTitleProperties); + slide9.addText('Opportunity Payback Details ($)', {placeholder: 'title'}); slide9 = this.treasureHuntPptTableService.getOppPaybackTable(slide9, opportunitiesPaybackDetails); slide9.addChart("pie", paybackBarData, pieChartOptions); let slide10 = pptx.addSlide({ masterName: "Title and Content" }); - slide10.addText('Best Practices', slideTitleProperties); + slide10.addText('Best Practices', {placeholder: 'title'}); slide10.addText( "Outline key best practices identified in Treasure Hunt here\ntype here\ntype here", { x: 2.17, y: 1.4, w: 9, h: 5.5, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } ); let slide11 = pptx.addSlide({ masterName: "Title and Content" }); - slide11.addText('Other Opportunities Not Evaluated', slideTitleProperties); + slide11.addText('Other Opportunities Not Evaluated', {placeholder: 'title'}); slide11.addText( "Outline any major opportunities identified, but not evaluated here\ntype here\ntype here", { x: 2.17, y: 1.4, w: 9, h: 5.5, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } ); let slide12 = pptx.addSlide({ masterName: "Title and Content" }); - slide12.addText('{FACILITY NAME} Next Actions', slideTitleProperties); + slide12.addText('{FACILITY NAME} Next Actions', {placeholder: 'title'}); slide12.addText( "Outline the next stpes for the facility here\ntype here\ntype here", { x: 2.17, y: 1.4, w: 9, h: 5.5, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true } ); let slide13 = pptx.addSlide({ masterName: "Title and Content" }); - slide13.addText('{COMPANY NAME}/DOE Partnership Future Actions', slideTitleProperties); + slide13.addText('{COMPANY NAME}/DOE Partnership Future Actions', {placeholder: 'title'}); slide13.addText( "Outline the next steps for the company and DOE/Better Plants here\ntype here\ntype here", { x: 2.17, y: 1.4, w: 9, h: 5.5, margin: .25, align: 'left', color: 'ABABAB', fontSize: 18, fontFace: 'Arial (Body)', valign: 'top', bullet: true }