<%--
 * 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="charttaglib" prefix="chart" %>
<%@ taglib uri="uitaglib" prefix="ui" %>

<%
 	final String headercolumnSeparator = "<TD WIDTH=\"1\"><IMG BORDER=\"0\" SRC=\""
		+ request.getContextPath()
		+ "/images/space.gif\" WIDTH=\"1\"></TD>";
	final String columnSeparator = "<TD WIDTH=\"1\" CLASS=\"colseparator\"></TD>";

	final String lineBreak = "<TR><TD>&nbsp;</TD></TR>";
	int counter = 0;
%>
<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" >
		Java Coding Violations Over Time
	</ui:title>

<html:errors />

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

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

<html:hidden property="action" value="${action}" />
<c:set var="proj_id" value="${projectChartDateSelectorForm.projIds}" />

<input type="hidden" name="proj_id" value="${proj_id}" />

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

<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>

<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>

<%=lineBreak%>

<TR>
	<TD WIDTH="600" COLSPAN="5">Number of Java coding
			violations 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="javaCodeViolations" var="violations">
	<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>

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

<%-- Create Chart --%>
<c:set var="seriesLabels">
File Length;Sub-class;Super-class;Args.;Body Length;Class filename;Package name;Class name;
Interface name;Method name;Ins. Var. Name;Author;Documentation
</c:set>

<c:set var="valueProperties">
file_length;subclasses;superclasses;args;body_length;classname;pck;classname;
interfname;methodname;invname;author;docu
</c:set>

<chart:create var="chart" type="timeSeries" width="${whtd}" height="${hght}"
	title="Coding Violations by Date"
	legend="true" tooltips="false">

	<chart:dataset type="xy" value="${violations}" dateParsingPattern="${dateParsingPattern}"
		categoryProperties="datum"
		seriesLabels="${seriesLabels}"
		valueProperties="${valueProperties}" />

	<chart:axis verticalTickLabels="${verticalTickLabels}" />

</chart:create>

<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>

<%=lineBreak%>

</TABLE>

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
	<TR VALIGN="top" CLASS="head">
		<TH NOWRAP ALIGN="left">&nbsp;Date&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;File<BR>length&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>
<%--
		<TH NOWRAP ALIGN="center">&nbsp;Import&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>
--%>
		<TH NOWRAP ALIGN="center">&nbsp;Sub-class&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Super-class&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Args.&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Body<BR>length&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>

	</TR>

	<c:forEach items="${violations}" var="viol">
		<TR CLASS="<%=((counter++ % 2) == 0 ? "even" : "odd")%>">

		<fmt:parseDate var="date" value="${viol.datum}" pattern="${dateParsingPattern}" parseLocale="en" />

		<TD NOWRAP>&nbsp;<fmt:formatDate value="${date}"
			pattern="${dateFormattingPattern}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.file_length}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.file_length_diff}" />&nbsp;</TD>
		<%=columnSeparator%>
<%--
		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.import}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.import_diff}" />&nbsp;</TD>
		<%=columnSeparator%>
--%>
		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.subclasses}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.subclasses_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.superclasses}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.superclasses_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.args}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.args_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.body_length}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.body_length_diff}" />&nbsp;</TD>
	</TR>

	</c:forEach>

<%=lineBreak%>

</TABLE>


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

	<TR VALIGN="top" CLASS="head">
		<TH NOWRAP ALIGN="left">&nbsp;Date&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Class<BR>filename&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Package<BR>name&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Class<BR>name&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Interface<BR>name&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Method<BR>name&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Ins. variable<BR>name&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
	</TR>

<%	counter = 0;	%>
	<c:forEach items="${violations}" var="viol">
		<TR CLASS="<%=((counter++ % 2) == 0 ? "even" : "odd")%>">

		<fmt:parseDate var="date" value="${viol.datum}" pattern="${dateParsingPattern}" parseLocale="en" />

		<TD NOWRAP>&nbsp;<fmt:formatDate value="${date}"
			pattern="${dateFormattingPattern}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.classfile}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.classfile_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.pck}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.pck_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.classname}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.classname_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.interfname}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.interfname_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.methodname}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.methodname_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.invname}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.invname_diff}" />&nbsp;</TD>
		</TR>

	</c:forEach>

<%=lineBreak%>

</TABLE>

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

	<TR VALIGN="top" CLASS="head">
		<TH NOWRAP ALIGN="left">&nbsp;Date&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Author&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Documentation&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
<%--
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;Java Doc Tag&nbsp;</TH>
		<%=headercolumnSeparator%>

		<TH NOWRAP ALIGN="center">&nbsp;+/-&nbsp;</TH>
--%>
	</TR>

<%	counter = 0;	%>
	<c:forEach items="${violations}" var="viol">
		<TR CLASS="<%=((counter++ % 2) == 0 ? "even" : "odd")%>">

		<fmt:parseDate var="date" value="${viol.datum}" pattern="${dateParsingPattern}" parseLocale="en" />

		<TD NOWRAP>&nbsp;<fmt:formatDate value="${date}"
			pattern="${dateFormattingPattern}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.author}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.author_diff}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.docu}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.docu_diff}" />&nbsp;</TD>
<%--
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.jtag}" />&nbsp;</TD>
		<%=columnSeparator%>

		<TD NOWRAP ALIGN="right">&nbsp;<fmt:formatNumber
			maxFractionDigits="0"
			value="${viol.jtag_diff}" />&nbsp;</TD>
--%>
	</TR>

	</c:forEach>

</TABLE>
