Opened 7 years ago

Closed 7 years ago

#496 closed defect (fixed)

Sample source reports should initialize table data from new sites correctly

Reported by: olle Owned by: olle
Priority: minor Milestone: Reggie v2.12
Component: net.sf.basedb.reggie Keywords:
Cc:

Description

Sample source reports should initialize table data from new sites correctly:

  1. Cells in columns for time periods before the start date of the site should be initialized to an empty string instead of 0.
  2. Cells in columns for time periods after or including the start date of the site should be initialized to 0, as should percentage and sum values.

Change History (3)

comment:1 Changed 7 years ago by olle

Status: newassigned

Ticket accepted.

comment:2 Changed 7 years ago by olle

Problem description:

When the sample source reports were first developed, all sites had start dates in the first year, 2010, and all sites had some data entries in the database. The code was therefore written with this background. However, when preparing for new sites to be added, a number of problems appeared:

  1. Cells in columns for time periods before the start date of the site was only correct for the year view, otherwise some cells were initialized to 0 and some to an empty string, depending on the time period in the year for the cell and the start date. Especially the week view showed odd cell initialization for weeks near the start and end of a year (see more detailed description below). The cell data initialization is performed in JavaScript function addDataRowsToTable(report, reportTable) in JSP file samplereportgenerator.jsp in reggie/resources/reports/.
  2. Cells for percentage values showed "NaN%" instead of "0%", which could be traced to a bug in JavaScript function getJSONDataWithPercent(jsonObject, key, sumKey, numDecimals) in JSP file samplereportgenerator.jsp in reggie/resources/reports/.
  3. The overview table of detailed patient data contained "undefined" instead of "0" in the sum column cells for sites without data. This is caused by data for JSON key "sumKey" not being properly initialized in private method JSONObject createOverviewReport(DbControl dc, JSONObject json, Date startDate, Date endDate) in servlet SampleReportServlet in reggie/src/net/sf/basedb/reggie/servlet/.

Problem with comparing ISO week numbers:

ISO week numbers are tricky in their short form (without being coupled to a year), since days in different years may lie in the same week, and days at the start of a year may have week number 52 or 53 of the previous year and days at the end of a year may have week number 01 of the next year.

Example: Monday 2012-01-02 has week number 2012-01, Monday 2012-12-31 has week number 2013-01, thus two days at the beginning and end of the same year have the same short week number 01.

A working procedure for comparing the week numbers of two dates should be:

a. If current date is before site start date - 6 days, it is in a previous week.
b. If current date is within site start date +/- 6 days and not in the same week, check dates.

Just checking week numbers in the last case leads to e.g. 2012-12-30 (w52) > 2012-12-31 (w01).

Last edited 7 years ago by olle (previous) (diff)

comment:3 Changed 7 years ago by olle

Resolution: fixed
Status: assignedclosed

(In [2000]) Fixes #496. Sample source reports updated to initialize table data from new sites correctly:

  1. JSP file samplereportgenerator.jsp in reggie/resources/reports/ updated in JavaScript function addDataRowsToTable(report, reportTable) to initialize cells in columns for time periods before the start date of the site to an empty string.
  2. JSP file samplereportgenerator.jsp in reggie/resources/reports/ updated in JavaScript function getJSONDataWithPercent(jsonObject, key, sumKey, numDecimals) by fix of bug (condition "dataSum != null || dataSum != 0" corrected to "dataSum != null && dataSum != 0").
  3. Servlet SampleReportServlet in reggie/src/net/sf/basedb/reggie/servlet/ updated in private method JSONObject createOverviewReport(DbControl dc, JSONObject json, Date startDate, Date endDate) to initialize data for JSON key "sumKey".
Note: See TracTickets for help on using tickets.