antares/src/renderer/components/WorkspaceExploreBarMiscCont...

143 lines
4.1 KiB
Vue
Raw Normal View History

2021-01-02 14:46:27 +01:00
<template>
<BaseContextMenu
:context-event="contextEvent"
@close-context="closeContext"
>
<div
2021-01-06 11:57:49 +01:00
v-if="selectedMisc.type === 'procedure'"
class="context-element disabled"
@click="showRunModal"
2021-01-02 14:46:27 +01:00
>
2021-01-06 11:57:49 +01:00
<span class="d-flex"><i class="mdi mdi-18px mdi-play text-light pr-1" /> {{ $t('word.run') }}</span>
2021-01-02 14:46:27 +01:00
</div>
<div class="context-element" @click="showDeleteModal">
<span class="d-flex"><i class="mdi mdi-18px mdi-table-remove text-light pr-1" /> {{ $t('word.delete') }}</span>
</div>
<ConfirmModal
v-if="isDeleteModal"
@confirm="deleteMisc"
@hide="hideDeleteModal"
>
<template slot="header">
<div class="d-flex">
<i class="mdi mdi-24px mdi-delete mr-1" /> {{ deleteMessage }}
</div>
</template>
<div slot="body">
<div class="mb-2">
{{ $t('message.deleteCorfirm') }} "<b>{{ selectedMisc.name }}</b>"?
</div>
</div>
</ConfirmModal>
</BaseContextMenu>
</template>
<script>
import { mapGetters, mapActions } from 'vuex';
import BaseContextMenu from '@/components/BaseContextMenu';
import ConfirmModal from '@/components/BaseConfirmModal';
import Triggers from '@/ipc-api/Triggers';
2021-01-06 11:07:55 +01:00
import Routines from '@/ipc-api/Routines';
2021-01-02 14:46:27 +01:00
export default {
name: 'WorkspaceExploreBarMiscContext',
components: {
BaseContextMenu,
ConfirmModal
},
props: {
contextEvent: MouseEvent,
selectedMisc: Object
},
data () {
return {
isDeleteModal: false,
2021-01-06 11:57:49 +01:00
isRunModal: false
2021-01-02 14:46:27 +01:00
};
},
computed: {
...mapGetters({
selectedWorkspace: 'workspaces/getSelected',
getWorkspace: 'workspaces/getWorkspace'
}),
workspace () {
return this.getWorkspace(this.selectedWorkspace);
},
deleteMessage () {
switch (this.selectedMisc.type) {
case 'trigger':
return this.$t('message.deleteTrigger');
2021-01-06 11:07:55 +01:00
case 'procedure':
return this.$t('message.deleteRoutine');
2021-01-02 14:46:27 +01:00
default:
return '';
}
}
},
methods: {
...mapActions({
addNotification: 'notifications/addNotification',
changeBreadcrumbs: 'workspaces/changeBreadcrumbs'
}),
showCreateTableModal () {
this.$emit('show-create-table-modal');
},
showDeleteModal () {
this.isDeleteModal = true;
},
hideDeleteModal () {
this.isDeleteModal = false;
},
2021-01-06 11:57:49 +01:00
showRunModal () {
this.isRunModal = true;
2021-01-02 14:46:27 +01:00
},
2021-01-06 11:57:49 +01:00
hideRunModal () {
this.isRunModal = false;
2021-01-02 14:46:27 +01:00
},
closeContext () {
this.$emit('close-context');
},
async deleteMisc () {
try {
let res;
switch (this.selectedMisc.type) {
case 'trigger':
res = await Triggers.dropTrigger({
uid: this.selectedWorkspace,
trigger: this.selectedMisc.name
});
break;
2021-01-06 11:07:55 +01:00
case 'procedure':
res = await Routines.dropRoutine({
uid: this.selectedWorkspace,
routine: this.selectedMisc.name
});
break;
2021-01-02 14:46:27 +01:00
// case 'schedules':
// res = await Tables.dropScheduler({
// uid: this.selectedWorkspace,
// scheduler: this.selectedMisc.name
// });
// break;
}
const { status, response } = res;
if (status === 'success') {
this.changeBreadcrumbs({ [this.selectedMisc.type]: null });
this.closeContext();
this.$emit('reload');
}
else
this.addNotification({ status: 'error', message: response });
}
catch (err) {
this.addNotification({ status: 'error', message: err.stack });
}
}
}
};
</script>