1- const config_file = require ( './config.json ' ) ;
1+ const { get } = require ( './firestore ' ) ;
22
33exports . extractEvents = extractEventsFromJson ;
4- function extractEventsFromJson ( content , pageNumber , nomeMapa , config = config_file ) {
4+ async function extractEventsFromJson ( content , pageNumber , nomeMapa , config = "" ) {
5+ if ( config === "" )
6+ config = await get ( "raft-suite/config" ) ;
57 let pages = JSON . parse ( content ) ;
6-
78 let groups = groupTexts ( pages ) ;
89 let { info, events } = groupEvents ( groups , pageNumber , nomeMapa , config ) ;
910 return { info, events } ;
@@ -45,7 +46,7 @@ function mergeRow(group, limit = 0) {
4546 let copy = [ ] ;
4647 let temp = null ;
4748 const size = ( 56.67 - 54.955 ) / 6 ;
48- for ( i in group ) {
49+ for ( var i in group ) {
4950 if ( temp === null ) temp = group [ i ] ;
5051 const item = temp ;
5152 if ( i == group . length - 1 ) {
@@ -69,82 +70,94 @@ function mergeRow(group, limit = 0) {
6970}
7071
7172function groupEvents ( groups , pageNumber , nomeMapa , { event, customDimension } ) {
72- let regex = / ( V \d + ) \s - \s ( T \d + ) / ;
73- let regexTitle = new RegExp ( event . title . join ( '|' ) , 'i' ) ;
74- let regexCd = new RegExp ( customDimension . title . join ( '|' ) , 'i' ) ;
75- let pagina = groups [ 0 ] [ 0 ] . text || '' ;
76- let infos_mapa = null ;
77- groups . forEach (
78- ( group ) => group . forEach (
79- ( item ) => {
80- if ( regex . test ( item . text ) ) infos_mapa = item . text
81- }
73+ try {
74+ let regex = / ( V \d + ) \s - \s ( T \d + ) / ;
75+ let regexTitle = new RegExp ( event . title . join ( '|' ) , 'i' ) ;
76+ let infos_mapa = null ;
77+ groups . forEach (
78+ ( group ) => group . forEach (
79+ ( item ) => {
80+ if ( regex . test ( item . text ) ) infos_mapa = item . text
81+ }
82+ )
8283 )
83- )
84- let [ , versao , tela ] = infos_mapa != null ? infos_mapa . match ( regex )
85- : [ 0 , 'VX' , 'TX' ] ;
86-
87- let info = {
88- name : nomeMapa ,
89- pageNumber : pageNumber ,
90- version : versao ,
91- screen : tela ,
92- } ;
93- if ( versao == 'VX' ) return { info, events : [ ] } ;
94-
95- let pageviewRegex = new RegExp ( [ event . title [ 1 ] ] , 'i' ) ;
96-
97- let index = groups . findIndex ( group => group . length > 1 && ( pageviewRegex . test ( group [ 0 ] . text ) || / p a g / i. test ( group [ 1 ] . text ) ) ) ;
98- /*var indx = 0;
99- for (var x of groups) {
100- if (x[0].text == "Pageview:") {
101- break;
102- } else {
103- indx++
104- }
105- }*/
106-
107- let page = groups . slice ( index ) . sort ( ( a , b ) => a [ 0 ] . x - b [ 0 ] . x ) ;
108- page = page . map ( group => mergeRow ( group ) ) ;
109-
110- let events = [ ] ,
111- e = [ ] ;
112-
113- for ( item of page ) {
114- if ( item . length == event . numParams ) {
115-
116- item = {
117- key : item [ event . key ] . text ,
118- value : item [ event . value ] . text ,
119- x : item [ event . key ] . x ,
120- y : item [ event . key ] . y ,
121- } ;
122- } else if ( item . length == customDimension . numParams ) {
123- item = {
124- key : item [ customDimension . key ] . text ,
125- value : item [ customDimension . value ] . text ,
126- x : item [ customDimension . key ] . x ,
127- y : item [ customDimension . key ] . y ,
128- } ;
129- } else continue ;
130-
131- if ( regexTitle . test ( item . key ) ) {
84+ let [ , versao , tela ] = infos_mapa != null ? infos_mapa . match ( regex )
85+ : [ 0 , 'VX' , 'TX' ] ;
86+ versao = formatDigits ( versao ) ;
87+ tela = formatDigits ( tela ) ;
88+ let info = {
89+ name : nomeMapa ,
90+ pageNumber : pageNumber ,
91+ version : versao ,
92+ screen : tela ,
93+ } ;
94+ if ( versao == 'VX' ) return { info, events : [ ] } ;
95+
96+ let pageviewRegex = new RegExp ( [ event . title [ 1 ] ] , 'i' ) ;
97+ groups = groups . map ( group => mergeRow ( group ) ) ;
98+ let index = groups . findIndex ( group => group . length > 1 && ( pageviewRegex . test ( group [ 0 ] . text ) || / p a g / i. test ( group [ 1 ] . text ) ) ) ;
99+ index = index === - 1 ? 0 : index ;
100+ let page = groups . slice ( index ) . sort ( ( a , b ) => a [ 0 ] . x - b [ 0 ] . x ) ;
101+
102+ let events = [ ] ,
132103 e = [ ] ;
133- if ( page . indexOf ( item ) != 0 ) events . push ( e ) ;
134- //else if (events.length == 0) events.push(item);
135- }
136104
137- if ( customDimension . title . indexOf ( item . key ) == - 1 ) e . push ( item ) ;
105+ for ( let item of page ) {
106+ if ( item . length == event . numParams ) {
107+
108+ item = {
109+ key : item [ event . key ] . text ,
110+ value : item [ event . value ] . text ,
111+ x : item [ event . key ] . x ,
112+ y : item [ event . key ] . y ,
113+ } ;
114+ } else if ( item . length == customDimension . numParams ) {
115+ item = {
116+ key : item [ customDimension . key ] . text ,
117+ value : item [ customDimension . value ] . text ,
118+ x : item [ customDimension . key ] . x ,
119+ y : item [ customDimension . key ] . y ,
120+ } ;
121+ } else continue ;
122+
123+ if ( regexTitle . test ( item . key ) ) {
124+ e = [ ] ;
125+ if ( page . indexOf ( item ) != 0 ) events . push ( e ) ;
126+ //else if (events.length == 0) events.push(item);
127+ }
128+
129+ if ( customDimension . title . indexOf ( item . key ) == - 1 ) e . push ( item ) ;
130+ }
131+ events = events
132+ . sort ( ( a , b ) => a [ 0 ] . y - b [ 0 ] . y )
133+ . map ( ( item ) =>
134+ item . map ( ( { key, value } ) => {
135+ return { key, value } ;
136+ } )
137+ ) ;
138+ //console.log("=========",events, "=============");
139+ return { info, events } ;
140+ } catch ( error ) {
141+ console . error ( error ) ;
142+ publishAlert ( {
143+ jobId : "" ,
144+ code : 504 ,
145+ message : "Erro ao estruturar a lista de eventos." ,
146+ document : nomeMapa ,
147+ page : pageNumber ,
148+ version : '-'
149+ } ) ;
138150 }
139- events = events
140- . sort ( ( a , b ) => a [ 0 ] . y - b [ 0 ] . y )
141- . map ( ( item ) =>
142- item . map ( ( { key, value } ) => {
143- return { key, value } ;
144- } )
145- ) ;
146- //console.log("=========",events, "=============");
147- return { info, events } ;
148151}
149152
150153//array = [array[index], ...array.slice(0, index), ...array.slice(index + 1, array.length)]
154+
155+ function formatDigits ( text ) {
156+ const r = / ( \w ) ( \d { 1 , 2 } ) / ;
157+ if ( ! r . test ( text ) )
158+ return text
159+ let [ letter , number ] = text . match ( r ) . slice ( 1 ) ;
160+
161+ number = ( + number ) . toLocaleString ( undefined , { minimumIntegerDigits : 2 } ) ;
162+ return letter + number ;
163+ }
0 commit comments