<%--
 * Copyright by Intland Software
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Intland Software. ("Confidential Information"). You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Intland.
 *
 * $Revision$ $Date$
--%>
<meta name="decorator" content="main">
<meta name="module" content="sources">
<meta name="moduleCSSClass" content="sourceCodeModule">
<meta name="stylesheet" content="sources.css">


<%@ taglib uri="jstl-c" prefix="c" %>
<%@ taglib uri="jstl-fmt" prefix="fmt" %>

<%@ taglib uri="struts-html" prefix="html" %>


<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>

<%@ taglib uri="charttaglib" prefix="chart" %>
<%@ taglib uri="uitaglib" prefix="ui" %>

<c:set var="geometry" value="${param.geometry}" />
<c:choose>
	<c:when test="${geometry == 'tight'}">
		<c:set var="whtd" value="450" />
		<c:set var="hght" value="250" />
	</c:when>

	<c:when test="${geometry == 'wide'}">
		<c:set var="whtd" value="750" />
		<c:set var="hght" value="400" />
	</c:when>

	<c:otherwise>
		<c:set var="whtd" value="600" />
		<c:set var="hght" value="300" />
	</c:otherwise>
</c:choose>

<ui:title style="headline" >
		Program Symbol Changes Over Time
	</ui:title>

<html:errors />

<c:set var="lineBreak"><TR><TD>&nbsp;</TD></TR></c:set>

<c:set var="action" value="/proj/report/programSymbolChangesOverProjectTimeChart" />

<html:form action="${action}">

<jsp:useBean id="projectChartDateSelectorForm"
	class="com.intland.codebeamer.struts.ProjectChartDateSelectorForm" scope="session" />

<c:set var="dispDate" value="${projectChartDateSelectorForm.map.dispDate}" />
<c:set var="groupByUser" value="${projectChartDateSelectorForm.map.groupByUser}" />
<c:set var="proj_id" value="${PROJECT_DTO.id}" />

<c:set var="parseDatePattern" value="yyyy-MM-dd" />
<c:set var="formatDatePattern" value="yyyyMMdd" />

<c:catch>
	<fmt:parseDate var="startDate" value="${projectChartDateSelectorForm.map.startDate}"
		pattern="${parseDatePattern}" parseLocale="en" />
</c:catch>

<c:catch>
	<fmt:parseDate var="closeDate" value="${projectChartDateSelectorForm.map.closeDate}"
		pattern="${parseDatePattern}" parseLocale="en" />
</c:catch>

<html:hidden property="action" value="${action}" />
<html:hidden property="proj_id" value="${proj_id}" />

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">

<TR>
	<TD NOWRAP CLASS="optional">&nbsp;Period Start:&nbsp;</TD>

	<TD NOWRAP VALIGN="top">
		<html:text property="startDate" size="12" styleId="startDate"/>
		<ui:calendarPopup textFieldId="startDate" otherFieldId="closeDate"/>
	</TD>

	<TD NOWRAP CLASS="optional">&nbsp;Period End:&nbsp;</TD>

	<TD NOWRAP VALIGN="top" COLSPAN="2">
		<html:text property="closeDate" size="12" styleId="closeDate" />
		<ui:calendarPopup textFieldId="closeDate" otherFieldId="startDate"/>
	</TD>
</TR>

<TR>
	<TD NOWRAP CLASS="optional">&nbsp;Time Resolution:&nbsp;</TD>

	<TD><html:select property="dispDate">
		<html:optionsCollection property="timeResolutionList" />
		</html:select>
	</TD>

	<TD NOWRAP CLASS="optional">&nbsp;Geometry:&nbsp;</TD>

	<TD><html:select property="geometry">
			<html:option value="tight">Tight</html:option>
			<html:option value="normal">Normal</html:option>
			<html:option value="wide">Wide</html:option>
		</html:select>
	</TD>

	<TD NOWRAP>&nbsp;&nbsp;<html:submit styleClass="button" property="GO" value="GO" />
	</TD>
</TR>

<c:out value="${lineBreak}" escapeXml="false" />

<TR>
	<TD WIDTH="600" COLSPAN="5">
		Number of program
		symbols such as class, method, and function
		by date.
	</TD>
</TR>

</TABLE>

