mirror of https://github.com/Fabio286/antares.git
feat: added more events in shortcuts setting
This commit is contained in:
parent
8eb127e458
commit
5043fafa93
|
@ -8,6 +8,9 @@ export const shortcutEvents: { [key: string]: { l18n: string; l18nParam?: string
|
|||
'query-history': { l18n: 'message.queryHistory', context: 'tab' },
|
||||
'clear-query': { l18n: 'message.clearQuery', context: 'tab' },
|
||||
'open-all-connections': { l18n: 'message.openAllConnections' },
|
||||
'open-filter': { l18n: 'message.openFilter' },
|
||||
'next-page': { l18n: 'message.nextResultsPage' },
|
||||
'prev-page': { l18n: 'message.previousResultsPage' },
|
||||
'toggle-console': { l18n: 'message.toggleConsole' },
|
||||
'save-content': { l18n: 'message.saveContent' },
|
||||
'run-or-reload': { l18n: 'message.runOrReload' },
|
||||
|
@ -87,6 +90,21 @@ const shortcuts: ShortcutRecord[] = [
|
|||
keys: ['CommandOrControl+PageUp'],
|
||||
os: ['linux', 'win32']
|
||||
},
|
||||
{
|
||||
event: 'open-filter',
|
||||
keys: ['CommandOrControl+F'],
|
||||
os: ['darwin', 'linux', 'win32']
|
||||
},
|
||||
{
|
||||
event: 'next-page',
|
||||
keys: ['CommandOrControl+Right'],
|
||||
os: ['darwin', 'linux', 'win32']
|
||||
},
|
||||
{
|
||||
event: 'prev-page',
|
||||
keys: ['CommandOrControl+Left'],
|
||||
os: ['darwin', 'linux', 'win32']
|
||||
},
|
||||
{
|
||||
event: 'open-all-connections',
|
||||
keys: ['Shift+CommandOrControl+Space'],
|
||||
|
|
|
@ -67,10 +67,6 @@ const { changeApplicationTheme } = settingsStore;
|
|||
|
||||
const isAllConnectionsModal: Ref<boolean> = ref(false);
|
||||
|
||||
ipcRenderer.on('open-all-connections', () => {
|
||||
isAllConnectionsModal.value = true;
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
setTimeout(() => {
|
||||
changeApplicationTheme(applicationTheme.value);// Forces persistentStore to save on file and mail process
|
||||
|
@ -78,6 +74,22 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
});
|
||||
|
||||
onMounted(() => {
|
||||
ipcRenderer.on('open-all-connections', () => {
|
||||
isAllConnectionsModal.value = true;
|
||||
});
|
||||
|
||||
ipcRenderer.on('open-scratchpad', () => {
|
||||
isScratchpad.value = true;
|
||||
});
|
||||
|
||||
ipcRenderer.on('open-settings', () => {
|
||||
isSettingModal.value = true;
|
||||
});
|
||||
|
||||
ipcRenderer.on('create-connection', () => {
|
||||
workspacesStore.selectWorkspace('NEW');
|
||||
});
|
||||
|
||||
ipcRenderer.send('check-for-updates');
|
||||
checkVersionUpdate();
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm mr-0 pr-1 d-flex"
|
||||
:class="{'loading':isQuering}"
|
||||
:title="`${t('word.refresh')} (F5)`"
|
||||
:title="`${t('word.refresh')}`"
|
||||
@click="getProcessesList"
|
||||
>
|
||||
<i v-if="!+autorefreshTimer" class="mdi mdi-24px mdi-refresh mr-1" />
|
||||
|
@ -135,6 +135,7 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import { Component, computed, onBeforeUnmount, onMounted, onUpdated, Prop, Ref, ref } from 'vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
import { ConnectionParams } from 'common/interfaces/antares';
|
||||
import { exportRows } from '../libs/exportRows';
|
||||
import { useNotificationsStore } from '@/stores/notifications';
|
||||
|
@ -326,10 +327,10 @@ const onKey = (e:KeyboardEvent) => {
|
|||
e.stopPropagation();
|
||||
if (e.key === 'Escape')
|
||||
closeModal();
|
||||
if (e.key === 'F5')
|
||||
getProcessesList();
|
||||
};
|
||||
|
||||
ipcRenderer.on('run-or-reload', getProcessesList);
|
||||
|
||||
window.addEventListener('keydown', onKey, { capture: true });
|
||||
|
||||
onMounted(() => {
|
||||
|
@ -348,6 +349,8 @@ onBeforeUnmount(() => {
|
|||
window.removeEventListener('keydown', onKey, { capture: true });
|
||||
window.removeEventListener('resize', resizeResults);
|
||||
clearInterval(refreshInterval.value);
|
||||
|
||||
ipcRenderer.removeListener('run-or-reload', getProcessesList);
|
||||
});
|
||||
|
||||
defineExpose({ refreshScroller });
|
||||
|
|
|
@ -553,7 +553,7 @@ setDefaults();
|
|||
|
||||
setTimeout(() => {
|
||||
if (firstInput.value) firstInput.value.focus();
|
||||
}, 20);
|
||||
}, 200);
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
@ -188,8 +188,6 @@ const deleteMisc = async () => {
|
|||
break;
|
||||
}
|
||||
|
||||
console.log(res);
|
||||
|
||||
const { status, response } = res;
|
||||
|
||||
if (status === 'success') {
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -189,6 +188,7 @@ import WorkspaceTabPropsFunctionParamsModal from '@/components/WorkspaceTabProps
|
|||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { FunctionInfos, FunctionParam } from 'common/interfaces/antares';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -300,14 +300,10 @@ const hideParamsModal = () => {
|
|||
isParamsModal.value = false;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -341,19 +337,19 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -161,6 +160,7 @@ import WorkspaceTabPropsRoutineParamsModal from '@/components/WorkspaceTabPropsR
|
|||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { FunctionParam } from 'common/interfaces/antares';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -272,14 +272,10 @@ const hideParamsModal = () => {
|
|||
isParamsModal.value = false;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -313,19 +309,19 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -138,6 +137,7 @@ import QueryEditor from '@/components/QueryEditor.vue';
|
|||
import WorkspaceTabPropsSchedulerTimingModal from '@/components/WorkspaceTabPropsSchedulerTimingModal.vue';
|
||||
import Schedulers from '@/ipc-api/Schedulers';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -259,14 +259,10 @@ const timingUpdate = (options: EventInfos) => {
|
|||
localScheduler.value = options;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -298,19 +294,19 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged || !isValid"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -175,6 +174,7 @@ import WorkspaceTabPropsTableForeignModal from '@/components/WorkspaceTabPropsTa
|
|||
import WorkspaceTabNewTableEmptyState from '@/components/WorkspaceTabNewTableEmptyState.vue';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ConnectionParams, TableField, TableForeign, TableIndex, TableOptions } from 'common/interfaces/antares';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -420,14 +420,10 @@ const foreignsUpdate = (foreigns: TableForeign[]) => {
|
|||
localKeyUsage.value = foreigns;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -447,18 +443,19 @@ tableOptions.value = {
|
|||
};
|
||||
|
||||
localOptions.value = JSON.parse(JSON.stringify(tableOptions.value));
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -126,6 +125,7 @@ import QueryEditor from '@/components/QueryEditor.vue';
|
|||
import BaseLoader from '@/components/BaseLoader.vue';
|
||||
import Triggers from '@/ipc-api/Triggers';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -268,14 +268,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -305,12 +301,12 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
|
@ -323,6 +319,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -105,6 +104,7 @@ import BaseLoader from '@/components/BaseLoader.vue';
|
|||
import QueryEditor from '@/components/QueryEditor.vue';
|
||||
import Functions from '@/ipc-api/Functions';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -203,14 +203,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
originalFunction.value = {
|
||||
|
@ -237,12 +233,12 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
|
@ -255,6 +251,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -115,6 +114,7 @@ import BaseLoader from '@/components/BaseLoader.vue';
|
|||
import QueryEditor from '@/components/QueryEditor.vue';
|
||||
import Views from '@/ipc-api/Views';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -216,14 +216,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.isSelected, (val) => {
|
||||
|
@ -259,12 +255,12 @@ setTimeout(() => {
|
|||
resizeQueryEditor();
|
||||
}, 50);
|
||||
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
if (props.isSelected)
|
||||
changeBreadcrumbs({ schema: props.schema });
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
|
||||
setTimeout(() => {
|
||||
firstInput.value.focus();
|
||||
}, 100);
|
||||
|
@ -277,7 +273,7 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -207,6 +206,7 @@ import Functions from '@/ipc-api/Functions';
|
|||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { AlterFunctionParams, FunctionInfos, FunctionParam } from 'common/interfaces/antares';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -407,14 +407,10 @@ const hideAskParamsModal = () => {
|
|||
isAskingParameters.value = false;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.keyCode === 83) { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -457,11 +453,12 @@ watch(consoleHeight, () => {
|
|||
(async () => {
|
||||
await getFunctionData();
|
||||
queryEditor.value.editor.session.setValue(localFunction.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -469,6 +466,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -179,6 +178,7 @@ import BaseLoader from '@/components/BaseLoader.vue';
|
|||
import WorkspaceTabPropsRoutineParamsModal from '@/components/WorkspaceTabPropsRoutineParamsModal.vue';
|
||||
import ModalAskParameters from '@/components/ModalAskParameters.vue';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -377,14 +377,10 @@ const hideAskParamsModal = () => {
|
|||
isAskingParameters.value = false;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -427,11 +423,12 @@ watch(consoleHeight, () => {
|
|||
(async () => {
|
||||
await getRoutineData();
|
||||
queryEditor.value.editor.session.setValue(localRoutine.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -439,7 +436,7 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -136,6 +135,7 @@ import QueryEditor from '@/components/QueryEditor.vue';
|
|||
import WorkspaceTabPropsSchedulerTimingModal from '@/components/WorkspaceTabPropsSchedulerTimingModal.vue';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import Schedulers from '@/ipc-api/Schedulers';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -295,14 +295,10 @@ const timingUpdate = (options: EventInfos) => {
|
|||
localScheduler.value = options;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -345,11 +341,12 @@ watch(consoleHeight, () => {
|
|||
(async () => {
|
||||
await getSchedulerData();
|
||||
queryEditor.value.editor.session.setValue(localScheduler.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -357,7 +354,7 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -173,7 +172,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Component, computed, onBeforeUnmount, Ref, ref, watch } from 'vue';
|
||||
import { Component, computed, onBeforeUnmount, onMounted, Ref, ref, watch } from 'vue';
|
||||
import { AlterTableParams, TableField, TableForeign, TableIndex, TableInfos, TableOptions } from 'common/interfaces/antares';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
@ -186,6 +185,7 @@ import BaseSelect from '@/components/BaseSelect.vue';
|
|||
import WorkspaceTabPropsTableFields from '@/components/WorkspaceTabPropsTableFields.vue';
|
||||
import WorkspaceTabPropsTableIndexesModal from '@/components/WorkspaceTabPropsTableIndexesModal.vue';
|
||||
import WorkspaceTabPropsTableForeignModal from '@/components/WorkspaceTabPropsTableForeignModal.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -646,14 +646,10 @@ const foreignsUpdate = (foreigns: TableForeign[]) => {
|
|||
localKeyUsage.value = foreigns;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, () => {
|
||||
|
@ -684,9 +680,12 @@ watch(isChanged, (val) => {
|
|||
});
|
||||
|
||||
getFieldsData();
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
onMounted(() => {
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -126,6 +125,7 @@ import QueryEditor from '@/components/QueryEditor.vue';
|
|||
import BaseLoader from '@/components/BaseLoader.vue';
|
||||
import Triggers from '@/ipc-api/Triggers';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
type TriggerEventName = 'INSERT' | 'UPDATE' | 'DELETE'
|
||||
|
||||
|
@ -318,14 +318,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -359,11 +355,12 @@ watch(consoleHeight, () => {
|
|||
(async () => {
|
||||
await getTriggerData();
|
||||
queryEditor.value.editor.session.setValue(localTrigger.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -371,6 +368,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -93,6 +92,7 @@ import QueryEditor from '@/components/QueryEditor.vue';
|
|||
import Functions from '@/ipc-api/Functions';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { AlterFunctionParams, TriggerFunctionInfos } from 'common/interfaces/antares';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -223,14 +223,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -264,11 +260,12 @@ watch(isChanged, (val) => {
|
|||
(async () => {
|
||||
await getFunctionData();
|
||||
queryEditor.value.editor.session.setValue(localFunction.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -276,6 +273,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:disabled="!isChanged"
|
||||
:class="{'loading':isSaving}"
|
||||
title="CTRL+S"
|
||||
@click="saveChanges"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-content-save mr-1" />
|
||||
|
@ -112,6 +111,7 @@ import BaseLoader from '@/components/BaseLoader.vue';
|
|||
import QueryEditor from '@/components/QueryEditor.vue';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import Views from '@/ipc-api/Views';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -245,14 +245,10 @@ const resizeQueryEditor = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.ctrlKey && e.key === 's') { // CTRL + S
|
||||
if (isChanged.value)
|
||||
saveChanges();
|
||||
}
|
||||
}
|
||||
const saveContentListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen && isChanged.value)
|
||||
saveChanges();
|
||||
};
|
||||
|
||||
watch(() => props.schema, async () => {
|
||||
|
@ -288,11 +284,12 @@ watch(isChanged, (val) => {
|
|||
(async () => {
|
||||
await getViewData();
|
||||
queryEditor.value.editor.session.setValue(localView.value.sql);
|
||||
window.addEventListener('keydown', onKey);
|
||||
})();
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', resizeQueryEditor);
|
||||
|
||||
ipcRenderer.on('save-content', saveContentListener);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
|
@ -300,6 +297,6 @@ onUnmounted(() => {
|
|||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
ipcRenderer.removeListener('save-content', saveContentListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
v-show="isSelected"
|
||||
class="workspace-query-tab column col-12 columns col-gapless no-outline p-0"
|
||||
tabindex="0"
|
||||
@keydown.f5="runQuery(query)"
|
||||
@keydown.k="killTabQuery"
|
||||
@keydown.ctrl.alt.w="clear"
|
||||
@keydown.ctrl.b="beautify"
|
||||
@keydown.ctrl.g="openHistoryModal"
|
||||
>
|
||||
<div class="workspace-query-runner column col-12">
|
||||
<QueryEditor
|
||||
|
@ -40,7 +35,6 @@
|
|||
class="btn btn-primary btn-sm"
|
||||
:class="{'loading':isQuering}"
|
||||
:disabled="!query"
|
||||
title="F5"
|
||||
@click="runQuery(query)"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-play pr-1" />
|
||||
|
@ -68,7 +62,6 @@
|
|||
<button
|
||||
class="btn btn-link btn-sm mr-0"
|
||||
:disabled="!query || isQuering"
|
||||
title="CTRL+W"
|
||||
@click="clear()"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-delete-sweep pr-1" />
|
||||
|
@ -80,7 +73,6 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm"
|
||||
:disabled="!query || isQuering"
|
||||
title="CTRL+B"
|
||||
@click="beautify()"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-brush pr-1" />
|
||||
|
@ -89,7 +81,6 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm"
|
||||
:disabled="isQuering"
|
||||
title="CTRL+G"
|
||||
@click="openHistoryModal()"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-history pr-1" />
|
||||
|
@ -206,6 +197,7 @@ import WorkspaceTabQueryTable from '@/components/WorkspaceTabQueryTable.vue';
|
|||
import WorkspaceTabQueryEmptyState from '@/components/WorkspaceTabQueryEmptyState.vue';
|
||||
import ModalHistory from '@/components/ModalHistory.vue';
|
||||
import BaseSelect from '@/components/BaseSelect.vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
|
@ -427,7 +419,8 @@ const beautify = () => {
|
|||
const formattedQuery = format(query.value, {
|
||||
language,
|
||||
uppercase: true
|
||||
});
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} as any);
|
||||
queryEditor.value.editor.session.setValue(formattedQuery);
|
||||
}
|
||||
};
|
||||
|
@ -499,12 +492,47 @@ selectedSchema.value = props.tab.schema || breadcrumbsSchema.value;
|
|||
if (!databaseSchemas.value.includes(selectedSchema.value))
|
||||
selectedSchema.value = null;
|
||||
|
||||
// window.addEventListener('keydown', onKey);
|
||||
window.addEventListener('resize', onWindowResize);
|
||||
|
||||
const reloadListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
runQuery(query.value);
|
||||
};
|
||||
|
||||
const formatListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
beautify();
|
||||
};
|
||||
|
||||
const killQueryListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
killTabQuery();
|
||||
};
|
||||
|
||||
const clearQueryListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
clear();
|
||||
};
|
||||
|
||||
const historyListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
openHistoryModal();
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
const localResizer = resizer.value;
|
||||
|
||||
ipcRenderer.on('run-or-reload', reloadListener);
|
||||
ipcRenderer.on('format-query', formatListener);
|
||||
ipcRenderer.on('kill-query', killQueryListener);
|
||||
ipcRenderer.on('clear-query', clearQueryListener);
|
||||
ipcRenderer.on('query-history', historyListener);
|
||||
|
||||
localResizer.addEventListener('mousedown', (e: MouseEvent) => {
|
||||
e.preventDefault();
|
||||
|
||||
|
@ -518,12 +546,17 @@ onMounted(() => {
|
|||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('resize', onWindowResize);
|
||||
// window.removeEventListener('keydown', onKey);
|
||||
const params = {
|
||||
uid: props.connection.uid,
|
||||
tabUid: props.tab.uid
|
||||
};
|
||||
Schema.destroyConnectionToCommit(params);
|
||||
|
||||
ipcRenderer.removeListener('run-or-reload', reloadListener);
|
||||
ipcRenderer.removeListener('format-query', formatListener);
|
||||
ipcRenderer.removeListener('kill-query', killQueryListener);
|
||||
ipcRenderer.removeListener('clear-query', clearQueryListener);
|
||||
ipcRenderer.removeListener('query-history', historyListener);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm mr-0 pr-1"
|
||||
:class="{'loading':isQuering}"
|
||||
:title="`${t('word.refresh')} (F5)`"
|
||||
:title="`${t('word.refresh')}`"
|
||||
@click="reloadTable"
|
||||
>
|
||||
<i v-if="!+autorefreshTimer" class="mdi mdi-24px mdi-refresh mr-1" />
|
||||
|
@ -35,7 +35,7 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm mr-0"
|
||||
:disabled="isQuering || page === 1"
|
||||
title="CTRL+ᐊ"
|
||||
:title="t('message.previousResultsPage')"
|
||||
@click="pageChange('prev')"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-skip-previous" />
|
||||
|
@ -61,7 +61,7 @@
|
|||
<button
|
||||
class="btn btn-dark btn-sm mr-0"
|
||||
:disabled="isQuering || (results.length && results[0].rows.length < limit)"
|
||||
title="CTRL+ᐅ"
|
||||
:title="t('message.nextResultsPage')"
|
||||
@click="pageChange('next')"
|
||||
>
|
||||
<i class="mdi mdi-24px mdi-skip-next" />
|
||||
|
@ -72,7 +72,7 @@
|
|||
|
||||
<button
|
||||
class="btn btn-sm"
|
||||
:title="`${t('word.filter')} (CTRL+F)`"
|
||||
:title="t('word.filter')"
|
||||
:class="{'btn-primary': isSearch, 'btn-dark': !isSearch}"
|
||||
@click="isSearch = !isSearch"
|
||||
>
|
||||
|
@ -190,6 +190,7 @@ import ModalFakerRows from '@/components/ModalFakerRows.vue';
|
|||
import { ConnectionParams } from 'common/interfaces/antares';
|
||||
import { TableFilterClausole } from 'common/interfaces/tableApis';
|
||||
import { useFilters } from '@/composables/useFilters';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
const { localeString } = useFilters();
|
||||
|
||||
|
@ -342,7 +343,6 @@ const pageChange = (direction: 'prev' | 'next') => {
|
|||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const showFakerModal = (row?: any) => {
|
||||
console.log(row);
|
||||
if (isQuering.value) return;
|
||||
isFakerModal.value = true;
|
||||
rowToDuplicate.value = row;
|
||||
|
@ -353,23 +353,6 @@ const hideFakerModal = () => {
|
|||
rowToDuplicate.value = null;
|
||||
};
|
||||
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
if (props.isSelected) {
|
||||
e.stopPropagation();
|
||||
if (e.key === 'F5')
|
||||
reloadTable();
|
||||
|
||||
if (e.ctrlKey || e.metaKey) {
|
||||
if (e.key === 'ArrowRight')
|
||||
pageChange('next');
|
||||
if (e.key === 'ArrowLeft')
|
||||
pageChange('prev');
|
||||
if (e.key === 'f')
|
||||
isSearch.value = !isSearch.value;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const setRefreshInterval = () => {
|
||||
if (refreshInterval.value)
|
||||
clearInterval(refreshInterval.value);
|
||||
|
@ -401,6 +384,30 @@ const updateFilters = (clausoles: TableFilterClausole[]) => {
|
|||
getTableData();
|
||||
};
|
||||
|
||||
const reloadListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
reloadTable();
|
||||
};
|
||||
|
||||
const openFilterListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
isSearch.value = !isSearch.value;
|
||||
};
|
||||
|
||||
const nextPageListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
pageChange('next');
|
||||
};
|
||||
|
||||
const prevPageListener = () => {
|
||||
const hasModalOpen = !!document.querySelectorAll('.modal.active').length;
|
||||
if (props.isSelected && !hasModalOpen)
|
||||
pageChange('prev');
|
||||
};
|
||||
|
||||
const hasApproximately = computed(() => {
|
||||
return results.value.length &&
|
||||
results.value[0].rows &&
|
||||
|
@ -457,10 +464,17 @@ watch(isSearch, (val) => {
|
|||
});
|
||||
|
||||
getTableData();
|
||||
window.addEventListener('keydown', onKey);
|
||||
|
||||
ipcRenderer.on('run-or-reload', reloadListener);
|
||||
ipcRenderer.on('open-filter', openFilterListener);
|
||||
ipcRenderer.on('next-page', nextPageListener);
|
||||
ipcRenderer.on('prev-page', prevPageListener);
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener('keydown', onKey);
|
||||
clearInterval(refreshInterval.value);
|
||||
ipcRenderer.removeListener('run-or-reload', reloadListener);
|
||||
ipcRenderer.removeListener('open-filter', openFilterListener);
|
||||
ipcRenderer.removeListener('next-page', nextPageListener);
|
||||
ipcRenderer.removeListener('prev-page', prevPageListener);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -319,7 +319,10 @@ export const enUS = {
|
|||
runOrReload: 'Run or reload',
|
||||
formatQuery: 'Format query',
|
||||
queryHistory: 'Query history',
|
||||
clearQuery: 'Clear query'
|
||||
clearQuery: 'Clear query',
|
||||
openFilter: 'Open filter',
|
||||
nextResultsPage: 'Next results page',
|
||||
previousResultsPage: 'Previous results page'
|
||||
},
|
||||
faker: {
|
||||
address: 'Address',
|
||||
|
|
Loading…
Reference in New Issue