@@ -83,43 +83,90 @@ export const mainCard = {
83
83
mapTooltip . value = tooltip ;
84
84
} ;
85
85
86
+ const URLquery = { ...route . query } ;
87
+ const removeQueryFromRouter = ( key ) => {
88
+ delete URLquery [ key ] ;
89
+ message . warning ( 'URL contém valor inválido para filtragem' )
90
+ router . replace ( { query : URLquery } ) ;
91
+ }
92
+
86
93
const setStateFromUrl = ( ) => {
87
- const routeArgs = route . query ;
94
+ const formState = store . state . content . form
95
+ const routeArgs = { ...route . query } ;
88
96
const routerResult = { } ;
97
+ const routerResultTabs = { } ;
89
98
90
- if ( Object . keys ( route . query ) . length === 0 ) {
99
+ if ( ! Object . keys ( routeArgs ) . length ) {
91
100
return ;
92
101
}
93
102
94
103
for ( const [ key , value ] of Object . entries ( routeArgs ) ) {
95
- if ( [ "period" , "periodStart" , "periodEnd" ] . includes ( key ) ) {
104
+ if ( key === "sickImmunizer" ) {
105
+ if ( value . includes ( "," ) ) {
106
+ const values = value . split ( "," )
107
+ const sicks = formState [ "sicks" ] . map ( el => el . value )
108
+ const immunizers = formState [ "immunizers" ] . map ( el => el . value )
109
+ if (
110
+ values . every ( val => sicks . includes ( val ) ) ||
111
+ values . every ( val => immunizers . includes ( val ) )
112
+ ) {
113
+ routerResult [ key ] = values ;
114
+ } else {
115
+ removeQueryFromRouter ( key ) ;
116
+ }
117
+ } else if (
118
+ formState [ "sicks" ] . some ( el => el . value === value ) ||
119
+ formState [ "immunizers" ] . some ( el => el . value === value )
120
+ ) {
121
+ routerResult [ key ] = value ;
122
+ } else {
123
+ removeQueryFromRouter ( key ) ;
124
+ }
125
+ } else if ( key === "local" ) {
126
+ const values = value . split ( "," )
127
+ const locals = formState [ "locals" ] . map ( el => el . value )
128
+ if ( values . every ( val => locals . includes ( val ) ) ) {
129
+ routerResult [ key ] = values ;
130
+ } else {
131
+ removeQueryFromRouter ( key ) ;
132
+ }
133
+ } else if ( key === "granularity" ) {
134
+ formState [ "granularities" ] . some ( el => el . value === value ) ?
135
+ routerResult [ key ] = value : removeQueryFromRouter ( key ) ;
136
+ } else if ( key === "dose" ) {
137
+ formState [ "doses" ] . some ( el => el . value === value ) ?
138
+ routerResult [ key ] = value : removeQueryFromRouter ( key ) ;
139
+ } else if ( key === "type" ) {
140
+ formState [ "types" ] . some ( el => el . value === value ) ?
141
+ routerResult [ key ] = value : removeQueryFromRouter ( key ) ;
142
+ } else if ( key === "tab" ) {
143
+ [ "map" , "chart" , "table" ] . some ( el => el === value ) ?
144
+ routerResultTabs [ key ] = value : removeQueryFromRouter ( key ) ;
145
+ } else if ( key === "tabBy" ) {
146
+ [ "immunizers" , "sicks" ] . some ( el => el === value ) ?
147
+ routerResultTabs [ key ] = value : removeQueryFromRouter ( key ) ;
148
+ } else if ( [ "periodStart" , "periodEnd" ] . includes ( key ) ) {
149
+ const resultValue = Number ( value )
150
+ formState [ "years" ] . some ( el => el . value === resultValue ) ?
151
+ routerResult [ key ] = resultValue : removeQueryFromRouter ( key ) ;
152
+ } else if ( key === "period" ) {
96
153
routerResult [ key ] = Number ( value ) ;
97
- continue ;
98
- }
99
- if ( value . includes ( "," ) ) {
154
+ } else if ( value . includes ( "," ) ) {
100
155
routerResult [ key ] = value . split ( "," ) ;
101
- continue
102
- }
103
- routerResult [ key ] = value ;
104
- }
105
-
106
- const modelResult = { } ;
107
-
108
- for ( const field of Object . entries ( form . value ) ) {
109
- if ( routerResult [ field [ 0 ] ] ) {
110
- modelResult [ field [ 0 ] ] = routerResult [ field [ 0 ] ] ?? null ;
156
+ } else {
157
+ routerResult [ key ] = value ?? null ;
111
158
}
112
159
}
113
160
114
161
store . commit ( "content/UPDATE_FROM_URL" , {
115
- tab : routeArgs ?. tab ? routeArgs . tab : "map" ,
116
- tabBy : routeArgs ?. tabBy ? routeArgs . tabBy : "sicks" ,
117
- form : { ...modelResult } ,
162
+ tab : routerResultTabs ?. tab ? routerResultTabs . tab : "map" ,
163
+ tabBy : routerResultTabs ?. tabBy ? routerResultTabs . tabBy : "sicks" ,
164
+ form : { ...routerResult } ,
118
165
} ) ;
119
166
} ;
120
167
121
168
const setUrlFromState = ( ) => {
122
- const routeArgs = route . query ;
169
+ const routeArgs = { ... route . query } ;
123
170
let stateResult = formatToApi ( {
124
171
form : { ...store . state . content . form } ,
125
172
tab : store . state . content . tab !== "map" ? store . state . content . tab : undefined ,
@@ -140,11 +187,10 @@ export const mainCard = {
140
187
}
141
188
142
189
watch ( ( ) => {
143
- const content = store . state . content ;
144
- const form = content . form ;
190
+ const form = store . state . content . form ;
145
191
return [ form . sickImmunizer , form . type , form . dose , form . local ,
146
192
form . period , form . periodStart , form . periodEnd ,
147
- form . granularity , content . tab , content . tabBy ]
193
+ form . granularity , store . state . content . tab , store . state . content . tabBy ]
148
194
} ,
149
195
async ( ) => {
150
196
setUrlFromState ( ) ;
0 commit comments