summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSumy Joseph2012-10-10 19:51:12 (EDT)
committer Roberto E. Escobar2012-10-10 19:51:12 (EDT)
commitdeeca56703b9059e6223bc94267ada8ba8c5b2f8 (patch)
tree8433529db57c3d891c1b8add4c1f551567add9c9
parentc7735b0e46808a8c006ce8f2f75808f120677259 (diff)
downloadorg.eclipse.osee-deeca56703b9059e6223bc94267ada8ba8c5b2f8.zip
org.eclipse.osee-deeca56703b9059e6223bc94267ada8ba8c5b2f8.tar.gz
org.eclipse.osee-deeca56703b9059e6223bc94267ada8ba8c5b2f8.tar.bz2
feature[bgz_391218]: Add project management burndown report
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/.classpath7
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/.project28
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/META-INF/MANIFEST.MF29
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/build.properties6
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/plugin.xml11
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/reports/HourBurndown.rptdesign2713
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/reports/IssueBurndown.rptdesign2306
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/Activator.java58
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownEntry.java120
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownLog.java208
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownModel.java31
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownTab.java27
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/ReportUtil.java35
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownEntry.java116
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownLog.java192
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownModel.java31
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownTab.java27
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/AbstractBurndownTab.java79
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownItem.java107
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownSelectionDialog.java277
-rw-r--r--plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/ProjectModuleReports.java44
21 files changed, 6452 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.reports.burndown/.classpath b/plugins/org.eclipse.osee.reports.burndown/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.osee.reports.burndown/.project b/plugins/org.eclipse.osee.reports.burndown/.project
new file mode 100644
index 0000000..8fb8137
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osee.reports.burndown</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.osee.reports.burndown/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.reports.burndown/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c90dccf
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Burndown
+Bundle-SymbolicName: org.eclipse.osee.reports.burndown;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.osee.reports.burndown.Activator
+Bundle-Vendor: BOSCH
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.birt.report.viewer,
+ org.eclipse.birt.chart.engine,
+ org.eclipse.osee.ats,
+ org.eclipse.osee.framework.core,
+ org.eclipse.osee.framework.logging,
+ org.eclipse.osee.framework.skynet.core,
+ org.eclipse.osee.framework.ui.plugin,
+ org.eclipse.osee.framework.ui.swt,
+ org.eclipse.osee.framework.ui.skynet,
+ org.eclipse.osee.reports.efficiency,
+ org.eclipse.osee.reports.split,
+ org.eclipse.osee.ats.core.client,
+ org.eclipse.osee.ats.api,
+ org.eclipse.osee.ats.core,
+ org.eclipse.osee.framework.core.model,
+ org.eclipse.ui.forms
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osee.reports.burndown.hours,
+ org.eclipse.osee.reports.burndown.issues,
+ org.eclipse.osee.reports.burndown.ui
diff --git a/plugins/org.eclipse.osee.reports.burndown/build.properties b/plugins/org.eclipse.osee.reports.burndown/build.properties
new file mode 100644
index 0000000..bcaa80b
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ reports/
diff --git a/plugins/org.eclipse.osee.reports.burndown/plugin.xml b/plugins/org.eclipse.osee.reports.burndown/plugin.xml
new file mode 100644
index 0000000..eed550b
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.osee.ats.AtsNavigateItem">
+ <AtsNavigateItem
+ classname="org.eclipse.osee.reports.burndown.ui.ProjectModuleReports">
+ </AtsNavigateItem>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.osee.reports.burndown/reports/HourBurndown.rptdesign b/plugins/org.eclipse.osee.reports.burndown/reports/HourBurndown.rptdesign
new file mode 100644
index 0000000..cac6322
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/reports/HourBurndown.rptdesign
@@ -0,0 +1,2713 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.22" id="1">
+ <property name="createdBy">Eclipse BIRT Designer Version 3.7.1.v20110905 Build &lt;3.7.1.v20110913-1734></property>
+ <property name="units">in</property>
+ <property name="iconFile">/templates/blank_report.gif</property>
+ <property name="bidiLayoutOrientation">ltr</property>
+ <property name="imageDPI">72</property>
+ <data-sources>
+ <script-data-source name="Hour Burndown Data source" id="71"/>
+ <script-data-source name="Issue Burndown Data Source" id="98"/>
+ </data-sources>
+ <data-sets>
+ <script-data-set name="Hour Burndown Data Set" id="72">
+ <list-property name="resultSetHints">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">HoursWorked</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">HoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">IdealHoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ </list-property>
+ <list-property name="columnHints">
+ <structure>
+ <property name="columnName">Date</property>
+ <text-property name="displayName">Date</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">HoursWorked</property>
+ <text-property name="displayName">Hours Worked</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">HoursRemaining</property>
+ <text-property name="displayName">Hours Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IsActualData</property>
+ <text-property name="displayName">Is Actual Data ?</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IdealHoursRemaining</property>
+ <text-property name="displayName">Ideal Hours Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">BurndownRate</property>
+ <text-property name="displayName">Burndown Rate</text-property>
+ </structure>
+ </list-property>
+ <structure name="cachedMetaData">
+ <list-property name="resultSet">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">HoursWorked</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">HoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">IdealHoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ </list-property>
+ </structure>
+ <property name="dataSource">Hour Burndown Data source</property>
+ <method name="open"><![CDATA[importPackage(Packages.org.eclipse.core.runtime);
+
+myBundle = Platform.getBundle("org.eclipse.osee.reports.burndown");
+
+count = 0;
+
+/* load data reader class */
+readerClass = myBundle.loadClass("org.eclipse.osee.reports.burndown.hours.HourBurndownModel");
+
+/* create new instance of DataReader */
+readerInstance = readerClass.newInstance();
+
+log = readerInstance.getLog();
+entries = log.getEntries();]]></method>
+ <method name="fetch"><![CDATA[
+
+if(count < entries.size()){
+row["Date"] = entries.get(count).getDate();
+row["HoursWorked"] = entries.get(count).getHoursWorked();
+row["HoursRemaining"] = entries.get(count).getHoursRemaining();
+row["IsActualData"] = entries.get(count).isActualData();
+row["IdealHoursRemaining"] = entries.get(count).getIdealHoursRemaining();
+row["BurndownRate"] = entries.get(count).getBurndownRate();
+count++;
+return true;
+}
+
+return false;
+]]></method>
+ </script-data-set>
+ <script-data-set name="Issue Burndown Data Set" id="99">
+ <list-property name="resultSetHints">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date-time</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">IssuesClosed</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">IssuesRemaining</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IdealIssuesRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ </list-property>
+ <list-property name="columnHints">
+ <structure>
+ <property name="columnName">Date</property>
+ <text-property name="displayName">Date</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IssuesClosed</property>
+ <text-property name="displayName">Issues Closed</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IssuesRemaining</property>
+ <text-property name="displayName">Issues Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IdealIssuesRemaining</property>
+ <text-property name="displayName">Ideal Issues Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">BurndownRate</property>
+ <text-property name="displayName">Burndown rate</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IsActualData</property>
+ <text-property name="displayName">Is Actual Data</text-property>
+ </structure>
+ </list-property>
+ <structure name="cachedMetaData">
+ <list-property name="resultSet">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date-time</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">IssuesClosed</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">IssuesRemaining</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IdealIssuesRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ </list-property>
+ </structure>
+ <property name="dataSource">Issue Burndown Data Source</property>
+ <method name="open"><![CDATA[importPackage(Packages.org.eclipse.core.runtime);
+
+myBundle = Platform.getBundle("org.eclipse.osee.reports.burndown");
+
+count = 0;
+
+/* load data reader class */
+readerClass = myBundle.loadClass("org.eclipse.osee.reports.burndown.issues.IssueBurndownModel");
+
+/* create new instance of DataReader */
+readerInstance = readerClass.newInstance();
+
+log = readerInstance.getLog();
+entries = log.getEntries();]]></method>
+ <method name="fetch"><![CDATA[
+
+if(count < entries.size()){
+row["Date"] = entries.get(count).getDate();
+row["IssuesClosed"] = entries.get(count).getIssuesClosed();
+row["IssuesRemaining"] = entries.get(count).getIssuesRemaining();
+row["IsActualData"] = entries.get(count).isActualData();
+row["IdealIssuesRemaining"] = entries.get(count).getIdealIssuesRemaining();
+row["BurndownRate"] = entries.get(count).getBurndownRate();
+count++;
+return true;
+}
+
+return false;
+]]></method>
+ </script-data-set>
+ </data-sets>
+ <styles>
+ <style name="report" id="4">
+ <property name="fontFamily">sans-serif</property>
+ <property name="fontSize">10pt</property>
+ </style>
+ <style name="crosstab-cell" id="5">
+ <property name="borderBottomColor">#CCCCCC</property>
+ <property name="borderBottomStyle">solid</property>
+ <property name="borderBottomWidth">1pt</property>
+ <property name="borderLeftColor">#CCCCCC</property>
+ <property name="borderLeftStyle">solid</property>
+ <property name="borderLeftWidth">1pt</property>
+ <property name="borderRightColor">#CCCCCC</property>
+ <property name="borderRightStyle">solid</property>
+ <property name="borderRightWidth">1pt</property>
+ <property name="borderTopColor">#CCCCCC</property>
+ <property name="borderTopStyle">solid</property>
+ <property name="borderTopWidth">1pt</property>
+ </style>
+ <style name="crosstab" id="6">
+ <property name="borderBottomColor">#CCCCCC</property>
+ <property name="borderBottomStyle">solid</property>
+ <property name="borderBottomWidth">1pt</property>
+ <property name="borderLeftColor">#CCCCCC</property>
+ <property name="borderLeftStyle">solid</property>
+ <property name="borderLeftWidth">1pt</property>
+ <property name="borderRightColor">#CCCCCC</property>
+ <property name="borderRightStyle">solid</property>
+ <property name="borderRightWidth">1pt</property>
+ <property name="borderTopColor">#CCCCCC</property>
+ <property name="borderTopStyle">solid</property>
+ <property name="borderTopWidth">1pt</property>
+ </style>
+ </styles>
+ <page-setup>
+ <simple-master-page name="Simple MasterPage" id="2">
+ <page-footer>
+ <text id="3">
+ <property name="contentType">html</property>
+ <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
+ </text>
+ </page-footer>
+ </simple-master-page>
+ </page-setup>
+ <body>
+ <extended-item extensionName="Chart" id="97">
+ <xml-property name="xmlRepresentation"><![CDATA[<model:ChartWithAxes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:attribute="http://www.birt.eclipse.org/ChartModelAttribute" xmlns:data="http://www.birt.eclipse.org/ChartModelData" xmlns:layout="http://www.birt.eclipse.org/ChartModelLayout" xmlns:model="http://www.birt.eclipse.org/ChartModel" xmlns:type="http://www.birt.eclipse.org/ChartModelType">
+ <Version>2.5.1</Version>
+ <Type>Line Chart</Type>
+ <SubType>Overlay</SubType>
+ <Description>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Description>
+ <Block>
+ <Children xsi:type="layout:TitleBlock">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value>Hour Burndown</Value>
+ <Font>
+ <Size>16.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ </Children>
+ <Children xsi:type="layout:Plot">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <HorizontalSpacing>5</HorizontalSpacing>
+ <VerticalSpacing>5</VerticalSpacing>
+ <ClientArea>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>0</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>0.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>0.0</Right>
+ </Insets>
+ </ClientArea>
+ </Children>
+ <Children xsi:type="layout:Legend">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Anchor>West</Anchor>
+ <Stretch>Both</Stretch>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Dash_Dotted</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <ClientArea>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>0</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>2.0</Top>
+ <Left>2.0</Left>
+ <Bottom>2.0</Bottom>
+ <Right>2.0</Right>
+ </Insets>
+ </ClientArea>
+ <Text>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Text>
+ <Orientation>Horizontal</Orientation>
+ <Direction>Top_Bottom</Direction>
+ <Separator>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Separator>
+ <Position>Below</Position>
+ <ItemType>Series</ItemType>
+ <Title>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Above</TitlePosition>
+ </Children>
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>573.75</Width>
+ <Height>360.75</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ </Block>
+ <Dimension>Two_Dimensional</Dimension>
+ <Units>Points</Units>
+ <SeriesThickness>10.0</SeriesThickness>
+ <ExtendedProperties>
+ <Name>enable.area.alt</Name>
+ <Value>false</Value>
+ </ExtendedProperties>
+ <SampleData>
+ <BaseSampleData>
+ <DataSetRepresentation>01/05/2000,02/01/2000,04/12/2000,03/12/2000,02/29/2000</DataSetRepresentation>
+ </BaseSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>6,4,12,8,10</DataSetRepresentation>
+ <SeriesDefinitionIndex>0</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>12.0,8.0,24.0,16.0,20.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>1</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>18.0,12.0,36.0,24.0,30.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>2</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>24.0,16.0,48.0,32.0,40.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>3</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <AncillarySampleData>
+ <DataSetRepresentation>Series 1</DataSetRepresentation>
+ </AncillarySampleData>
+ </SampleData>
+ <Interactivity/>
+ <EmptyMessage>
+ <Caption>
+ <Value>This chart contains no data.</Value>
+ <Font>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>64</Transparency>
+ <Red>127</Red>
+ <Green>127</Green>
+ <Blue>127</Blue>
+ </Background>
+ <Outline>
+ <Color>
+ <Transparency>128</Transparency>
+ <Red>127</Red>
+ <Green>127</Green>
+ <Blue>127</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Outline>
+ <Insets>
+ <Top>10.0</Top>
+ <Left>10.0</Left>
+ <Bottom>10.0</Bottom>
+ <Right>10.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </EmptyMessage>
+ <Axes>
+ <Type>DateTime</Type>
+ <Title>
+ <Caption>
+ <Value>X-Axis Title</Value>
+ <Font>
+ <Size>14.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Below</TitlePosition>
+ <AssociatedAxes>
+ <Type>Linear</Type>
+ <Title>
+ <Caption>
+ <Value>Y-Axis Title</Value>
+ <Font>
+ <Size>14.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ <Rotation>90.0</Rotation>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Left</TitlePosition>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;HoursRemaining&quot;]</Definition>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Hours Remaining</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Translucent>false</Translucent>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;HoursWorked&quot;]</Definition>
+ <Grouping>
+ <Enabled>true</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>RunningSum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Hours Worked</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ <Curve>false</Curve>
+ </Series>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;IdealHoursRemaining&quot;]</Definition>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Ideal Line</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;BurndownRate&quot;]</Definition>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Burndown Rate</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <Orientation>Vertical</Orientation>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ <LabelPosition>Left</LabelPosition>
+ <MajorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </TickAttributes>
+ </MajorGrid>
+ <MinorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </TickAttributes>
+ </MinorGrid>
+ <Scale>
+ <MinorGridsPerUnit>5</MinorGridsPerUnit>
+ </Scale>
+ <Origin>
+ <Type>Min</Type>
+ <Value xsi:type="data:NumberDataElement">
+ <Value>0.0</Value>
+ </Value>
+ </Origin>
+ <PrimaryAxis>true</PrimaryAxis>
+ <Percent>false</Percent>
+ </AssociatedAxes>
+ <AncillaryAxes>
+ <Type>Text</Type>
+ <Title>
+ <Caption>
+ <Value>Z-Axis Title</Value>
+ <Font>
+ <Size>14.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Below</TitlePosition>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>166</Green>
+ <Blue>218</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>242</Red>
+ <Green>88</Green>
+ <Blue>106</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>232</Red>
+ <Green>172</Green>
+ <Blue>57</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series>
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <SeriesIdentifier></SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Outside</LabelPosition>
+ <Stacked>false</Stacked>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <Orientation>Horizontal</Orientation>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ <LabelPosition>Below</LabelPosition>
+ <MajorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </TickAttributes>
+ </MajorGrid>
+ <MinorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </TickAttributes>
+ </MinorGrid>
+ <Scale>
+ <MinorGridsPerUnit>5</MinorGridsPerUnit>
+ </Scale>
+ <Origin>
+ <Type>Min</Type>
+ <Value xsi:type="data:NumberDataElement">
+ <Value>0.0</Value>
+ </Value>
+ </Origin>
+ <PrimaryAxis>true</PrimaryAxis>
+ <Percent>false</Percent>
+ </AncillaryAxes>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series>
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;Date&quot;]</Definition>
+ </DataDefinition>
+ <SeriesIdentifier></SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Outside</LabelPosition>
+ <Stacked>false</Stacked>
+ </Series>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupingUnit>Years</GroupingUnit>
+ <GroupingInterval>1.0</GroupingInterval>
+ <GroupType>DateTime</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ <Sorting>Ascending</Sorting>
+ <SortKey>
+ <Definition>row[&quot;Date&quot;]</Definition>
+ </SortKey>
+ </SeriesDefinitions>
+ <Orientation>Horizontal</Orientation>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ <LabelPosition>Below</LabelPosition>
+ <MajorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </TickAttributes>
+ </MajorGrid>
+ <MinorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </TickAttributes>
+ </MinorGrid>
+ <Scale>
+ <MinorGridsPerUnit>2</MinorGridsPerUnit>
+ <ShowOutside>false</ShowOutside>
+ <MajorGridsStepNumber>1</MajorGridsStepNumber>
+ </Scale>
+ <Origin>
+ <Type>Min</Type>
+ <Value xsi:type="data:NumberDataElement">
+ <Value>0.0</Value>
+ </Value>
+ </Origin>
+ <PrimaryAxis>true</PrimaryAxis>
+ <CategoryAxis>true</CategoryAxis>
+ <Percent>false</Percent>
+ </Axes>
+ <Orientation>Vertical</Orientation>
+ <UnitSpacing>50.0</UnitSpacing>
+ <Rotation>
+ <Angles>
+ <XAngle>-20.0</XAngle>
+ <YAngle>45.0</YAngle>
+ <ZAngle>0.0</ZAngle>
+ <Type>None</Type>
+ </Angles>
+ </Rotation>
+ <ReverseCategory>false</ReverseCategory>
+</model:ChartWithAxes>
+]]></xml-property>
+ <property name="outputFormat">SVG</property>
+ <property name="inheritColumns">true</property>
+ <property name="pageBreakAfter">always</property>
+ <structure name="toc">
+ <expression name="expressionValue" type="javascript">"Hour Burndown"</expression>
+ </structure>
+ <property name="dataSet">Hour Burndown Data Set</property>
+ <property name="height">5.010416666666667in</property>
+ <property name="width">7.96875in</property>
+ <list-property name="boundDataColumns">
+ <structure>
+ <property name="name">Date</property>
+ <expression name="expression" type="javascript">dataSetRow["Date"]</expression>
+ <property name="dataType">date</property>
+ </structure>
+ <structure>
+ <property name="name">HoursWorked</property>
+ <expression name="expression" type="javascript">dataSetRow["HoursWorked"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="name">HoursRemaining</property>
+ <expression name="expression" type="javascript">dataSetRow["HoursRemaining"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="name">IsActualData</property>
+ <expression name="expression" type="javascript">dataSetRow["IsActualData"]</expression>
+ <property name="dataType">boolean</property>
+ </structure>
+ <structure>
+ <property name="name">IdealHoursRemaining</property>
+ <expression name="expression" type="javascript">dataSetRow["IdealHoursRemaining"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="name">BurndownRate</property>
+ <expression name="expression" type="javascript">dataSetRow["BurndownRate"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ </list-property>
+ </extended-item>
+ </body>
+</report>
diff --git a/plugins/org.eclipse.osee.reports.burndown/reports/IssueBurndown.rptdesign b/plugins/org.eclipse.osee.reports.burndown/reports/IssueBurndown.rptdesign
new file mode 100644
index 0000000..9a1ae23
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/reports/IssueBurndown.rptdesign
@@ -0,0 +1,2306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.21" id="1">
+ <property name="createdBy">Eclipse BIRT Designer Version 2.6.0.v20100531 Build &lt;2.6.0.v20100609-1613></property>
+ <property name="units">in</property>
+ <property name="iconFile">/templates/blank_report.gif</property>
+ <property name="bidiLayoutOrientation">ltr</property>
+ <property name="imageDPI">72</property>
+ <data-sources>
+ <script-data-source name="Hour Burndown Data source" id="71"/>
+ <script-data-source name="Issue Burndown Data Source" id="98"/>
+ </data-sources>
+ <data-sets>
+ <script-data-set name="Hour Burndown Data Set" id="72">
+ <list-property name="resultSetHints">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">HoursWorked</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">HoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">IdealHoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ </list-property>
+ <list-property name="columnHints">
+ <structure>
+ <property name="columnName">Date</property>
+ <text-property name="displayName">Date</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">HoursWorked</property>
+ <text-property name="displayName">Hours Worked</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">HoursRemaining</property>
+ <text-property name="displayName">Hours Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IsActualData</property>
+ <text-property name="displayName">Is Actual Data ?</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IdealHoursRemaining</property>
+ <text-property name="displayName">Ideal Hours Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">BurndownRate</property>
+ <text-property name="displayName">Burndown Rate</text-property>
+ </structure>
+ </list-property>
+ <structure name="cachedMetaData">
+ <list-property name="resultSet">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">HoursWorked</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">HoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">IdealHoursRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ </list-property>
+ </structure>
+ <property name="dataSource">Hour Burndown Data source</property>
+ <method name="open"><![CDATA[importPackage(Packages.org.eclipse.core.runtime);
+
+myBundle = Platform.getBundle("org.eclipse.osee.reports.burndown");
+
+count = 0;
+
+/* load data reader class */
+readerClass = myBundle.loadClass("org.eclipse.osee.reports.burndown.hours.HourBurndownModel");
+
+/* create new instance of DataReader */
+readerInstance = readerClass.newInstance();
+
+log = readerInstance.getLog();
+entries = log.getEntries();]]></method>
+ <method name="fetch"><![CDATA[
+
+if(count < entries.size()){
+row["Date"] = entries.get(count).getDate();
+row["HoursWorked"] = entries.get(count).getHoursWorked();
+row["HoursRemaining"] = entries.get(count).getHoursRemaining();
+row["IsActualData"] = entries.get(count).isActualData();
+row["IdealHoursRemaining"] = entries.get(count).getIdealHoursRemaining();
+row["BurndownRate"] = entries.get(count).getBurndownRate();
+count++;
+return true;
+}
+
+return false;
+]]></method>
+ </script-data-set>
+ <script-data-set name="Issue Burndown Data Set" id="99">
+ <list-property name="resultSetHints">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date-time</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">IssuesClosed</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">IssuesRemaining</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IdealIssuesRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ </list-property>
+ <list-property name="columnHints">
+ <structure>
+ <property name="columnName">Date</property>
+ <text-property name="displayName">Date</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IssuesClosed</property>
+ <text-property name="displayName">Issues Closed</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IssuesRemaining</property>
+ <text-property name="displayName">Issues Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IdealIssuesRemaining</property>
+ <text-property name="displayName">Ideal Issues Remaining</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">BurndownRate</property>
+ <text-property name="displayName">Burndown rate</text-property>
+ </structure>
+ <structure>
+ <property name="columnName">IsActualData</property>
+ <text-property name="displayName">Is Actual Data</text-property>
+ </structure>
+ </list-property>
+ <structure name="cachedMetaData">
+ <list-property name="resultSet">
+ <structure>
+ <property name="position">1</property>
+ <property name="name">Date</property>
+ <property name="dataType">date-time</property>
+ </structure>
+ <structure>
+ <property name="position">2</property>
+ <property name="name">IssuesClosed</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">3</property>
+ <property name="name">IssuesRemaining</property>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="position">4</property>
+ <property name="name">IdealIssuesRemaining</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">5</property>
+ <property name="name">BurndownRate</property>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="position">6</property>
+ <property name="name">IsActualData</property>
+ <property name="dataType">boolean</property>
+ </structure>
+ </list-property>
+ </structure>
+ <property name="dataSource">Issue Burndown Data Source</property>
+ <method name="open"><![CDATA[importPackage(Packages.org.eclipse.core.runtime);
+
+myBundle = Platform.getBundle("org.eclipse.osee.reports.burndown");
+
+count = 0;
+
+/* load data reader class */
+readerClass = myBundle.loadClass("org.eclipse.osee.reports.burndown.issues.IssueBurndownModel");
+
+/* create new instance of DataReader */
+readerInstance = readerClass.newInstance();
+
+log = readerInstance.getLog();
+entries = log.getEntries();]]></method>
+ <method name="fetch"><![CDATA[
+
+if(count < entries.size()){
+row["Date"] = entries.get(count).getDate();
+row["IssuesClosed"] = entries.get(count).getIssuesClosed();
+row["IssuesRemaining"] = entries.get(count).getIssuesRemaining();
+row["IsActualData"] = entries.get(count).isActualData();
+row["IdealIssuesRemaining"] = entries.get(count).getIdealIssuesRemaining();
+row["BurndownRate"] = entries.get(count).getBurndownRate();
+count++;
+return true;
+}
+
+return false;
+]]></method>
+ </script-data-set>
+ </data-sets>
+ <styles>
+ <style name="report" id="4">
+ <property name="fontFamily">sans-serif</property>
+ <property name="fontSize">10pt</property>
+ </style>
+ <style name="crosstab-cell" id="5">
+ <property name="borderBottomColor">#CCCCCC</property>
+ <property name="borderBottomStyle">solid</property>
+ <property name="borderBottomWidth">1pt</property>
+ <property name="borderLeftColor">#CCCCCC</property>
+ <property name="borderLeftStyle">solid</property>
+ <property name="borderLeftWidth">1pt</property>
+ <property name="borderRightColor">#CCCCCC</property>
+ <property name="borderRightStyle">solid</property>
+ <property name="borderRightWidth">1pt</property>
+ <property name="borderTopColor">#CCCCCC</property>
+ <property name="borderTopStyle">solid</property>
+ <property name="borderTopWidth">1pt</property>
+ </style>
+ <style name="crosstab" id="6">
+ <property name="borderBottomColor">#CCCCCC</property>
+ <property name="borderBottomStyle">solid</property>
+ <property name="borderBottomWidth">1pt</property>
+ <property name="borderLeftColor">#CCCCCC</property>
+ <property name="borderLeftStyle">solid</property>
+ <property name="borderLeftWidth">1pt</property>
+ <property name="borderRightColor">#CCCCCC</property>
+ <property name="borderRightStyle">solid</property>
+ <property name="borderRightWidth">1pt</property>
+ <property name="borderTopColor">#CCCCCC</property>
+ <property name="borderTopStyle">solid</property>
+ <property name="borderTopWidth">1pt</property>
+ </style>
+ </styles>
+ <page-setup>
+ <simple-master-page name="Simple MasterPage" id="2">
+ <page-footer>
+ <text id="3">
+ <property name="contentType">html</property>
+ <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
+ </text>
+ </page-footer>
+ </simple-master-page>
+ </page-setup>
+ <body>
+ <extended-item extensionName="Chart" id="100">
+ <xml-property name="xmlRepresentation"><![CDATA[<model:ChartWithAxes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:attribute="http://www.birt.eclipse.org/ChartModelAttribute" xmlns:data="http://www.birt.eclipse.org/ChartModelData" xmlns:layout="http://www.birt.eclipse.org/ChartModelLayout" xmlns:model="http://www.birt.eclipse.org/ChartModel" xmlns:type="http://www.birt.eclipse.org/ChartModelType">
+ <Version>2.5.1</Version>
+ <Type>Line Chart</Type>
+ <SubType>Overlay</SubType>
+ <Block>
+ <Children xsi:type="layout:TitleBlock">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value>Issue Burndown</Value>
+ <Font>
+ <Size>16.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ </Children>
+ <Children xsi:type="layout:Plot">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <HorizontalSpacing>5</HorizontalSpacing>
+ <VerticalSpacing>5</VerticalSpacing>
+ <ClientArea>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>0</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>0.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>0.0</Right>
+ </Insets>
+ </ClientArea>
+ </Children>
+ <Children xsi:type="layout:Legend">
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>0.0</Width>
+ <Height>0.0</Height>
+ </Bounds>
+ <Anchor>West</Anchor>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Dash_Dotted</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ <ClientArea>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>0</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>2.0</Top>
+ <Left>2.0</Left>
+ <Bottom>2.0</Bottom>
+ <Right>2.0</Right>
+ </Insets>
+ </ClientArea>
+ <Text>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Text>
+ <Orientation>Vertical</Orientation>
+ <Direction>Top_Bottom</Direction>
+ <Separator>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Separator>
+ <Position>Below</Position>
+ <ItemType>Series</ItemType>
+ <Title>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Above</TitlePosition>
+ </Children>
+ <Bounds>
+ <Left>0.0</Left>
+ <Top>0.0</Top>
+ <Width>573.75</Width>
+ <Height>362.25</Height>
+ </Bounds>
+ <Insets>
+ <Top>3.0</Top>
+ <Left>3.0</Left>
+ <Bottom>3.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Row>-1</Row>
+ <Column>-1</Column>
+ <Rowspan>-1</Rowspan>
+ <Columnspan>-1</Columnspan>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Visible>true</Visible>
+ </Block>
+ <Dimension>Two_Dimensional</Dimension>
+ <Units>Points</Units>
+ <SeriesThickness>10.0</SeriesThickness>
+ <ExtendedProperties>
+ <Name>enable.area.alt</Name>
+ <Value>false</Value>
+ </ExtendedProperties>
+ <SampleData>
+ <BaseSampleData>
+ <DataSetRepresentation>01/05/2000,02/01/2000,04/12/2000,03/12/2000,02/29/2000</DataSetRepresentation>
+ </BaseSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>6,4,12,8,10</DataSetRepresentation>
+ <SeriesDefinitionIndex>0</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>12.0,8.0,24.0,16.0,20.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>1</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>18.0,12.0,36.0,24.0,30.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>2</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ <OrthogonalSampleData>
+ <DataSetRepresentation>24.0,16.0,48.0,32.0,40.0</DataSetRepresentation>
+ <SeriesDefinitionIndex>3</SeriesDefinitionIndex>
+ </OrthogonalSampleData>
+ </SampleData>
+ <Interactivity/>
+ <EmptyMessage>
+ <Caption>
+ <Value>This chart contains no data.</Value>
+ <Font>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>64</Transparency>
+ <Red>127</Red>
+ <Green>127</Green>
+ <Blue>127</Blue>
+ </Background>
+ <Outline>
+ <Color>
+ <Transparency>128</Transparency>
+ <Red>127</Red>
+ <Green>127</Green>
+ <Blue>127</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </Outline>
+ <Insets>
+ <Top>10.0</Top>
+ <Left>10.0</Left>
+ <Bottom>10.0</Bottom>
+ <Right>10.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </EmptyMessage>
+ <Axes>
+ <Type>DateTime</Type>
+ <Title>
+ <Caption>
+ <Value>X-Axis Title</Value>
+ <Font>
+ <Size>14.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Below</TitlePosition>
+ <AssociatedAxes>
+ <Type>Linear</Type>
+ <Title>
+ <Caption>
+ <Value>Y-Axis Title</Value>
+ <Font>
+ <Size>14.0</Size>
+ <Bold>true</Bold>
+ <Alignment>
+ <horizontalAlignment>Center</horizontalAlignment>
+ <verticalAlignment>Center</verticalAlignment>
+ </Alignment>
+ <Rotation>90.0</Rotation>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Title>
+ <TitlePosition>Left</TitlePosition>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>51</Red>
+ <Green>153</Green>
+ <Blue>102</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;IssuesClosed&quot;]</Definition>
+ <Grouping>
+ <Enabled>true</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>RunningSum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Issues Closed</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>51</Red>
+ <Green>153</Green>
+ <Blue>102</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;IssuesRemaining&quot;]</Definition>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Issues Remaining</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>51</Red>
+ <Green>153</Green>
+ <Blue>102</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;IdealIssuesRemaining&quot;]</Definition>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Ideal Line</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>51</Red>
+ <Green>153</Green>
+ <Blue>102</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series xsi:type="type:LineSeries">
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;BurndownRate&quot;]</Definition>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </DataDefinition>
+ <SeriesIdentifier>Burndown Rate</SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Above</LabelPosition>
+ <Stacked>false</Stacked>
+ <Markers>
+ <Type>Box</Type>
+ <Size>4</Size>
+ <Visible>false</Visible>
+ <Outline>
+ <Visible>true</Visible>
+ </Outline>
+ </Markers>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>2</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <PaletteLineColor>true</PaletteLineColor>
+ </Series>
+ <Grouping>
+ <GroupType>Text</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ </SeriesDefinitions>
+ <Orientation>Vertical</Orientation>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ <LabelPosition>Left</LabelPosition>
+ <MajorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </TickAttributes>
+ </MajorGrid>
+ <MinorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </TickAttributes>
+ </MinorGrid>
+ <Scale>
+ <MinorGridsPerUnit>5</MinorGridsPerUnit>
+ </Scale>
+ <Origin>
+ <Type>Min</Type>
+ <Value xsi:type="data:NumberDataElement">
+ <Value>0.0</Value>
+ </Value>
+ </Origin>
+ <PrimaryAxis>true</PrimaryAxis>
+ <Percent>false</Percent>
+ </AssociatedAxes>
+ <SeriesDefinitions>
+ <Query>
+ <Definition></Definition>
+ </Query>
+ <SeriesPalette>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>51</Red>
+ <Green>153</Green>
+ <Blue>102</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>204</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>64</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>170</Red>
+ <Green>85</Green>
+ <Blue>85</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>192</Red>
+ <Green>192</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>192</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>7</Red>
+ <Green>146</Green>
+ <Blue>94</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>192</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>64</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>80</Red>
+ <Green>240</Green>
+ <Blue>120</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>0</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>0</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>64</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>128</Red>
+ <Green>128</Green>
+ <Blue>128</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>64</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Entries>
+ <Entries xsi:type="attribute:ColorDefinition">
+ <Transparency>255</Transparency>
+ <Red>255</Red>
+ <Green>128</Green>
+ <Blue>0</Blue>
+ </Entries>
+ </SeriesPalette>
+ <Series>
+ <Visible>true</Visible>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>false</Visible>
+ </Label>
+ <DataDefinition>
+ <Definition>row[&quot;Date&quot;]</Definition>
+ </DataDefinition>
+ <SeriesIdentifier></SeriesIdentifier>
+ <DataPoint>
+ <Components>
+ <Type>Orthogonal_Value</Type>
+ </Components>
+ <Separator>, </Separator>
+ </DataPoint>
+ <LabelPosition>Outside</LabelPosition>
+ <Stacked>false</Stacked>
+ </Series>
+ <Grouping>
+ <Enabled>false</Enabled>
+ <GroupingUnit>Years</GroupingUnit>
+ <GroupingInterval>1.0</GroupingInterval>
+ <GroupType>DateTime</GroupType>
+ <AggregateExpression>Sum</AggregateExpression>
+ </Grouping>
+ <Sorting>Ascending</Sorting>
+ <SortKey>
+ <Definition>row[&quot;Date&quot;]</Definition>
+ </SortKey>
+ </SeriesDefinitions>
+ <Orientation>Horizontal</Orientation>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Visible>true</Visible>
+ </LineAttributes>
+ <Label>
+ <Caption>
+ <Value></Value>
+ <Font>
+ <Alignment/>
+ </Font>
+ </Caption>
+ <Background xsi:type="attribute:ColorDefinition">
+ <Transparency>0</Transparency>
+ <Red>255</Red>
+ <Green>255</Green>
+ <Blue>255</Blue>
+ </Background>
+ <Outline>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>0</Red>
+ <Green>0</Green>
+ <Blue>0</Blue>
+ </Color>
+ </Outline>
+ <Insets>
+ <Top>0.0</Top>
+ <Left>2.0</Left>
+ <Bottom>0.0</Bottom>
+ <Right>3.0</Right>
+ </Insets>
+ <Visible>true</Visible>
+ </Label>
+ <LabelPosition>Below</LabelPosition>
+ <MajorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>196</Red>
+ <Green>196</Green>
+ <Blue>196</Blue>
+ </Color>
+ <Visible>true</Visible>
+ </TickAttributes>
+ </MajorGrid>
+ <MinorGrid>
+ <LineAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </LineAttributes>
+ <TickStyle>Across</TickStyle>
+ <TickAttributes>
+ <Style>Solid</Style>
+ <Thickness>1</Thickness>
+ <Color>
+ <Transparency>255</Transparency>
+ <Red>225</Red>
+ <Green>225</Green>
+ <Blue>225</Blue>
+ </Color>
+ <Visible>false</Visible>
+ </TickAttributes>
+ </MinorGrid>
+ <Scale>
+ <MinorGridsPerUnit>5</MinorGridsPerUnit>
+ </Scale>
+ <Origin>
+ <Type>Min</Type>
+ <Value xsi:type="data:NumberDataElement">
+ <Value>0.0</Value>
+ </Value>
+ </Origin>
+ <PrimaryAxis>true</PrimaryAxis>
+ <CategoryAxis>true</CategoryAxis>
+ <Percent>false</Percent>
+ </Axes>
+ <Orientation>Vertical</Orientation>
+ <UnitSpacing>50.0</UnitSpacing>
+ <Rotation/>
+</model:ChartWithAxes>
+]]></xml-property>
+ <property name="outputFormat">SVG</property>
+ <property name="inheritColumns">true</property>
+ <property name="pageBreakAfter">always</property>
+ <structure name="toc">
+ <expression name="expressionValue" type="javascript">"Issue Burndown"</expression>
+ </structure>
+ <property name="dataSet">Issue Burndown Data Set</property>
+ <property name="height">5.03125in</property>
+ <property name="width">7.96875in</property>
+ <list-property name="boundDataColumns">
+ <structure>
+ <property name="name">Date</property>
+ <expression name="expression" type="javascript">dataSetRow["Date"]</expression>
+ <property name="dataType">date-time</property>
+ </structure>
+ <structure>
+ <property name="name">IssuesClosed</property>
+ <expression name="expression" type="javascript">dataSetRow["IssuesClosed"]</expression>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="name">IssuesRemaining</property>
+ <expression name="expression" type="javascript">dataSetRow["IssuesRemaining"]</expression>
+ <property name="dataType">integer</property>
+ </structure>
+ <structure>
+ <property name="name">IdealIssuesRemaining</property>
+ <expression name="expression" type="javascript">dataSetRow["IdealIssuesRemaining"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="name">BurndownRate</property>
+ <expression name="expression" type="javascript">dataSetRow["BurndownRate"]</expression>
+ <property name="dataType">float</property>
+ </structure>
+ <structure>
+ <property name="name">IsActualData</property>
+ <expression name="expression" type="javascript">dataSetRow["IsActualData"]</expression>
+ <property name="dataType">boolean</property>
+ </structure>
+ </list-property>
+ </extended-item>
+ </body>
+</report>
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/Activator.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/Activator.java
new file mode 100644
index 0000000..795675d
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/Activator.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ /**
+ * The plug-in ID
+ */
+ public static final String PLUGIN_ID = "org.eclipse.osee.reports.burndown"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {}
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(final BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(final BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownEntry.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownEntry.java
new file mode 100644
index 0000000..14df1ed
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownEntry.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.hours;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * Model class to store the data for a single date.
+ *
+ * @author Praveen Joseph
+ */
+public class HourBurndownEntry {
+
+ private final Date date;
+ private double hoursWorked;
+ private double hoursRemaining;
+ private boolean actualData;
+ private double idealHoursRemaining;
+ private double burndownRate;
+
+ /**
+ * @param date : Sets the Current date
+ */
+ public HourBurndownEntry(final Date date) {
+ this.date = date;
+ Date currentTime = Calendar.getInstance().getTime();
+ // The variable "actualData" is used to indicate if the data calculated is based on the actual work done on a given
+ // date,
+ // or if it is calculated based on assumptions (ie. If the date occurs sometime in the future).
+
+ if (currentTime.after(date)) {
+ this.actualData = true;
+ }
+ else {
+ this.actualData = false;
+ }
+ }
+
+ /**
+ * @param actualData : sets the current date
+ */
+ public void setActualData(final boolean actualData) {
+ this.actualData = actualData;
+ }
+
+ /**
+ * @param hoursRemaining : sets the hours remaining
+ */
+ public void setHoursRemaining(final double hoursRemaining) {
+ this.hoursRemaining = hoursRemaining;
+ }
+
+ /**
+ * @param hoursWorked : sets the hours worked
+ */
+ public void setHoursWorked(final double hoursWorked) {
+ this.hoursWorked = hoursWorked;
+ }
+
+ /**
+ * @return the hours remaining
+ */
+ public double getHoursRemaining() {
+ return this.hoursRemaining;
+ }
+
+ /**
+ * @return todays date
+ */
+ public Date getDate() {
+ return this.date;
+ }
+
+ /**
+ * @return the hours worked
+ */
+ public double getHoursWorked() {
+ return this.hoursWorked;
+ }
+
+ /**
+ * @return actual data
+ */
+ public boolean isActualData() {
+ return this.actualData;
+ }
+
+ /**
+ * @return ideal Hours Remaining
+ */
+ public double getIdealHoursRemaining() {
+ return this.idealHoursRemaining;
+ }
+
+ /**
+ * @param idealHoursRemaining : sets the ideal Hours Remaining
+ */
+ public void setIdealHoursRemaining(final double idealHoursRemaining) {
+ this.idealHoursRemaining = idealHoursRemaining;
+ }
+
+ /**
+ * @return burndownRate
+ */
+ public double getBurndownRate() {
+ return this.burndownRate;
+ }
+
+ /**
+ * @param burndownRate : sets the burndownRate
+ */
+ public void setBurndownRate(final double burndownRate) {
+ this.burndownRate = burndownRate;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownLog.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownLog.java
new file mode 100644
index 0000000..03b8c52
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownLog.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.hours;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
+import org.eclipse.osee.ats.core.client.workflow.log.AtsLog;
+import org.eclipse.osee.ats.core.client.workflow.log.LogItem;
+import org.eclipse.osee.ats.core.client.workflow.log.LogType;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+
+/**
+ * This is the class responsible for constructing the burndown logs based on the Artifact data. The burndown logs
+ * constructed is in the form of a list of HourBurndownEntry objects.
+ *
+ * @author Praveen Joseph
+ */
+public class HourBurndownLog {
+
+ private Date startDate;
+ private Date endDate;
+ private List<AbstractWorkflowArtifact> artifacts;
+ private double totalWork;
+ private double avgIdeal;
+
+ private final List<HourBurndownEntry> entries;
+
+ /**
+ * Constructor to initialise list of Work flow artifacts and Log entries
+ */
+ public HourBurndownLog() {
+ this.artifacts = new ArrayList<AbstractWorkflowArtifact>();
+ this.entries = new ArrayList<HourBurndownEntry>();
+ }
+
+ /**
+ * @param artifacts : sets the list of work flow artifacts
+ */
+ public void setArtifacts(final List<AbstractWorkflowArtifact> artifacts) {
+ this.artifacts = artifacts;
+ }
+
+ /**
+ * @param endDate : sets the end date
+ */
+ public void setEndDate(final Date endDate) {
+ this.endDate = endDate;
+ }
+
+ /**
+ * @param startDate : sets the start date
+ */
+ public void setStartDate(final Date startDate) {
+ this.startDate = startDate;
+ }
+
+ /**
+ * @param totalWork : sets the total work done
+ */
+ public void setTotalWork(final double totalWork) {
+ this.totalWork = totalWork;
+ }
+
+ /**
+ * @return the list of workflow artifacts
+ */
+ public List<AbstractWorkflowArtifact> getArtifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * @return the end date
+ */
+ public Date getEndDate() {
+ return this.endDate;
+ }
+
+ /**
+ * @return the start date
+ */
+ public Date getStartDate() {
+ return this.startDate;
+ }
+
+ /**
+ * @return the total work
+ */
+ public double getTotalWork() {
+ return this.totalWork;
+ }
+
+ /**
+ * @param avgIdeal : sets average work hours
+ */
+ public void setAvgIdeal(final double avgIdeal) {
+ this.avgIdeal = avgIdeal;
+ }
+
+ /**
+ * @return average work hours
+ */
+ public double getAvgIdeal() {
+ return this.avgIdeal;
+ }
+
+ /**
+ * @return the entries
+ */
+ public List<HourBurndownEntry> getEntries() {
+ return this.entries;
+ }
+
+ /**
+ * Method to compute the total work and add hourburndown log entries
+ *
+ * @throws OseeCoreException
+ */
+ public void compute() throws OseeCoreException {
+ this.totalWork = computeTotalWork();
+ long days = (this.endDate.getTime() - this.startDate.getTime()) / (1000 * 60 * 60 * 24);
+ final double idealAvg = this.totalWork / days;
+
+ // Day-wise work log
+ Date inspectDate = this.startDate;
+ double remainingWork = this.totalWork;
+ double idealRemainingWork = this.totalWork;
+
+ // Create 0th entry
+ HourBurndownEntry zeroeth = new HourBurndownEntry(inspectDate);
+ zeroeth.setHoursWorked(0);
+ zeroeth.setHoursRemaining(remainingWork);
+ zeroeth.setBurndownRate(0);
+ zeroeth.setIdealHoursRemaining(idealRemainingWork);
+ this.entries.add(zeroeth);
+
+ inspectDate = incrementDate(inspectDate, 1);
+
+ while (!inspectDate.after(this.endDate)) {
+ double totalWorkDay = computeTotalWork(inspectDate);
+ remainingWork = remainingWork - totalWorkDay;
+ idealRemainingWork -= idealAvg;
+ double burndown = remainingWork / days--;
+ HourBurndownEntry entry = new HourBurndownEntry(inspectDate);
+ entry.setHoursWorked(totalWorkDay);
+ entry.setHoursRemaining(remainingWork);
+ entry.setIdealHoursRemaining(idealRemainingWork);
+ entry.setBurndownRate(burndown);
+ this.entries.add(entry);
+ // increment
+ inspectDate = incrementDate(inspectDate, 1);
+
+ }
+
+ }
+
+ private Date incrementDate(final Date inspectDate, final int i) {
+ // IncrementDate
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(inspectDate);
+ cal.add(Calendar.DATE, i);
+ Date newDate = cal.getTime();
+ return newDate;
+ }
+
+ /**
+ * This method computes the total work to be done from the list of available artifacts
+ */
+ private double computeTotalWork() throws OseeCoreException {
+ double work = 0;
+ for (AbstractWorkflowArtifact artifact : this.artifacts) {
+ work += artifact.getEstimatedHoursTotal();
+ }
+ return work;
+ }
+
+ /**
+ * This method computes the total work done on a given date.
+ */
+ @SuppressWarnings("deprecation")
+ private double computeTotalWork(final Date currentDate) throws OseeCoreException {
+ double work = 0;
+ for (AbstractWorkflowArtifact artifact : this.artifacts) {
+ double previousWork = 0;
+ AtsLog log = artifact.getLog();
+ List<LogItem> logItems = log.getLogItems();
+ for (LogItem item : logItems) {
+ if (item.getType() == LogType.Metrics) {
+ double itemWork = ReportUtil.getWork(item);
+ Date itemDate = item.getDate();
+ if ((itemDate.getDate() == currentDate.getDate()) && (itemDate.getMonth() == currentDate.getMonth()) &&
+ (itemDate.getYear() == currentDate.getYear())) {
+ work += itemWork - previousWork;
+ }
+ previousWork = itemWork;
+ }
+ }
+ }
+ return work;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownModel.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownModel.java
new file mode 100644
index 0000000..138684c
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownModel.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.hours;
+
+/**
+ * Model class to store the HourBurndownLog
+ *
+ * @author Praveen Joseph
+ */
+public class HourBurndownModel {
+
+ private static HourBurndownLog log;
+
+ /**
+ * @return the HourBurndownLog
+ */
+ public static HourBurndownLog getLog() {
+ return log;
+ }
+
+ /**
+ * @param log : sets the HourBurndownLog
+ */
+ public static void setLog(final HourBurndownLog log) {
+ HourBurndownModel.log = log;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownTab.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownTab.java
new file mode 100644
index 0000000..8fe61b1
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/HourBurndownTab.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.hours;
+
+import org.eclipse.osee.reports.burndown.ui.AbstractBurndownTab;
+
+/**
+ * Class that represents the UI Component
+ *
+ * @author Praveen Joseph
+ */
+public class HourBurndownTab extends AbstractBurndownTab {
+
+ @Override
+ public String getTabName() {
+ return "Hour Burndown";
+ }
+
+ @Override
+ public String getReport() {
+ return "HourBurndown.rptdesign";
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/ReportUtil.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/ReportUtil.java
new file mode 100644
index 0000000..7e85c51
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/hours/ReportUtil.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.hours;
+
+import org.eclipse.osee.ats.core.client.workflow.log.LogItem;
+import org.eclipse.osee.ats.core.client.workflow.log.LogType;
+
+
+/**
+ * Utility Class used during the report data generation
+ *
+ * @author Praveen Joseph
+ */
+public class ReportUtil {
+
+ /**
+ * This method returns the amount of work with respect to a given work item
+ *
+ * @param item The {@link LogItem} instance
+ * @return the work done
+ */
+ public static double getWork(final LogItem item) {
+ if (item.getType() == LogType.Metrics) {
+ String msg = item.getMsg();
+ String[] segments = msg.split(" ");
+ String workString = segments[segments.length - 1];
+ return Double.parseDouble(workString);
+ }
+ return 0;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownEntry.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownEntry.java
new file mode 100644
index 0000000..2190ce7
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownEntry.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.issues;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * Model class representing a single entry for a given date.
+ *
+ * @author Praveen Joseph
+ */
+public class IssueBurndownEntry {
+
+ private final Date date;
+ private int issuesClosed;
+ private int issuesRemaining;
+ private double idealIssuesRemaining;
+ private double burndownRate;
+ private boolean actualData;
+
+ /**
+ * @param date sets the current date
+ */
+ public IssueBurndownEntry(final Date date) {
+ this.date = date;
+ Date currentTime = Calendar.getInstance().getTime();
+ if (currentTime.after(date)) {
+ this.actualData = true;
+ }
+ else {
+ this.actualData = false;
+ }
+ }
+
+ /**
+ * @return the number of issues closed
+ */
+ public int getIssuesClosed() {
+ return this.issuesClosed;
+ }
+
+ /**
+ * @param issuesClosed : sets the number of issues closed
+ */
+ public void setIssuesClosed(final int issuesClosed) {
+ this.issuesClosed = issuesClosed;
+ }
+
+ /**
+ * @return the number of issues remaining
+ */
+ public int getIssuesRemaining() {
+ return this.issuesRemaining;
+ }
+
+ /**
+ * @param issuesRemaining : sets the number of issues remaining
+ */
+ public void setIssuesRemaining(final int issuesRemaining) {
+ this.issuesRemaining = issuesRemaining;
+ }
+
+ /**
+ * @return the number of ideal issues remaining
+ */
+ public double getIdealIssuesRemaining() {
+ return this.idealIssuesRemaining;
+ }
+
+ /**
+ * @param idealIssuesRemaining : sets the ideal number of issues remaining
+ */
+ public void setIdealIssuesRemaining(final double idealIssuesRemaining) {
+ this.idealIssuesRemaining = idealIssuesRemaining;
+ }
+
+ /**
+ * @return the burndownRate
+ */
+ public double getBurndownRate() {
+ return this.burndownRate;
+ }
+
+ /**
+ * @param requiredBurndown : sets the Burndownrate
+ */
+ public void setBurndownRate(final double requiredBurndown) {
+ this.burndownRate = requiredBurndown;
+ }
+
+ /**
+ * @return the actualData
+ */
+ public boolean isActualData() {
+ return this.actualData;
+ }
+
+ /**
+ * @param actualData : sets the actual data
+ */
+ public void setActualData(final boolean actualData) {
+ this.actualData = actualData;
+ }
+
+ /**
+ * @return the current date
+ */
+ public Date getDate() {
+ return this.date;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownLog.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownLog.java
new file mode 100644
index 0000000..e79065d
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownLog.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.issues;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+
+/**
+ * This class is used to compute the details wrt.the issue burndown.
+ *
+ * @author Praveen Joseph
+ */
+public class IssueBurndownLog {
+
+ private Date startDate;
+ private Date endDate;
+ private List<AbstractWorkflowArtifact> artifacts;
+ private int totalIssues;
+ private double avgIdeal;
+
+ private final List<IssueBurndownEntry> entries;
+
+ /**
+ * Constructor to initialise list of Work flow artifacts and Log entries
+ */
+ public IssueBurndownLog() {
+ this.artifacts = new ArrayList<AbstractWorkflowArtifact>();
+ this.entries = new ArrayList<IssueBurndownEntry>();
+ }
+
+ /**
+ * @param artifacts sets the workflow artifacts
+ */
+ public void setArtifacts(final List<AbstractWorkflowArtifact> artifacts) {
+ this.artifacts = artifacts;
+ }
+
+ /**
+ * @param endDate sets the end date
+ */
+ public void setEndDate(final Date endDate) {
+ this.endDate = endDate;
+ }
+
+ /**
+ * @param startDate sets the start date
+ */
+ public void setStartDate(final Date startDate) {
+ this.startDate = startDate;
+ }
+
+ /**
+ * @param totalIssues sets the total issues
+ */
+ public void setTotalIssues(final int totalIssues) {
+ this.totalIssues = totalIssues;
+ }
+
+ /**
+ * @return the list of workflow atrifacts
+ */
+ public List<AbstractWorkflowArtifact> getArtifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * @return the end date
+ */
+ public Date getEndDate() {
+ return this.endDate;
+ }
+
+ /**
+ * @return the start date
+ */
+ public Date getStartDate() {
+ return this.startDate;
+ }
+
+ /**
+ * @return the total issues
+ */
+ public int getTotalIssues() {
+ return this.totalIssues;
+ }
+
+ /**
+ * @param avgIdeal : sets the average ideal value
+ */
+ public void setAvgIdeal(final double avgIdeal) {
+ this.avgIdeal = avgIdeal;
+ }
+
+ /**
+ * @return the average ideal value
+ */
+ public double getAvgIdeal() {
+ return this.avgIdeal;
+ }
+
+ /**
+ * @return the issues list
+ */
+ public List<IssueBurndownEntry> getEntries() {
+ return this.entries;
+ }
+
+ /**
+ * Method to compute total work done and issue entries
+ *
+ * @throws OseeCoreException :
+ */
+ public void compute() throws OseeCoreException {
+ this.totalIssues = computeTotalIssues();
+ long days = (this.endDate.getTime() - this.startDate.getTime()) / (1000 * 60 * 60 * 24);
+ final double idealAvg = (double) this.totalIssues / days;
+
+ // Day-wise work log
+ Date inspectDate = this.startDate;
+ int remainingIssues = this.totalIssues;
+ double idealRemainingIssues = this.totalIssues;
+
+ // Create 0th entry
+ IssueBurndownEntry zeroeth = new IssueBurndownEntry(inspectDate);
+ zeroeth.setIssuesClosed(0);
+ zeroeth.setIssuesRemaining(remainingIssues);
+ zeroeth.setBurndownRate(0);
+ zeroeth.setIdealIssuesRemaining(idealRemainingIssues);
+ this.entries.add(zeroeth);
+
+ inspectDate = incrementDate(inspectDate, 1);
+
+ while (!inspectDate.after(this.endDate)) {
+ int totalIssuesClosed = computeTotalIssues(inspectDate);
+ remainingIssues = remainingIssues - totalIssuesClosed;
+ idealRemainingIssues -= idealAvg;
+ double burndown = (double) remainingIssues / days--;
+ IssueBurndownEntry entry = new IssueBurndownEntry(inspectDate);
+ entry.setIssuesClosed(totalIssuesClosed);
+ entry.setIssuesRemaining(remainingIssues);
+ entry.setIdealIssuesRemaining(idealRemainingIssues);
+ entry.setBurndownRate(burndown);
+ this.entries.add(entry);
+ // increment
+ inspectDate = incrementDate(inspectDate, 1);
+
+ }
+
+ }
+
+ @SuppressWarnings("static-access")
+ private Date incrementDate(final Date inspectDate, final int i) {
+ // IncrementDate
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(inspectDate);
+ cal.add(cal.DATE, i);
+ Date newDate = cal.getTime();
+ return newDate;
+ }
+
+ private int computeTotalIssues() {
+ return this.artifacts.size();
+ }
+
+ /**
+ * This method returns the number of issues that were completed on a given date.
+ */
+ @SuppressWarnings("deprecation")
+ private int computeTotalIssues(final Date currentDate) throws OseeCoreException {
+ int issues = 0;
+ for (AbstractWorkflowArtifact artifact : this.artifacts) {
+ if (artifact.isCompleted()) {
+ Date itemDate = artifact.getCompletedDate();
+ if ((itemDate.getDate() == currentDate.getDate()) && (itemDate.getMonth() == currentDate.getMonth()) &&
+ (itemDate.getYear() == currentDate.getYear())) {
+ issues++;
+ }
+
+ }
+ }
+ return issues;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownModel.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownModel.java
new file mode 100644
index 0000000..1fcfe9a
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownModel.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.issues;
+
+/**
+ * Model class to store the IssueBurndownLog
+ *
+ * @author Praveen Joseph
+ */
+public class IssueBurndownModel {
+
+ private static IssueBurndownLog log;
+
+ /**
+ * @return the IssueBurndownLog
+ */
+ public static IssueBurndownLog getLog() {
+ return log;
+ }
+
+ /**
+ * @param log sets the IssueBurndownLog
+ */
+ public static void setLog(final IssueBurndownLog log) {
+ IssueBurndownModel.log = log;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownTab.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownTab.java
new file mode 100644
index 0000000..2912867
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/issues/IssueBurndownTab.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.issues;
+
+import org.eclipse.osee.reports.burndown.ui.AbstractBurndownTab;
+
+/**
+ * Class representing the UI Component
+ *
+ * @author Praveen Joseph
+ */
+public class IssueBurndownTab extends AbstractBurndownTab {
+
+ @Override
+ public String getTabName() {
+ return "Issue Burndown";
+ }
+
+ @Override
+ public String getReport() {
+ return "IssueBurndown.rptdesign";
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/AbstractBurndownTab.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/AbstractBurndownTab.java
new file mode 100644
index 0000000..f0209db
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/AbstractBurndownTab.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.ui;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.birt.report.viewer.utilities.WebViewer;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorTab;
+import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
+import org.eclipse.osee.reports.burndown.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.widgets.Composite;
+import org.osgi.framework.Bundle;
+
+
+/**
+ * Class that implements IResultsEditorTab to crate the tab in the UI
+ *
+ * @author Praveen Joseph
+ */
+public abstract class AbstractBurndownTab implements IResultsEditorTab {
+
+ private Browser browser;
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public Composite createTab(final Composite parent, final ResultsEditor resultsEditor) throws OseeCoreException {
+
+ String path = getReportPath();
+ this.browser = new Browser(parent, SWT.NONE);
+ WebViewer.display(path, WebViewer.HTML, this.browser, "frameset");
+ this.browser.refresh();
+ return this.browser;
+ }
+
+ /**
+ * @return the report path
+ */
+ public String getReportPath() {
+ String path = null;
+ try {
+ Bundle bundle = Platform.getBundle(getPluginID());
+ URL url = FileLocator.find(bundle, new Path("reports/" + getReport()), null);
+ path = FileLocator.toFileURL(url).getPath();
+ }
+ catch (MalformedURLException me) {
+ System.out.println("Fehler bei URL " + me.getStackTrace());
+ return null;
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ return path;
+ }
+
+ /**
+ * @return the plug-in ID
+ */
+ public String getPluginID() {
+ return Activator.PLUGIN_ID;
+ }
+
+ /**
+ * @return Abstract method to return report Path
+ */
+ public abstract String getReport();
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownItem.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownItem.java
new file mode 100644
index 0000000..73fcbc5
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownItem.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.api.version.IAtsVersion;
+import org.eclipse.osee.ats.core.client.config.VersionsClient;
+import org.eclipse.osee.ats.core.client.config.store.VersionArtifactStore;
+import org.eclipse.osee.ats.core.config.AtsConfigCache;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
+import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorProvider;
+import org.eclipse.osee.framework.ui.skynet.results.IResultsEditorTab;
+import org.eclipse.osee.framework.ui.skynet.results.ResultsEditor;
+import org.eclipse.osee.reports.burndown.hours.HourBurndownLog;
+import org.eclipse.osee.reports.burndown.hours.HourBurndownModel;
+import org.eclipse.osee.reports.burndown.hours.HourBurndownTab;
+import org.eclipse.osee.reports.burndown.issues.IssueBurndownLog;
+import org.eclipse.osee.reports.burndown.issues.IssueBurndownModel;
+import org.eclipse.osee.reports.burndown.issues.IssueBurndownTab;
+
+
+/**
+ * Class to extract data from workflows and fills the HourBurndownModel and IssueBurndownModel
+ *
+ * @author Praveen Joseph
+ */
+public class BurndownItem extends XNavigateItemAction {
+
+ /**
+ * Constructor which calls its parent constructor
+ *
+ * @param parent :
+ */
+ public BurndownItem(final XNavigateItem parent) {
+ super(parent, "Burndown Reports", AtsImage.REPORT);
+ }
+
+ @Override
+ public void run(final TableLoadOption... tableLoadOptions) throws Exception {
+ // Get input from the user.
+ BurndownSelectionDialog dlg = new BurndownSelectionDialog(Active.Both);
+ int open = dlg.open();
+ if (open == 0) {
+ populateModel(dlg);
+ ResultsEditor.open(new IResultsEditorProvider() {
+
+ @Override
+ public String getEditorName() {
+ return "Burndown Reports";
+ }
+
+ @Override
+ public List<IResultsEditorTab> getResultsEditorTabs() {
+ List<IResultsEditorTab> tabs = new ArrayList<IResultsEditorTab>();
+ tabs.add(new HourBurndownTab());
+ tabs.add(new IssueBurndownTab());
+ return tabs;
+ }
+
+ });
+ }
+ }
+
+ private boolean populateModel(final BurndownSelectionDialog dlg) {
+ try {
+ Artifact art = (Artifact) dlg.getSelectedVersion();
+ AtsConfigCache atsConfigCache = new AtsConfigCache();
+ VersionArtifactStore artifactStore = new VersionArtifactStore(art, atsConfigCache);
+ IAtsVersion version = artifactStore.getVersion();
+
+ // HourBurndown
+ HourBurndownLog log = new HourBurndownLog();
+ log.getArtifacts().addAll(VersionsClient.getTargetedForTeamWorkflows(version));
+ log.setStartDate(dlg.getStartDate());
+ log.setEndDate(dlg.getEndDate());
+ log.compute();
+ HourBurndownModel.setLog(log);
+
+ // Issue Burndown
+ IssueBurndownLog issueLog = new IssueBurndownLog();
+ issueLog.getArtifacts().addAll(VersionsClient.getTargetedForTeamWorkflows(version));
+ issueLog.setStartDate(dlg.getStartDate());
+ issueLog.setEndDate(dlg.getEndDate());
+ issueLog.compute();
+ IssueBurndownModel.setLog(issueLog);
+
+ }
+ catch (OseeCoreException e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownSelectionDialog.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownSelectionDialog.java
new file mode 100644
index 0000000..253c8b3
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/BurndownSelectionDialog.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.ui;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.osee.ats.api.data.AtsRelationTypes;
+import org.eclipse.osee.ats.api.team.IAtsTeamDefinition;
+import org.eclipse.osee.ats.api.version.IAtsVersion;
+import org.eclipse.osee.ats.core.client.config.store.TeamDefinitionArtifactStore;
+import org.eclipse.osee.ats.core.client.config.store.VersionArtifactStore;
+import org.eclipse.osee.ats.core.config.AtsConfigCache;
+import org.eclipse.osee.ats.core.config.TeamDefinitions;
+import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.ArtifactViewerSorter;
+import org.eclipse.osee.framework.ui.skynet.util.ArtifactDescriptiveLabelProvider;
+import org.eclipse.osee.framework.ui.skynet.widgets.XComboViewer;
+import org.eclipse.osee.framework.ui.skynet.widgets.XDate;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.osee.framework.ui.swt.Displays;
+import org.eclipse.osee.reports.burndown.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.SelectionDialog;
+
+/**
+ * @author Praveen Joseph
+ */
+public class BurndownSelectionDialog extends SelectionDialog {
+
+ XComboViewer teamCombo = new XComboViewer("Team", SWT.READ_ONLY);
+ XComboViewer versionCombo = new XComboViewer("Version", SWT.READ_ONLY);
+ XDate startDateCombo = new XDate("StartDate");
+ XDate endDateCombo = new XDate("End Date");
+ Artifact selectedVersion = null;
+ Artifact selectedTeamDef = null;
+ Date startDate;
+ Date endDate;
+ private final IAtsTeamDefinition teamDef;
+ Artifact project;
+ private final Active active;
+
+ /**
+ * @param active :
+ */
+ public BurndownSelectionDialog(final Active active) {
+ super(Displays.getActiveShell());
+ this.active = active;
+ this.teamDef = null;
+ setTitle("Select Version");
+ setMessage("Select Version");
+ }
+
+ /**
+ * @param teamDef :
+ * @param active :
+ */
+ public BurndownSelectionDialog(final IAtsTeamDefinition teamDef, final Active active) {
+ super(Displays.getActiveShell());
+ this.teamDef = teamDef;
+ this.active = active;
+ setTitle("Select Version");
+ setMessage("Select Version");
+ }
+
+ @Override
+ protected Control createDialogArea(final Composite container) {
+
+ List<Object> objs = new ArrayList<Object>();
+ try {
+ Set<IAtsTeamDefinition> teamReleaseableDefinitions = TeamDefinitions.getTeamReleaseableDefinitions(this.active);
+ for (IAtsTeamDefinition art : teamReleaseableDefinitions) {
+ TeamDefinitionArtifactStore artifactStore = new TeamDefinitionArtifactStore(art);
+ Artifact artifact = artifactStore.getArtifact();
+ objs.add(artifact);
+ }
+ }
+ catch (Exception ex) {
+ OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ Composite comp = new Composite(container, SWT.NONE);
+ comp.setLayout(new GridLayout(2, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ if (this.teamDef == null) {
+ this.teamCombo.setInput(objs);
+ this.teamCombo.setLabelProvider(new ArtifactDescriptiveLabelProvider());
+ this.teamCombo.setContentProvider(new ArrayContentProvider());
+ this.teamCombo.setSorter(new ArtifactViewerSorter());
+ this.teamCombo.setGrabHorizontal(true);
+ this.teamCombo.createWidgets(comp, 2);
+ this.teamCombo.getCombo().setVisibleItemCount(20);
+ this.teamCombo.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetDefaultSelected(final SelectionEvent e) {
+ widgetSelected(e);
+ }
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ ArrayList<Object> objs1 = new ArrayList<Object>();
+ try {
+
+ BurndownSelectionDialog.this.selectedTeamDef =
+ (Artifact) BurndownSelectionDialog.this.teamCombo.getSelected();
+
+ for (Artifact versionArtifact : BurndownSelectionDialog.this.selectedTeamDef
+ .getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version)) {
+ objs1.add(versionArtifact);
+ }
+ BurndownSelectionDialog.this.versionCombo.setInput(objs1);
+ }
+ catch (Exception ex) {
+ OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ validatePage();
+ }
+ });
+ }
+ else {
+ TeamDefinitionArtifactStore store = new TeamDefinitionArtifactStore(this.teamDef);
+ Artifact teamArt = null;
+ try {
+ teamArt = store.getArtifact();
+ }
+ catch (OseeCoreException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ this.selectedTeamDef = teamArt;
+ }
+
+ this.versionCombo.setLabelProvider(new ArtifactDescriptiveLabelProvider());
+ this.versionCombo.setContentProvider(new ArrayContentProvider());
+ this.versionCombo.setSorter(new ArtifactViewerSorter());
+ this.versionCombo.setGrabHorizontal(true);
+ this.versionCombo.createWidgets(comp, 2);
+ this.versionCombo.getCombo().setVisibleItemCount(20);
+ this.versionCombo.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetDefaultSelected(final SelectionEvent e) {
+ widgetSelected(e);
+ }
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ BurndownSelectionDialog.this.selectedVersion =
+ (Artifact) BurndownSelectionDialog.this.versionCombo.getSelected();
+ validatePage();
+ }
+ });
+ if (this.teamDef != null) {
+ objs = new ArrayList<Object>();
+ try {
+ for (Artifact versionArtifact : this.selectedTeamDef
+ .getRelatedArtifacts(AtsRelationTypes.TeamDefinitionToVersion_Version)) {
+ IAtsVersion version = AtsConfigCache.instance.getSoleByGuid(versionArtifact.getGuid(), IAtsVersion.class);
+ VersionArtifactStore store = new VersionArtifactStore(version);
+ Artifact verArt = store.getArtifact();
+ objs.add(verArt);
+ }
+ this.versionCombo.setInput(objs);
+ }
+ catch (Exception ex) {
+ OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+
+ // Date
+ this.startDateCombo.setFormat("MM/dd/yyyy");
+ this.startDateCombo.setRequiredEntry(true);
+ this.startDateCombo.createWidgets(comp, 2);
+ this.startDateCombo.addXModifiedListener(new XModifiedListener() {
+
+ @Override
+ public void widgetModified(final XWidget widget) {
+ BurndownSelectionDialog.this.startDate = BurndownSelectionDialog.this.startDateCombo.getDate();
+ validatePage();
+ }
+ });
+
+ this.endDateCombo.setFormat("MM/dd/yyyy");
+ this.endDateCombo.setRequiredEntry(true);
+ this.endDateCombo.createWidgets(comp, 2);
+ this.endDateCombo.addXModifiedListener(new XModifiedListener() {
+
+ @Override
+ public void widgetModified(final XWidget widget) {
+ BurndownSelectionDialog.this.endDate = BurndownSelectionDialog.this.endDateCombo.getDate();
+ validatePage();
+ }
+ });
+ return container;
+ }
+
+ /**
+ * Method for validations
+ */
+ public void validatePage() {
+ if (this.teamCombo.getSelected() == null) {
+ setMessage("Please Select a Team");
+ getOkButton().setEnabled(false);
+ return;
+ }
+ if (this.versionCombo.getSelected() == null) {
+ setMessage("Please Select a Version");
+ getOkButton().setEnabled(false);
+ return;
+ }
+ if (this.startDateCombo.getDate() == null) {
+ setMessage("Please Select the Start Date");
+ getOkButton().setEnabled(false);
+ return;
+ }
+ if (this.endDateCombo.getDate() == null) {
+ setMessage("Please Select the End Date");
+ getOkButton().setEnabled(false);
+ return;
+ }
+ if (!this.endDateCombo.getDate().after(this.startDateCombo.getDate())) {
+ setMessage("End Date must occur after Start Date!!");
+ getOkButton().setEnabled(false);
+ return;
+ }
+ setMessage(null);
+ getOkButton().setEnabled(true);
+ }
+
+ /**
+ * @return selected version
+ */
+ public Artifact getSelectedVersion() {
+ return this.selectedVersion;
+ }
+
+ /**
+ * @return the selectedTeamDef
+ */
+ public Artifact getSelectedTeamDef() {
+ return this.selectedTeamDef;
+ }
+
+ /**
+ * @return the start date
+ */
+ public Date getStartDate() {
+ return this.startDate;
+ }
+
+ /**
+ * @return the end date
+ */
+ public Date getEndDate() {
+ return this.endDate;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/ProjectModuleReports.java b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/ProjectModuleReports.java
new file mode 100644
index 0000000..3fe949d
--- /dev/null
+++ b/plugins/org.eclipse.osee.reports.burndown/src/org/eclipse/osee/reports/burndown/ui/ProjectModuleReports.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2012 Robert Bosch Engineering and Business Solutions Ltd India. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osee.reports.burndown.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osee.ats.AtsImage;
+import org.eclipse.osee.ats.navigate.IAtsNavigateItem;
+import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
+import org.eclipse.osee.reports.efficiency.ui.EfficiencyItem;
+import org.eclipse.osee.reports.split.ui.DistributionItem;
+
+
+/**
+ * Class to create the navigate items
+ *
+ * @author Praveen Joseph
+ */
+public class ProjectModuleReports implements IAtsNavigateItem {
+
+ /**
+ * Default Constructor
+ */
+ public ProjectModuleReports() {
+ //
+ }
+
+ @Override
+ public List<XNavigateItem> getNavigateItems(final XNavigateItem parentItem) {
+ List<XNavigateItem> items = new ArrayList<XNavigateItem>();
+
+ XNavigateItem autoseeReportItem = new XNavigateItem(parentItem, "ProjectModule Reports", AtsImage.REPORT);
+ new BurndownItem(autoseeReportItem);
+ new DistributionItem(autoseeReportItem);
+ new EfficiencyItem(autoseeReportItem);
+ items.add(autoseeReportItem);
+ return items;
+ }
+
+}