Merge pull request #5333 from devansh-webkul/datagrid-issue-fixed

Fixed datagrid issue when there is more than 1 mass action of the same type
This commit is contained in:
Devansh 2021-11-18 09:13:10 +05:30 committed by GitHub
commit a3103f67d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 52 additions and 37 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/ui.js": "/js/ui.js?id=a172ef8f02babda2160d",
"/js/ui.js": "/js/ui.js?id=7a31a00fd86bc23cf3fb",
"/css/ui.css": "/css/ui.css?id=87c15a3e7af4ab272377"
}

View File

@ -490,7 +490,10 @@
index) in massActions"
v-text="massAction.label"
:key="index"
:value="massAction.type"
:value="{
id: index,
value: massAction.type
}"
></option>
</select>
</div>
@ -498,7 +501,7 @@
<div
class="control-group"
style="margin-left: 10px"
v-if="massActionType == 'update'"
v-if="massActionType.value == 'update'"
>
<select
class="control"
@ -719,7 +722,7 @@ export default {
dataGridIndex: 0,
massActionsToggle: false,
massActionTarget: null,
massActionType: null,
massActionType: this.getDefaultMassActionType(),
massActionValues: [],
massActionTargets: [],
massActionUpdateValue: null,
@ -994,19 +997,12 @@ export default {
}
for (let id in this.massActions) {
let targetObj = {
this.massActionTargets.push({
id: parseInt(id),
type: this.massActions[id].type,
action: this.massActions[id].action,
confirm_text: this.massActions[id].confirm_text
};
this.massActionTargets.push(targetObj);
targetObj = {};
if (this.massActions[id].type === 'update') {
this.massActionValues = this.massActions[id].options;
}
});
}
},
@ -1018,8 +1014,15 @@ export default {
}
},
getDefaultMassActionType: function() {
return {
id: null,
value: null
};
},
changeMassActionTarget: function() {
if (this.massActionType === 'delete') {
if (this.massActionType.value === 'delete') {
for (let i in this.massActionTargets) {
if (this.massActionTargets[i].type === 'delete') {
this.massActionTarget = this.massActionTargets[
@ -1035,9 +1038,12 @@ export default {
}
}
if (this.massActionType === 'update') {
if (this.massActionType.value === 'update') {
for (let i in this.massActionTargets) {
if (this.massActionTargets[i].type === 'update') {
this.massActionValues = this.massActions[
this.massActionType.id
].options;
this.massActionTarget = this.massActionTargets[
i
].action;
@ -1368,7 +1374,7 @@ export default {
if (this.dataIds.length === 0) {
this.massActionsToggle = false;
this.massActionType = null;
this.massActionType = this.getDefaultMassActionType();
} else {
this.massActionsToggle = true;
}
@ -1426,7 +1432,7 @@ export default {
this.allSelected = false;
this.massActionType = null;
this.massActionType = this.getDefaultMassActionType();
},
paginate: function(e) {

View File

@ -15,11 +15,11 @@
<div class="control-group">
<select class="control" v-model="massActionType" @change="changeMassActionTarget" name="massaction-type" required>
<option v-for="(massAction, index) in massActions" :key="index" :value="massAction.type">@{{ massAction.label }}</option>
<option v-for="(massAction, index) in massActions" :key="index" :value="{ id: index, value: massAction.type}">@{{ massAction.label }}</option>
</select>
</div>
<div class="control-group" style="margin-left: 10px;" v-if="massActionType == 'update'">
<div class="control-group" style="margin-left: 10px;" v-if="massActionType.value == 'update'">
<select class="control" v-model="massActionUpdateValue" name="update-options" required>
<option v-for="(massActionValue, id) in massActionValues" :value="massActionValue">@{{ id }}</option>
</select>

View File

@ -281,7 +281,7 @@
massActionsToggle: false,
massActionTarget: null,
massActionConfirmText: '{{ __('ui::app.datagrid.click_on_action') }}',
massActionType: null,
massActionType: this.getDefaultMassActionType(),
massActionValues: [],
massActionTargets: [],
massActionUpdateValue: null,
@ -472,19 +472,12 @@
}
for (let id in this.massActions) {
targetObj = {
this.massActionTargets.push({
'id': parseInt(id),
'type': this.massActions[id].type,
'action': this.massActions[id].action,
'confirm_text': this.massActions[id].confirm_text
};
this.massActionTargets.push(targetObj);
targetObj = {};
if (this.massActions[id].type === 'update') {
this.massActionValues = this.massActions[id].options;
}
});
}
},
@ -496,8 +489,23 @@
}
},
/**
* Reset mass action type.
*
* @return {!object}
*/
getDefaultMassActionType: function () {
return {
id: null,
value: null
};
},
/**
* Change mass action target.
*/
changeMassActionTarget: function () {
if (this.massActionType === 'delete') {
if (this.massActionType.value === 'delete') {
for (let i in this.massActionTargets) {
if (this.massActionTargets[i].type === 'delete') {
this.massActionTarget = this.massActionTargets[i].action;
@ -508,9 +516,10 @@
}
}
if (this.massActionType === 'update') {
if (this.massActionType.value === 'update') {
for (let i in this.massActionTargets) {
if (this.massActionTargets[i].type === 'update') {
this.massActionValues = this.massActions[this.massActionType.id].options;
this.massActionTarget = this.massActionTargets[i].action;
this.massActionConfirmText = this.massActionTargets[i].confirm_text ? this.massActionTargets[i].confirm_text : this.massActionConfirmText;
@ -898,7 +907,7 @@
if (this.dataIds.length === 0) {
this.massActionsToggle = false;
this.massActionType = null;
this.massActionType = this.getDefaultMassActionType();
} else {
this.massActionsToggle = true;
}
@ -945,7 +954,7 @@
this.allSelected = false;
this.massActionType = null;
this.massActionType = this.getDefaultMassActionType();
this.setSelectedIndexes();
},
@ -967,7 +976,7 @@
if (this.dataIds.length === 0) {
this.massActionsToggle = false;
this.massActionType = null;
this.massActionType = this.getDefaultMassActionType();
}
} else {
delete selectedIndexes[key];