Skip to content

Commit 605fb30

Browse files
committed
Fix wrong values in url filling fields
1 parent 2b4ef8e commit 605fb30

File tree

2 files changed

+73
-25
lines changed

2 files changed

+73
-25
lines changed

src/common.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { formatDate } from "./utils";
2-
31
export const formatToApi = ({
42
form,
53
tab,
@@ -40,10 +38,14 @@ export const formatToApi = ({
4038

4139
if (tab) {
4240
routerResult.tab = tab;
41+
} else {
42+
delete routerResult.tab
4343
}
4444

4545
if (tabBy) {
4646
routerResult.tabBy = tabBy;
47+
} else {
48+
delete routerResult.tabBy
4749
}
4850

4951
return routerResult;

src/components/main-card.js

+69-23
Original file line numberDiff line numberDiff line change
@@ -83,43 +83,90 @@ export const mainCard = {
8383
mapTooltip.value = tooltip;
8484
};
8585

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+
8693
const setStateFromUrl = () => {
87-
const routeArgs = route.query;
94+
const formState = store.state.content.form
95+
const routeArgs = { ...route.query };
8896
const routerResult = {};
97+
const routerResultTabs = {};
8998

90-
if (Object.keys(route.query).length === 0) {
99+
if (!Object.keys(routeArgs).length) {
91100
return;
92101
}
93102

94103
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") {
96153
routerResult[key] = Number(value);
97-
continue;
98-
}
99-
if (value.includes(",")){
154+
} else if (value.includes(",")) {
100155
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;
111158
}
112159
}
113160

114161
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 },
118165
});
119166
};
120167

121168
const setUrlFromState = () => {
122-
const routeArgs = route.query;
169+
const routeArgs = { ...route.query };
123170
let stateResult = formatToApi({
124171
form: { ...store.state.content.form },
125172
tab: store.state.content.tab !== "map" ? store.state.content.tab : undefined,
@@ -140,11 +187,10 @@ export const mainCard = {
140187
}
141188

142189
watch(() => {
143-
const content = store.state.content;
144-
const form = content.form;
190+
const form = store.state.content.form;
145191
return [form.sickImmunizer, form.type, form.dose, form.local,
146192
form.period, form.periodStart, form.periodEnd,
147-
form.granularity, content.tab, content.tabBy]
193+
form.granularity, store.state.content.tab, store.state.content.tabBy]
148194
},
149195
async () => {
150196
setUrlFromState();

0 commit comments

Comments
 (0)