feat: Add totals with selection. (#187)
parent
521f0b28a0
commit
0b95a6e10d
|
@ -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 {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -271,7 +271,9 @@ const window = {
|
|||
isAdvancedQuery: isAdvancedQuery,
|
||||
fieldLinkColumnName: fieldLinkColumnName,
|
||||
fieldList: fieldsList,
|
||||
panelType: panelType
|
||||
panelType: panelType,
|
||||
// app attributes
|
||||
isShowedTotals: false
|
||||
}
|
||||
|
||||
dispatch('addPanel', panel)
|
||||
|
|
Loading…
Reference in New Issue