Skip to content

Commit 844b2fa

Browse files
authored
fix: provide helpful messages for v4 migration (#1244)
* fix: do not display warning for empty custom filters * fix: show alert when using .form() or .renderTwig This means you should probably change import paths from src/util/ui to src/util/twig
1 parent 6fc11e2 commit 844b2fa

6 files changed

Lines changed: 285 additions & 60 deletions

File tree

src/src/util/viewmigration.js

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -750,17 +750,76 @@ define([
750750
}
751751
}
752752
if (view.custom_filters) {
753-
// eslint-disable-next-line no-console
754-
console.warn(
755-
'This view has configured custom filters which are being removed',
753+
const customFilters = view.custom_filters?.[0] ?? [];
754+
const hasFilters = customFilters.sections.filters.some((filter) => {
755+
return filter?.groups?.filter?.some(
756+
(filter) => filter?.name?.[0] !== null,
757+
);
758+
});
759+
760+
const hasModules = customFilters.sections.modules.some((module) => {
761+
return module?.groups?.modules?.some((module) =>
762+
module?.some((module) => module.url),
763+
);
764+
});
765+
766+
const hasFiltersLib = customFilters.sections.filtersLib.some((lib) =>
767+
lib?.groups?.filters?.some((filters) =>
768+
filters?.some((filter) => filter.name),
769+
),
756770
);
771+
772+
if (hasFilters || hasModules || hasFiltersLib) {
773+
// eslint-disable-next-line no-console
774+
console.warn(
775+
'This view has configured custom filters which are being removed. Check the custom filters tab in general preferences before migrating.',
776+
);
777+
}
757778
delete view.custom_filters;
758779
}
759780
for (let module of view.modules) {
760781
removeFilters(module, 'vars_out');
761782
removeFilters(module, 'vars_in');
762783
}
763784
},
785+
'4.1.2',
786+
// Breaking change in src/util/api
787+
// https://github.com/NPellet/visualizer/commit/0ed8fa3e2fc0cf2517e668800cca7df93c317092
788+
function (view) {
789+
const alerts = [];
790+
eachModule(
791+
view,
792+
function (module) {
793+
const script = module.configuration?.groups?.group?.[0]?.script?.[0];
794+
if (
795+
script &&
796+
(script.match(/\.\s*form\s*\(/) ||
797+
script.match(/\.\s*renderTwig\s*\(/))
798+
) {
799+
alerts.push(module);
800+
}
801+
},
802+
'code_executor',
803+
);
804+
if (alerts.length > 0) {
805+
// eslint-disable-next-line no-alert
806+
window.alert(
807+
`found .form or .renderTwig calls. You likely import them from src/util/ui, which is not longer supported. Must import from src/util/twig. Occurences:\n
808+
${alerts
809+
.map(
810+
(module) =>
811+
`Module ${module.id}, displayed on layers:\n${Object.entries(
812+
module.layers,
813+
)
814+
.filter(([, layer]) => layer.display)
815+
.map(([name, layer]) => ` ${name}: ${layer.title}`)
816+
.join('\n')}`,
817+
)
818+
.join('\n\n')}
819+
`,
820+
);
821+
}
822+
},
764823
// Add new migration functions here
765824
// Do not forget to `npm run prerelease` before creating your migration script
766825
// 'x.y.z', function (view) {

testcase/data/twig-form-light/view.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "4.0.1",
2+
"version": "4.2.2-0",
33
"grid": {
44
"layers": {
55
"Default layer": {

0 commit comments

Comments
 (0)