Skip to content

Commit

Permalink
scan datasets in exported json on import (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
davetsay authored Apr 6, 2023
1 parent 77eed07 commit d41056b
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 163 deletions.
107 changes: 0 additions & 107 deletions src/actionModifiers/ImportExportWithDatasets/DatasetCollection.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@
<div
v-if="!hasReferencedDatasets"
>
{{ noReferencedDatasetsText }}
{{ noDatasetMappingRequiredText }}
</div>
<div
v-else-if="hasOneToOneMapping"
>
{{ noDatasetMappingRequiredText }}
</div>
<div
v-else-if="hasReferencedDatasets && !hasDatasets"
Expand All @@ -30,7 +35,7 @@
class="c-form__row"
>
<span class="req-indicator req"></span>
<label>{{ referencedDataset.name }}</label>
<label>{{ getDatasetName(referencedDataset) }}</label>
<select
v-model="mapping[makeKeyString(referencedDataset)]"
@change="onChange"
Expand Down Expand Up @@ -74,7 +79,7 @@ export default {
}
},
computed: {
noReferencedDatasetsText() {
noDatasetMappingRequiredText() {
return 'All set. The import does not need dataset mapping.';
},
noDatasetsText() {
Expand All @@ -91,12 +96,19 @@ export default {
},
datasetOptions() {
return this.datasets.map(dataset => {
const keyString = this.makeKeyString(dataset);
const name = this.getDatasetName(dataset);
return {
name: dataset.name,
value: this.openmct.objects.makeKeyString(dataset.identifier)
name: name,
value: keyString
};
});
}
},
hasOneToOneMapping() {
return this.datasets?.length === 1
&& this.referencedDatasets?.length === 1;
},
},
data() {
return {
Expand Down Expand Up @@ -124,15 +136,21 @@ export default {
},
buildMapping() {
this.referencedDatasets?.forEach(referencedDataset => {
const referencedDatasetKeyString = this.openmct.objects.makeKeyString(referencedDataset.identifier);
const datasetKeyString = this.openmct.objects.makeKeyString(this.datasets[0].identifier);
const referencedDatasetKeyString = this.makeKeyString(referencedDataset);
const datasetKeyString = this.makeKeyString(this.datasets[0]);
this.$set(this.mapping, referencedDatasetKeyString, datasetKeyString);
});
},
makeKeyString(domainObject) {
return this.openmct.objects.makeKeyString(domainObject.identifier);
},
getDatasetName(dataset) {
const keyString = this.makeKeyString(dataset);
const name = dataset.name || keyString;
return name;
},
onChange(event) {
this.validate();
Expand Down
3 changes: 0 additions & 3 deletions src/actionModifiers/ImportExportWithDatasets/constants.js

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { CONSTANTS } from './constants';
import ImportWithDatasetsFormComponent from './ImportWithDatasetsFormComponent.vue';
import Vue from 'vue';
import DatasetCache from 'services/dataset/DatasetCache';
Expand Down Expand Up @@ -99,11 +98,12 @@ function importWithDatasetsModifier(openmct) {
}

if (success) {
try {
const datasetCache = DatasetCache();
const datasetCache = DatasetCache();

datasets = await datasetCache.getDomainObjects();

datasets = await datasetCache.getDomainObjects();
referencedDatasets = await getReferencedDatasets(json);
try {
referencedDatasets = getReferencedDatasets(json);

component.updateData(referencedDatasets, datasets);
} catch(error) {
Expand Down Expand Up @@ -164,9 +164,35 @@ function importWithDatasetsModifier(openmct) {
}

function getReferencedDatasets(json) {
const referencedDatasets = json[CONSTANTS.DATASETS_IDENTIFIER];
const openmct = json.openmct;
const referencedDatasets = new Set();

Object.values(openmct)
.forEach(object => object.composition
?.forEach(identifier => {
if (referencesDataset(identifier)) {
const datasetIdentifier = getDatasetIdentifier(identifier);
referencedDatasets.add({ identifier: datasetIdentifier });
}
}));

return Array.from(referencedDatasets);
}

function referencesDataset(identifier) {
return identifier.namespace === 'vista';
}

function getDatasetIdentifier(identifier) {
const parts = identifier.key.split(':');
const namespace = parts[parts.length - 2];
const key = parts[parts.length - 1];
const datasetIdentifier = {
namespace,
key
};

return referencedDatasets;
return datasetIdentifier;
}
}

Expand Down
7 changes: 2 additions & 5 deletions src/actionModifiers/plugin.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import preventImportIntoDatasetModifier from './preventImportIntoDatasetModifier';
import exportWithDatasetsModifier from './ImportExportWithDatasets/exportWithDatasetsModifier';
import importWithDatasetsModifier from './ImportExportWithDatasets/importWithDatasetsModifier';

function plugin() {
function ImportExportWithDatasetsPlugin() {
return function install(openmct) {

openmct.on('start', () => {
preventImportIntoDatasetModifier(openmct);
exportWithDatasetsModifier(openmct);
importWithDatasetsModifier(openmct);
});
}
}

export default plugin;
export default ImportExportWithDatasetsPlugin;

0 comments on commit d41056b

Please sign in to comment.