[ANALYTICS-78] Provide simpler chart config by pre-defined chart so that users can use them (include) to their dashboard definitions Created: 29/May/19  Updated: 26/Jun/19  Resolved: 24/Jun/19

Status: Closed
Project: Analytics
Component/s: None
Affects Version/s: None
Fix Version/s: 1.0

Type: Story Priority: Neutral
Reporter: Oanh Thai Hoang Assignee: Oanh Thai Hoang
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: 0d
Time Spent: 6d 1h
Original Estimate: Not Specified

Attachments: PNG File 1-4.png     PNG File 5-8.png     Zip Archive analytic-sample.zip    
Issue Links:
Relates
dependency
is depended upon by ANALYTICS-70 Create more basic sample chart config... Closed
is depended upon by ANALYTICS-71 Support formatter in chart configuration Closed
is depended upon by ANALYTICS-72 Support cursor config in chart config... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Date of First Response:
Epic Link: Analytics backend
Sprint: Add-Ons 13, Add-Ons 14
Story Points: 8

 Description   

Example expectation configuration:

chartDefinitions:
  - chart1: @includes ohlcChart.yaml
        dataSupplier: GA
        title: myTitle
  - chart2: @includes: PIEChart.yaml
      dataSupplier: Matomo
      title: Pie chart   

or

chartDefinitions:
  - chart1: 
       type: ohlcChart
        dataSupplier: GA
        title: myTitle
  - chart2: 
      type: PIEChart
      dataSupplier: Matomo
      title: Pie chart   

Agreement: Just for really basic chart, complex case user will config nativeJson by their own (We did propose config nativeJson)

Propose approach:

  • Create ChartTypeRegistry that keep all basic amchart configuration definition
  • In dashboard definition (above example), thinking used custom yaml tag to inherit or pre-define dashboard if needed, see content-type construct example 


 Comments   
Comment by Le Hai Thanh [ 20/Jun/19 ]

Hi oanh.thai,

I have done piQA for this PR and found some issues. Please help to review it

1. Case5: No nativeConfigJson and NO amChartConfiguration. PASSED (no chart due to NPE, should have notification/message). Please consider it.

 

2019-06-20 10:13:59,940 ERROR gnolia.analytics.amcharts.vaadin.AmChartsComponent: Fail to generate AmChartsComponent from 'line-chart' definition due to java.lang.NullPointerException

 

 

2. Using nativeDataJson but incorrect demoMatomoSupplier's credentials will show no data

 

2019-06-20 08:20:50,326 ERROR lia.analytics.matomo.datasource.MatomoDataSupplier: Fetching of report failed.2019-06-20 08:20:50,326 ERROR lia.analytics.matomo.datasource.MatomoDataSupplier: Fetching of report failed.com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: (org.apache.http.client.entity.LazyDecompressingInputStream); line: 1, column: 2] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1804) ~[jackson-core-2.9.8.jar:2.9.8] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:693) ~[jackson-core-2.9.8.jar:2.9.8] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:591) ~[jackson-core-2.9.8.jar:2.9.8] at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2630) ~[jackson-core-2.9.8.jar:2.9.8]

 

3. Rename dashboard from case3 to 78-TG2. Can see the new dashboard name but still get error in log

2019-06-20 15:36:16,398 ERROR info.magnolia.dirwatch.DirectoryWatcher           : Exception when executing callback for 78-TG21.yaml: No such definition: case32019-06-20 15:36:16,398 ERROR info.magnolia.dirwatch.DirectoryWatcher           : Exception when executing callback for 78-TG21.yaml: No such definition: case3info.magnolia.config.registry.Registry$NoSuchDefinitionException: case3 at info.magnolia.config.registry.AbstractRegistry.getProvider(AbstractRegistry.java:127) ~[magnolia-configuration-6.1-SNAPSHOT.jar:?] at info.magnolia.analytics.DashboardDefinitionRegistry.getProvider(DashboardDefinitionRegistry.java:88) ~[magnolia-analytics-1.0-SNAPSHOT.jar:?] at info.magnolia.analytics.ui.app.GridDashboardSubAppView.refreshDashboardComponent(GridDashboardSubAppView.java:151) ~[magnolia-analytics-ui-1.0-SNAPSHOT.jar:?] at info.magnolia.analytics.ui.app.GridDashboardSubAppView.lambda$create$0(GridDashboardSubAppView.java:98) ~[magnolia-analytics-ui-1.0-SNAPSHOT.jar:?] at info.magnolia.analytics.DashboardDefinitionRegistry.lambda$sendModificationEvent$0(DashboardDefinitionRegistry.java:92) ~[magnolia-analytics-1.0-SNAPSHOT.jar:?] at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:891) ~[?:1.8.0_191] at info.magnolia.analytics.DashboardDefinitionRegistry.sendModificationEvent(DashboardDefinitionRegistry.java:92) ~[magnolia-analytics-1.0-SNAPSHOT.jar:?] at info.magnolia.analytics.DashboardDefinitionRegistry.register(DashboardDefinitionRegistry.java:73) ~[magnolia-analytics-1.0-SNAPSHOT.jar:?] at info.magnolia.config.source.yaml.YamlConfigurationSource.loadAndRegister(YamlConfigurationSource.java:142) ~[magnolia-configuration-6.1-SNAPSHOT.jar:?] at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource.lambda$start$2(AbstractFileResourceConfigurationSource.java:162) ~[magnolia-configuration-6.1-SNAPSHOT.jar:?] at info.magnolia.resourceloader.layered.LayeredResourceOrigin$RelayingChangeHandler.onResourceChanged(LayeredResourceOrigin.java:290) ~[magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at info.magnolia.resourceloader.AbstractResourceOrigin.dispatchResourceChange(AbstractResourceOrigin.java:132) ~[magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at info.magnolia.resourceloader.file.FileWatcherCallback.dispatchResourceChange(FileWatcherCallback.java:118) ~[magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at info.magnolia.resourceloader.file.FileWatcherCallback.added(FileWatcherCallback.java:78) ~[magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at info.magnolia.dirwatch.DirectoryWatcher.processEvent(DirectoryWatcher.java:298) ~[magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at info.magnolia.dirwatch.DirectoryWatcher.run(DirectoryWatcher.java:246) [magnolia-resource-loader-6.1-SNAPSHOT.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_191] at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [?:1.8.0_191] at java.util.concurrent.FutureTask.run(FutureTask.java) [?:1.8.0_191] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]

AND here are test-cases:

  • Case1: nativeConfigJson with dataFields decoration: PASSED
  • Case2: nativeConfigJson with NO dataFields decoration: PASSED
  • Case3: amChartConfiguration Only: PASSED (show data)
  • Case4: nativeConfigJson and amChartConfiguration: PASSED (load nativeConfigJson first)

 

  • Case5: No nativeConfigJson and NO amChartConfiguration. PASSED (no chart due to NPE, shoul have notification/message)
  • Case6: amChartConfiguration with nativeDataJson: PASSED
  • Case7: nativeConfigJson and nativeDataJson: PASSED
  • Case8: amChartConfiguration + nativeConfigJson + nativeDataJson: PASSED

 Thanks, 

 

 

Comment by Le Hai Thanh [ 20/Jun/19 ]

Please use analytic-sample.zip as light-dev module

Generated at Sun Feb 11 23:15:18 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.