Skip to content

Commit 2af0aa6

Browse files
Bugfix: Show all node types in XML import dialog
1 parent e69ca83 commit 2af0aa6

File tree

1 file changed

+40
-32
lines changed

1 file changed

+40
-32
lines changed

structr-base/src/main/resources/structr/js/importer.js

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ let Importer = {
411411
}
412412
});
413413
},
414-
formatImportTypeSelectorDialog: function(file, mixedMappingConfig) {
414+
formatImportTypeSelectorDialog: (file, mixedMappingConfig) => {
415415

416416
let importType = $('input[name=import-type]:checked').val();
417417

@@ -434,7 +434,9 @@ let Importer = {
434434

435435
let targetTypeSelector = $('#target-type-select');
436436

437-
Importer.updateSchemaTypeCache(targetTypeSelector);
437+
Importer.updateSchemaTypeCache().then(ignore => {
438+
Importer.updateSchemaTypeSelector(targetTypeSelector);
439+
});
438440

439441
targetTypeSelector.off('change').on('change', function(e, data) { Importer.updateMapping(file, data); });
440442
$(".import-option").off('change').on('change', function(e, data) { Importer.updateMapping(file, data); });
@@ -458,35 +460,42 @@ let Importer = {
458460
Importer.updateSchemaTypeSelector(targetTypeSelector);
459461

460462
},
461-
updateSchemaTypeCache: (targetTypeSelector) => {
463+
updateSchemaTypeCache: async () => {
462464

463-
if (!Importer.schemaTypeCachePopulated) {
465+
return new Promise((resolve) => {
464466

465-
_Helpers.getSchemaInformationPromise().then(schemaData => {
467+
if (!Importer.schemaTypeCachePopulated) {
466468

467-
Importer.clearSchemaTypeCache();
469+
_Helpers.getSchemaInformationPromise().then(schemaData => {
468470

469-
for (let res of schemaData) {
471+
Importer.clearSchemaTypeCache();
470472

471-
if (res.isServiceClass === false) {
473+
for (let res of schemaData) {
472474

473-
if (res.isRel) {
475+
if (res.isServiceClass === false) {
474476

475-
Importer.schemaTypeCache['relTypes'].push(res);
477+
if (res.isRel) {
476478

477-
} else {
479+
Importer.schemaTypeCache['relTypes'].push(res);
480+
481+
} else {
478482

479-
Importer.schemaTypeCache['graphTypes'].push(res);
480-
Importer.schemaTypeCache['nodeTypes'].push(res);
483+
Importer.schemaTypeCache['graphTypes'].push(res);
484+
Importer.schemaTypeCache['nodeTypes'].push(res);
485+
}
481486
}
482487
}
483-
}
484488

485-
Importer.updateSchemaTypeSelector(targetTypeSelector);
489+
Importer.schemaTypeCachePopulated = true;
486490

487-
Importer.schemaTypeCachePopulated = true;
488-
});
489-
}
491+
resolve('success');
492+
});
493+
494+
} else {
495+
496+
resolve('success_from_cache');
497+
}
498+
});
490499
},
491500
updateSchemaTypeSelector: (typeSelect) => {
492501

@@ -1031,19 +1040,6 @@ let Importer = {
10311040
let propertySelector = $('#property-select');
10321041
let typeConfig = configuration[path];
10331042

1034-
fetch(Structr.rootUrl + 'SchemaNode?' + Structr.getRequestParameterName('sort') + '=name').then(response => response.json()).then(data => {
1035-
1036-
if (data && data.result) {
1037-
1038-
typeSelector.append(data.result.map(r => `<option value="${r.name}">${r.name}</option>`).join(''));
1039-
1040-
// trigger select event when an element is already configured
1041-
if (typeConfig && typeConfig.type) {
1042-
typeSelector.val(typeConfig.type).trigger('change');
1043-
}
1044-
}
1045-
});
1046-
10471043
typeSelector.on('change', function(e) {
10481044

10491045
let type = $(this).val();
@@ -1190,6 +1186,16 @@ let Importer = {
11901186
});
11911187

11921188
});
1189+
1190+
Importer.updateSchemaTypeCache().then(ignore => {
1191+
1192+
typeSelector.append(Importer.schemaTypeCache.nodeTypes.map(n => `<option value="${n.name}">${n.name}</option>`).sort().join(''));
1193+
1194+
// trigger select event when an element is already configured
1195+
if (typeConfig && typeConfig.type) {
1196+
typeSelector.val(typeConfig.type).trigger('change');
1197+
}
1198+
});
11931199
},
11941200
showSetPropertyOptions: (el, key, path, structure, configuration, attributes) => {
11951201

@@ -1324,7 +1330,9 @@ let Importer = {
13241330
customOnlyCheckbox.prop('checked', true);
13251331
}
13261332

1327-
Importer.updateSchemaTypeCache(targetTypeSelector);
1333+
Importer.updateSchemaTypeCache().then(ignore => {
1334+
Importer.updateSchemaTypeSelector(targetTypeSelector);
1335+
});
13281336

13291337
$('#types-container').empty();
13301338
$('#start-import').off('click');

0 commit comments

Comments
 (0)