tiny-rdm/frontend/src/stores/dialog.js

230 lines
6.1 KiB
JavaScript

import { defineStore } from 'pinia'
import useConnectionStore from './connections.js'
import { assignWith, isEmpty } from 'lodash'
/**
* connection dialog type
* @enum {number}
*/
export const ConnDialogType = {
NEW: 0,
EDIT: 1,
}
const useDialogStore = defineStore('dialog', {
state: () => ({
connDialogVisible: false,
/** @type {ConnDialogType} **/
connType: ConnDialogType.NEW,
connParam: null,
groupDialogVisible: false,
editGroup: '',
/**
* @property {string} prefix
* @property {string} server
* @property {int} db
*/
newKeyParam: {
prefix: '',
server: '',
db: 0,
},
newKeyDialogVisible: false,
keyFilterParam: {
server: '',
db: 0,
type: '',
pattern: '*',
},
keyFilterDialogVisible: false,
addFieldParam: {
server: '',
db: 0,
key: '',
keyCode: null,
type: null,
},
addFieldsDialogVisible: false,
renameKeyParam: {
server: '',
db: 0,
key: '',
},
renameDialogVisible: false,
deleteKeyParam: {
server: '',
db: 0,
key: '',
},
deleteKeyDialogVisible: false,
selectTTL: -1,
ttlDialogVisible: false,
preferencesDialogVisible: false,
aboutDialogVisible: false,
}),
actions: {
openNewDialog() {
this.connParam = null
this.connType = ConnDialogType.NEW
this.connDialogVisible = true
},
closeConnDialog() {
this.connDialogVisible = false
},
async openEditDialog(name) {
const connStore = useConnectionStore()
const profile = await connStore.getConnectionProfile(name)
this.connParam = connStore.mergeConnectionProfile(connStore.newDefaultConnection(name), profile)
this.connType = ConnDialogType.EDIT
this.connDialogVisible = true
},
async openDuplicateDialog(name) {
const connStore = useConnectionStore()
const profile = await connStore.getConnectionProfile(name)
if (profile != null) {
profile.name += '2'
this.connParam = profile
} else {
this.connParam = connStore.newDefaultConnection(name)
}
this.connType = ConnDialogType.NEW
this.connDialogVisible = true
},
openNewGroupDialog() {
this.editGroup = ''
this.groupDialogVisible = true
},
closeNewGroupDialog() {
this.groupDialogVisible = false
},
/**
*
* @param {string} server
* @param {number} db
* @param {string} [pattern]
* @param {string} [type]
*/
openKeyFilterDialog(server, db, pattern, type) {
this.keyFilterParam.server = server
this.keyFilterParam.db = db
this.keyFilterParam.type = type || ''
this.keyFilterParam.pattern = pattern || '*'
this.keyFilterDialogVisible = true
},
closeKeyFilterDialog() {
this.keyFilterDialogVisible = false
},
/**
*
* @param {string} name
*/
openRenameGroupDialog(name) {
this.editGroup = name
this.groupDialogVisible = true
},
closeRenameGroupDialog() {
this.groupDialogVisible = false
},
/**
*
* @param {string} server
* @param {number} db
* @param {string} key
*/
openRenameKeyDialog(server, db, key) {
this.renameKeyParam.server = server
this.renameKeyParam.db = db
this.renameKeyParam.key = key
this.renameDialogVisible = true
},
closeRenameKeyDialog() {
this.renameDialogVisible = false
},
openDeleteKeyDialog(server, db, key) {
this.deleteKeyParam.server = server
this.deleteKeyParam.db = db
this.deleteKeyParam.key = key
this.deleteKeyDialogVisible = true
},
closeDeleteKeyDialog() {
this.deleteKeyDialogVisible = false
},
/**
*
* @param {string} prefix
* @param {string} server
* @param {number} db
*/
openNewKeyDialog(prefix, server, db) {
this.newKeyParam.prefix = prefix
this.newKeyParam.server = server
this.newKeyParam.db = db
this.newKeyDialogVisible = true
},
closeNewKeyDialog() {
this.newKeyDialogVisible = false
},
/**
*
* @param {string} server
* @param {number} db
* @param {string} key
* @param {number[]|null} keyCode
* @param {string} type
*/
openAddFieldsDialog(server, db, key, keyCode, type) {
this.addFieldParam.server = server
this.addFieldParam.db = db
this.addFieldParam.key = key
this.addFieldParam.keyCode = keyCode
this.addFieldParam.type = type
this.addFieldsDialogVisible = true
},
closeAddFieldsDialog() {
this.addFieldsDialogVisible = false
},
openTTLDialog(ttl) {
this.selectTTL = ttl
this.ttlDialogVisible = true
},
closeTTLDialog() {
this.selectTTL = -1
this.ttlDialogVisible = false
},
openPreferencesDialog() {
this.preferencesDialogVisible = true
},
closePreferencesDialog() {
this.preferencesDialogVisible = false
},
openAboutDialog() {
this.aboutDialogVisible = true
},
closeAboutDialog() {
this.aboutDialogVisible = false
},
},
})
export default useDialogStore