feat: Add totals with selection. (#187)
parent
521f0b28a0
commit
0b95a6e10d
|
@ -52,6 +52,13 @@
|
||||||
<el-menu-item index="available" @click="showAllAvailableColumns()">
|
<el-menu-item index="available" @click="showAllAvailableColumns()">
|
||||||
{{ $t('table.dataTable.showAllAvailableColumns') }}
|
{{ $t('table.dataTable.showAllAvailableColumns') }}
|
||||||
</el-menu-item>
|
</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-submenu>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
<el-button
|
<el-button
|
||||||
|
@ -192,7 +199,7 @@
|
||||||
element-loading-background="rgba(255, 255, 255, 0.8)"
|
element-loading-background="rgba(255, 255, 255, 0.8)"
|
||||||
element-loading-spinner="el-icon-loading"
|
element-loading-spinner="el-icon-loading"
|
||||||
cell-class-name="datatable-max-cell-height"
|
cell-class-name="datatable-max-cell-height"
|
||||||
show-summary
|
:show-summary="getterPanel.isShowedTotals"
|
||||||
:summary-method="getSummaries"
|
:summary-method="getSummaries"
|
||||||
@row-click="handleRowClick"
|
@row-click="handleRowClick"
|
||||||
@row-dblclick="handleRowDblClick"
|
@row-dblclick="handleRowDblClick"
|
||||||
|
@ -513,6 +520,9 @@ export default {
|
||||||
handleChange(val) {
|
handleChange(val) {
|
||||||
val = !val
|
val = !val
|
||||||
},
|
},
|
||||||
|
showTotals() {
|
||||||
|
this.$store.dispatch('showedTotals', this.containerUuid)
|
||||||
|
},
|
||||||
showOnlyMandatoryColumns() {
|
showOnlyMandatoryColumns() {
|
||||||
this.$store.dispatch('showOnlyMandatoryColumns', {
|
this.$store.dispatch('showOnlyMandatoryColumns', {
|
||||||
containerUuid: this.containerUuid
|
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 = []
|
const sums = []
|
||||||
|
if (!this.getterPanel.isShowedTotals) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
columns.forEach((column, index) => {
|
columns.forEach((column, index) => {
|
||||||
if (index === 0) {
|
if (index === 0) {
|
||||||
sums[index] = 'Σ'
|
sums[index] = 'Σ'
|
||||||
|
@ -861,7 +879,7 @@ export default {
|
||||||
sums[index] = ''
|
sums[index] = ''
|
||||||
return
|
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))) {
|
if (values.every(value => isNaN(value))) {
|
||||||
sums[index] = ''
|
sums[index] = ''
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -179,7 +179,9 @@ export default {
|
||||||
deleteSelection: 'Delete Selected Records',
|
deleteSelection: 'Delete Selected Records',
|
||||||
advancedQuery: 'Advanced Query',
|
advancedQuery: 'Advanced Query',
|
||||||
showOnlyMandatoryColumns: 'Show Only Mandatory Columns',
|
showOnlyMandatoryColumns: 'Show Only Mandatory Columns',
|
||||||
showAllAvailableColumns: 'Show All Available Columns'
|
showAllAvailableColumns: 'Show All Available Columns',
|
||||||
|
showTotal: 'Show Totals',
|
||||||
|
hiddenTotal: 'Hidden Totals'
|
||||||
},
|
},
|
||||||
recentItems: {
|
recentItems: {
|
||||||
search: 'Filter by name, description or date',
|
search: 'Filter by name, description or date',
|
||||||
|
|
|
@ -179,7 +179,8 @@ export default {
|
||||||
deleteSelection: 'Eliminar Registros Seleccionados',
|
deleteSelection: 'Eliminar Registros Seleccionados',
|
||||||
advancedQuery: 'Consulta Avanzada',
|
advancedQuery: 'Consulta Avanzada',
|
||||||
showOnlyMandatoryColumns: 'Mostrar Solo Columnas Obligatorias',
|
showOnlyMandatoryColumns: 'Mostrar Solo Columnas Obligatorias',
|
||||||
showAllAvailableColumns: 'Mostrar Todas Columnas Disponibles'
|
showTotal: 'Mostrar Totales',
|
||||||
|
hiddenTotal: 'Ocultar Totales'
|
||||||
},
|
},
|
||||||
recentItems: {
|
recentItems: {
|
||||||
search: 'Filtrar por nombre, descripción o fecha',
|
search: 'Filtrar por nombre, descripción o fecha',
|
||||||
|
|
|
@ -18,7 +18,7 @@ const browser = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
getBrowserFromServer: ({ commit, dispatch }, parameters) => {
|
getBrowserFromServer({ commit, dispatch }, parameters) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var browserUuid = parameters.containerUuid
|
var browserUuid = parameters.containerUuid
|
||||||
getBrowserMetadata(browserUuid)
|
getBrowserMetadata(browserUuid)
|
||||||
|
@ -112,7 +112,8 @@ const browser = {
|
||||||
panelType: panelType,
|
panelType: panelType,
|
||||||
// app attributes
|
// app attributes
|
||||||
isMandatoryParams: isMandatoryParams,
|
isMandatoryParams: isMandatoryParams,
|
||||||
isShowedCriteria: Boolean(fieldsList.length && isMandatoryParams)
|
isShowedCriteria: Boolean(fieldsList.length && isMandatoryParams),
|
||||||
|
isShowedTotals: true
|
||||||
}
|
}
|
||||||
// Convert from gRPC process list
|
// Convert from gRPC process list
|
||||||
const process = response.getProcess()
|
const process = response.getProcess()
|
||||||
|
@ -162,7 +163,7 @@ const browser = {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
changeShowedCriteriaBrowser: ({ commit, getters }, { containerUuid, isShowedCriteria }) => {
|
changeShowedCriteriaBrowser({ commit, getters }, { containerUuid, isShowedCriteria }) {
|
||||||
commit('changeShowedCriteriaBrowser', {
|
commit('changeShowedCriteriaBrowser', {
|
||||||
browser: getters.getBrowser(containerUuid),
|
browser: getters.getBrowser(containerUuid),
|
||||||
isShowedCriteria: isShowedCriteria
|
isShowedCriteria: isShowedCriteria
|
||||||
|
|
|
@ -32,12 +32,7 @@ const panel = {
|
||||||
state.panel = []
|
state.panel = []
|
||||||
},
|
},
|
||||||
changePanel(state, payload) {
|
changePanel(state, payload) {
|
||||||
state = state.panel.map(item => {
|
payload.panel = payload.newPanel
|
||||||
if (payload.containerUuid === item.containerUuid) {
|
|
||||||
return payload.newPanel
|
|
||||||
}
|
|
||||||
return item
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
changeFieldList(state, payload) {
|
changeFieldList(state, payload) {
|
||||||
payload.fieldList = payload.newFieldList
|
payload.fieldList = payload.newFieldList
|
||||||
|
@ -101,7 +96,8 @@ const panel = {
|
||||||
* Used by components/fields/filterFields
|
* Used by components/fields/filterFields
|
||||||
*/
|
*/
|
||||||
changeFieldShowedFromUser({ commit, dispatch, getters }, params) {
|
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 showsFieldsWithValue = false
|
||||||
var hiddenFieldsWithValue = false
|
var hiddenFieldsWithValue = false
|
||||||
var newFields = panel.fieldList.map(itemField => {
|
var newFields = panel.fieldList.map(itemField => {
|
||||||
|
@ -158,7 +154,8 @@ const panel = {
|
||||||
panel.fieldList = newFields
|
panel.fieldList = newFields
|
||||||
commit('changePanel', {
|
commit('changePanel', {
|
||||||
containerUuid: params.containerUuid,
|
containerUuid: params.containerUuid,
|
||||||
newPanel: panel
|
newPanel: newPanel,
|
||||||
|
panel: panel
|
||||||
})
|
})
|
||||||
if (showsFieldsWithValue || hiddenFieldsWithValue) {
|
if (showsFieldsWithValue || hiddenFieldsWithValue) {
|
||||||
// Updated record result
|
// 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 }) {
|
dictionaryResetCache({ commit }) {
|
||||||
commit('dictionaryResetCache')
|
commit('dictionaryResetCache')
|
||||||
commit('dictionaryResetCacheContext')
|
commit('dictionaryResetCacheContext')
|
||||||
|
|
|
@ -271,7 +271,9 @@ const window = {
|
||||||
isAdvancedQuery: isAdvancedQuery,
|
isAdvancedQuery: isAdvancedQuery,
|
||||||
fieldLinkColumnName: fieldLinkColumnName,
|
fieldLinkColumnName: fieldLinkColumnName,
|
||||||
fieldList: fieldsList,
|
fieldList: fieldsList,
|
||||||
panelType: panelType
|
panelType: panelType,
|
||||||
|
// app attributes
|
||||||
|
isShowedTotals: false
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch('addPanel', panel)
|
dispatch('addPanel', panel)
|
||||||
|
|
Loading…
Reference in New Issue