@@ -44,29 +44,49 @@ class TopEventsJob extends job.Job {
4444 }
4545
4646 /**
47- * async
48- * Get events count.
49- * @param {Object } params - getEventsCount object
50- * @param {String } params.collectionNameEvents - event collection name
51- * @param {Object } params.ob - it contains all necessary info
52- * @param {string } params.event - event name
53- * @param {Object } params.data - dummy event data
54- * @returns {Promise.<boolean> } true.
47+ *
48+ * @param {object } params - params object
49+ * @param {object } data - object where to collect data
50+ * @param {boolean } previous - if fetching for previous period
51+ * @returns {Promise } promise
5552 */
56- async getEventsCount ( params ) {
57- const { collectionNameEvents, ob, data, event } = params ;
53+ async fetchEventTotalCounts ( params , data , previous ) {
54+ let collectionName = "all" ;
55+ params . qstring . segmentation = "key" ;
5856 return await new Promise ( ( resolve ) => {
59- countlyApi . data . fetch . getTimeObjForEvents ( collectionNameEvents , ob , ( doc ) => {
57+ countlyApi . data . fetch . getTimeObjForEvents ( "events_data" , params , { 'id_prefix' : params . app_id + "_" + collectionName + '_' } , function ( doc ) {
6058 countlyEvents . setDb ( doc || { } ) ;
61- const countProp = countlyEvents . getNumber ( "c" , true ) ;
62- const sumProp = countlyEvents . getNumber ( "s" , true ) ;
63- const durationProp = countlyEvents . getNumber ( "dur" , true ) ;
64- data [ event ] = { } ;
65- data [ event ] . data = {
66- count : countProp ,
67- sum : sumProp ,
68- duration : durationProp
69- } ;
59+
60+ var dd = countlyEvents . getSegmentedData ( params . qstring . segmentation ) ;
61+ for ( var z = 0 ; z < dd . length ; z ++ ) {
62+ var key = dd [ z ] . _id ;
63+ data [ key ] = data [ key ] || { } ;
64+ data [ key ] . data = data [ key ] . data || { } ;
65+ data [ key ] . data . count = data [ key ] . data . count || { "total" : 0 , "prev-total" : 0 , "change" : "NA" , "trend" : "u" } ;
66+ if ( previous ) {
67+ data [ key ] . data . count [ "prev-total" ] = dd [ z ] . c ;
68+ }
69+ else {
70+ data [ key ] . data . count . total = dd [ z ] . c ;
71+ }
72+
73+ data [ key ] . data . sum = data [ key ] . data . sum || { "total" : 0 , "prev-total" : 0 , "change" : "NA" , "trend" : "u" } ;
74+ if ( previous ) {
75+ data [ key ] . data . sum [ "prev-total" ] = dd [ z ] . s ;
76+ }
77+ else {
78+ data [ key ] . data . sum . total = dd [ z ] . s ;
79+ }
80+
81+ data [ key ] . data . duration = data [ key ] . data . duration || { "total" : 0 , "prev-total" : 0 , "change" : "NA" , "trend" : "u" } ;
82+ if ( previous ) {
83+ data [ key ] . data . duration [ "prev-total" ] = dd [ z ] . dur ;
84+ }
85+ else {
86+ data [ key ] . data . duration . total = dd [ z ] . dur ;
87+ }
88+ }
89+ //data.all = countlyEvents.getSegmentedData(params.qstring.segmentation);
7090 resolve ( true ) ;
7191 } ) ;
7292 } ) ;
@@ -204,10 +224,20 @@ class TopEventsJob extends job.Job {
204224 let prevTotalSum = 0 ;
205225 let totalDuration = 0 ;
206226 let prevTotalDuration = 0 ;
207- for ( const event of eventMap ) {
208- log . d ( " getting event data for event: " + event + " (" + period + ")" ) ;
209- const collectionNameEvents = this . eventsCollentions ( { event, id : app . _id } ) ;
210- await this . getEventsCount ( { collectionNameEvents, ob, data, event } ) ;
227+
228+ //Fetching totals for this period
229+ await this . fetchEventTotalCounts ( { app_id : app . _id , appTimezone : app . timezone , qstring : { period : period } } , data , false ) ;
230+ var period2 = countlyCommon . getPeriodObj ( { appTimezone : app . timezone , qstring : { } } , period ) ;
231+ var newPeriod = [ period2 . start - ( period2 . end - period2 . start ) , period2 . start ] ;
232+ //Fetching totals for previous period
233+ await this . fetchEventTotalCounts ( { app_id : app . _id , appTimezone : app . timezone , qstring : { period : newPeriod } } , data , true ) ;
234+
235+
236+ for ( var event in data ) {
237+ //Calculating trend
238+ var trend = countlyCommon . getPercentChange ( data [ event ] . data . count [ "prev-total" ] , data [ event ] . data . count . total ) ;
239+ data [ event ] . data . count . change = trend . percent ;
240+ data [ event ] . data . count . trend = trend . trend ;
211241 totalCount += data [ event ] . data . count . total ;
212242 prevTotalCount += data [ event ] . data . count [ "prev-total" ] ;
213243 totalSum += data [ event ] . data . sum . total ;
0 commit comments