feat: Add totals with selection. (#187)

pull/3759/head
EdwinBetanc0urt 2019-11-28 10:03:16 -04:00 committed by Yamel Senih
parent 521f0b28a0
commit 0b95a6e10d
6 changed files with 48 additions and 18 deletions

View File

@ -52,6 +52,13 @@
<el-menu-item index="available" @click="showAllAvailableColumns()">
{{ $t('table.dataTable.showAllAvailableColumns') }}
</el-menu-item>
<el-menu-item
v-if="['browser', 'window'].includes(panelType)"
index="totals"
@click="showTotals()"
>
{{ getterPanel.isShowedTotals ? $t('table.dataTable.hiddenTotal') : $t('table.dataTable.showTotal') }}
</el-menu-item>
</el-submenu>
</el-menu>
<el-button
@ -192,7 +199,7 @@
element-loading-background="rgba(255, 255, 255, 0.8)"
element-loading-spinner="el-icon-loading"
cell-class-name="datatable-max-cell-height"
show-summary
:show-summary="getterPanel.isShowedTotals"
:summary-method="getSummaries"
@row-click="handleRowClick"
@row-dblclick="handleRowDblClick"
@ -513,6 +520,9 @@ export default {
handleChange(val) {
val = !val
},
showTotals() {
this.$store.dispatch('showedTotals', this.containerUuid)
},
showOnlyMandatoryColumns() {
this.$store.dispatch('showOnlyMandatoryColumns', {
containerUuid: this.containerUuid
@ -848,9 +858,17 @@ export default {
})
}
},
getSummaries(param) {
const { columns, data } = param
/**
* @param columns
* @param data
*/
getSummaries(parameters) {
const { columns } = parameters
const sums = []
if (!this.getterPanel.isShowedTotals) {
return
}
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = 'Σ'
@ -861,7 +879,7 @@ export default {
sums[index] = ''
return
}
const values = data.map(item => Number(item[column.property]))
const values = this.getDataSelection.map(item => Number(item[column.property]))
if (values.every(value => isNaN(value))) {
sums[index] = ''
} else {

View File

@ -179,7 +179,9 @@ export default {
deleteSelection: 'Delete Selected Records',
advancedQuery: 'Advanced Query',
showOnlyMandatoryColumns: 'Show Only Mandatory Columns',
showAllAvailableColumns: 'Show All Available Columns'
showAllAvailableColumns: 'Show All Available Columns',
showTotal: 'Show Totals',
hiddenTotal: 'Hidden Totals'
},
recentItems: {
search: 'Filter by name, description or date',

View File

@ -179,7 +179,8 @@ export default {
deleteSelection: 'Eliminar Registros Seleccionados',
advancedQuery: 'Consulta Avanzada',
showOnlyMandatoryColumns: 'Mostrar Solo Columnas Obligatorias',
showAllAvailableColumns: 'Mostrar Todas Columnas Disponibles'
showTotal: 'Mostrar Totales',
hiddenTotal: 'Ocultar Totales'
},
recentItems: {
search: 'Filtrar por nombre, descripción o fecha',

View File

@ -18,7 +18,7 @@ const browser = {
}
},
actions: {
getBrowserFromServer: ({ commit, dispatch }, parameters) => {
getBrowserFromServer({ commit, dispatch }, parameters) {
return new Promise((resolve, reject) => {
var browserUuid = parameters.containerUuid
getBrowserMetadata(browserUuid)
@ -112,7 +112,8 @@ const browser = {
panelType: panelType,
// app attributes
isMandatoryParams: isMandatoryParams,
isShowedCriteria: Boolean(fieldsList.length && isMandatoryParams)
isShowedCriteria: Boolean(fieldsList.length && isMandatoryParams),
isShowedTotals: true
}
// Convert from gRPC process list
const process = response.getProcess()
@ -162,7 +163,7 @@ const browser = {
})
})
},
changeShowedCriteriaBrowser: ({ commit, getters }, { containerUuid, isShowedCriteria }) => {
changeShowedCriteriaBrowser({ commit, getters }, { containerUuid, isShowedCriteria }) {
commit('changeShowedCriteriaBrowser', {
browser: getters.getBrowser(containerUuid),
isShowedCriteria: isShowedCriteria

View File

@ -32,12 +32,7 @@ const panel = {
state.panel = []
},
changePanel(state, payload) {
state = state.panel.map(item => {
if (payload.containerUuid === item.containerUuid) {
return payload.newPanel
}
return item
})
payload.panel = payload.newPanel
},
changeFieldList(state, payload) {
payload.fieldList = payload.newFieldList
@ -101,7 +96,8 @@ const panel = {
* Used by components/fields/filterFields
*/
changeFieldShowedFromUser({ commit, dispatch, getters }, params) {
var panel = getters.getPanel(params.containerUuid, params.isAdvancedQuery)
const panel = getters.getPanel(params.containerUuid, params.isAdvancedQuery)
var newPanel = panel
var showsFieldsWithValue = false
var hiddenFieldsWithValue = false
var newFields = panel.fieldList.map(itemField => {
@ -158,7 +154,8 @@ const panel = {
panel.fieldList = newFields
commit('changePanel', {
containerUuid: params.containerUuid,
newPanel: panel
newPanel: newPanel,
panel: panel
})
if (showsFieldsWithValue || hiddenFieldsWithValue) {
// Updated record result
@ -725,6 +722,15 @@ const panel = {
})
}
},
showedTotals({ commit, getters }, containerUuid) {
const panel = getters.getPanel(containerUuid)
const newPanel = panel
newPanel.isShowedTotals = !panel.isShowedTotals
commit('changePanel', {
panel: panel,
newPanel: newPanel
})
},
dictionaryResetCache({ commit }) {
commit('dictionaryResetCache')
commit('dictionaryResetCacheContext')

View File

@ -271,7 +271,9 @@ const window = {
isAdvancedQuery: isAdvancedQuery,
fieldLinkColumnName: fieldLinkColumnName,
fieldList: fieldsList,
panelType: panelType
panelType: panelType,
// app attributes
isShowedTotals: false
}
dispatch('addPanel', panel)