mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-08 04:47:22 +08:00
(dev) Inventory import - Automatic mapping [SCI-10610]
This commit is contained in:
parent
b756a87123
commit
dec59357a4
3 changed files with 46 additions and 3 deletions
|
@ -86,6 +86,7 @@
|
||||||
:stepProps="stepProps"
|
:stepProps="stepProps"
|
||||||
@selection:changed="handleChange"
|
@selection:changed="handleChange"
|
||||||
:availableFields="this.availableFields"
|
:availableFields="this.availableFields"
|
||||||
|
:autoMapping="this.autoMapping"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -153,7 +154,7 @@ export default {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
autoMapping: false,
|
autoMapping: true,
|
||||||
updateWithEmptyCells: false,
|
updateWithEmptyCells: false,
|
||||||
onlyAddNewItems: false,
|
onlyAddNewItems: false,
|
||||||
columnLabels: {
|
columnLabels: {
|
||||||
|
|
|
@ -23,8 +23,11 @@
|
||||||
@isOpen="handleIsOpen"
|
@isOpen="handleIsOpen"
|
||||||
:clearable="true"
|
:clearable="true"
|
||||||
:size="'sm'"
|
:size="'sm'"
|
||||||
placeholder="Do not import"
|
:placeholder="computeMatchNotFound ?
|
||||||
|
i18n.t('repositories.import_records.steps.step2.table.tableRow.placeholders.matchNotFound') :
|
||||||
|
i18n.t('repositories.import_records.steps.step2.table.tableRow.placeholders.doNotImport')"
|
||||||
:title="this.selectedColumnType?.value"
|
:title="this.selectedColumnType?.value"
|
||||||
|
:value="this.selectedColumnType?.key"
|
||||||
></SelectDropdown>
|
></SelectDropdown>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -48,7 +51,9 @@
|
||||||
<!-- <i v-else-if=""></i> -->
|
<!-- <i v-else-if=""></i> -->
|
||||||
|
|
||||||
<!-- match not found -->
|
<!-- match not found -->
|
||||||
<!-- <i v-else-if=""></i> -->
|
<i v-else-if="computeMatchNotFound"
|
||||||
|
class="sn-icon sn-icon-close text-sn-alert-brittlebush" :title="i18n.t('repositories.import_records.steps.step2.table.tableRow.matchNotFoundColumnTitle')">
|
||||||
|
</i>
|
||||||
|
|
||||||
<!-- do not import -->
|
<!-- do not import -->
|
||||||
<i v-else class="sn-icon sn-icon-close text-sn-sleepy-grey" :title="i18n.t('repositories.import_records.steps.step2.table.tableRow.doNotImportColumnTitle')"></i>
|
<i v-else class="sn-icon sn-icon-close text-sn-sleepy-grey" :title="i18n.t('repositories.import_records.steps.step2.table.tableRow.doNotImportColumnTitle')"></i>
|
||||||
|
@ -83,6 +88,10 @@ export default {
|
||||||
stepProps: {
|
stepProps: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
autoMapping: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -99,7 +108,31 @@ export default {
|
||||||
this.i18n.t('repositories.import_records.steps.step2.table.tableRow.systemGeneratedData.updatedOn')]
|
this.i18n.t('repositories.import_records.steps.step2.table.tableRow.systemGeneratedData.updatedOn')]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
autoMapping(newVal, oldVal) {
|
||||||
|
if (newVal === true) {
|
||||||
|
this.autoMap();
|
||||||
|
} else {
|
||||||
|
this.clearAutoMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
computeMatchNotFound() {
|
||||||
|
return this.autoMapping && ((this.selectedColumnType && !this.selectedColumnType.key) || !this.selectedColumnType);
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
autoMap() {
|
||||||
|
Object.entries(this.stepProps.availableFields).forEach(([key, value]) => {
|
||||||
|
if (this.item === value) {
|
||||||
|
this.changeSelected(key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
clearAutoMap() {
|
||||||
|
this.changeSelected(null);
|
||||||
|
},
|
||||||
changeSelected(e) {
|
changeSelected(e) {
|
||||||
const value = this.stepProps.availableFields[e];
|
const value = this.stepProps.availableFields[e];
|
||||||
const selectedColumnType = { index: this.index, key: e, value };
|
const selectedColumnType = { index: this.index, key: e, value };
|
||||||
|
@ -112,6 +145,11 @@ export default {
|
||||||
tableRows.style.overflow = 'hidden';
|
tableRows.style.overflow = 'hidden';
|
||||||
} else tableRows.style.overflow = 'auto';
|
} else tableRows.style.overflow = 'auto';
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (this.autoMapping) {
|
||||||
|
this.autoMap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -2240,7 +2240,11 @@ en:
|
||||||
RepositoryStockValue: 'Stock'
|
RepositoryStockValue: 'Stock'
|
||||||
table:
|
table:
|
||||||
tableRow:
|
tableRow:
|
||||||
|
placeholders:
|
||||||
|
matchNotFound: 'Match not found'
|
||||||
|
doNotImport: 'Do not import'
|
||||||
defaultColumnTitle: 'Default column. Mapped as identifier.'
|
defaultColumnTitle: 'Default column. Mapped as identifier.'
|
||||||
|
matchNotFoundColumnTitle: 'Match not found.'
|
||||||
userDefinedColumnTitle: 'Column name does not match. Column will be imported as '
|
userDefinedColumnTitle: 'Column name does not match. Column will be imported as '
|
||||||
importedColumnTitle: 'Column will be imported.'
|
importedColumnTitle: 'Column will be imported.'
|
||||||
doNotImportColumnTitle: 'Column will not import.'
|
doNotImportColumnTitle: 'Column will not import.'
|
||||||
|
|
Loading…
Add table
Reference in a new issue