You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
provides chart UI component for showing graph data (ChartView) and additional controls which facilitate it (NavigatorChartView and ChartSelectorView)
all UI components can be styled through application theme. Pre-defined light and dark themes are provided. Default attribute values are available as well
the library is built using MVC pattern. All views use ChartModel - subscribe to its events and modify it
every component's config is built using a dedicated Builder. LeonardoConfigFactory abstract factory facades them
it's possible to customize text to use for axis labels by providing custom AxisLabelTextStrategy implementation. The library contains DefaultAxisLabelTextStrategy and TimeAxisLabelTextStrategy. Both of them are general purpose strategies, with the later targeted for time values
Notes
library API supports unlimited input data sources, to make it possible working with (paged) historical data. However, current implementation works only with the limited data sets at the moment (as defined by the contest rules)
it was not specified how to switch between the target charts. That's why it was implemented by using spinner for the chart's name. Just click on it to get a list of all five charts (the default value is Followers)
even though dark/light theme change is supported in runtime without activity reloading, there is an artifact in the chart selector spinner's dropdown (as explained here). As it was not requested by contest rules, it was left as-is for now
current solution is implemented in Java as required by contest rules. It should have been Kotlin instead
current Java solution uses trautejavac plugin to enforce null-checks in the generated bytecode
current solution shows a little bit less data at the ledge plot edge in order to avoid plots intersecting Y axis labels. It did not look good otherwise