Support Record Scroll (#224)
* navigation of record UpArrow and DownArrow in table of Tab Children * Support keyboard shortcutspull/3759/head
parent
a1b5f44098
commit
cd1c2a1b53
|
@ -75,6 +75,7 @@
|
||||||
"vue-i18n": "7.3.2",
|
"vue-i18n": "7.3.2",
|
||||||
"vue-multipane": "^0.9.5",
|
"vue-multipane": "^0.9.5",
|
||||||
"vue-router": "3.0.4",
|
"vue-router": "3.0.4",
|
||||||
|
"vue-shortkey": "^3.1.7",
|
||||||
"vue-split-panel": "^1.0.4",
|
"vue-split-panel": "^1.0.4",
|
||||||
"vue-splitpane": "1.0.4",
|
"vue-splitpane": "1.0.4",
|
||||||
"vuedraggable": "^2.23.2",
|
"vuedraggable": "^2.23.2",
|
||||||
|
|
|
@ -26,6 +26,10 @@ export default {
|
||||||
},
|
},
|
||||||
getWindowHeight(event) {
|
getWindowHeight(event) {
|
||||||
this.$store.dispatch('setHeight', document.documentElement.clientHeight)
|
this.$store.dispatch('setHeight', document.documentElement.clientHeight)
|
||||||
|
},
|
||||||
|
theAction(event) {
|
||||||
|
console.log(event)
|
||||||
|
alert('ok', event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-submenu container-context-menu">
|
<div class="container-submenu container-context-menu">
|
||||||
<el-menu :default-active="activeMenu" :router="false" class="el-menu-demo" mode="horizontal" menu-trigger="hover" unique-opened @select="typeFormat">
|
<el-menu v-shortkey="{f2: ['f2'], f3: ['f3'], f5: ['f5'], f3:['ctrl', 'd']}" :default-active="activeMenu" :router="false" class="el-menu-demo" mode="horizontal" menu-trigger="hover" unique-opened @select="typeFormat" @shortkey.native="actionContextMenu">
|
||||||
<template>
|
<template>
|
||||||
<el-submenu v-if="relations !== undefined && relations.length" class="el-menu-item" index="1">
|
<el-submenu v-if="relations !== undefined && relations.length" class="el-menu-item" index="1">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
|
|
|
@ -192,6 +192,58 @@ export const contextMixin = {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showNotification,
|
showNotification,
|
||||||
|
actionContextMenu(event) {
|
||||||
|
console.log(event)
|
||||||
|
switch (event.srcKey) {
|
||||||
|
case 'f2':
|
||||||
|
this.$store.dispatch('resetPanelToNew', {
|
||||||
|
parentUuid: this.parentUuid,
|
||||||
|
containerUuid: this.containerUuid,
|
||||||
|
recordUuid: this.recordUuid,
|
||||||
|
panelType: 'window',
|
||||||
|
isNewRecord: true
|
||||||
|
})
|
||||||
|
break
|
||||||
|
case 'f3':
|
||||||
|
this.$store.dispatch('deleteEntity', {
|
||||||
|
parentUuid: this.parentUuid,
|
||||||
|
containerUuid: this.containerUuid,
|
||||||
|
recordUuid: this.recordUuid,
|
||||||
|
panelType: 'window',
|
||||||
|
isNewRecord: false
|
||||||
|
})
|
||||||
|
break
|
||||||
|
case 'f5':
|
||||||
|
if (this.panelType === 'window') {
|
||||||
|
this.$store.dispatch('getDataListTab', {
|
||||||
|
parentUuid: this.parentUuid,
|
||||||
|
containerUuid: this.containerUuid,
|
||||||
|
isRefreshPanel: true,
|
||||||
|
recordUuid: this.recordUuid
|
||||||
|
})
|
||||||
|
} else if (this.panelType === 'browser') {
|
||||||
|
this.$store.dispatch('getBrowserSearch', {
|
||||||
|
containerUuid: this.containerUuid,
|
||||||
|
isClearSelection: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
// this.$store.dispatch('resetPanelToNew', {
|
||||||
|
// parentUuid: this.parentUuid,
|
||||||
|
// containerUuid: this.containerUuid,
|
||||||
|
// recordUuid: this.recordUuid,
|
||||||
|
// panelType: 'window',
|
||||||
|
// isNewRecord: true
|
||||||
|
// })
|
||||||
|
// this.$store.dispatch('deleteEntity', {
|
||||||
|
// parentUuid: this.parentUuid,
|
||||||
|
// containerUuid: this.containerUuid,
|
||||||
|
// recordUuid: this.recordUuid,
|
||||||
|
// panelType: 'window',
|
||||||
|
// isNewRecord: false
|
||||||
|
// })
|
||||||
|
},
|
||||||
refreshData() {
|
refreshData() {
|
||||||
if (this.panelType === 'window') {
|
if (this.panelType === 'window') {
|
||||||
this.$store.dispatch('getDataListTab', {
|
this.$store.dispatch('getDataListTab', {
|
||||||
|
@ -331,6 +383,7 @@ export const contextMixin = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
runAction(action) {
|
runAction(action) {
|
||||||
|
console.log(action)
|
||||||
if (action.type === 'action') {
|
if (action.type === 'action') {
|
||||||
// run process or report
|
// run process or report
|
||||||
const fieldNotReady = this.$store.getters.isNotReadyForSubmit(this.$route.meta.uuid)
|
const fieldNotReady = this.$store.getters.isNotReadyForSubmit(this.$route.meta.uuid)
|
||||||
|
@ -407,6 +460,14 @@ export const contextMixin = {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
console.log('actionaction', action.action)
|
||||||
|
console.log('parentUuid:', this.parentUuid)
|
||||||
|
console.log('containerUuid:', this.containerUuid,)
|
||||||
|
console.log('recordUuid:', this.recordUuid)
|
||||||
|
console.log('panelType:', this.panelType)
|
||||||
|
console.log('isNewRecord:', action.action === 'resetPanelToNew')
|
||||||
|
console.log('tableName:', action.tableName)
|
||||||
|
console.log('recordId:', action.recordId)
|
||||||
this.$store.dispatch(action.action, {
|
this.$store.dispatch(action.action, {
|
||||||
parentUuid: this.parentUuid,
|
parentUuid: this.parentUuid,
|
||||||
containerUuid: this.containerUuid,
|
containerUuid: this.containerUuid,
|
||||||
|
@ -417,6 +478,7 @@ export const contextMixin = {
|
||||||
recordId: action.recordId
|
recordId: action.recordId
|
||||||
})
|
})
|
||||||
.then(response => {
|
.then(response => {
|
||||||
|
console.log(response)
|
||||||
if (response && response.isPrivateAccess) {
|
if (response && response.isPrivateAccess) {
|
||||||
this.validatePrivateAccess(response)
|
this.validatePrivateAccess(response)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
<el-collapse
|
<el-collapse
|
||||||
v-if="isParent && isAdvancedQuery"
|
v-if="isParent && isAdvancedQuery"
|
||||||
v-show="isAdvancedQuery"
|
v-show="isAdvancedQuery"
|
||||||
v-model="activeName"
|
v-model="activeNames"
|
||||||
accordion
|
v-shortkey="{f6: ['f6'], ctrlf: ['ctrl', 'f']}"
|
||||||
|
@shortkey.native="actionAdvancedQuery()"
|
||||||
>
|
>
|
||||||
<el-collapse-item :title="$t('table.dataTable.advancedQuery')" name="1">
|
<el-collapse-item :title="$t('table.dataTable.advancedQuery')" name="1">
|
||||||
<main-panel
|
<main-panel
|
||||||
|
@ -151,11 +152,13 @@
|
||||||
<el-table
|
<el-table
|
||||||
ref="multipleTable"
|
ref="multipleTable"
|
||||||
v-loading="$route.query.action !== 'create-new' && isLoaded"
|
v-loading="$route.query.action !== 'create-new' && isLoaded"
|
||||||
|
v-shortkey="{up: ['arrowup'], down: ['arrowdown'], left: ['arrowleft'], right: ['arrowright']}"
|
||||||
:height="getHeigthTable"
|
:height="getHeigthTable"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
border
|
border
|
||||||
:row-key="getterPanel.keyColumn"
|
:row-key="getterPanel.keyColumn"
|
||||||
reserve-selection
|
reserve-selection
|
||||||
|
highlight-current-row
|
||||||
:row-style="rowStyle"
|
:row-style="rowStyle"
|
||||||
:data="showTableSearch ? filterResult() : getterDataRecords"
|
:data="showTableSearch ? filterResult() : getterDataRecords"
|
||||||
:element-loading-text="$t('notifications.loading')"
|
:element-loading-text="$t('notifications.loading')"
|
||||||
|
@ -164,6 +167,7 @@
|
||||||
cell-class-name="datatable-max-cell-height"
|
cell-class-name="datatable-max-cell-height"
|
||||||
:show-summary="getterPanel.isShowedTotals"
|
:show-summary="getterPanel.isShowedTotals"
|
||||||
:summary-method="getSummaries"
|
:summary-method="getSummaries"
|
||||||
|
@shortkey.native="theAction"
|
||||||
@row-click="handleRowClick"
|
@row-click="handleRowClick"
|
||||||
@row-dblclick="handleRowDblClick"
|
@row-dblclick="handleRowDblClick"
|
||||||
@select="handleSelection"
|
@select="handleSelection"
|
||||||
|
@ -320,6 +324,10 @@ export default {
|
||||||
top: 0,
|
top: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
isOption: {},
|
isOption: {},
|
||||||
|
activeNames: ['0'],
|
||||||
|
focusTable: false,
|
||||||
|
currentRow: null,
|
||||||
|
currentTable: 0,
|
||||||
visible: this.getShowContextMenuTable,
|
visible: this.getShowContextMenuTable,
|
||||||
searchTable: '', // text from search
|
searchTable: '', // text from search
|
||||||
defaultMaxPagination: 100,
|
defaultMaxPagination: 100,
|
||||||
|
@ -577,6 +585,31 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
actionAdvancedQuery() {
|
||||||
|
if (this.activeNames < 1) {
|
||||||
|
this.activeNames = '1'
|
||||||
|
} else {
|
||||||
|
this.activeNames = '0'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setCurrent(row) {
|
||||||
|
this.$refs.multipleTable.setCurrentRow(row)
|
||||||
|
},
|
||||||
|
setCurrentParent(row) {
|
||||||
|
this.$refs.Parent.setCurrentRow(row)
|
||||||
|
},
|
||||||
|
theAction(event) {
|
||||||
|
switch (event.srcKey) {
|
||||||
|
case 'up':
|
||||||
|
this.currentTable = this.currentTable - 1
|
||||||
|
break
|
||||||
|
case 'down':
|
||||||
|
this.currentTable = this.currentTable + 1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
this.handleRowClick(this.getterDataRecords[this.currentTable])
|
||||||
|
return this.setCurrent(this.getterDataRecords[this.currentTable])
|
||||||
|
},
|
||||||
sortTab(actionSequence) {
|
sortTab(actionSequence) {
|
||||||
// TODO: Refactor and remove redundant dispatchs
|
// TODO: Refactor and remove redundant dispatchs
|
||||||
this.$store.dispatch('setShowDialog', {
|
this.$store.dispatch('setShowDialog', {
|
||||||
|
@ -941,6 +974,7 @@ export default {
|
||||||
row.isEdit = false
|
row.isEdit = false
|
||||||
},
|
},
|
||||||
handleRowClick(row, column, event) {
|
handleRowClick(row, column, event) {
|
||||||
|
this.currentTable = this.getterDataRecords.findIndex(item => item.UUID === row.UUID)
|
||||||
if (this.isShowedPanelRecord && this.isParent) {
|
if (this.isShowedPanelRecord && this.isParent) {
|
||||||
if (this.uuidCurrentRecordSelected !== row.UUID) {
|
if (this.uuidCurrentRecordSelected !== row.UUID) {
|
||||||
this.uuidCurrentRecordSelected = row.UUID
|
this.uuidCurrentRecordSelected = row.UUID
|
||||||
|
|
|
@ -52,6 +52,8 @@ Object.keys(globalMethods).forEach(key => {
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
Vue.use(require('vue-shortkey'))
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
router,
|
router,
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template slot="paneR">
|
<template slot="paneR">
|
||||||
<el-container style="height: 86vh;">
|
<el-container style="height: 86vh;">
|
||||||
<Split direction="vertical" @onDrag="onDrag">
|
<Split v-shortkey="['f8']" direction="vertical" @onDrag="onDrag" @shortkey.native="handleChangeShowedRecordNavigation">
|
||||||
<SplitArea :size="sizeAreaStyle" :style="splitAreaStyle">
|
<SplitArea :size="sizeAreaStyle" :style="splitAreaStyle">
|
||||||
<el-header style="height: 39px;">
|
<el-header style="height: 39px;">
|
||||||
<context-menu
|
<context-menu
|
||||||
|
|
Loading…
Reference in New Issue