UNPKG

d2

Version:

Javascript library for DHIS2

76 lines (71 loc) 2.46 kB
/** * @module analytics */ import AnalyticsAggregate from './AnalyticsAggregate' import AnalyticsEvents from './AnalyticsEvents' import AnalyticsRequest from './AnalyticsRequest' import AnalyticsResponse from './AnalyticsResponse' /** * @description * Analytics class used to request analytics data from Web API. * * @requires analytics.AnalyticsAggregate * @requires analytics.AnalyticsEvents * @requires analytics.AnalyticsRequest * @requires analytics.AnalyticsResponse * * @example * const d2Analytics = new Analytics( * new AnalyticsAggregate(), * new AnalyticsEvents(), * AnalyticsRequest, * AnalyticsResponse * ) * * @memberof module:analytics * @see {@link https://docs.dhis2.org/master/en/developer/html/webapi_analytics.html} Analytics API documentation * @see {@link https://docs.dhis2.org/master/en/developer/html/webapi_event_analytics.html} Event analytics API documentation */ class Analytics { /** * @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance * @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance * @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class * @param {!module:analytics.AnalyticsResponse} analyticsResponse The AnalyticsResponse class */ constructor( analyticsAggregate, analyticsEvents, analyticsRequest, analyticsResponse ) { this.aggregate = analyticsAggregate this.events = analyticsEvents this.request = analyticsRequest this.response = analyticsResponse } /** * @static * * @description * Get a new instance of the Analytics object. This will function as a singleton, once Analytics object * has been created when requesting getAnalytics again the original version will be returned. * * @returns {Analytics} Object with the analytics interaction properties * * @example * const d2Analytics = d2.getAnalytics(); */ static getAnalytics() { if (!Analytics.getAnalytics.analytics) { Analytics.getAnalytics.analytics = new Analytics( new AnalyticsAggregate(), new AnalyticsEvents(), AnalyticsRequest, AnalyticsResponse ) } return Analytics.getAnalytics.analytics } } export default Analytics