Copy values routine to Bulk edition modal.

This commit is contained in:
mateuswetah 2020-04-21 23:25:07 -03:00
parent d8d6cb7cfa
commit 54d8d67a28
5 changed files with 79 additions and 5 deletions

View File

@ -312,7 +312,7 @@ class Bulk_Edit_Process extends Generic_Process {
$metadatum_id_copy_from = $this->bulk_edit_data['metadatum_id_copy_from']; $metadatum_id_copy_from = $this->bulk_edit_data['metadatum_id_copy_from'];
if ($metadatum_id_copy_from == 'create_by' && $metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\User') { if ($metadatum_id_copy_from == 'created_by' && $metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\User') {
$item_metadata->set_value( $metadatum->is_multiple() ? [$item->get_author_id()] : $item->get_author_id() ); $item_metadata->set_value( $metadatum->is_multiple() ? [$item->get_author_id()] : $item->get_author_id() );
return $this->save_item_metadata($item_metadata, $item); return $this->save_item_metadata($item_metadata, $item);
} else { } else {

View File

@ -161,6 +161,43 @@
</b-select> </b-select>
</template> </template>
<template
v-else-if="bulkEditionProcedures[criterion] &&
bulkEditionProcedures[criterion].metadatumID &&
bulkEditionProcedures[criterion].action &&
bulkEditionProcedures[criterion].action == editionActionsForMultiple.copy">
<b-select
:loading="metadataIsLoading"
:class="{'is-field-history': bulkEditionProcedures[criterion].isDone, 'hidden-select-arrow': !!bulkEditionProcedures[criterion].metadatumIdCopyFrom }"
:disabled="bulkEditionProcedures[criterion].isDone || bulkEditionProcedures[criterion].isExecuting && !!bulkEditionProcedures[criterion].metadatumIdCopyFrom || metadataIsLoading"
class="tainacan-bulk-edition-field tainacan-bulk-edition-field-last"
:placeholder="$i18n.get('instruction_select_a_metadatum')"
@input="addToBulkEditionProcedures($event, 'metadatumIdCopyFrom', criterion)">
<template
v-for="(metadatum, index) in metadata">
<option
:key="index"
v-if="metadatum.id && metadatum.metadata_type_object.component !== 'tainacan-compound' && metadatum.parent <= 0"
:value="metadatum.id">
{{ metadatum.name }}
</option>
<optgroup
v-if="metadatum.id && metadatum.metadata_type_object.component === 'tainacan-compound'"
:key="index"
:label="metadatum.name">
<option
v-for="(childMetadatum, childIndex) of metadatum.metadata_type_options.children_objects"
:key="childIndex"
v-if="childMetadatum.id"
:value="childMetadatum.id">
{{ childMetadatum.name }}
</option>
</optgroup>
</template>
</b-select>
</template>
<template <template
v-else-if="bulkEditionProcedures[criterion] && v-else-if="bulkEditionProcedures[criterion] &&
bulkEditionProcedures[criterion].metadatumID && bulkEditionProcedures[criterion].metadatumID &&
@ -306,11 +343,13 @@
redefine: this.$i18n.get('set_new_value'), redefine: this.$i18n.get('set_new_value'),
replace: this.$i18n.get('replace_value'), replace: this.$i18n.get('replace_value'),
remove: this.$i18n.get('remove_a_value'), remove: this.$i18n.get('remove_a_value'),
clear: this.$i18n.get('clear_values') clear: this.$i18n.get('clear_values'),
copy: this.$i18n.get('copy_value')
}, },
editionActionsForNotMultiple: { editionActionsForNotMultiple: {
redefine: this.$i18n.get('set_new_value'), redefine: this.$i18n.get('set_new_value'),
clear: this.$i18n.get('clear_values') clear: this.$i18n.get('clear_values'),
copy: this.$i18n.get('copy_value')
}, },
bulkEditionProcedures: { bulkEditionProcedures: {
1: { 1: {
@ -389,7 +428,8 @@
'redefineValueInBulk', 'redefineValueInBulk',
'setStatusInBulk', 'setStatusInBulk',
'setCommentStatusInBulk', 'setCommentStatusInBulk',
'removeValueInBulk' 'removeValueInBulk',
'copyValuesInBulk'
]), ]),
...mapActions('metadata', [ ...mapActions('metadata', [
'fetchMetadata' 'fetchMetadata'
@ -495,6 +535,19 @@
}).then(() => { }).then(() => {
this.finalizeProcedure(criterion); this.finalizeProcedure(criterion);
}); });
} else if (procedure.action === this.editionActionsForMultiple.copy) {
this.$set(this.bulkEditionProcedures[criterion], 'isExecuting', true);
this.copyValuesInBulk({
collectionID: this.collectionID,
groupID: this.groupID,
bodyParams: {
metadatum_id: procedure.metadatumID,
metadatum_id_copy_from: procedure.metadatumIdCopyFrom,
}
}).then(() => {
this.finalizeProcedure(criterion);
});
} }
}, },
addEditionCriterion() { addEditionCriterion() {

View File

@ -231,6 +231,26 @@ export const deleteItemsInBulk = ({commit}, parameters) => {
}); });
}; };
export const copyValuesInBulk = ({commit}, parameters) => {
let groupID = parameters.groupID;
let collectionID = parameters.collectionID;
/**
* @var bodyParams { metadatum_id, new_value } Object
* */
let bodyParams = parameters.bodyParams;
return axios.tainacan.post(`/collection/${collectionID}/bulk-edit/${groupID}/copy_value`, bodyParams)
.then(response => {
commit('setLastUpdated');
return response;
})
.catch(error => {
console.error(error);
});
};
// SEQUENCE EDIT SPECIFIC // SEQUENCE EDIT SPECIFIC
export const fetchItemIdInSequence = ({commit}, { collectionId, sequenceId, itemPosition }) => { export const fetchItemIdInSequence = ({commit}, { collectionId, sequenceId, itemPosition }) => {

View File

@ -81,6 +81,7 @@ return apply_filters( 'tainacan-admin-i18n', [
'add_one_edition_criterion' => __( 'Add one edition criterion', 'tainacan' ), 'add_one_edition_criterion' => __( 'Add one edition criterion', 'tainacan' ),
'set_new_value' => __( 'Set new value', 'tainacan' ), 'set_new_value' => __( 'Set new value', 'tainacan' ),
'replace_value' => __( 'Replace value', 'tainacan' ), 'replace_value' => __( 'Replace value', 'tainacan' ),
'copy_value' => __( 'Copy value', 'tainacan' ),
'finish' => __( 'Finish', 'tainacan' ), 'finish' => __( 'Finish', 'tainacan' ),
'select_to_create' => __( 'select to create', 'tainacan' ), 'select_to_create' => __( 'select to create', 'tainacan' ),
'new_action' => __( 'New action', 'tainacan' ), 'new_action' => __( 'New action', 'tainacan' ),

View File

@ -1844,7 +1844,7 @@ class BulkEditBgProcess extends TAINACAN_UnitApiTestCase {
[ [
"method" => 'copy_value', "method" => 'copy_value',
"metadatum_id" => $metadatum_owner->get_id(), "metadatum_id" => $metadatum_owner->get_id(),
"metadatum_id_copy_from" => 'create_by', "metadatum_id_copy_from" => 'created_by',
] ]
); );
$this->assertInternalType('int', $this->run_process($process)); $this->assertInternalType('int', $this->run_process($process));