</html:form>

<c:choose>
	<c:when test="${dispDate =='daily'}">
		<c:set var="dateSelectingPattern" value="%Y-%m-%d" />
		<c:set var="dateParsingPattern" value="yyyy-MM-dd" />
		<c:set var="dateFormattingPattern" value="dd-MMM-yyyy" />
		<c:set var="verticalTickLabels" value="true" />
	</c:when>

	<c:when test="${dispDate =='monthly'}">
		<c:set var="dateSelectingPattern" value="%Y-%m" />
		<c:set var="dateParsingPattern" value="yyyy-MM" />
		<c:set var="dateFormattingPattern" value="MMM-yyyy" />
		<c:set var="verticalTickLabels" value="false" />
	</c:when>

	<c:otherwise>
		<c:set var="dispDate" value="weekly" />
		<c:set var="dateSelectingPattern" value="%Y-%v" />
		<c:set var="dateParsingPattern" value="yyyy-w" />
		<c:set var="dateFormattingPattern" value="'CW' w (MMM-yyyy)" />
		<c:set var="verticalTickLabels" value="true" />
	</c:otherwise>
</c:choose>

<chart:query name="programSymbolChanges" var="changes">
	<chart:param name="dateSelectingPattern" value="${dateSelectingPattern}" />
	<chart:param name="proj_id" value="${proj_id}" className="java.util.ArrayList" />
	<chart:param name="dispDate" value="${dispDate}" />
	<chart:param name="startDate">
		<fmt:formatDate value="${startDate}" pattern="${formatDatePattern}" />
	</chart:param>
	<chart:param name="closeDate">
		<fmt:formatDate value="${closeDate}" pattern="${formatDatePattern}" />
	</chart:param>
</chart:query>

<%-- Create Chart --%>
<chart:create var="chart" type="timeSeries" width="${whtd}" height="${hght}"
	legend="true" tooltips="false" title="Code Symbols by Date"
	yaxisLabel="Classes/Inheritances" >

	<chart:dataset type="xy" value="${changes}" dateParsingPattern="${dateParsingPattern}"
		seriesLabels="Classes;Inheritances"
		categoryProperties="datum"
		valueProperties="classes;ninh" />

	<chart:dataset type="xy" value="${changes}" dateParsingPattern="${dateParsingPattern}"
		axisLabel="Methods / Functions"
		seriesLabels="Methods;Functions"
		categoryProperties="datum"
		valueProperties="mthds;func" />

	<chart:axis verticalTickLabels="${verticalTickLabels}"
		dateTickUnits="true" createIntegerTickUnits="true" />
</chart:create>

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
	<%-- Display the Chart --%>
	<TD WIDTH="<c:out value="${chart.width}" />"
		HEIGHT="<c:out value="${chart.height}" />"><html:img alt="Chart" border="0"
		width="${chart.width}" height="${chart.height}"
		page="/writeChart?id=${chart.id}" /></TD>
</TR>

<c:out value="${lineBreak}" escapeXml="false" />

</TABLE>

<a name="table" />
<display:table requestURI="/proj/report/programSymbolChangesOverProjectTimeChart.do#table" name="${changes}" id="change"
	defaultsort="1" defaultorder="descending" cellpadding="0" cellspacing="0">

	<display:column title="Date" sortProperty="raw_date" sortable="true"
		headerClass="dateData" class="dateData">
		<fmt:parseDate var="date" value="${change.datum}" pattern="${dateParsingPattern}" parseLocale="en" />
		<fmt:formatDate value="${date}" pattern="${dateFormattingPattern}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="Classes" sortProperty="classes" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.classes}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="+/-" sortProperty="classes_diff" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.classes_diff}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="Methods" sortProperty="mthds" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.mthds}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="+/-" sortProperty="mthds_diff" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.mthds_diff}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="Functions" sortProperty="func" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.func}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="+/-" sortProperty="func_diff" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.func_diff}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="Inheritances" sortProperty="ninh" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.ninh}" />
	</display:column>

	<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

	<display:column title="+/-" sortProperty="ninh_diff" sortable="true"
		headerClass="numberData" class="numberData">
		<fmt:formatNumber value="${change.ninh_diff}" />
	</display:column>

</display:table>
