Closed smalers closed 4 years ago
The push has been made with the updates to display the time series data table. I will keep this open until more testing has been done.
Here are general comments on the initial implementation. I'm mostly concerned about obvious visual issues and basic conventions. I think csv issues won't be resolved until csv metadata are implemented and I have started a separate issue to focus on CSV. The following issues are related to DateValue files, which is the most robust implementation. I updated the Poudre application to use DateValue files for County population.
TSAlias
or TSID
as is similar to TSTool. Are there reasons why this won't work? Look at TSTool tables as an example and we can discuss issues. Is it because the column width is too wide? Need to figure this out. If necessary, additional properties can be saved to the time series graph configuration file.... (Units)
. This is a simple standard that can be used in other places as well, to show units, such as graph axes. If no units, don't include the parentheses.DataUnits
class. I will add an issue to implement a data type file for defaults.T
and without time zone. The DateTime
class used with TS
ported from Java handles properly.In addition to the above, next, need to figure out a Save button and functionality. See other issue related to this.
The new push has been merged and has taken care of the feedback from the previous comment:
Bottom
, BottomLeft
, BottomRight
, Left
, Right
, InsideLowerLeft
, InsideLowerRight
, InsideUpperLeft
, InsideUpperRight
.As to #5...The table for population is showing units of Total Population
. This the LeftYAxisTitleString
. The code needs to not confuse this process with time series units. Units may sometimes be used for the Y axis label as a default, but the assumption in the other direction is not valid. I don't see in the code where units are used as a default so this may just be a memory.
I did look at the StateMod dataset viewer and the column heading is good so there must be something going on with the population graph configuration.
Actually, the plot configuration file has a property LeftYAxisUnits
that can be used to label the axis as follows, omitting the units if blank or not specified:
LeftYAxisTitleString (LeftYAxisUnits)
As for the time series table column, because the table column is specific to a time series, the units should be taken from the time series object (not graph configuration proper).
To format the graph legend, use code similar to the following, which is taken from Java:
ts.formatLegend(ts.getLegend());
The above allows a default of Auto
. The legend shown in TSTool is maybe too verbose, but using the same logic will provide flexibility to configure the time series legend in the configuration file.
As for the table column heading, see the section "Time Series Table View" in TSTool documentation. Which states:
Column headings by default indicate alias if set (or location otherwise), sequence number (used with ensembles), data type and units. If the TableViewHeaderFormat time series property is set, it will be used to format the header. The format can contain % specifiers and ${ts:Property} properties.
See the Java code TSViewTable_TableModel
getColumnName
method. The main change I would make is to default to include units at the end with (units)
as discussed elsewhere. This was not done in TSTool but I think would clarify interpretation of the table column.
The core functionality of this issue has been completed. Closing the issue.
Now that the map layer attribute table can be viewed, it would be useful to add a tabular view for time series data. This is equivalent to the table view in TSTool. Getting something basic in place would allow us to continue refining features. This will also be an acid test to performance because time series can contain a large number of data points. Below are some considerations to keep in mind:
TSViewJFrame
class is created any time a time series view is started, using an initial view, such as graph or table. If a table is then selected from the graph window using the Table button, it shares the data used by the graph. This groups a related set of windows. Pressing Graph on the table view just brings the original graph to the foreground. Overall, this design works well. Although it has not been done in TSTool, it would be possible to link data scrolling and selections in a table to the graph.WindowManager
. This allows the application to, for example, provide a tool to close all windows, such as when a many graphs have been updated. This may be necessary if popups are somehow hidden because they have been dragged to the edge.TSViewTableJFrame
class handles the layout. In most cases, data have the same interval and are shown in one table. Implementing something similar in InfoMapper could start with the main intervals (month, year, day) and then add shorter interval (hour, minute) and irregular.TSViewTable_TableModel
class acts as the go-between the Java time series (TS
class) and viewing component, providing an MVC design. There are also some optimizations to increase performance, like caching values and remembering the last request time.^
carret as a superscript. It may be possible to do this nicer in HTML. Adding a separate column for flag may be OK but expands the table if multiple time series are shown