mirror of
https://github.com/Fabio286/antares.git
synced 2025-06-05 21:59:22 +02:00
feat(UI): contextual menu shortcuts to create new elements on folders
This commit is contained in:
parent
439356a019
commit
0252a064d9
@ -47,6 +47,7 @@
|
|||||||
@show-schema-context="openSchemaContext"
|
@show-schema-context="openSchemaContext"
|
||||||
@show-table-context="openTableContext"
|
@show-table-context="openTableContext"
|
||||||
@show-misc-context="openMiscContext"
|
@show-misc-context="openMiscContext"
|
||||||
|
@show-misc-folder-context="openMiscFolderContext"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -125,6 +126,18 @@
|
|||||||
@close-context="closeMiscContext"
|
@close-context="closeMiscContext"
|
||||||
@reload="refresh"
|
@reload="refresh"
|
||||||
/>
|
/>
|
||||||
|
<MiscFolderContext
|
||||||
|
v-if="isMiscFolderContext"
|
||||||
|
:selected-misc="selectedMisc"
|
||||||
|
:context-event="miscContextEvent"
|
||||||
|
@show-create-trigger-modal="showCreateTriggerModal"
|
||||||
|
@show-create-routine-modal="showCreateRoutineModal"
|
||||||
|
@show-create-function-modal="showCreateFunctionModal"
|
||||||
|
@show-create-trigger-function-modal="showCreateTriggerFunctionModal"
|
||||||
|
@show-create-scheduler-modal="showCreateSchedulerModal"
|
||||||
|
@close-context="closeMiscFolderContext"
|
||||||
|
@reload="refresh"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -142,6 +155,7 @@ import WorkspaceExploreBarSchema from '@/components/WorkspaceExploreBarSchema';
|
|||||||
import DatabaseContext from '@/components/WorkspaceExploreBarSchemaContext';
|
import DatabaseContext from '@/components/WorkspaceExploreBarSchemaContext';
|
||||||
import TableContext from '@/components/WorkspaceExploreBarTableContext';
|
import TableContext from '@/components/WorkspaceExploreBarTableContext';
|
||||||
import MiscContext from '@/components/WorkspaceExploreBarMiscContext';
|
import MiscContext from '@/components/WorkspaceExploreBarMiscContext';
|
||||||
|
import MiscFolderContext from '@/components/WorkspaceExploreBarMiscFolderContext';
|
||||||
import ModalNewSchema from '@/components/ModalNewSchema';
|
import ModalNewSchema from '@/components/ModalNewSchema';
|
||||||
import ModalNewTable from '@/components/ModalNewTable';
|
import ModalNewTable from '@/components/ModalNewTable';
|
||||||
import ModalNewView from '@/components/ModalNewView';
|
import ModalNewView from '@/components/ModalNewView';
|
||||||
@ -158,6 +172,7 @@ export default {
|
|||||||
DatabaseContext,
|
DatabaseContext,
|
||||||
TableContext,
|
TableContext,
|
||||||
MiscContext,
|
MiscContext,
|
||||||
|
MiscFolderContext,
|
||||||
ModalNewSchema,
|
ModalNewSchema,
|
||||||
ModalNewTable,
|
ModalNewTable,
|
||||||
ModalNewView,
|
ModalNewView,
|
||||||
@ -190,6 +205,7 @@ export default {
|
|||||||
isDatabaseContext: false,
|
isDatabaseContext: false,
|
||||||
isTableContext: false,
|
isTableContext: false,
|
||||||
isMiscContext: false,
|
isMiscContext: false,
|
||||||
|
isMiscFolderContext: false,
|
||||||
|
|
||||||
databaseContextEvent: null,
|
databaseContextEvent: null,
|
||||||
tableContextEvent: null,
|
tableContextEvent: null,
|
||||||
@ -326,11 +342,20 @@ export default {
|
|||||||
this.miscContextEvent = payload.event;
|
this.miscContextEvent = payload.event;
|
||||||
this.isMiscContext = true;
|
this.isMiscContext = true;
|
||||||
},
|
},
|
||||||
|
openMiscFolderContext (payload) {
|
||||||
|
this.selectedMisc = payload.type;
|
||||||
|
this.miscContextEvent = payload.event;
|
||||||
|
this.isMiscFolderContext = true;
|
||||||
|
},
|
||||||
closeMiscContext () {
|
closeMiscContext () {
|
||||||
this.isMiscContext = false;
|
this.isMiscContext = false;
|
||||||
},
|
},
|
||||||
|
closeMiscFolderContext () {
|
||||||
|
this.isMiscFolderContext = false;
|
||||||
|
},
|
||||||
showCreateViewModal () {
|
showCreateViewModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewViewModal = true;
|
this.isNewViewModal = true;
|
||||||
},
|
},
|
||||||
hideCreateViewModal () {
|
hideCreateViewModal () {
|
||||||
@ -354,6 +379,7 @@ export default {
|
|||||||
},
|
},
|
||||||
showCreateTriggerModal () {
|
showCreateTriggerModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewTriggerModal = true;
|
this.isNewTriggerModal = true;
|
||||||
},
|
},
|
||||||
hideCreateTriggerModal () {
|
hideCreateTriggerModal () {
|
||||||
@ -378,6 +404,7 @@ export default {
|
|||||||
},
|
},
|
||||||
showCreateRoutineModal () {
|
showCreateRoutineModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewRoutineModal = true;
|
this.isNewRoutineModal = true;
|
||||||
},
|
},
|
||||||
hideCreateRoutineModal () {
|
hideCreateRoutineModal () {
|
||||||
@ -401,6 +428,7 @@ export default {
|
|||||||
},
|
},
|
||||||
showCreateFunctionModal () {
|
showCreateFunctionModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewFunctionModal = true;
|
this.isNewFunctionModal = true;
|
||||||
},
|
},
|
||||||
hideCreateFunctionModal () {
|
hideCreateFunctionModal () {
|
||||||
@ -408,6 +436,7 @@ export default {
|
|||||||
},
|
},
|
||||||
showCreateTriggerFunctionModal () {
|
showCreateTriggerFunctionModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewTriggerFunctionModal = true;
|
this.isNewTriggerFunctionModal = true;
|
||||||
},
|
},
|
||||||
hideCreateTriggerFunctionModal () {
|
hideCreateTriggerFunctionModal () {
|
||||||
@ -415,6 +444,7 @@ export default {
|
|||||||
},
|
},
|
||||||
showCreateSchedulerModal () {
|
showCreateSchedulerModal () {
|
||||||
this.closeDatabaseContext();
|
this.closeDatabaseContext();
|
||||||
|
this.closeMiscFolderContext();
|
||||||
this.isNewSchedulerModal = true;
|
this.isNewSchedulerModal = true;
|
||||||
},
|
},
|
||||||
hideCreateSchedulerModal () {
|
hideCreateSchedulerModal () {
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
<template>
|
||||||
|
<BaseContextMenu
|
||||||
|
:context-event="contextEvent"
|
||||||
|
@close-context="closeContext"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc === 'trigger'"
|
||||||
|
class="context-element"
|
||||||
|
@click="$emit('show-create-trigger-modal')"
|
||||||
|
>
|
||||||
|
<span class="d-flex"><i class="mdi mdi-18px mdi-table-cog text-light pr-1" /> {{ $t('message.createNewTrigger') }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc === 'procedure'"
|
||||||
|
class="context-element"
|
||||||
|
@click="$emit('show-create-routine-modal')"
|
||||||
|
>
|
||||||
|
<span class="d-flex"><i class="mdi mdi-18px mdi-sync-circle text-light pr-1" /> {{ $t('message.createNewRoutine') }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc === 'function'"
|
||||||
|
class="context-element"
|
||||||
|
@click="$emit('show-create-function-modal')"
|
||||||
|
>
|
||||||
|
<span class="d-flex"><i class="mdi mdi-18px mdi-arrow-right-bold-box text-light pr-1" /> {{ $t('message.createNewFunction') }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc === 'triggerFunction'"
|
||||||
|
class="context-element"
|
||||||
|
@click="$emit('show-create-trigger-function-modal')"
|
||||||
|
>
|
||||||
|
<span class="d-flex"><i class="mdi mdi-18px mdi-cog-clockwise text-light pr-1" /> {{ $t('message.createNewFunction') }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc === 'scheduler'"
|
||||||
|
class="context-element"
|
||||||
|
@click="$emit('show-create-scheduler-modal')"
|
||||||
|
>
|
||||||
|
<span class="d-flex"><i class="mdi mdi-18px mdi-calendar-clock text-light pr-1" /> {{ $t('message.createNewScheduler') }}</span>
|
||||||
|
</div>
|
||||||
|
</BaseContextMenu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters, mapActions } from 'vuex';
|
||||||
|
import BaseContextMenu from '@/components/BaseContextMenu';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'WorkspaceExploreBarMiscContext',
|
||||||
|
components: {
|
||||||
|
BaseContextMenu
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
contextEvent: MouseEvent,
|
||||||
|
selectedMisc: String
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
localElement: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
selectedWorkspace: 'workspaces/getSelected',
|
||||||
|
getWorkspace: 'workspaces/getWorkspace'
|
||||||
|
}),
|
||||||
|
workspace () {
|
||||||
|
return this.getWorkspace(this.selectedWorkspace);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions({
|
||||||
|
addNotification: 'notifications/addNotification',
|
||||||
|
changeBreadcrumbs: 'workspaces/changeBreadcrumbs'
|
||||||
|
}),
|
||||||
|
showCreateTableModal () {
|
||||||
|
this.$emit('show-create-table-modal');
|
||||||
|
},
|
||||||
|
showDeleteModal () {
|
||||||
|
this.isDeleteModal = true;
|
||||||
|
},
|
||||||
|
hideDeleteModal () {
|
||||||
|
this.isDeleteModal = false;
|
||||||
|
},
|
||||||
|
showAskParamsModal () {
|
||||||
|
this.isAskingParameters = true;
|
||||||
|
},
|
||||||
|
hideAskParamsModal () {
|
||||||
|
this.isAskingParameters = false;
|
||||||
|
this.closeContext();
|
||||||
|
},
|
||||||
|
closeContext () {
|
||||||
|
this.$emit('close-context');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
@ -39,7 +39,11 @@
|
|||||||
|
|
||||||
<div v-if="filteredTriggers.length && customizations.triggers" class="database-misc">
|
<div v-if="filteredTriggers.length && customizations.triggers" class="database-misc">
|
||||||
<details class="accordion">
|
<details class="accordion">
|
||||||
<summary class="accordion-header misc-name" :class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.trigger}">
|
<summary
|
||||||
|
class="accordion-header misc-name"
|
||||||
|
:class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.trigger}"
|
||||||
|
@contextmenu.prevent="showMiscFolderContext($event, 'trigger')"
|
||||||
|
>
|
||||||
<i class="misc-icon mdi mdi-18px mdi-folder-cog mr-1" />
|
<i class="misc-icon mdi mdi-18px mdi-folder-cog mr-1" />
|
||||||
{{ $tc('word.trigger', 2) }}
|
{{ $tc('word.trigger', 2) }}
|
||||||
</summary>
|
</summary>
|
||||||
@ -67,7 +71,11 @@
|
|||||||
|
|
||||||
<div v-if="filteredProcedures.length && customizations.routines" class="database-misc">
|
<div v-if="filteredProcedures.length && customizations.routines" class="database-misc">
|
||||||
<details class="accordion">
|
<details class="accordion">
|
||||||
<summary class="accordion-header misc-name" :class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.procedure}">
|
<summary
|
||||||
|
class="accordion-header misc-name"
|
||||||
|
:class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.procedure}"
|
||||||
|
@contextmenu.prevent="showMiscFolderContext($event, 'procedure')"
|
||||||
|
>
|
||||||
<i class="misc-icon mdi mdi-18px mdi-folder-sync mr-1" />
|
<i class="misc-icon mdi mdi-18px mdi-folder-sync mr-1" />
|
||||||
{{ $tc('word.storedRoutine', 2) }}
|
{{ $tc('word.storedRoutine', 2) }}
|
||||||
</summary>
|
</summary>
|
||||||
@ -95,7 +103,11 @@
|
|||||||
|
|
||||||
<div v-if="filteredTriggerFunctions.length && customizations.triggerFunctions" class="database-misc">
|
<div v-if="filteredTriggerFunctions.length && customizations.triggerFunctions" class="database-misc">
|
||||||
<details class="accordion">
|
<details class="accordion">
|
||||||
<summary class="accordion-header misc-name" :class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.triggerFunction}">
|
<summary
|
||||||
|
class="accordion-header misc-name"
|
||||||
|
:class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.triggerFunction}"
|
||||||
|
@contextmenu.prevent="showMiscFolderContext($event, 'triggerFunction')"
|
||||||
|
>
|
||||||
<i class="misc-icon mdi mdi-18px mdi-folder-refresh mr-1" />
|
<i class="misc-icon mdi mdi-18px mdi-folder-refresh mr-1" />
|
||||||
{{ $tc('word.triggerFunction', 2) }}
|
{{ $tc('word.triggerFunction', 2) }}
|
||||||
</summary>
|
</summary>
|
||||||
@ -123,7 +135,11 @@
|
|||||||
|
|
||||||
<div v-if="filteredFunctions.length && customizations.functions" class="database-misc">
|
<div v-if="filteredFunctions.length && customizations.functions" class="database-misc">
|
||||||
<details class="accordion">
|
<details class="accordion">
|
||||||
<summary class="accordion-header misc-name" :class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.function}">
|
<summary
|
||||||
|
class="accordion-header misc-name"
|
||||||
|
:class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.function}"
|
||||||
|
@contextmenu.prevent="showMiscFolderContext($event, 'function')"
|
||||||
|
>
|
||||||
<i class="misc-icon mdi mdi-18px mdi-folder-move mr-1" />
|
<i class="misc-icon mdi mdi-18px mdi-folder-move mr-1" />
|
||||||
{{ $tc('word.function', 2) }}
|
{{ $tc('word.function', 2) }}
|
||||||
</summary>
|
</summary>
|
||||||
@ -151,7 +167,11 @@
|
|||||||
|
|
||||||
<div v-if="filteredSchedulers.length && customizations.schedulers" class="database-misc">
|
<div v-if="filteredSchedulers.length && customizations.schedulers" class="database-misc">
|
||||||
<details class="accordion">
|
<details class="accordion">
|
||||||
<summary class="accordion-header misc-name" :class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.scheduler}">
|
<summary
|
||||||
|
class="accordion-header misc-name"
|
||||||
|
:class="{'text-bold': breadcrumbs.schema === database.name && breadcrumbs.scheduler}"
|
||||||
|
@contextmenu.prevent="showMiscFolderContext($event, 'scheduler')"
|
||||||
|
>
|
||||||
<i class="misc-icon mdi mdi-18px mdi-folder-clock mr-1" />
|
<i class="misc-icon mdi mdi-18px mdi-folder-clock mr-1" />
|
||||||
{{ $tc('word.scheduler', 2) }}
|
{{ $tc('word.scheduler', 2) }}
|
||||||
</summary>
|
</summary>
|
||||||
@ -271,6 +291,11 @@ export default {
|
|||||||
this.setBreadcrumbs({ schema: this.database.name, [misc.type]: misc.name });
|
this.setBreadcrumbs({ schema: this.database.name, [misc.type]: misc.name });
|
||||||
this.$emit('show-misc-context', { event, misc });
|
this.$emit('show-misc-context', { event, misc });
|
||||||
},
|
},
|
||||||
|
showMiscFolderContext (event, type) {
|
||||||
|
this.selectSchema(this.database.name);
|
||||||
|
this.setBreadcrumbs({ schema: this.database.name, type });
|
||||||
|
this.$emit('show-misc-folder-context', { event, type });
|
||||||
|
},
|
||||||
piePercentage (val) {
|
piePercentage (val) {
|
||||||
const perc = val / this.maxSize * 100;
|
const perc = val / this.maxSize * 100;
|
||||||
if (this.applicationTheme === 'dark')
|
if (this.applicationTheme === 'dark')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user