Fixes Issue #50 by properly reading/writing timeframes from/to JSON:
Change the base class QueryTimeframe to interface IQueryTimeframe.
Add a TimeframeConverter to help with parsing JSON to the appropriate concrete implementation of IQueryTimeframe.
Use TimeframeConverter to also help write QueryRelativeTimeframe to JSON.
We are using this new converter to create a URL-encoded JSON array to stuff in the query params for a funnel query, so we no longer drop relative timeframes.
Now we actually parse the timeframe in the FunnelResultStep, whether absolute or relative.
Fixes Issue #50 by properly reading/writing timeframes from/to JSON:
QueryTimeframe
to interfaceIQueryTimeframe
.TimeframeConverter
to help with parsing JSON to the appropriate concrete implementation ofIQueryTimeframe
.TimeframeConverter
to also help writeQueryRelativeTimeframe
to JSON.FunnelResultStep
, whether absolute or relative.