Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website

Notes on specific datapoint / Annotation on specific datapoint / Annotation on chart


  • Currently annotate options is available to the chart as a graphic object.
    ![0_1500860471608_anotate1.JPG](Uploading 100%)
    After annotation, we can either save as PNG, JPG, SVG or PDF. Is there a way to annotation text to the specific data point, and can be downloaded as text (CSV, XLSX)?
    ![0_1500861293661_33283702-ac11-4be1-b279-ade46a6272d8-image.png](Uploading 100%)

    I also was thinking we may be able to add a user comment with reference to timestamp of the datapoint and join the tables while query to download as CSV?


  • Looking for a way to be able to download csv file which will have following columns: TimeStamp, Value, RenderedValue, Comment. Not sure why the picture uploaded were not displayed in the earlier post in the forum.


  • So the annotation options on the chart and the ability to download it as PNG/PDF are functionality of our charts library AmCharts. The annotations you make to the chart via this tool are not saved anywhere except in the image you save.

    There is no option for downloading a CSV as you specify yet but we may add an option like this in the future if there is demand for it.


  • Dear Jared, I just need to annotate on the point value and not necessarily from the chart. It seems that annotation on pointvalue is available somewhere as I see in the datapoint details view on earlier User Interface and POINTVALUEANNOTATIONS table in the database as well. Where can I annotate the pointvalue?

    [0_1500956175801_CcKMNUqiJY6TfpKB3[1]](Uploading 100%)
    https://photos.app.goo.gl/CcKMNUqiJY6TfpKB3


  • The annotation field is not for user entered comments. There has never been a way for a user to annotate point values as far as I know. There are however user comments which you can still add via the new UI.


  • Jared, Thanks for your response. I will try to find a work around so that I can make a demo to the end user.


  • Hi Jared, I happened to look back into this today and I manage to get the kind of annotation to be exported using a extra alphanumeric datapoint. When the datapoint is charted together with the numeric datapoint, the alphanumeric that I set to the data point will appear on "CSV" file export (of course it won't appear on chart, it only appears on legends when the cursor is on specific time). Only draw back is if the numeric data is updating fast, the alphanumeric data may have been saved with a different time stamp.
    I am now looking for saving the data back with specific time stamp.


  • Hi Morris,

    Before looking too far into that you may want to take a look at the <ma-annotate-chart> component. It works with the watchlist system, you will need to set up a watchlist with the data points you want to annotate, and check the points so they show up on the chart below. You can also configure the axis and chart design using the watchlist page and it will update on the <ma-annotate-chart>.

    You would then use this code on your custom page:

    <ma-watch-list-get watch-list-xid="REPLACE" ng-model="thisWatchList" on-points-change="points = $points"></ma-watch-list-get>
    
    <ma-annotate-chart flex points="points" watch-list="thisWatchList" export="true" to="dateBar.to" from="dateBar.from" rollup-type="dateBar.rollupType" rollup-interval-number="dateBar.rollupIntervals" rollup-interval-period="dateBar.rollupIntervalPeriod" chart-height="400px"></ma-annotate-chart>
    

    You can get the watchlist xid from the edit watchlist page. Note you will need the latest advancedComponents module to get this component. I am not sure if it will help you export the data as CSV but it does handle the UI for storing data point annotations on particular timestamps without needing to create extra alphanumeric data points.

    Cheers
    Will


  • Dear Will, I was struggling to plot out charts using <ma-watch-list-chart> and <ma-annotate-chart> and no charts is rendered. Both in Chrome and Firefox, I noted that there is an error: Following is the error message from Chrome:

    TypeError: Cannot read property 'chartConfig' of null
        at AnnotateChartController.$ctrl.filterPoints (http://localhost:8080/modules/advancedComponents/web/directives/annotateChart/annotateChart.js?v=1501676475:499:45)
        at AnnotateChartController.$ctrl.$onChanges (http://localhost:8080/modules/advancedComponents/web/directives/annotateChart/annotateChart.js?v=1501676475:491:23)
        at Array.h (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:85:251)
        at http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:59:144
        at m.$eval (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:148:347)
        at m.$apply (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:149:52)
        at Array.P (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:59:80)
        at m.$digest (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:147:83)
        at m.$apply (http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:149:113)
        at http://localhost:8080/modules/mangoUI/web/vendor/angular/angular.js?v=1501676475:162:3
    

    All my modules were just updated. I can still plot the chart if I get each of the points using point-xid from watchlist and plot with <ma-serial-chart>. My watch list is a static watch list with a list of points and is as follow:

    [
       {
          "enabled":true,
          "templateXid":"Power",
          "loggingProperties":{
             "tolerance":0,
             "discardExtremeValues":false,
             "discardLowLimit":-1.7976931348623157e+308,
             "discardHighLimit":1.7976931348623157e+308,
             "loggingType":"INTERVAL",
             "intervalLoggingType":"AVERAGE",
             "intervalLoggingPeriod":{
                "periods":3,
                "type":"SECONDS"
             },
             "overrideIntervalLoggingSamples":false,
             "intervalLoggingSampleWindowSize":0,
             "cacheSize":1
          },
          "textRenderer":{
             "useUnitAsSuffix":true,
             "unit":"kW",
             "renderedUnit":"kW",
             "format":"0.00",
             "suffix":"",
             "type":"textRendererAnalog"
          },
          "chartRenderer":{
             "timePeriod":{
                "periods":1,
                "type":"DAYS"
             },
             "type":"chartRendererImage"
          },
          "modelType":"DATA_POINT",
          "validationMessages":[
    
          ],
          "id":212,
          "dataSourceId":82,
          "setPermission":"superadmin",
          "chartColour":"",
          "rollup":"NONE",
          "plotType":"SPLINE",
          "purgeOverride":false,
          "purgePeriod":{
             "periods":1,
             "type":"YEARS"
          },
          "pointLocator":{
             "offset":0,
             "values":[
    
             ],
             "max":120,
             "min":0.1,
             "period":0,
             "attractionPointXid":"internal_mango_num_active_user_sessions",
             "maxChange":0.2,
             "change":0,
             "amplitude":0,
             "volatility":0,
             "startValue":"101",
             "roll":false,
             "modelType":"PL.VIRTUAL",
             "dataType":"NUMERIC",
             "changeType":"BROWNIAN",
             "settable":false,
             "relinquishable":false
          },
          "readPermission":"user",
          "pointFolderId":2,
          "unit":"kW",
          "dataSourceXid":"DS_Chiller1_VDS",
          "renderedUnit":"kW",
          "integralUnit":"kW·s",
          "deviceName":"Chiller1",
          "useIntegralUnit":false,
          "useRenderedUnit":false,
          "dataSourceName":"Chiller1_VDS",
          "name":"ActivePower",
          "xid":"DP_Chiller1_ActivePower"
       },
       {
          "enabled":true,
          "templateXid":"Power",
          "loggingProperties":{
             "tolerance":0,
             "discardExtremeValues":false,
             "discardLowLimit":-1.7976931348623157e+308,
             "discardHighLimit":1.7976931348623157e+308,
             "loggingType":"INTERVAL",
             "intervalLoggingType":"AVERAGE",
             "intervalLoggingPeriod":{
                "periods":3,
                "type":"SECONDS"
             },
             "overrideIntervalLoggingSamples":false,
             "intervalLoggingSampleWindowSize":0,
             "cacheSize":1
          },
          "textRenderer":{
             "useUnitAsSuffix":true,
             "unit":"kW",
             "renderedUnit":"kW",
             "format":"0.00",
             "suffix":"",
             "type":"textRendererAnalog"
          },
          "chartRenderer":{
             "timePeriod":{
                "periods":1,
                "type":"DAYS"
             },
             "type":"chartRendererImage"
          },
          "modelType":"DATA_POINT",
          "validationMessages":[
    
          ],
          "id":213,
          "dataSourceId":83,
          "setPermission":"superadmin",
          "chartColour":"",
          "rollup":"NONE",
          "plotType":"SPLINE",
          "purgeOverride":false,
          "purgePeriod":{
             "periods":1,
             "type":"YEARS"
          },
          "pointLocator":{
             "offset":0,
             "values":[
    
             ],
             "max":120,
             "min":0.1,
             "period":0,
             "attractionPointXid":"internal_mango_num_active_user_sessions",
             "maxChange":0.2,
             "change":0,
             "amplitude":0,
             "volatility":0,
             "startValue":"101",
             "roll":false,
             "modelType":"PL.VIRTUAL",
             "dataType":"NUMERIC",
             "changeType":"BROWNIAN",
             "settable":false,
             "relinquishable":false
          },
          "readPermission":"user",
          "pointFolderId":2,
          "unit":"kW",
          "dataSourceXid":"DS_Chiller2_VDS",
          "renderedUnit":"kW",
          "integralUnit":"kW·s",
          "deviceName":"Chiller2",
          "useIntegralUnit":false,
          "useRenderedUnit":false,
          "dataSourceName":"Chiller2_VDS",
          "name":"ActivePower",
          "xid":"DP_Chiller2_ActivePower"
       },
       {
          "enabled":true,
          "templateXid":"Power",
          "loggingProperties":{
             "tolerance":0,
             "discardExtremeValues":false,
             "discardLowLimit":-1.7976931348623157e+308,
             "discardHighLimit":1.7976931348623157e+308,
             "loggingType":"INTERVAL",
             "intervalLoggingType":"AVERAGE",
             "intervalLoggingPeriod":{
                "periods":3,
                "type":"SECONDS"
             },
             "overrideIntervalLoggingSamples":false,
             "intervalLoggingSampleWindowSize":0,
             "cacheSize":1
          },
          "textRenderer":{
             "useUnitAsSuffix":true,
             "unit":"kW",
             "renderedUnit":"kW",
             "format":"0.00",
             "suffix":"",
             "type":"textRendererAnalog"
          },
          "chartRenderer":{
             "timePeriod":{
                "periods":1,
                "type":"DAYS"
             },
             "type":"chartRendererImage"
          },
          "modelType":"DATA_POINT",
          "validationMessages":[
    
          ],
          "id":214,
          "dataSourceId":84,
          "setPermission":"superadmin",
          "chartColour":"",
          "rollup":"NONE",
          "plotType":"SPLINE",
          "purgeOverride":false,
          "purgePeriod":{
             "periods":1,
             "type":"YEARS"
          },
          "pointLocator":{
             "offset":0,
             "values":[
    
             ],
             "max":120,
             "min":0.1,
             "period":0,
             "attractionPointXid":"internal_mango_num_active_user_sessions",
             "maxChange":0.2,
             "change":0,
             "amplitude":0,
             "volatility":0,
             "startValue":"88",
             "roll":false,
             "modelType":"PL.VIRTUAL",
             "dataType":"NUMERIC",
             "changeType":"BROWNIAN",
             "settable":false,
             "relinquishable":false
          },
          "readPermission":"user",
          "pointFolderId":2,
          "unit":"kW",
          "dataSourceXid":"DS_Chiller3_VDS",
          "renderedUnit":"kW",
          "integralUnit":"kW·s",
          "deviceName":"Chiller3",
          "useIntegralUnit":false,
          "useRenderedUnit":false,
          "dataSourceName":"Chiller3_VDS",
          "name":"ActivePower",
          "xid":"DP_Chiller3_ActivePower"
       },
       {
          "enabled":true,
          "templateXid":"Power",
          "loggingProperties":{
             "tolerance":0,
             "discardExtremeValues":false,
             "discardLowLimit":-1.7976931348623157e+308,
             "discardHighLimit":1.7976931348623157e+308,
             "loggingType":"INTERVAL",
             "intervalLoggingType":"AVERAGE",
             "intervalLoggingPeriod":{
                "periods":3,
                "type":"SECONDS"
             },
             "overrideIntervalLoggingSamples":false,
             "intervalLoggingSampleWindowSize":0,
             "cacheSize":1
          },
          "textRenderer":{
             "useUnitAsSuffix":true,
             "unit":"kW",
             "renderedUnit":"kW",
             "format":"0.00",
             "suffix":"",
             "type":"textRendererAnalog"
          },
          "chartRenderer":{
             "timePeriod":{
                "periods":1,
                "type":"DAYS"
             },
             "type":"chartRendererImage"
          },
          "modelType":"DATA_POINT",
          "validationMessages":[
    
          ],
          "id":215,
          "dataSourceId":85,
          "setPermission":"superadmin",
          "chartColour":"",
          "rollup":"NONE",
          "plotType":"SPLINE",
          "purgeOverride":false,
          "purgePeriod":{
             "periods":1,
             "type":"YEARS"
          },
          "pointLocator":{
             "offset":0,
             "values":[
    
             ],
             "max":120,
             "min":0.1,
             "period":0,
             "attractionPointXid":"internal_mango_num_active_user_sessions",
             "maxChange":0.2,
             "change":0,
             "amplitude":0,
             "volatility":0,
             "startValue":"22",
             "roll":false,
             "modelType":"PL.VIRTUAL",
             "dataType":"NUMERIC",
             "changeType":"BROWNIAN",
             "settable":false,
             "relinquishable":false
          },
          "readPermission":"user",
          "pointFolderId":2,
          "unit":"kW",
          "dataSourceXid":"DS_Chiller4_VDS",
          "renderedUnit":"kW",
          "integralUnit":"kW·s",
          "deviceName":"Chiller4",
          "useIntegralUnit":false,
          "useRenderedUnit":false,
          "dataSourceName":"Chiller4_VDS",
          "name":"ActivePower",
          "xid":"DP_Chiller4_ActivePower"
       },
       {
          "enabled":true,
          "templateXid":"Power",
          "loggingProperties":{
             "tolerance":0,
             "discardExtremeValues":false,
             "discardLowLimit":-1.7976931348623157e+308,
             "discardHighLimit":1.7976931348623157e+308,
             "loggingType":"INTERVAL",
             "intervalLoggingType":"AVERAGE",
             "intervalLoggingPeriod":{
                "periods":3,
                "type":"SECONDS"
             },
             "overrideIntervalLoggingSamples":false,
             "intervalLoggingSampleWindowSize":0,
             "cacheSize":1
          },
          "textRenderer":{
             "useUnitAsSuffix":true,
             "unit":"kW",
             "renderedUnit":"kW",
             "format":"0.00",
             "suffix":"",
             "type":"textRendererAnalog"
          },
          "chartRenderer":{
             "timePeriod":{
                "periods":1,
                "type":"DAYS"
             },
             "type":"chartRendererImage"
          },
          "modelType":"DATA_POINT",
          "validationMessages":[
    
          ],
          "id":216,
          "dataSourceId":86,
          "setPermission":"superadmin",
          "chartColour":"",
          "rollup":"NONE",
          "plotType":"SPLINE",
          "purgeOverride":false,
          "purgePeriod":{
             "periods":1,
             "type":"YEARS"
          },
          "pointLocator":{
             "offset":0,
             "values":[
    
             ],
             "max":120,
             "min":0.1,
             "period":0,
             "attractionPointXid":"internal_mango_num_active_user_sessions",
             "maxChange":0.2,
             "change":0,
             "amplitude":0,
             "volatility":0,
             "startValue":"55",
             "roll":false,
             "modelType":"PL.VIRTUAL",
             "dataType":"NUMERIC",
             "changeType":"BROWNIAN",
             "settable":false,
             "relinquishable":false
          },
          "readPermission":"user",
          "pointFolderId":2,
          "unit":"kW",
          "dataSourceXid":"DS_Chiller5_VDS",
          "renderedUnit":"kW",
          "integralUnit":"kW·s",
          "deviceName":"Chiller5",
          "useIntegralUnit":false,
          "useRenderedUnit":false,
          "dataSourceName":"Chiller5_VDS",
          "name":"ActivePower",
          "xid":"DP_Chiller5_ActivePower"
       }
    ]
    

  • Could I see the output of page.watchList. Are you sure you have checked points on the watchlist and then clicked save. When you open up that watchlist does a chart display at the bottom of the page?


  • @will-geller said in Notes on specific datapoint / Annotation on specific datapoint / Annotation on chart:

    Could I see the output of page.watchList. Are you sure you have checked points on the watchlist and then clicked save. When you open up that watchlist does a chart display at the bottom of the page?

    Dear Will, the watch list is displayed, and charts can be seen. In above reply, I also uploaded the output from {{thisWatchlist}} so that you can help to review in the case there is any missing configuration.

    <ma-watch-list-get watch-list-xid="WL_TESTWL" ng-model="thisWatchList" on-points-change="points = $points"></ma-watch-list-get>
    
    {{thisWatchlist}}
        
    <ma-annotate-chart flex points="points" watch-list="thisWatchList" export="true" to="dateBar.to" from="dateBar.from" rollup-type="dateBar.rollupType" rollup-interval-number="dateBar.rollupIntervals" rollup-interval-period="dateBar.rollupIntervalPeriod" chart-height="400px"></ma-annotate-chart>
    
    ```

  • I just noted that there is the same array error is on the UI's watch list application that comes with the demo version. So it is just that charts are not rendering in my case.


  • It looks like in your previous post you posted the output of points not thisWatchList .

    Also be aware that debugging the output of {{thisWatchlist}} will not show anythings when you have ng-model="thisWatchList" notice the caps is inconsistent


  • Can you got to http://localhost:8080/ui/administration/modules/upgrade check for upgrades and let me know what version of advancedComponents module you have.

    The advancedComponents module has some functionality that originally wasn't intended for free public use so there may be some issues. But we don't mind you using it and I will try to help you out.

    • It looks like you do need the NoSQL module installed in order to post annotations. The module is included on the Mango ES or with an Enterprise license. If you don't have a license for the NoSQL module you can still install it but Mango will automatically shut down after several hours.

    • It looks like there is an bug in the code for the annotateChart component when running with core 3.1 so you will want to update the advancedComponents module with the one that will be released today (3.1.4)

    Let me know if you think this is all worth it and you still run into issues after trying these steps


  • Once you get that working you may want to play around with adding show-annotation-table="true" show-zoom-controls="true" attributes which you can include on <ma-annotate-chart> which display a table below the chart of the annotations and a zoom / calculate (click twice) mode that may be of interest


  • Hi Will, I am using advancedComponent 3.1.3 and check for upgrades gives me following response.

    Modules available for upgrade
    All installed modules are up to date
    
    Modules available for installation
    No new modules to install
    
    {"data":"","status":500,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/rest/v1/modules/upgrades-available","headers":{"Accept":"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":"a401346f-29a7-49b7-80ac-3e6eaeabb93d"},"cached":false,"timeout":30000},"statusText":"Server Error"}
    

  • Hi morris,

    There is almost certainly more information in the log file, or in some alert text.

    If I had to guess the cause, it'd be that you have the dashboards module installed, which is not continued in 3.2. You can mark if for deletion and restart on the modules page.


  • Hi phildunlap, I was using version 3.1.1. I am now downloading version 3.2.