Notes on specific datapoint / Annotation on specific datapoint / Annotation on chart
-
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
notthisWatchList
.Also be aware that debugging the output of
{{thisWatchlist}}
will not show anythings when you haveng-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.