mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-27 00:56:01 +00:00
Merge branch 'feature/translation'
This commit is contained in:
@@ -6,7 +6,7 @@ const { getFiles } = require('./helpers');
|
|||||||
|
|
||||||
const readFilePromise = promisify(fs.readFile);
|
const readFilePromise = promisify(fs.readFile);
|
||||||
|
|
||||||
const translationRegex = /_t\(\s*['"]([^'"]+)['"]\s*,\s*\{\s*defaultMessage\s*:\s*['"]([^'"]+)['"]\s*\}/g;
|
const translationRegex = /_t\(\s*['"]([^'"]+)['"]\s*,\s*\{\s*defaultMessage\s*:\s*(?:'([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)"|\`([^`\\]*(?:\\.[^`\\]*)*(?:\{[^}]*\}[^`\\]*(?:\\.[^`\\]*)*)*)\`)(?:\s*,\s*[^}]*)*\s*\}/g;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} file
|
* @param {string} file
|
||||||
@@ -20,7 +20,8 @@ async function extractTranslationsFromFile(file) {
|
|||||||
let match;
|
let match;
|
||||||
|
|
||||||
while ((match = translationRegex.exec(content)) !== null) {
|
while ((match = translationRegex.exec(content)) !== null) {
|
||||||
const [_, key, defaultText] = match;
|
const [_, key, singleQuotedText, doubleQuotedText, templateLiteral] = match;
|
||||||
|
const defaultText = singleQuotedText || doubleQuotedText || templateLiteral;
|
||||||
translations[key] = defaultText;
|
translations[key] = defaultText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
import SettingsListener from './utility/SettingsListener.svelte';
|
import SettingsListener from './utility/SettingsListener.svelte';
|
||||||
import { handleAuthOnStartup } from './clientAuth';
|
import { handleAuthOnStartup } from './clientAuth';
|
||||||
import { initializeAppUpdates } from './utility/appUpdate';
|
import { initializeAppUpdates } from './utility/appUpdate';
|
||||||
import { _t } from './translations';
|
import { _t, saveSelectedLanguageToCache } from './translations';
|
||||||
import { installCloudListeners } from './utility/cloudListeners';
|
import { installCloudListeners } from './utility/cloudListeners';
|
||||||
|
|
||||||
export let isAdminPage = false;
|
export let isAdminPage = false;
|
||||||
@@ -61,6 +61,7 @@
|
|||||||
initializeAppUpdates();
|
initializeAppUpdates();
|
||||||
installCloudListeners();
|
installCloudListeners();
|
||||||
refreshPublicCloudFiles();
|
refreshPublicCloudFiles();
|
||||||
|
saveSelectedLanguageToCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadedApi = loadedApiValue;
|
loadedApi = loadedApiValue;
|
||||||
|
|||||||
@@ -40,7 +40,17 @@
|
|||||||
|
|
||||||
$: dataLabeled = _.compact(
|
$: dataLabeled = _.compact(
|
||||||
(list || []).map(data => {
|
(list || []).map(data => {
|
||||||
const matchResult = matcher ? matcher(data) : true;
|
const dataCopy = {...data,
|
||||||
|
group: (data?.group && _.isFunction(data.group)) ? data.group() : data.group,
|
||||||
|
title: (data?.title && _.isFunction(data.title)) ? data.title() : data.title,
|
||||||
|
description: (data?.description && _.isFunction(data.description)) ? data.description() : data.description,
|
||||||
|
args: (data?.args || []).map(x => ({
|
||||||
|
...x,
|
||||||
|
label: (x?.label && _.isFunction(x.label)) ? x.label() : x.label,
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
|
||||||
|
const matchResult = matcher ? matcher(dataCopy) : true;
|
||||||
|
|
||||||
let isMatched = true;
|
let isMatched = true;
|
||||||
let isMainMatched = true;
|
let isMainMatched = true;
|
||||||
@@ -62,8 +72,8 @@
|
|||||||
isChildMatched = !module.disableShowChildrenWithParentMatch;
|
isChildMatched = !module.disableShowChildrenWithParentMatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
const group = groupFunc ? groupFunc(data) : undefined;
|
const group = groupFunc ? groupFunc(dataCopy) : undefined;
|
||||||
return { group, data, isMatched, isChildMatched, isMainMatched };
|
return { group, data: dataCopy, isMatched, isChildMatched, isMainMatched };
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import FontIcon from '../icons/FontIcon.svelte';
|
import FontIcon from '../icons/FontIcon.svelte';
|
||||||
import { isProApp } from '../utility/proTools';
|
import { isProApp } from '../utility/proTools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let icon;
|
export let icon;
|
||||||
export let title;
|
export let title;
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
data-testid={$$props['data-testid']}
|
data-testid={$$props['data-testid']}
|
||||||
title={disabled
|
title={disabled
|
||||||
? isProFeature && !isProApp()
|
? isProFeature && !isProApp()
|
||||||
? 'This feature is available only in DbGate Premium'
|
? _t('common.featurePremium', { defaultMessage: 'This feature is available only in DbGate Premium' })
|
||||||
: disabledMessage
|
: disabledMessage
|
||||||
: undefined}
|
: undefined}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script context="module">
|
<script context="module">
|
||||||
function getCommandTitle(command) {
|
function getCommandTitle(command) {
|
||||||
let res = command.text;
|
let res = _.isFunction(command.text) ? command.text() : command.text;
|
||||||
if (command.keyText || command.keyTextFromGroup) {
|
if (command.keyText || command.keyTextFromGroup) {
|
||||||
res += ` (${formatKeyText(command.keyText || command.keyTextFromGroup)})`;
|
res += ` (${formatKeyText(command.keyText || command.keyTextFromGroup)})`;
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
import { commandsCustomized } from '../stores';
|
import { commandsCustomized } from '../stores';
|
||||||
import { formatKeyText } from '../utility/common';
|
import { formatKeyText } from '../utility/common';
|
||||||
import ToolStripButton from './ToolStripButton.svelte';
|
import ToolStripButton from './ToolStripButton.svelte';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
export let command;
|
export let command;
|
||||||
export let component = ToolStripButton;
|
export let component = ToolStripButton;
|
||||||
@@ -32,6 +33,6 @@
|
|||||||
{iconAfter}
|
{iconAfter}
|
||||||
{...$$restProps}
|
{...$$restProps}
|
||||||
>
|
>
|
||||||
{buttonLabel || cmd.toolbarName || cmd.name}
|
{(_.isFunction(buttonLabel) ? buttonLabel() : buttonLabel) || (_.isFunction(cmd?.toolbarName) ? cmd.toolbarName() : cmd.toolbarName) || (_.isFunction(cmd?.name) ? cmd.name() : cmd.name)}
|
||||||
</svelte:component>
|
</svelte:component>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
import hasPermission from '../utility/hasPermission';
|
import hasPermission from '../utility/hasPermission';
|
||||||
import ToolStripCommandButton from './ToolStripCommandButton.svelte';
|
import ToolStripCommandButton from './ToolStripCommandButton.svelte';
|
||||||
import ToolStripDropDownButton from './ToolStripDropDownButton.svelte';
|
import ToolStripDropDownButton from './ToolStripDropDownButton.svelte';
|
||||||
|
import _ from 'lodash';
|
||||||
export let quickExportHandlerRef = null;
|
export let quickExportHandlerRef = null;
|
||||||
export let command = 'sqlDataGrid.export';
|
export let command = 'sqlDataGrid.export';
|
||||||
export let label = 'Export';
|
export let label = 'Export';
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
{#if hasPermission('dbops/export')}
|
{#if hasPermission('dbops/export')}
|
||||||
{#if quickExportHandlerRef}
|
{#if quickExportHandlerRef}
|
||||||
<ToolStripDropDownButton menu={getExportMenu} {label} icon="icon export" />
|
<ToolStripDropDownButton menu={getExportMenu} label={_.isFunction(label) ? label() : label} icon="icon export" />
|
||||||
{:else}
|
{:else}
|
||||||
<ToolStripCommandButton {command} />
|
<ToolStripCommandButton {command} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { commands } from '../stores';
|
import { commands } from '../stores';
|
||||||
import { invalidateCommandDefinitions } from './invalidateCommands';
|
import { invalidateCommandDefinitions } from './invalidateCommands';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
export interface SubCommand {
|
export interface SubCommand {
|
||||||
text: string;
|
text: string;
|
||||||
@@ -8,10 +9,10 @@ export interface SubCommand {
|
|||||||
|
|
||||||
export interface GlobalCommand {
|
export interface GlobalCommand {
|
||||||
id: string;
|
id: string;
|
||||||
category: string; // null for group commands
|
category: string | (() => string); // null for group commands
|
||||||
isGroupCommand?: boolean;
|
isGroupCommand?: boolean;
|
||||||
name: string;
|
name: string | (() => string);
|
||||||
text?: string /* category: name */;
|
text?: string | (() => string);
|
||||||
keyText?: string;
|
keyText?: string;
|
||||||
keyTextFromGroup?: string; // automatically filled from group
|
keyTextFromGroup?: string; // automatically filled from group
|
||||||
group?: string;
|
group?: string;
|
||||||
@@ -23,11 +24,11 @@ export interface GlobalCommand {
|
|||||||
toolbar?: boolean;
|
toolbar?: boolean;
|
||||||
enabled?: boolean;
|
enabled?: boolean;
|
||||||
showDisabled?: boolean;
|
showDisabled?: boolean;
|
||||||
toolbarName?: string;
|
toolbarName?: string | (() => string);
|
||||||
menuName?: string;
|
menuName?: string;
|
||||||
toolbarOrder?: number;
|
toolbarOrder?: number;
|
||||||
disableHandleKeyText?: string;
|
disableHandleKeyText?: string;
|
||||||
isRelatedToTab?: boolean,
|
isRelatedToTab?: boolean;
|
||||||
systemCommand?: boolean;
|
systemCommand?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +42,13 @@ export default function registerCommand(command: GlobalCommand) {
|
|||||||
return {
|
return {
|
||||||
...x,
|
...x,
|
||||||
[command.id]: {
|
[command.id]: {
|
||||||
text: `${command.category}: ${command.name}`,
|
text:
|
||||||
|
_.isFunction(command.category) || _.isFunction(command.name)
|
||||||
|
? () =>
|
||||||
|
`${_.isFunction(command.category) ? command.category() : command.category}: ${
|
||||||
|
_.isFunction(command.name) ? command.name() : command.name
|
||||||
|
}`
|
||||||
|
: `${command.category}: ${command.name}`,
|
||||||
...command,
|
...command,
|
||||||
enabled: !testEnabled,
|
enabled: !testEnabled,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.switchToForm',
|
id: 'dataGrid.switchToForm',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Switch to form',
|
name: __t('command.datagrid.switchToform', { defaultMessage: 'Switch to form' }),
|
||||||
icon: 'icon form',
|
icon: 'icon form',
|
||||||
keyText: 'F4',
|
keyText: 'F4',
|
||||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('form'),
|
testEnabled: () => getCurrentEditor()?.switchViewEnabled('form'),
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.switchToJson',
|
id: 'dataGrid.switchToJson',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Switch to JSON',
|
name: __t('command.datagrid.switchToJSON', { defaultMessage: 'Switch to JSON' }),
|
||||||
icon: 'icon json',
|
icon: 'icon json',
|
||||||
keyText: 'F4',
|
keyText: 'F4',
|
||||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('json'),
|
testEnabled: () => getCurrentEditor()?.switchViewEnabled('json'),
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.switchToTable',
|
id: 'dataGrid.switchToTable',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Switch to table',
|
name: __t('command.datagrid.witchToTable', { defaultMessage: 'Switch to table'}),
|
||||||
icon: 'icon table',
|
icon: 'icon table',
|
||||||
keyText: 'F4',
|
keyText: 'F4',
|
||||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('table'),
|
testEnabled: () => getCurrentEditor()?.switchViewEnabled('table'),
|
||||||
@@ -33,8 +33,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.toggleLeftPanel',
|
id: 'dataGrid.toggleLeftPanel',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Toggle left panel',
|
name: __t('command.datagrid.toggleLeftPanel', { defaultMessage: 'Toggle left panel' }),
|
||||||
keyText: 'CtrlOrCommand+L',
|
keyText: 'CtrlOrCommand+L',
|
||||||
testEnabled: () => getCurrentEditor()?.canShowLeftPanel(),
|
testEnabled: () => getCurrentEditor()?.canShowLeftPanel(),
|
||||||
onClick: () => getCurrentEditor().toggleLeftPanel(),
|
onClick: () => getCurrentEditor().toggleLeftPanel(),
|
||||||
@@ -68,6 +68,7 @@
|
|||||||
import registerCommand from '../commands/registerCommand';
|
import registerCommand from '../commands/registerCommand';
|
||||||
import { registerMenu } from '../utility/contextMenu';
|
import { registerMenu } from '../utility/contextMenu';
|
||||||
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
||||||
|
import { __t, _t } from '../translations';
|
||||||
import { isProApp } from '../utility/proTools';
|
import { isProApp } from '../utility/proTools';
|
||||||
|
|
||||||
export let config;
|
export let config;
|
||||||
@@ -174,7 +175,7 @@
|
|||||||
<div class="left" slot="1">
|
<div class="left" slot="1">
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Columns"
|
title={_t('dataGrid.columns', { defaultMessage: 'Columns' })}
|
||||||
name="columns"
|
name="columns"
|
||||||
height="45%"
|
height="45%"
|
||||||
skip={isFormView}
|
skip={isFormView}
|
||||||
@@ -184,7 +185,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Filters"
|
title={_t('dataGrid.filters', { defaultMessage: 'Filters' })}
|
||||||
name="filters"
|
name="filters"
|
||||||
height={showReferences && display?.hasReferences && !isFormView ? '15%' : '30%'}
|
height={showReferences && display?.hasReferences && !isFormView ? '15%' : '30%'}
|
||||||
skip={!display?.filterable}
|
skip={!display?.filterable}
|
||||||
@@ -202,7 +203,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="References"
|
title={_t('dataGrid.references', { defaultMessage: 'References' })}
|
||||||
name="references"
|
name="references"
|
||||||
height="30%"
|
height="30%"
|
||||||
collapsed={isDetailView}
|
collapsed={isDetailView}
|
||||||
@@ -213,7 +214,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Macros"
|
title={_t('dataGrid.macros', { defaultMessage: 'Macros' })}
|
||||||
name="macros"
|
name="macros"
|
||||||
skip={!(showMacros && isProApp())}
|
skip={!(showMacros && isProApp())}
|
||||||
collapsed={!expandMacros}
|
collapsed={!expandMacros}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.refresh',
|
id: 'dataGrid.refresh',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
name: __t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||||
keyText: 'F5 | CtrlOrCommand+R',
|
keyText: 'F5 | CtrlOrCommand+R',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.deepRefresh',
|
id: 'dataGrid.deepRefresh',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Refresh with structure',
|
name: __t('common.datagrid.deepRefresh', { defaultMessage: 'Refresh with structure' }),
|
||||||
keyText: 'Ctrl+F5',
|
keyText: 'Ctrl+F5',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.revertRowChanges',
|
id: 'dataGrid.revertRowChanges',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.revertRowChanges', { defaultMessage: 'Revert row changes' }),
|
name: __t('command.datagrid.revertRowChanges', { defaultMessage: 'Revert row changes' }),
|
||||||
keyText: 'CtrlOrCommand+U',
|
keyText: 'CtrlOrCommand+U',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||||
onClick: () => getCurrentDataGrid().revertRowChanges(),
|
onClick: () => getCurrentDataGrid().revertRowChanges(),
|
||||||
@@ -36,9 +36,9 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.revertAllChanges',
|
id: 'dataGrid.revertAllChanges',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.revertAllChanges', { defaultMessage: 'Revert all changes' }),
|
name: __t('command.datagrid.revertAllChanges', { defaultMessage: 'Revert all changes' }),
|
||||||
toolbarName: _t('command.datagrid.revertAllChanges.toolbar', { defaultMessage: 'Revert all' }),
|
toolbarName: __t('command.datagrid.revertAllChanges.toolbar', { defaultMessage: 'Revert all' }),
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||||
onClick: () => getCurrentDataGrid().revertAllChanges(),
|
onClick: () => getCurrentDataGrid().revertAllChanges(),
|
||||||
@@ -46,9 +46,9 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.deleteSelectedRows',
|
id: 'dataGrid.deleteSelectedRows',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.deleteSelectedRows', { defaultMessage: 'Delete selected rows' }),
|
name: __t('command.datagrid.deleteSelectedRows', { defaultMessage: 'Delete selected rows' }),
|
||||||
toolbarName: _t('command.datagrid.deleteSelectedRows.toolbar', { defaultMessage: 'Delete row(s)' }),
|
toolbarName: __t('command.datagrid.deleteSelectedRows.toolbar', { defaultMessage: 'Delete row(s)' }),
|
||||||
keyText: isMac() ? 'Command+Backspace' : 'CtrlOrCommand+Delete',
|
keyText: isMac() ? 'Command+Backspace' : 'CtrlOrCommand+Delete',
|
||||||
icon: 'icon minus',
|
icon: 'icon minus',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
@@ -57,9 +57,9 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.insertNewRow',
|
id: 'dataGrid.insertNewRow',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.insertNewRow', { defaultMessage: 'Insert new row' }),
|
name: __t('command.datagrid.insertNewRow', { defaultMessage: 'Insert new row' }),
|
||||||
toolbarName: _t('command.datagrid.insertNewRow.toolbar', { defaultMessage: 'New row' }),
|
toolbarName: __t('command.datagrid.insertNewRow.toolbar', { defaultMessage: 'New row' }),
|
||||||
icon: 'icon add',
|
icon: 'icon add',
|
||||||
keyText: isMac() ? 'Command+I' : 'Insert',
|
keyText: isMac() ? 'Command+I' : 'Insert',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
@@ -68,9 +68,9 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.addNewColumn',
|
id: 'dataGrid.addNewColumn',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.addNewColumn', { defaultMessage: 'Add new column' }),
|
name: __t('command.datagrid.addNewColumn', { defaultMessage: 'Add new column' }),
|
||||||
toolbarName: _t('command.datagrid.addNewColumn.toolbar', { defaultMessage: 'New column' }),
|
toolbarName: __t('command.datagrid.addNewColumn.toolbar', { defaultMessage: 'New column' }),
|
||||||
icon: 'icon add-column',
|
icon: 'icon add-column',
|
||||||
testEnabled: () => getCurrentDataGrid()?.addNewColumnEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.addNewColumnEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().addNewColumn(),
|
onClick: () => getCurrentDataGrid().addNewColumn(),
|
||||||
@@ -78,9 +78,9 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.cloneRows',
|
id: 'dataGrid.cloneRows',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.cloneRows', { defaultMessage: 'Clone rows' }),
|
name: __t('command.datagrid.cloneRows', { defaultMessage: 'Clone rows' }),
|
||||||
toolbarName: _t('command.datagrid.cloneRows.toolbar', { defaultMessage: 'Clone row(s)' }),
|
toolbarName: __t('command.datagrid.cloneRows.toolbar', { defaultMessage: 'Clone row(s)' }),
|
||||||
keyText: 'CtrlOrCommand+Shift+C',
|
keyText: 'CtrlOrCommand+Shift+C',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
onClick: () => getCurrentDataGrid().cloneRows(),
|
onClick: () => getCurrentDataGrid().cloneRows(),
|
||||||
@@ -88,8 +88,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.setNull',
|
id: 'dataGrid.setNull',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.setNull', { defaultMessage: 'Set NULL' }),
|
name: __t('command.datagrid.setNull', { defaultMessage: 'Set NULL' }),
|
||||||
keyText: 'CtrlOrCommand+0',
|
keyText: 'CtrlOrCommand+0',
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
getCurrentDataGrid()?.getGrider()?.editable && !getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
getCurrentDataGrid()?.getGrider()?.editable && !getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||||
@@ -98,8 +98,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.removeField',
|
id: 'dataGrid.removeField',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.removeField', { defaultMessage: 'Remove field' }),
|
name: __t('command.datagrid.removeField', { defaultMessage: 'Remove field' }),
|
||||||
keyText: 'CtrlOrCommand+0',
|
keyText: 'CtrlOrCommand+0',
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
getCurrentDataGrid()?.getGrider()?.editable && getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
getCurrentDataGrid()?.getGrider()?.editable && getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||||
@@ -108,8 +108,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.undo',
|
id: 'dataGrid.undo',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.undo', { defaultMessage: 'Undo' }),
|
name: __t('command.datagrid.undo', { defaultMessage: 'Undo' }),
|
||||||
group: 'undo',
|
group: 'undo',
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
@@ -120,8 +120,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.redo',
|
id: 'dataGrid.redo',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.redo', { defaultMessage: 'Redo' }),
|
name: __t('command.datagrid.redo', { defaultMessage: 'Redo' }),
|
||||||
group: 'redo',
|
group: 'redo',
|
||||||
icon: 'icon redo',
|
icon: 'icon redo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
@@ -132,16 +132,16 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.reconnect',
|
id: 'dataGrid.reconnect',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.reconnect', { defaultMessage: 'Reconnect' }),
|
name: __t('command.datagrid.reconnect', { defaultMessage: 'Reconnect' }),
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().reconnect(),
|
onClick: () => getCurrentDataGrid().reconnect(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.copyToClipboard',
|
id: 'dataGrid.copyToClipboard',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.copyToClipboard', { defaultMessage: 'Copy to clipboard' }),
|
name: __t('command.datagrid.copyToClipboard', { defaultMessage: 'Copy to clipboard' }),
|
||||||
keyText: 'CtrlOrCommand+C',
|
keyText: 'CtrlOrCommand+C',
|
||||||
disableHandleKeyText: 'CtrlOrCommand+C',
|
disableHandleKeyText: 'CtrlOrCommand+C',
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
@@ -150,57 +150,57 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.editJsonDocument',
|
id: 'dataGrid.editJsonDocument',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
keyText: 'CtrlOrCommand+J',
|
keyText: 'CtrlOrCommand+J',
|
||||||
name: _t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }),
|
name: __t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().editJsonDocument(),
|
onClick: () => getCurrentDataGrid().editJsonDocument(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openSelectionInMap',
|
id: 'dataGrid.openSelectionInMap',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.openSelectionInMap', { defaultMessage: 'Open selection in map' }),
|
name: __t('command.datagrid.openSelectionInMap', { defaultMessage: 'Open selection in map' }),
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().openSelectionInMap(),
|
onClick: () => getCurrentDataGrid().openSelectionInMap(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.viewJsonDocument',
|
id: 'dataGrid.viewJsonDocument',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.viewJsonDocument', { defaultMessage: 'View row as JSON document' }),
|
name: __t('command.datagrid.viewJsonDocument', { defaultMessage: 'View row as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.viewJsonDocumentEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.viewJsonDocumentEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().viewJsonDocument(),
|
onClick: () => getCurrentDataGrid().viewJsonDocument(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.viewJsonValue',
|
id: 'dataGrid.viewJsonValue',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.viewJsonValue', { defaultMessage: 'View cell as JSON document' }),
|
name: __t('command.datagrid.viewJsonValue', { defaultMessage: 'View cell as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.viewJsonValueEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.viewJsonValueEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().viewJsonValue(),
|
onClick: () => getCurrentDataGrid().viewJsonValue(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openJsonArrayInSheet',
|
id: 'dataGrid.openJsonArrayInSheet',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.openJsonArrayInSheet', { defaultMessage: 'Open array as table' }),
|
name: __t('command.datagrid.openJsonArrayInSheet', { defaultMessage: 'Open array as table' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.openJsonArrayInSheetEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.openJsonArrayInSheetEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().openJsonArrayInSheet(),
|
onClick: () => getCurrentDataGrid().openJsonArrayInSheet(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.saveCellToFile',
|
id: 'dataGrid.saveCellToFile',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.saveCellToFile', { defaultMessage: 'Save cell to file' }),
|
name: __t('command.datagrid.saveCellToFile', { defaultMessage: 'Save cell to file' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.saveCellToFileEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.saveCellToFileEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().saveCellToFile(),
|
onClick: () => getCurrentDataGrid().saveCellToFile(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.loadCellFromFile',
|
id: 'dataGrid.loadCellFromFile',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: _t('command.datagrid.loadCellFromFile', { defaultMessage: 'Load cell from file' }),
|
name: __t('command.datagrid.loadCellFromFile', { defaultMessage: 'Load cell from file' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.loadCellFromFileEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.loadCellFromFileEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().loadCellFromFile(),
|
onClick: () => getCurrentDataGrid().loadCellFromFile(),
|
||||||
});
|
});
|
||||||
@@ -216,62 +216,62 @@
|
|||||||
//
|
//
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.filterSelected',
|
id: 'dataGrid.filterSelected',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Filter selected value',
|
name: __t('command.datagrid.filterSelected', { defaultMessage : 'Filter selected value'}),
|
||||||
keyText: 'CtrlOrCommand+Shift+F',
|
keyText: 'CtrlOrCommand+Shift+F',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getDisplay().filterable,
|
testEnabled: () => getCurrentDataGrid()?.getDisplay().filterable,
|
||||||
onClick: () => getCurrentDataGrid().filterSelectedValue(),
|
onClick: () => getCurrentDataGrid().filterSelectedValue(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.findColumn',
|
id: 'dataGrid.findColumn',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Find column',
|
name: __t('command.datagrid.findColumn', { defaultMessage: 'Find column'}),
|
||||||
keyText: 'CtrlOrCommand+F',
|
keyText: 'CtrlOrCommand+F',
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
getSubCommands: () => getCurrentDataGrid().buildFindMenu(),
|
getSubCommands: () => getCurrentDataGrid().buildFindMenu(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.hideColumn',
|
id: 'dataGrid.hideColumn',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Hide column',
|
name: __t('command.datgrid.hideColumn', { defaultMessage: 'Hide column' }),
|
||||||
keyText: isMac() ? 'Alt+Command+F' : 'CtrlOrCommand+H',
|
keyText: isMac() ? 'Alt+Command+F' : 'CtrlOrCommand+H',
|
||||||
testEnabled: () => getCurrentDataGrid()?.canShowLeftPanel(),
|
testEnabled: () => getCurrentDataGrid()?.canShowLeftPanel(),
|
||||||
onClick: () => getCurrentDataGrid().hideColumn(),
|
onClick: () => getCurrentDataGrid().hideColumn(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.clearFilter',
|
id: 'dataGrid.clearFilter',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Clear filter',
|
name: __t('command.datagrid.clearFilter', { defaultMessage : 'Clear filter'}),
|
||||||
keyText: 'CtrlOrCommand+Shift+E',
|
keyText: 'CtrlOrCommand+Shift+E',
|
||||||
testEnabled: () => getCurrentDataGrid()?.clearFilterEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.clearFilterEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().clearFilter(),
|
onClick: () => getCurrentDataGrid().clearFilter(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.generateSqlFromData',
|
id: 'dataGrid.generateSqlFromData',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Generate SQL',
|
name: __t('command.datagrid.generateSql', { defaultMessage: 'Generate SQL'}),
|
||||||
keyText: 'CtrlOrCommand+G',
|
keyText: 'CtrlOrCommand+G',
|
||||||
testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().generateSqlFromData(),
|
onClick: () => getCurrentDataGrid().generateSqlFromData(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openFreeTable',
|
id: 'dataGrid.openFreeTable',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Edit selection as table',
|
name: __t('command.datagrid.editSelection', { defaultMessage: 'Edit selection as table'}),
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().openFreeTable(),
|
onClick: () => getCurrentDataGrid().openFreeTable(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.newJson',
|
id: 'dataGrid.newJson',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Add JSON document',
|
name: __t('command.datagrid.addJsonDocument', { defaultMessage: 'Add JSON document'}),
|
||||||
testEnabled: () => getCurrentDataGrid()?.addJsonDocumentEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.addJsonDocumentEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().addJsonDocument(),
|
onClick: () => getCurrentDataGrid().addJsonDocument(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.editCellValue',
|
id: 'dataGrid.editCellValue',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Edit cell value',
|
name: __t('command.datagrid.editCell', { defaultMessage: 'Edit cell value' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.editCellValueEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.editCellValueEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().editCellValue(),
|
onClick: () => getCurrentDataGrid().editCellValue(),
|
||||||
});
|
});
|
||||||
@@ -279,8 +279,8 @@
|
|||||||
if (isProApp()) {
|
if (isProApp()) {
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.sendToDataDeploy',
|
id: 'dataGrid.sendToDataDeploy',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Send to data deployer',
|
name: __t('command.datagrid.sendToDataDeployer', { defaultMessage: 'Send to data deployer' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.sendToDataDeployEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.sendToDataDeployEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().sendToDataDeploy(),
|
onClick: () => getCurrentDataGrid().sendToDataDeploy(),
|
||||||
});
|
});
|
||||||
@@ -421,7 +421,7 @@
|
|||||||
import { openJsonLinesData } from '../utility/openJsonLinesData';
|
import { openJsonLinesData } from '../utility/openJsonLinesData';
|
||||||
import contextMenuActivator from '../utility/contextMenuActivator';
|
import contextMenuActivator from '../utility/contextMenuActivator';
|
||||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||||
import { _t } from '../translations';
|
import { __t, _t } from '../translations';
|
||||||
import { isProApp } from '../utility/proTools';
|
import { isProApp } from '../utility/proTools';
|
||||||
import SaveArchiveModal from '../modals/SaveArchiveModal.svelte';
|
import SaveArchiveModal from '../modals/SaveArchiveModal.svelte';
|
||||||
import hasPermission from '../utility/hasPermission';
|
import hasPermission from '../utility/hasPermission';
|
||||||
@@ -1792,15 +1792,15 @@
|
|||||||
{ command: 'dataGrid.refresh' },
|
{ command: 'dataGrid.refresh' },
|
||||||
{ placeTag: 'copy' },
|
{ placeTag: 'copy' },
|
||||||
{
|
{
|
||||||
text: 'Copy advanced',
|
text: _t('datagrid.copyAdvanced', { defaultMessage: 'Copy advanced'}),
|
||||||
submenu: [
|
submenu: [
|
||||||
_.keys(copyRowsFormatDefs).map(format => ({
|
_.keys(copyRowsFormatDefs).map(format => ({
|
||||||
text: copyRowsFormatDefs[format].label,
|
text: _.isFunction(copyRowsFormatDefs[format].label) ? copyRowsFormatDefs[format].label() : copyRowsFormatDefs[format].label,
|
||||||
onClick: () => copyToClipboardCore(format),
|
onClick: () => copyToClipboardCore(format),
|
||||||
})),
|
})),
|
||||||
{ divider: true },
|
{ divider: true },
|
||||||
_.keys(copyRowsFormatDefs).map(format => ({
|
_.keys(copyRowsFormatDefs).map(format => ({
|
||||||
text: `Set format: ${copyRowsFormatDefs[format].name}`,
|
text: _t('datagrid.setFormat', { defaultMessage: 'Set format: ' }) + (_.isFunction(copyRowsFormatDefs[format].name) ? copyRowsFormatDefs[format].name() : copyRowsFormatDefs[format].name),
|
||||||
onClick: () => ($copyRowsFormat = format),
|
onClick: () => ($copyRowsFormat = format),
|
||||||
})),
|
})),
|
||||||
|
|
||||||
@@ -1870,7 +1870,7 @@
|
|||||||
return [
|
return [
|
||||||
menu,
|
menu,
|
||||||
{
|
{
|
||||||
text: copyRowsFormatDefs[$copyRowsFormat].label,
|
text: _.isFunction(copyRowsFormatDefs[$copyRowsFormat].label) ? copyRowsFormatDefs[$copyRowsFormat].label() : copyRowsFormatDefs[$copyRowsFormat].label,
|
||||||
onClick: () => copyToClipboardCore($copyRowsFormat),
|
onClick: () => copyToClipboardCore($copyRowsFormat),
|
||||||
keyText: 'CtrlOrCommand+C',
|
keyText: 'CtrlOrCommand+C',
|
||||||
tag: 'copy',
|
tag: 'copy',
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
import FontIcon from '../icons/FontIcon.svelte';
|
import FontIcon from '../icons/FontIcon.svelte';
|
||||||
import TokenizedFilteredText from '../widgets/TokenizedFilteredText.svelte';
|
import TokenizedFilteredText from '../widgets/TokenizedFilteredText.svelte';
|
||||||
|
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let managerSize;
|
export let managerSize;
|
||||||
export let display: GridDisplay;
|
export let display: GridDisplay;
|
||||||
export let onReferenceClick = ref => {};
|
export let onReferenceClick = ref => {};
|
||||||
@@ -24,12 +26,12 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<SearchBoxWrapper>
|
<SearchBoxWrapper>
|
||||||
<SearchInput placeholder="Search references" bind:value={filter} />
|
<SearchInput placeholder={_t('dataGrid.searchReferences', { defaultMessage: 'Search references' })} bind:value={filter} />
|
||||||
<CloseSearchButton bind:filter />
|
<CloseSearchButton bind:filter />
|
||||||
</SearchBoxWrapper>
|
</SearchBoxWrapper>
|
||||||
<ManagerInnerContainer width={managerSize}>
|
<ManagerInnerContainer width={managerSize}>
|
||||||
{#if foreignKeys.length > 0}
|
{#if foreignKeys.length > 0}
|
||||||
<div class="bold nowrap ml-1">References tables ({foreignKeys.length})</div>
|
<div class="bold nowrap ml-1">{_t('dataGrid.referencesTables', { defaultMessage: 'References tables' })} ({foreignKeys.length})</div>
|
||||||
{#each foreignKeys.filter(fk => filterName(filter, fk.refTableName)) as fk}
|
{#each foreignKeys.filter(fk => filterName(filter, fk.refTableName)) as fk}
|
||||||
<div
|
<div
|
||||||
class="link"
|
class="link"
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
<script context="module" lang="ts">
|
<script context="module" lang="ts">
|
||||||
|
import { __t } from '../translations'
|
||||||
const getCurrentEditor = () => getActiveComponent('SqlDataGridCore');
|
const getCurrentEditor = () => getActiveComponent('SqlDataGridCore');
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'sqlDataGrid.openQuery',
|
id: 'sqlDataGrid.openQuery',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Open query',
|
name: __t('command.openQuery', { defaultMessage : 'Open query' }),
|
||||||
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/query'),
|
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/query'),
|
||||||
onClick: () => getCurrentEditor().openQuery(),
|
onClick: () => getCurrentEditor().openQuery(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'sqlDataGrid.export',
|
id: 'sqlDataGrid.export',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Export',
|
name: __t('common.export', { defaultMessage : 'Export' }),
|
||||||
icon: 'icon export',
|
icon: 'icon export',
|
||||||
keyText: 'CtrlOrCommand+E',
|
keyText: 'CtrlOrCommand+E',
|
||||||
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/export'),
|
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/export'),
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import ObjectListControl from '../elements/ObjectListControl.svelte';
|
import ObjectListControl from '../elements/ObjectListControl.svelte';
|
||||||
import Link from './Link.svelte';
|
import Link from './Link.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let collection;
|
export let collection;
|
||||||
export let title;
|
export let title;
|
||||||
@@ -24,18 +25,18 @@
|
|||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
fieldName: 'baseColumns',
|
fieldName: 'baseColumns',
|
||||||
header: 'Base columns',
|
header: _t('foreignKey.baseColumns', { defaultMessage: 'Base columns' }),
|
||||||
slot: 0,
|
slot: 0,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'refTableName',
|
fieldName: 'refTableName',
|
||||||
header: 'Referenced table',
|
header: _t('foreignKey.refTableName', { defaultMessage: 'Referenced table' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'refColumns',
|
fieldName: 'refColumns',
|
||||||
header: 'Referenced columns',
|
header: _t('foreignKey.refColumns', { defaultMessage: 'Referenced columns' }),
|
||||||
slot: 1,
|
slot: 1,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -60,5 +61,5 @@
|
|||||||
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
||||||
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
||||||
<svelte:fragment slot="1" let:row>{row?.columns.map(x => x.refColumnName).join(', ')}</svelte:fragment>
|
<svelte:fragment slot="1" let:row>{row?.columns.map(x => x.refColumnName).join(', ')}</svelte:fragment>
|
||||||
<svelte:fragment slot="2" let:row><Link onClick={() => onRemove(row)}>Remove</Link></svelte:fragment>
|
<svelte:fragment slot="2" let:row><Link onClick={() => onRemove(row)}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link></svelte:fragment>
|
||||||
</ObjectListControl>
|
</ObjectListControl>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
import Link from './Link.svelte';
|
import Link from './Link.svelte';
|
||||||
import TableControl from './TableControl.svelte';
|
import TableControl from './TableControl.svelte';
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let title;
|
export let title;
|
||||||
export let collection;
|
export let collection;
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="title mr-1">{title}</span>
|
<span class="title mr-1">{title}</span>
|
||||||
{#if onAddNew}
|
{#if onAddNew}
|
||||||
<Link onClick={onAddNew}><FontIcon icon="icon add" /> Add new</Link>
|
<Link onClick={onAddNew}><FontIcon icon="icon add" />{_t('common.addNew', { defaultMessage: 'Add new' })}</Link>
|
||||||
{/if}
|
{/if}
|
||||||
{#if multipleItemsActions && activeMultipleSelection && activeMultipleSelection?.length > 0}
|
{#if multipleItemsActions && activeMultipleSelection && activeMultipleSelection?.length > 0}
|
||||||
{#each multipleItemsActions as item}
|
{#each multipleItemsActions as item}
|
||||||
@@ -65,7 +66,7 @@
|
|||||||
columns={_.compact([
|
columns={_.compact([
|
||||||
!hideDisplayName && {
|
!hideDisplayName && {
|
||||||
fieldName: displayNameFieldName || 'displayName',
|
fieldName: displayNameFieldName || 'displayName',
|
||||||
header: 'Name',
|
header: _t('common.name', { defaultMessage: 'Name' }),
|
||||||
slot: -1,
|
slot: -1,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
filterable: !!displayNameFieldName,
|
filterable: !!displayNameFieldName,
|
||||||
|
|||||||
@@ -368,7 +368,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{/key}
|
{/key}
|
||||||
{:else}
|
{:else}
|
||||||
{row[col.fieldName] || ''}
|
{ _.isFunction(row[col.fieldName]) ? row[col.fieldName]() : row[col.fieldName] || ''}
|
||||||
{/if}
|
{/if}
|
||||||
</td>
|
</td>
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
import FormViewFilterColumn from './FormViewFilterColumn.svelte';
|
import FormViewFilterColumn from './FormViewFilterColumn.svelte';
|
||||||
import { stringFilterBehaviour } from 'dbgate-tools';
|
import { stringFilterBehaviour } from 'dbgate-tools';
|
||||||
import CheckboxField from '../forms/CheckboxField.svelte';
|
import CheckboxField from '../forms/CheckboxField.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
// import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte';
|
// import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte';
|
||||||
|
|
||||||
export let managerSize;
|
export let managerSize;
|
||||||
@@ -36,7 +37,7 @@
|
|||||||
|
|
||||||
{#if isFormView}
|
{#if isFormView}
|
||||||
<div class="m-1">
|
<div class="m-1">
|
||||||
<div>Column name filter</div>
|
<div>{_t('datagrid.columnNameFilter', { defaultMessage: 'Column name filter' })}</div>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
{#if hasMultiColumnFilter}
|
{#if hasMultiColumnFilter}
|
||||||
<div class="m-1">
|
<div class="m-1">
|
||||||
<div class="space-between">
|
<div class="space-between">
|
||||||
<span>Multi column filter</span>
|
<span>{_t('dataGrid.multiColumnFilter', { defaultMessage: 'Multi column filter' })}</span>
|
||||||
{#if multiColumnFilter}
|
{#if multiColumnFilter}
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<CheckboxField
|
<CheckboxField
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
import MacroHeader from './MacroHeader.svelte';
|
import MacroHeader from './MacroHeader.svelte';
|
||||||
import MacroInfoTab from './MacroInfoTab.svelte';
|
import MacroInfoTab from './MacroInfoTab.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
const selectedMacro = getContext('selectedMacro') as any;
|
const selectedMacro = getContext('selectedMacro') as any;
|
||||||
|
|
||||||
@@ -17,7 +18,7 @@
|
|||||||
<TabControl
|
<TabControl
|
||||||
tabs={[
|
tabs={[
|
||||||
{
|
{
|
||||||
label: 'Macro detail',
|
label: _t('datagrid.macros.detail', { defaultMessage: 'Macro detail' }),
|
||||||
component: MacroInfoTab,
|
component: MacroInfoTab,
|
||||||
props: {
|
props: {
|
||||||
onExecute,
|
onExecute,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import { getContext } from 'svelte';
|
import { getContext } from 'svelte';
|
||||||
import FontIcon from '../icons/FontIcon.svelte';
|
import FontIcon from '../icons/FontIcon.svelte';
|
||||||
import ToolbarButton from '../buttons/ToolbarButton.svelte';
|
import ToolbarButton from '../buttons/ToolbarButton.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let onExecute;
|
export let onExecute;
|
||||||
|
|
||||||
@@ -16,8 +17,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<ToolbarButton icon="icon run" on:click={onExecute}>Execute</ToolbarButton>
|
<ToolbarButton icon="icon run" on:click={onExecute}>{_t('common.execute', { defaultMessage: 'Execute' })}</ToolbarButton>
|
||||||
<ToolbarButton icon="icon close" on:click={() => ($selectedMacro = null)}>Close</ToolbarButton>
|
<ToolbarButton icon="icon close" on:click={() => ($selectedMacro = null)}>{_t('common.close', { defaultMessage: 'Close' })}</ToolbarButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import WidgetTitle from '../widgets/WidgetTitle.svelte';
|
import WidgetTitle from '../widgets/WidgetTitle.svelte';
|
||||||
import MacroParameters from './MacroParameters.svelte';
|
import MacroParameters from './MacroParameters.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
const selectedMacro = getContext('selectedMacro') as any;
|
const selectedMacro = getContext('selectedMacro') as any;
|
||||||
|
|
||||||
@@ -13,23 +14,23 @@
|
|||||||
|
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<WidgetTitle>Execute</WidgetTitle>
|
<WidgetTitle>{_t('common.execute', { defaultMessage: 'Execute' })}</WidgetTitle>
|
||||||
<FormStyledButton value="Execute" on:click={onExecute} />
|
<FormStyledButton value={_t('common.execute', { defaultMessage: 'Execute' })} on:click={onExecute} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<WidgetTitle>Parameters</WidgetTitle>
|
<WidgetTitle>{_t('common.parameters', { defaultMessage: 'Parameters' })}</WidgetTitle>
|
||||||
{#if $selectedMacro?.args && $selectedMacro?.args?.length > 0}
|
{#if $selectedMacro?.args && $selectedMacro?.args?.length > 0}
|
||||||
{#key $selectedMacro?.name}
|
{#key $selectedMacro?.name}
|
||||||
<MacroParameters args={$selectedMacro?.args||[]} namePrefix={`${$selectedMacro?.name}#`} />
|
<MacroParameters args={$selectedMacro?.args||[]} namePrefix={`${$selectedMacro?.name}#`} />
|
||||||
{/key}
|
{/key}
|
||||||
{:else}
|
{:else}
|
||||||
<div class="m-1">This macro has no parameters</div>
|
<div class="m-1">{_t('datagrid.macros.noParameters', { defaultMessage: 'This macro has no parameters' })}</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<WidgetTitle>Description</WidgetTitle>
|
<WidgetTitle>{_t('common.description', { defaultMessage: 'Description' })}</WidgetTitle>
|
||||||
<div class="m-1">{$selectedMacro?.description}</div>
|
<div class="m-1">{$selectedMacro?.description}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
||||||
import SearchInput from '../elements/SearchInput.svelte';
|
import SearchInput from '../elements/SearchInput.svelte';
|
||||||
import macros from './macros';
|
import macros from './macros';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
let filter = '';
|
let filter = '';
|
||||||
export let managerSize;
|
export let managerSize;
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
|
|
||||||
<ManagerInnerContainer width={managerSize}>
|
<ManagerInnerContainer width={managerSize}>
|
||||||
<SearchBoxWrapper>
|
<SearchBoxWrapper>
|
||||||
<SearchInput placeholder="Search macros" bind:value={filter} />
|
<SearchInput placeholder={_t('datagrid.searchMacros', { defaultMessage: "Search macros"})} bind:value={filter} />
|
||||||
</SearchBoxWrapper>
|
</SearchBoxWrapper>
|
||||||
<AppObjectList
|
<AppObjectList
|
||||||
list={_.sortBy(macros, 'title').filter(x => (macroCondition ? macroCondition(x) : true))}
|
list={_.sortBy(macros, 'title').filter(x => (macroCondition ? macroCondition(x) : true))}
|
||||||
|
|||||||
@@ -1,37 +1,39 @@
|
|||||||
|
import { __t } from '../translations';
|
||||||
|
|
||||||
const macros = [
|
const macros = [
|
||||||
{
|
{
|
||||||
title: 'Remove diacritics',
|
title: __t('datagrid.macros.removeDiacritics', { defaultMessage: 'Remove diacritics' }),
|
||||||
name: 'removeDiacritics',
|
name: 'removeDiacritics',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
description: 'Removes diacritics from selected cells',
|
description: __t('datagrid.macros.removeDiacriticsDescription', { defaultMessage: 'Removes diacritics from selected cells' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.deburr(value)`,
|
code: `return modules.lodash.deburr(value)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Search & replace text',
|
title: __t('datagrid.macros.searchReplaceText', { defaultMessage: 'Search & replace text' }),
|
||||||
name: 'stringReplace',
|
name: 'stringReplace',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
description: 'Search & replace text or regular expression',
|
description: __t('datagrid.macros.searchReplaceTextDescription', { defaultMessage: 'Search & replace text or regular expression' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Find',
|
label: __t('datagrid.macros.searchReplaceTextFind', { defaultMessage: 'Find' }),
|
||||||
name: 'find',
|
name: 'find',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Replace with',
|
label: __t('datagrid.macros.searchReplaceTextReplaceWith', { defaultMessage: 'Replace with' }),
|
||||||
name: 'replace',
|
name: 'replace',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'checkbox',
|
type: 'checkbox',
|
||||||
label: 'Case sensitive',
|
label: __t('datagrid.macros.searchReplaceTextCaseSensitive', { defaultMessage: 'Case sensitive' }),
|
||||||
name: 'caseSensitive',
|
name: 'caseSensitive',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'checkbox',
|
type: 'checkbox',
|
||||||
label: 'Regular expression',
|
label: __t('datagrid.macros.searchReplaceTextIsRegex', { defaultMessage: 'Regular expression' }),
|
||||||
name: 'isRegex',
|
name: 'isRegex',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -42,16 +44,16 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
|||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Change text case',
|
title: __t('datagrid.macros.changeTextCase', { defaultMessage: 'Change text case' }),
|
||||||
name: 'changeTextCase',
|
name: 'changeTextCase',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
description: 'Uppercase, lowercase and other case functions',
|
description: __t('datagrid.macros.changeTextCaseDescription', { defaultMessage: 'Uppercase, lowercase and other case functions' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
options: ['toUpper', 'toLower', 'lowerCase', 'upperCase', 'kebabCase', 'snakeCase', 'camelCase', 'startCase'],
|
options: ['toUpper', 'toLower', 'lowerCase', 'upperCase', 'kebabCase', 'snakeCase', 'camelCase', 'startCase'],
|
||||||
label: 'Type',
|
label: __t('datagrid.macros.changeTextCaseType', { defaultMessage: 'Type' }),
|
||||||
name: 'type',
|
name: 'type',
|
||||||
default: 'toUpper',
|
default: 'toUpper',
|
||||||
},
|
},
|
||||||
@@ -59,72 +61,72 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
|||||||
code: `return modules.lodash[args.type](value)`,
|
code: `return modules.lodash[args.type](value)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Pad left',
|
title: __t('datagrid.macros.padLeft', { defaultMessage: 'Pad left' }),
|
||||||
name: 'padLeft',
|
name: 'padLeft',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Character',
|
label: __t('datagrid.macros.padCharacter', { defaultMessage: 'Character' }),
|
||||||
name: 'character',
|
name: 'character',
|
||||||
default: '0',
|
default: '0',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Length',
|
label: __t('datagrid.macros.padLength', { defaultMessage: 'Length' }),
|
||||||
name: 'length',
|
name: 'length',
|
||||||
default: '3',
|
default: '3',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
description:
|
description:
|
||||||
'Returns string of a specified length in which the beginning of the current string is padded with spaces or other character',
|
__t('datagrid.macros.padLeftDescription', { defaultMessage: 'Returns string of a specified length in which the beginning of the current string is padded with spaces or other character' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.padStart(value, +args.length, args.character)`,
|
code: `return modules.lodash.padStart(value, +args.length, args.character)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Pad right',
|
title: __t('datagrid.macros.padRight', { defaultMessage: 'Pad right' }),
|
||||||
name: 'padRight',
|
name: 'padRight',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Character',
|
label: __t('datagrid.macros.padCharacter', { defaultMessage: 'Character' }),
|
||||||
name: 'character',
|
name: 'character',
|
||||||
default: '0',
|
default: '0',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Length',
|
label: __t('datagrid.macros.padLength', { defaultMessage: 'Length' }),
|
||||||
name: 'length',
|
name: 'length',
|
||||||
default: '3',
|
default: '3',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
description:
|
description:
|
||||||
'Returns string of a specified length in which the end of the current string is padded with spaces or other character',
|
__t('datagrid.macros.padRightDescription', { defaultMessage: 'Returns string of a specified length in which the end of the current string is padded with spaces or other character' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.padEnd(value, +args.length, args.character)`,
|
code: `return modules.lodash.padEnd(value, +args.length, args.character)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Trim',
|
title: __t('datagrid.macros.trim', { defaultMessage: 'Trim' }),
|
||||||
name: 'trim',
|
name: 'trim',
|
||||||
group: 'Text',
|
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||||
description: 'Removes leading and trailing whitespace ',
|
description: __t('datagrid.macros.trimDescription', { defaultMessage: 'Removes leading and trailing whitespace' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.trim(value)`,
|
code: `return modules.lodash.trim(value)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Row index',
|
title: __t('datagrid.macros.rowIndex', { defaultMessage: 'Row index' }),
|
||||||
name: 'rowIndex',
|
name: 'rowIndex',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Index of row from 1 (autoincrement)',
|
description: __t('datagrid.macros.rowIndexDescription', { defaultMessage: 'Index of row from 1 (autoincrement)' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return rowIndex + 1`,
|
code: `return rowIndex + 1`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Generate UUID',
|
title: __t('datagrid.macros.generateUUID', { defaultMessage: 'Generate UUID' }),
|
||||||
name: 'uuidv1',
|
name: 'uuidv1',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Generate unique identifier',
|
description: __t('datagrid.macros.generateUUIDDescription', { defaultMessage: 'Generate unique identifier' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
@@ -133,7 +135,7 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
|||||||
{ value: 'uuidv1', name: 'V1 - from timestamp' },
|
{ value: 'uuidv1', name: 'V1 - from timestamp' },
|
||||||
{ value: 'uuidv4', name: 'V4 - random generated'},
|
{ value: 'uuidv4', name: 'V4 - random generated'},
|
||||||
],
|
],
|
||||||
label: 'Version',
|
label: __t('datagrid.macros.version', { defaultMessage: 'Version' }),
|
||||||
name: 'version',
|
name: 'version',
|
||||||
default: 'uuidv1',
|
default: 'uuidv1',
|
||||||
},
|
},
|
||||||
@@ -141,26 +143,26 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
|||||||
code: `return modules[args.version]()`,
|
code: `return modules[args.version]()`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Convert to integer',
|
title: __t('datagrid.macros.toInt', { defaultMessage: 'Convert to integer' }),
|
||||||
name: 'toInt',
|
name: 'toInt',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Converts to integral number',
|
description: __t('datagrid.macros.toIntDescription', { defaultMessage: 'Converts to integral number' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.isNaN(parseInt(value)) ? null : parseInt(value)`,
|
code: `return modules.lodash.isNaN(parseInt(value)) ? null : parseInt(value)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Convert to number',
|
title: __t('datagrid.macros.toNumber', { defaultMessage: 'Convert to number' }),
|
||||||
name: 'toNumber',
|
name: 'toNumber',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Converts to number',
|
description: __t('datagrid.macros.toNumberDescription', { defaultMessage: 'Converts to number' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `return modules.lodash.isNaN(parseFloat(value)) ? null : parseFloat(value)`,
|
code: `return modules.lodash.isNaN(parseFloat(value)) ? null : parseFloat(value)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Convert to boolean',
|
title: __t('datagrid.macros.toBoolean', { defaultMessage: 'Convert to boolean' }),
|
||||||
name: 'toBoolean',
|
name: 'toBoolean',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Converts to boolean',
|
description: __t('datagrid.macros.toBooleanDescription', { defaultMessage: 'Converts to boolean' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `
|
code: `
|
||||||
if (modules.lodash.isString(value)) {
|
if (modules.lodash.isString(value)) {
|
||||||
@@ -176,10 +178,10 @@ return !!value;
|
|||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Convert to string',
|
title: __t('datagrid.macros.toString', { defaultMessage: 'Convert to string' }),
|
||||||
name: 'toString',
|
name: 'toString',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Converts to string',
|
description: __t('datagrid.macros.toStringDescription', { defaultMessage: 'Converts to string' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
code: `
|
code: `
|
||||||
if (value==null) return null;
|
if (value==null) return null;
|
||||||
@@ -188,15 +190,15 @@ return !!value;
|
|||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Current date',
|
title: __t('datagrid.macros.currentDate', { defaultMessage: 'Current date' }),
|
||||||
name: 'currentDate',
|
name: 'currentDate',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Gets current date',
|
description: __t('datagrid.macros.currentDateDescription', { defaultMessage: 'Gets current date' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Format',
|
label: __t('datagrid.macros.format', { defaultMessage: 'Format' }),
|
||||||
name: 'format',
|
name: 'format',
|
||||||
default: 'YYYY-MM-DD HH:mm:ss',
|
default: 'YYYY-MM-DD HH:mm:ss',
|
||||||
},
|
},
|
||||||
@@ -204,10 +206,10 @@ return !!value;
|
|||||||
code: `return modules.moment().format(args.format)`,
|
code: `return modules.moment().format(args.format)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Duplicate columns',
|
title: __t('datagrid.macros.duplicateColumns', { defaultMessage: 'Duplicate columns' }),
|
||||||
name: 'duplicateColumns',
|
name: 'duplicateColumns',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Duplicate selected columns',
|
description: __t('datagrid.macros.duplicateColumnsDescription', { defaultMessage: 'Duplicate selected columns' }),
|
||||||
type: 'transformRow',
|
type: 'transformRow',
|
||||||
code: `
|
code: `
|
||||||
return {
|
return {
|
||||||
@@ -218,22 +220,22 @@ return !!value;
|
|||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Prefix',
|
label: __t('datagrid.macros.prefix', { defaultMessage: 'Prefix' }),
|
||||||
name: 'prefix',
|
name: 'prefix',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Postfix',
|
label: __t('datagrid.macros.postfix', { defaultMessage: 'Postfix' }),
|
||||||
name: 'postfix',
|
name: 'postfix',
|
||||||
default: '_copy',
|
default: '_copy',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Split columns',
|
title: __t('datagrid.macros.splitColumns', { defaultMessage: 'Split columns' }),
|
||||||
name: 'splitColumns',
|
name: 'splitColumns',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Split selected columns',
|
description: __t('datagrid.macros.splitColumnsDescription', { defaultMessage: 'Split selected columns' }),
|
||||||
type: 'transformRow',
|
type: 'transformRow',
|
||||||
code: `
|
code: `
|
||||||
const res = {...row};
|
const res = {...row};
|
||||||
@@ -252,22 +254,22 @@ return !!value;
|
|||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Delimiter',
|
label: __t('datagrid.macros.delimiter', { defaultMessage: 'Delimiter' }),
|
||||||
name: 'delimiter',
|
name: 'delimiter',
|
||||||
default: ',',
|
default: ',',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Calculation',
|
title: __t('datagrid.macros.calculation', { defaultMessage: 'Calculation' }),
|
||||||
name: 'calculation',
|
name: 'calculation',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Custom expression. Use row.column_name for accessing column values, value for original value',
|
description: __t('datagrid.macros.calculationDescription', { defaultMessage: 'Custom expression. Use row.column_name for accessing column values, value for original value' }),
|
||||||
type: 'transformValue',
|
type: 'transformValue',
|
||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Expression',
|
label: __t('datagrid.macros.expression', { defaultMessage: 'Expression' }),
|
||||||
name: 'expression',
|
name: 'expression',
|
||||||
default: 'value',
|
default: 'value',
|
||||||
},
|
},
|
||||||
@@ -275,10 +277,10 @@ return !!value;
|
|||||||
code: `return eval(args.expression);`,
|
code: `return eval(args.expression);`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Extract date fields',
|
title: __t('datagrid.macros.extractDateFields', { defaultMessage: 'Extract date fields' }),
|
||||||
name: 'extractDateFields',
|
name: 'extractDateFields',
|
||||||
group: 'Tools',
|
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||||
description: 'Extract yaear, month, day and other date/time fields from selection and adds it as new columns',
|
description: __t('datagrid.macros.extractDateFieldsDescription', { defaultMessage: 'Extract year, month, day and other date/time fields from selection and adds it as new columns' }),
|
||||||
type: 'transformRow',
|
type: 'transformRow',
|
||||||
code: `
|
code: `
|
||||||
let mom = null;
|
let mom = null;
|
||||||
@@ -311,37 +313,37 @@ return !!value;
|
|||||||
args: [
|
args: [
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Year name',
|
label: __t('datagrid.macros.yearName', { defaultMessage: 'Year name' }),
|
||||||
name: 'year',
|
name: 'year',
|
||||||
default: 'year',
|
default: 'year',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Month name',
|
label: __t('datagrid.macros.monthName', { defaultMessage: 'Month name' }) ,
|
||||||
name: 'month',
|
name: 'month',
|
||||||
default: 'month',
|
default: 'month',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Day name',
|
label: __t('datagrid.macros.dayName', { defaultMessage: 'Day name' }),
|
||||||
name: 'day',
|
name: 'day',
|
||||||
default: 'day',
|
default: 'day',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Hour name',
|
label: __t('datagrid.macros.hourName', { defaultMessage: 'Hour name' }),
|
||||||
name: 'hour',
|
name: 'hour',
|
||||||
default: 'hour',
|
default: 'hour',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Minute name',
|
label: __t('datagrid.macros.minuteName', { defaultMessage: 'Minute name' }),
|
||||||
name: 'minute',
|
name: 'minute',
|
||||||
default: 'minute',
|
default: 'minute',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'text',
|
type: 'text',
|
||||||
label: 'Second name',
|
label: __t('datagrid.macros.secondName', { defaultMessage: 'Second name' }),
|
||||||
name: 'second',
|
name: 'second',
|
||||||
default: 'second',
|
default: 'second',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal } from './modalTools';
|
import { closeCurrentModal } from './modalTools';
|
||||||
import { commandsCustomized } from '../stores';
|
import { commandsCustomized } from '../stores';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
export let tabs;
|
export let tabs;
|
||||||
export let onConfirm;
|
export let onConfirm;
|
||||||
@@ -27,10 +29,10 @@
|
|||||||
|
|
||||||
<FormProvider>
|
<FormProvider>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<svelte:fragment slot="header">Confirm close tabs</svelte:fragment>
|
<svelte:fragment slot="header">{_t('datagrid.closeTabs.header', { defaultMessage: 'Confirm close tabs' })}</svelte:fragment>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
Following files are modified, really close tabs? After closing, you could reopen them in history
|
{_t('datagrid.closeTabs.modifiedFiles', { defaultMessage: 'Following files are modified, really close tabs? After closing, you could reopen them in history' })}
|
||||||
<FontIcon icon="icon history" />
|
<FontIcon icon="icon history" />
|
||||||
widget
|
widget
|
||||||
</div>
|
</div>
|
||||||
@@ -41,7 +43,7 @@
|
|||||||
|
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit
|
<FormSubmit
|
||||||
value="Close tabs"
|
value={_t('datagrid.closeTabs.close', { defaultMessage: 'Close tabs' })}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
onConfirm();
|
onConfirm();
|
||||||
@@ -49,7 +51,7 @@
|
|||||||
/>
|
/>
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
value="Cancel"
|
value={_t('common.cancel', { defaultMessage: 'Cancel' })}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
onCancel();
|
onCancel();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
import { isProApp } from '../utility/proTools';
|
import { isProApp } from '../utility/proTools';
|
||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal } from './modalTools';
|
import { closeCurrentModal } from './modalTools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let multiTabIndex = undefined;
|
export let multiTabIndex = undefined;
|
||||||
|
|
||||||
@@ -14,8 +15,8 @@
|
|||||||
{
|
{
|
||||||
icon: 'icon sql-file',
|
icon: 'icon sql-file',
|
||||||
colorClass: 'color-icon-blue',
|
colorClass: 'color-icon-blue',
|
||||||
title: 'Query',
|
title: _t('common.query', { defaultMessage: 'Query' }),
|
||||||
description: 'SQL query editor',
|
description: _t('common.queryEditor', { defaultMessage: 'SQL query editor' }),
|
||||||
action: () => {
|
action: () => {
|
||||||
newQuery({ multiTabIndex });
|
newQuery({ multiTabIndex });
|
||||||
},
|
},
|
||||||
@@ -25,47 +26,47 @@
|
|||||||
{
|
{
|
||||||
icon: 'icon connection',
|
icon: 'icon connection',
|
||||||
colorClass: 'color-icon-yellow',
|
colorClass: 'color-icon-yellow',
|
||||||
title: 'Connection',
|
title: _t('common.connection', { defaultMessage: 'Connection' }),
|
||||||
description: 'Database connection stored locally',
|
description: _t('newObject.connectionLocal', { defaultMessage: 'Database connection stored locally' }),
|
||||||
command: 'new.connection',
|
command: 'new.connection',
|
||||||
changeWidget: 'database',
|
changeWidget: 'database',
|
||||||
testid: 'NewObjectModal_connection',
|
testid: 'NewObjectModal_connection',
|
||||||
disabledMessage: 'You are not allowed to create new connections',
|
disabledMessage: _t('newObject.connectionLocalDisabled', { defaultMessage: 'You are not allowed to create new connections' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon cloud-connection',
|
icon: 'icon cloud-connection',
|
||||||
colorClass: 'color-icon-blue',
|
colorClass: 'color-icon-blue',
|
||||||
title: 'Connection on Cloud',
|
title: _t('common.connectionOnCloud', { defaultMessage: 'Connection on Cloud' }),
|
||||||
description: 'Database connection stored on DbGate Cloud',
|
description: _t('newObject.connectionOnCloudDescription', { defaultMessage: 'Database connection stored on DbGate Cloud' }),
|
||||||
command: 'new.connectionOnCloud',
|
command: 'new.connectionOnCloud',
|
||||||
changeWidget: 'cloud-private',
|
changeWidget: 'cloud-private',
|
||||||
testid: 'NewObjectModal_connectionOnCloud',
|
testid: 'NewObjectModal_connectionOnCloud',
|
||||||
disabledMessage: 'For creating connections on DbGate Cloud, you need to be logged in',
|
disabledMessage: _t('newObject.connectionOnCloudDisabled', { defaultMessage: 'For creating connections on DbGate Cloud, you need to be logged in' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon query-design',
|
icon: 'icon query-design',
|
||||||
colorClass: 'color-icon-red',
|
colorClass: 'color-icon-red',
|
||||||
title: 'Query Designer',
|
title: _t('common.queryDesigner', { defaultMessage: 'Query Designer' }),
|
||||||
description: 'Design SQL queries visually',
|
description: _t('newObject.queryDesignerDescription', { defaultMessage: 'Design SQL queries visually' }),
|
||||||
command: 'new.queryDesign',
|
command: 'new.queryDesign',
|
||||||
testid: 'NewObjectModal_queryDesign',
|
testid: 'NewObjectModal_queryDesign',
|
||||||
disabledMessage: 'Query Designer is not available for current database',
|
disabledMessage: _t('newObject.queryDesignerDisabled', { defaultMessage: 'Query Designer is not available for current database' }),
|
||||||
isProFeature: true,
|
isProFeature: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon diagram',
|
icon: 'icon diagram',
|
||||||
colorClass: 'color-icon-blue',
|
colorClass: 'color-icon-blue',
|
||||||
title: 'ER Diagram',
|
title: _t('common.erDiagram', { defaultMessage: 'ER Diagram' }),
|
||||||
description: 'Visualize database structure',
|
description: _t('newObject.erDiagramDescription', { defaultMessage: 'Visualize database structure' }),
|
||||||
command: 'new.diagram',
|
command: 'new.diagram',
|
||||||
testid: 'NewObjectModal_diagram',
|
testid: 'NewObjectModal_diagram',
|
||||||
disabledMessage: 'ER Diagram is not available for current database',
|
disabledMessage: _t('newObject.erDiagramDisabled', { defaultMessage: 'ER Diagram is not available for current database' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon perspective',
|
icon: 'icon perspective',
|
||||||
colorClass: 'color-icon-yellow',
|
colorClass: 'color-icon-yellow',
|
||||||
title: 'Perspective',
|
title: _t('common.perspective', { defaultMessage: 'Perspective' }),
|
||||||
description: 'Join complex data from multiple databases',
|
description: _t('newObject.perspectiveDescription', { defaultMessage: 'Join complex data from multiple databases' }),
|
||||||
command: 'new.perspective',
|
command: 'new.perspective',
|
||||||
testid: 'NewObjectModal_perspective',
|
testid: 'NewObjectModal_perspective',
|
||||||
isProFeature: true,
|
isProFeature: true,
|
||||||
@@ -73,56 +74,56 @@
|
|||||||
{
|
{
|
||||||
icon: 'icon table',
|
icon: 'icon table',
|
||||||
colorClass: 'color-icon-blue',
|
colorClass: 'color-icon-blue',
|
||||||
title: 'Table',
|
title: _t('common.table', { defaultMessage: 'Table' }),
|
||||||
description: 'Create table in the current database',
|
description: _t('newObject.tableDescription', { defaultMessage: 'Create table in the current database' }),
|
||||||
command: 'new.table',
|
command: 'new.table',
|
||||||
testid: 'NewObjectModal_table',
|
testid: 'NewObjectModal_table',
|
||||||
disabledMessage: 'Table creation is not available for current database',
|
disabledMessage: _t('newObject.tableDisabled', { defaultMessage: 'Table creation is not available for current database' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon sql-generator',
|
icon: 'icon sql-generator',
|
||||||
colorClass: 'color-icon-green',
|
colorClass: 'color-icon-green',
|
||||||
title: 'SQL Generator',
|
title: _t('common.sqlGenerator', { defaultMessage: 'SQL Generator' }),
|
||||||
description: 'Generate SQL scripts for database objects',
|
description: _t('newObject.sqlGeneratorDescription', { defaultMessage: 'Generate SQL scripts for database objects' }),
|
||||||
command: 'sql.generator',
|
command: 'sql.generator',
|
||||||
testid: 'NewObjectModal_sqlGenerator',
|
testid: 'NewObjectModal_sqlGenerator',
|
||||||
disabledMessage: 'SQL Generator is not available for current database',
|
disabledMessage: _t('newObject.sqlGeneratorDisabled', { defaultMessage: 'SQL Generator is not available for current database' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon export',
|
icon: 'icon export',
|
||||||
colorClass: 'color-icon-green',
|
colorClass: 'color-icon-green',
|
||||||
title: 'Export database',
|
title: _t('common.exportDatabase', { defaultMessage: 'Export database' }),
|
||||||
description: 'Export to file like CSV, JSON, Excel, or other DB',
|
description: _t('newObject.exportDescription', { defaultMessage: 'Export to file like CSV, JSON, Excel, or other DB' }),
|
||||||
command: 'database.export',
|
command: 'database.export',
|
||||||
isProFeature: true,
|
isProFeature: true,
|
||||||
testid: 'NewObjectModal_databaseExport',
|
testid: 'NewObjectModal_databaseExport',
|
||||||
disabledMessage: 'Export is not available for current database',
|
disabledMessage: _t('newObject.exportDisabled', { defaultMessage: 'Export is not available for current database' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon compare',
|
icon: 'icon compare',
|
||||||
colorClass: 'color-icon-red',
|
colorClass: 'color-icon-red',
|
||||||
title: 'Compare database',
|
title: _t('common.compare', { defaultMessage: 'Compare database' }),
|
||||||
description: 'Compare database schemas',
|
description: _t('newObject.compareDescription', { defaultMessage: 'Compare database schemas' }),
|
||||||
command: 'database.compare',
|
command: 'database.compare',
|
||||||
testid: 'NewObjectModal_databaseCompare',
|
testid: 'NewObjectModal_databaseCompare',
|
||||||
disabledMessage: 'Database comparison is not available for current database',
|
disabledMessage: _t('newObject.compareDisabled', { defaultMessage: 'Database comparison is not available for current database' }),
|
||||||
isProFeature: true,
|
isProFeature: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: 'icon ai',
|
icon: 'icon ai',
|
||||||
colorClass: 'color-icon-blue',
|
colorClass: 'color-icon-blue',
|
||||||
title: 'Database Chat',
|
title: _t('common.databaseChat', { defaultMessage: 'Database Chat' }),
|
||||||
description: 'Chat with your database using AI',
|
description: _t('newObject.databaseChatDescription', { defaultMessage: 'Chat with your database using AI' }),
|
||||||
command: 'database.chat',
|
command: 'database.chat',
|
||||||
isProFeature: true,
|
isProFeature: true,
|
||||||
disabledMessage: 'Database chat is not available for current database',
|
disabledMessage: _t('newObject.databaseChatDisabled', { defaultMessage: 'Database chat is not available for current database' }),
|
||||||
testid: 'NewObjectModal_databaseChat',
|
testid: 'NewObjectModal_databaseChat',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ModalBase simplefix {...$$restProps}>
|
<ModalBase simplefix {...$$restProps}>
|
||||||
<div class="create-header">Create new</div>
|
<div class="create-header">{_t('common.createNew', { defaultMessage: 'Create new' })}</div>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
{#each NEW_ITEMS as item}
|
{#each NEW_ITEMS as item}
|
||||||
{@const enabled = item.command
|
{@const enabled = item.command
|
||||||
|
|||||||
@@ -460,13 +460,13 @@
|
|||||||
disabled={isConnected}
|
disabled={isConnected}
|
||||||
data-testid="ConnectionDriverFields_defaultDatabase"
|
data-testid="ConnectionDriverFields_defaultDatabase"
|
||||||
asyncMenu={createDatabasesMenu}
|
asyncMenu={createDatabasesMenu}
|
||||||
placeholder="(not selected - optional)"
|
placeholder={_t('common.notSelectedOptional', { defaultMessage : "(not selected - optional)"})}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if defaultDatabase && driver?.showConnectionField('singleDatabase', $values, showConnectionFieldArgs)}
|
{#if defaultDatabase && driver?.showConnectionField('singleDatabase', $values, showConnectionFieldArgs)}
|
||||||
<FormCheckboxField
|
<FormCheckboxField
|
||||||
label={_t('connection.singleDatabase', { defaultMessage: `Use only database ${defaultDatabase}` })}
|
label={_t('connection.singleDatabase', { defaultMessage: 'Use only database {defaultDatabase}', values: { defaultDatabase } })}
|
||||||
name="singleDatabase"
|
name="singleDatabase"
|
||||||
disabled={isConnected}
|
disabled={isConnected}
|
||||||
data-testid="ConnectionDriverFields_singleDatabase"
|
data-testid="ConnectionDriverFields_singleDatabase"
|
||||||
@@ -475,7 +475,7 @@
|
|||||||
|
|
||||||
{#if driver?.showConnectionField('useSeparateSchemas', $values, showConnectionFieldArgs)}
|
{#if driver?.showConnectionField('useSeparateSchemas', $values, showConnectionFieldArgs)}
|
||||||
<FormCheckboxField
|
<FormCheckboxField
|
||||||
label={_t('connection.useSeparateSchemas', { defaultMessage: `Use schemas separately (use this if you have many large schemas)` })}
|
label={_t('connection.useSeparateSchemas', { defaultMessage: 'Use schemas separately (use this if you have many large schemas)' })}
|
||||||
name="useSeparateSchemas"
|
name="useSeparateSchemas"
|
||||||
disabled={isConnected}
|
disabled={isConnected}
|
||||||
data-testid="ConnectionDriverFields_useSeparateSchemas"
|
data-testid="ConnectionDriverFields_useSeparateSchemas"
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<FormPasswordField
|
<FormPasswordField
|
||||||
label={_t('connection.password', {defaultMessage: "Password"})}
|
label={_t('connection.password', {defaultMessage: 'Password'})}
|
||||||
name="sshPassword"
|
name="sshPassword"
|
||||||
disabled={isConnected || !useSshTunnel}
|
disabled={isConnected || !useSshTunnel}
|
||||||
templateProps={{ noMargin: true }}
|
templateProps={{ noMargin: true }}
|
||||||
|
|||||||
@@ -27,41 +27,41 @@
|
|||||||
<FormProvider initialValues={fillEditorColumnInfo(columnInfo || {}, tableInfo)}>
|
<FormProvider initialValues={fillEditorColumnInfo(columnInfo || {}, tableInfo)}>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<svelte:fragment slot="header"
|
<svelte:fragment slot="header"
|
||||||
>{columnInfo ? 'Edit column' : `Add column ${(tableInfo?.columns || []).length + 1}`}</svelte:fragment
|
>{columnInfo ? _t('columnEditor.editColumn', { defaultMessage: 'Edit column' }) : _t('columnEditor.addColumn', { defaultMessage: 'Add column {columnNumber}', values: { columnNumber: (tableInfo?.columns || []).length + 1 } })}</svelte:fragment
|
||||||
>
|
>
|
||||||
|
|
||||||
<FormTextField name="columnName" label="Column name" focused disabled={isReadOnly} />
|
<FormTextField name="columnName" label={_t('columnEditor.columnName', { defaultMessage: 'Column name' })} focused disabled={isReadOnly} />
|
||||||
<DataTypeEditor dialect={driver?.dialect} disabled={isReadOnly} />
|
<DataTypeEditor dialect={driver?.dialect} disabled={isReadOnly} />
|
||||||
|
|
||||||
{#if !driver?.dialect?.specificNullabilityImplementation}
|
{#if !driver?.dialect?.specificNullabilityImplementation}
|
||||||
<FormCheckboxField name="notNull" label="NOT NULL" disabled={isReadOnly} />
|
<FormCheckboxField name="notNull" label="NOT NULL" disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
<FormCheckboxField name="isPrimaryKey" label="Is Primary Key" disabled={isReadOnly} />
|
<FormCheckboxField name="isPrimaryKey" label={_t('columnEditor.isPrimaryKey', { defaultMessage: 'Is Primary Key' })} disabled={isReadOnly} />
|
||||||
{#if !driver?.dialect?.disableAutoIncrement}
|
{#if !driver?.dialect?.disableAutoIncrement}
|
||||||
<FormCheckboxField name="autoIncrement" label="Is Autoincrement" disabled={isReadOnly} />
|
<FormCheckboxField name="autoIncrement" label={_t('columnEditor.autoIncrement', { defaultMessage: 'Is Autoincrement' })} disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
<FormTextField
|
<FormTextField
|
||||||
name="defaultValue"
|
name="defaultValue"
|
||||||
label="Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string"
|
label={_t('columnEditor.defaultValue', { defaultMessage: "Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string" })}
|
||||||
disabled={!setTableInfo}
|
disabled={!setTableInfo}
|
||||||
/>
|
/>
|
||||||
<FormTextField name="computedExpression" label="Computed expression" disabled={isReadOnly} />
|
<FormTextField name="computedExpression" label={_t('columnEditor.computedExpression', { defaultMessage: 'Computed expression' })} disabled={isReadOnly} />
|
||||||
{#if driver?.dialect?.columnProperties?.isUnsigned}
|
{#if driver?.dialect?.columnProperties?.isUnsigned}
|
||||||
<FormCheckboxField name="isUnsigned" label="Unsigned" disabled={isReadOnly} />
|
<FormCheckboxField name="isUnsigned" label={_t('columnEditor.isUnsigned', { defaultMessage: 'Unsigned' })} disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
{#if driver?.dialect?.columnProperties?.isZerofill}
|
{#if driver?.dialect?.columnProperties?.isZerofill}
|
||||||
<FormCheckboxField name="isZerofill" label="Zero fill" disabled={isReadOnly} />
|
<FormCheckboxField name="isZerofill" label={_t('columnEditor.isZerofill', { defaultMessage: 'Zero fill' })} disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
{#if driver?.dialect?.columnProperties?.columnComment}
|
{#if driver?.dialect?.columnProperties?.columnComment}
|
||||||
<FormTextField name="columnComment" label="Comment" disabled={isReadOnly} />
|
<FormTextField name="columnComment" label={_t('columnEditor.columnComment', { defaultMessage: 'Comment' })} disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
{#if driver?.dialect?.columnProperties?.isSparse}
|
{#if driver?.dialect?.columnProperties?.isSparse}
|
||||||
<FormCheckboxField name="isSparse" label="Sparse" disabled={isReadOnly} />
|
<FormCheckboxField name="isSparse" label={_t('columnEditor.isSparse', { defaultMessage: 'Sparse' })} disabled={isReadOnly} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit
|
<FormSubmit
|
||||||
value={columnInfo ? 'Save' : 'Save and next'}
|
value={columnInfo ? _t('common.save', { defaultMessage: 'Save' }) : _t('common.saveAndNext', { defaultMessage: 'Save and next' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={e => {
|
on:click={e => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
@@ -85,11 +85,11 @@
|
|||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||||
{#if columnInfo}
|
{#if columnInfo}
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
value="Remove"
|
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
setTableInfo(tbl => editorDeleteColumn(tbl, columnInfo, addDataCommand));
|
setTableInfo(tbl => editorDeleteColumn(tbl, columnInfo, addDataCommand));
|
||||||
|
|||||||
@@ -9,13 +9,15 @@
|
|||||||
import { editorAddConstraint, editorDeleteConstraint, editorModifyConstraint } from 'dbgate-tools';
|
import { editorAddConstraint, editorDeleteConstraint, editorModifyConstraint } from 'dbgate-tools';
|
||||||
import TextField from '../forms/TextField.svelte';
|
import TextField from '../forms/TextField.svelte';
|
||||||
import SelectField from '../forms/SelectField.svelte';
|
import SelectField from '../forms/SelectField.svelte';
|
||||||
|
import { _t, __t } from '../translations';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
export let constraintInfo;
|
export let constraintInfo;
|
||||||
export let setTableInfo;
|
export let setTableInfo;
|
||||||
export let tableInfo;
|
export let tableInfo;
|
||||||
export let constraintLabel;
|
export let constraintLabel;
|
||||||
export let constraintType;
|
export let constraintType;
|
||||||
export let constraintNameLabel = 'Constraint name';
|
export let constraintNameLabel = _t('tableEditor.constraintName', { defaultMessage: 'Constraint name' });
|
||||||
export let getExtractConstraintProps;
|
export let getExtractConstraintProps;
|
||||||
export let hideConstraintName = false;
|
export let hideConstraintName = false;
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@
|
|||||||
<FormProvider>
|
<FormProvider>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<svelte:fragment slot="header"
|
<svelte:fragment slot="header"
|
||||||
>{constraintInfo ? `Edit ${constraintLabel}` : `Add ${constraintLabel}`}</svelte:fragment
|
>{constraintInfo ? _t('tableEdit.editConstraintLabel', { defaultMessage: 'Edit {constraintLabel}', values: { constraintLabel: _.isFunction(constraintLabel) ? constraintLabel() : constraintLabel } }) : _t('tableEdit.addConstraintLabel', { defaultMessage: 'Add {constraintLabel}', values: { constraintLabel: _.isFunction(constraintLabel) ? constraintLabel() : constraintLabel } })}</svelte:fragment
|
||||||
>
|
>
|
||||||
|
|
||||||
<div class="largeFormMarker">
|
<div class="largeFormMarker">
|
||||||
@@ -65,7 +67,7 @@
|
|||||||
|
|
||||||
{#each columns as column, index}
|
{#each columns as column, index}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">Column {index + 1}</div>
|
<div class="label col-3">{_t('common.column', { defaultMessage: 'Column ' })}{index + 1}</div>
|
||||||
<div class={$$slots.column ? 'col-3' : 'col-6'}>
|
<div class={$$slots.column ? 'col-3' : 'col-6'}>
|
||||||
{#key column.columnName}
|
{#key column.columnName}
|
||||||
<SelectField
|
<SelectField
|
||||||
@@ -91,7 +93,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
<div class="col-3 button">
|
<div class="col-3 button">
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
value="Delete"
|
value={_t('common.delete', { defaultMessage: 'Delete' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={e => {
|
on:click={e => {
|
||||||
const x = [...columns];
|
const x = [...columns];
|
||||||
@@ -104,11 +106,11 @@
|
|||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">Add new column</div>
|
<div class="label col-3">{_t('columnsConstraintEditor.addNewColumn', { defaultMessage: 'Add new column' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
{#key columns.length}
|
{#key columns.length}
|
||||||
<SelectField
|
<SelectField
|
||||||
placeholder="Select column"
|
placeholder={_t('columnsConstraintEditor.selectColumn', { defaultMessage: 'Select column' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
value={''}
|
value={''}
|
||||||
on:change={e => {
|
on:change={e => {
|
||||||
@@ -123,7 +125,7 @@
|
|||||||
isNative
|
isNative
|
||||||
options={[
|
options={[
|
||||||
{
|
{
|
||||||
label: 'Choose column',
|
label: _t('columnsConstraintEditor.chooseColumn', { defaultMessage: 'Choose column' }) ,
|
||||||
value: '',
|
value: '',
|
||||||
},
|
},
|
||||||
...(tableInfo?.columns?.map(col => ({
|
...(tableInfo?.columns?.map(col => ({
|
||||||
@@ -139,7 +141,7 @@
|
|||||||
|
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit
|
<FormSubmit
|
||||||
value={'Save'}
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
@@ -151,11 +153,11 @@
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||||
{#if constraintInfo}
|
{#if constraintInfo}
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
value="Remove"
|
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import FormDropDownTextField from '../forms/FormDropDownTextField.svelte';
|
import FormDropDownTextField from '../forms/FormDropDownTextField.svelte';
|
||||||
import { getFormContext } from '../forms/FormProviderCore.svelte';
|
import { getFormContext } from '../forms/FormProviderCore.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
const { values, setFieldValue } = getFormContext();
|
const { values, setFieldValue } = getFormContext();
|
||||||
|
|
||||||
@@ -17,4 +18,4 @@
|
|||||||
export let disabled = false;
|
export let disabled = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<FormDropDownTextField name="dataType" label="Data type" menu={createDataTypesMenu} {disabled} />
|
<FormDropDownTextField name="dataType" label="{_t('tableEditor.dataType', { defaultMessage: 'Data type' })}" menu={createDataTypesMenu} {disabled} />
|
||||||
|
|||||||
@@ -60,11 +60,11 @@
|
|||||||
|
|
||||||
<FormProvider>
|
<FormProvider>
|
||||||
<ModalBase {...$$restProps}>
|
<ModalBase {...$$restProps}>
|
||||||
<svelte:fragment slot="header">{constraintInfo ? `Edit foreign key` : `Add foreign key`}</svelte:fragment>
|
<svelte:fragment slot="header">{constraintInfo ? _t('foreignKeyEditor.editForeignKey', { defaultMessage: 'Edit foreign key' }) : _t('foreignKeyEditor.addForeignKey', { defaultMessage: 'Add foreign key' })}</svelte:fragment>
|
||||||
|
|
||||||
<div class="largeFormMarker">
|
<div class="largeFormMarker">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">Constraint name</div>
|
<div class="label col-3">{_t('tableEditor.constraintName', { defaultMessage: 'Constraint name' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<TextField
|
<TextField
|
||||||
value={constraintName}
|
value={constraintName}
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">Referenced table</div>
|
<div class="label col-3">{_t('foreignKeyEditor.referencedTable', { defaultMessage: 'Referenced table' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<SelectField
|
<SelectField
|
||||||
value={fullNameToString({ pureName: refTableName, schemaName: refSchemaName })}
|
value={fullNameToString({ pureName: refTableName, schemaName: refSchemaName })}
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">On update action</div>
|
<div class="label col-3">{_t('foreignKeyEditor.onUpdateAction', { defaultMessage: 'On update action' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<SelectField
|
<SelectField
|
||||||
value={updateAction}
|
value={updateAction}
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">On delete action</div>
|
<div class="label col-3">{_t('foreignKeyEditor.onDeleteAction', { defaultMessage: 'On delete action' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<SelectField
|
<SelectField
|
||||||
value={deleteAction}
|
value={deleteAction}
|
||||||
@@ -132,10 +132,10 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-5 mr-1">
|
<div class="col-5 mr-1">
|
||||||
Base column - {tableInfo.pureName}
|
{_t('foreignKeyEditor.baseColumn', { defaultMessage: 'Base column - ' })}{tableInfo.pureName}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-5 ml-1">
|
<div class="col-5 ml-1">
|
||||||
Ref column - {refTableName || '(table not set)'}
|
{_t('foreignKeyEditor.refColumn', { defaultMessage: 'Ref column - ' })}{refTableName || _t('foreignKeyEditor.tableNotSet', { defaultMessage: '(table not set)' })}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
|
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
value="Add column"
|
value={_t('foreignKeyEditor.addColumn', { defaultMessage: 'Add column' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
columns = [...columns, {}];
|
columns = [...columns, {}];
|
||||||
@@ -217,12 +217,12 @@
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||||
{#if constraintInfo}
|
{#if constraintInfo}
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
value="Remove"
|
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
setTableInfo(tbl => editorDeleteConstraint(tbl, constraintInfo));
|
setTableInfo(tbl => editorDeleteConstraint(tbl, constraintInfo));
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
|
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
|
||||||
import SelectField from '../forms/SelectField.svelte';
|
import SelectField from '../forms/SelectField.svelte';
|
||||||
import TextField from '../forms/TextField.svelte';
|
import TextField from '../forms/TextField.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@
|
|||||||
{...$$restProps}
|
{...$$restProps}
|
||||||
constraintLabel="index"
|
constraintLabel="index"
|
||||||
constraintType="index"
|
constraintType="index"
|
||||||
constraintNameLabel="Index name"
|
constraintNameLabel={_t('indexEditor.indexName', { defaultMessage: 'Index name' })}
|
||||||
{constraintInfo}
|
{constraintInfo}
|
||||||
{setTableInfo}
|
{setTableInfo}
|
||||||
{tableInfo}
|
{tableInfo}
|
||||||
@@ -61,15 +62,14 @@
|
|||||||
<svelte:fragment slot="constraintProps">
|
<svelte:fragment slot="constraintProps">
|
||||||
<div class="largeFormMarker">
|
<div class="largeFormMarker">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<CheckboxField checked={isUnique} on:change={e => (isUnique = e.target.checked)} disabled={isReadOnly} /> Is unique
|
<CheckboxField checked={isUnique} on:change={e => (isUnique = e.target.checked)} disabled={isReadOnly} /> {_t('indexEditor.isUnique', { defaultMessage: 'Is unique index' })}
|
||||||
index
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="largeFormMarker">
|
<div class="largeFormMarker">
|
||||||
{#if driver?.dialect?.filteredIndexes}
|
{#if driver?.dialect?.filteredIndexes}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="label col-3">Filtered index condition</div>
|
<div class="label col-3">{_t('indexEditor.filteredIndexCondition', { defaultMessage: 'Filtered index condition' })}</div>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<TextField
|
<TextField
|
||||||
value={filterDefinition}
|
value={filterDefinition}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let constraintInfo;
|
export let constraintInfo;
|
||||||
export let setTableInfo;
|
export let setTableInfo;
|
||||||
export let tableInfo;
|
export let tableInfo;
|
||||||
export let driver;
|
export let driver;
|
||||||
|
|
||||||
export let constraintLabel = 'primary key';
|
export let constraintLabel = _t('tableEditor.primaryKey', { defaultMessage: 'primary key' });
|
||||||
export let constraintType = 'primaryKey';
|
export let constraintType = 'primaryKey';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,14 @@
|
|||||||
import { showModal } from '../modals/modalTools';
|
import { showModal } from '../modals/modalTools';
|
||||||
|
|
||||||
import PrimaryKeyEditorModal from './PrimaryKeyEditorModal.svelte';
|
import PrimaryKeyEditorModal from './PrimaryKeyEditorModal.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let tableInfo;
|
export let tableInfo;
|
||||||
export let setTableInfo;
|
export let setTableInfo;
|
||||||
export let isWritable;
|
export let isWritable;
|
||||||
export let driver;
|
export let driver;
|
||||||
|
|
||||||
export let constraintLabel = 'primary key';
|
export let constraintLabel = _t('tableEditor.primaryKey', { defaultMessage: 'primary key' });
|
||||||
export let constraintType = 'primaryKey';
|
export let constraintType = 'primaryKey';
|
||||||
|
|
||||||
$: columns = tableInfo?.columns;
|
$: columns = tableInfo?.columns;
|
||||||
@@ -35,7 +36,12 @@
|
|||||||
<ObjectListControl
|
<ObjectListControl
|
||||||
collection={_.compact([keyConstraint])}
|
collection={_.compact([keyConstraint])}
|
||||||
title={_.startCase(constraintLabel)}
|
title={_.startCase(constraintLabel)}
|
||||||
emptyMessage={isWritable ? `No ${constraintLabel} defined` : null}
|
emptyMessage={isWritable
|
||||||
|
? _t('tableEditor.noConstraintDefined', {
|
||||||
|
defaultMessage: 'No {constraintLabel} defined',
|
||||||
|
values: { constraintLabel },
|
||||||
|
})
|
||||||
|
: null}
|
||||||
onAddNew={isWritable && !keyConstraint && columns?.length > 0 ? addKeyConstraint : null}
|
onAddNew={isWritable && !keyConstraint && columns?.length > 0 ? addKeyConstraint : null}
|
||||||
hideDisplayName={driver?.dialect?.anonymousPrimaryKey}
|
hideDisplayName={driver?.dialect?.anonymousPrimaryKey}
|
||||||
clickable
|
clickable
|
||||||
@@ -51,7 +57,7 @@
|
|||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
fieldName: 'columns',
|
fieldName: 'columns',
|
||||||
header: 'Columns',
|
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||||
slot: 0,
|
slot: 0,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -70,7 +76,7 @@
|
|||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||||
}}>Remove</Link
|
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||||
></svelte:fragment
|
></svelte:fragment
|
||||||
>
|
>
|
||||||
</ObjectListControl>
|
</ObjectListControl>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableEditor.addColumn',
|
id: 'tableEditor.addColumn',
|
||||||
category: 'Table editor',
|
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||||
name: 'Add column',
|
name: __t('tableEditor.addColumn', { defaultMessage: 'Add column'}),
|
||||||
icon: 'icon add-column',
|
icon: 'icon add-column',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableEditor.addPrimaryKey',
|
id: 'tableEditor.addPrimaryKey',
|
||||||
category: 'Table editor',
|
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||||
name: 'Add primary key',
|
name: __t('tableEditor.addPrimaryKey', { defaultMessage: 'Add primary key'}),
|
||||||
icon: 'icon add-key',
|
icon: 'icon add-key',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -25,8 +25,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableEditor.addForeignKey',
|
id: 'tableEditor.addForeignKey',
|
||||||
category: 'Table editor',
|
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||||
name: 'Add foreign key',
|
name: __t('tableEditor.addForeignKey', { defaultMessage: 'Add foreign key'}),
|
||||||
icon: 'icon add-key',
|
icon: 'icon add-key',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableEditor.addIndex',
|
id: 'tableEditor.addIndex',
|
||||||
category: 'Table editor',
|
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||||
name: 'Add index',
|
name: __t('tableEditor.addIndex', { defaultMessage: 'Add index'}),
|
||||||
icon: 'icon add-key',
|
icon: 'icon add-key',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableEditor.addUnique',
|
id: 'tableEditor.addUnique',
|
||||||
category: 'Table editor',
|
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||||
name: 'Add unique',
|
name: __t('tableEditor.addUnique', { defaultMessage: 'Add unique'}),
|
||||||
icon: 'icon add-key',
|
icon: 'icon add-key',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -83,6 +83,7 @@
|
|||||||
import UniqueEditorModal from './UniqueEditorModal.svelte';
|
import UniqueEditorModal from './UniqueEditorModal.svelte';
|
||||||
import ObjectFieldsEditor from '../elements/ObjectFieldsEditor.svelte';
|
import ObjectFieldsEditor from '../elements/ObjectFieldsEditor.svelte';
|
||||||
import PrimaryKeyLikeListControl from './PrimaryKeyLikeListControl.svelte';
|
import PrimaryKeyLikeListControl from './PrimaryKeyLikeListControl.svelte';
|
||||||
|
import { __t, _t } from '../translations';
|
||||||
|
|
||||||
export const activator = createActivator('TableEditor', true);
|
export const activator = createActivator('TableEditor', true);
|
||||||
|
|
||||||
@@ -171,9 +172,9 @@
|
|||||||
{#if tableInfo && (tableFormOptions || isCreateTable)}
|
{#if tableInfo && (tableFormOptions || isCreateTable)}
|
||||||
{#key resetCounter}
|
{#key resetCounter}
|
||||||
<ObjectFieldsEditor
|
<ObjectFieldsEditor
|
||||||
title="Table properties"
|
title={_t('tableEditor.tableproperties', { defaultMessage: 'Table properties' })}
|
||||||
fieldDefinitions={tableFormOptions ?? []}
|
fieldDefinitions={tableFormOptions ?? []}
|
||||||
pureNameTitle={isCreateTable ? 'Table name' : null}
|
pureNameTitle={isCreateTable ? _t('tableEditor.tablename', { defaultMessage: 'Table name' }) : null}
|
||||||
schemaList={isCreateTable && schemaList?.length >= 0 ? schemaList : null}
|
schemaList={isCreateTable && schemaList?.length >= 0 ? schemaList : null}
|
||||||
values={_.pick(tableInfo, ['schemaName', 'pureName', ...(tableFormOptions ?? []).map(x => x.name)])}
|
values={_.pick(tableInfo, ['schemaName', 'pureName', ...(tableFormOptions ?? []).map(x => x.name)])}
|
||||||
onChangeValues={vals => {
|
onChangeValues={vals => {
|
||||||
@@ -187,15 +188,15 @@
|
|||||||
|
|
||||||
<ObjectListControl
|
<ObjectListControl
|
||||||
collection={columns?.map((x, index) => ({ ...x, ordinal: index + 1 }))}
|
collection={columns?.map((x, index) => ({ ...x, ordinal: index + 1 }))}
|
||||||
title={`Columns (${columns?.length || 0})`}
|
title={_t('tableEditor.columns', { defaultMessage: 'Columns ({columnCount})', values: { columnCount: columns?.length || 0 } })}
|
||||||
emptyMessage="No columns defined"
|
emptyMessage={_t('tableEditor.nocolumnsdefined', { defaultMessage: 'No columns defined' })}
|
||||||
clickable
|
clickable
|
||||||
on:clickrow={e => showModal(ColumnEditorModal, { columnInfo: e.detail, tableInfo, setTableInfo, driver })}
|
on:clickrow={e => showModal(ColumnEditorModal, { columnInfo: e.detail, tableInfo, setTableInfo, driver })}
|
||||||
onAddNew={isWritable ? addColumn : null}
|
onAddNew={isWritable ? addColumn : null}
|
||||||
displayNameFieldName="columnName"
|
displayNameFieldName="columnName"
|
||||||
multipleItemsActions={[
|
multipleItemsActions={[
|
||||||
{
|
{
|
||||||
text: 'Remove',
|
text: _t('tableEditor.remove', { defaultMessage: 'Remove' }),
|
||||||
icon: 'icon delete',
|
icon: 'icon delete',
|
||||||
onClick: selected => {
|
onClick: selected => {
|
||||||
setTableInfo(tbl => {
|
setTableInfo(tbl => {
|
||||||
@@ -205,7 +206,7 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Copy names',
|
text: _t('tableEditor.copynames', { defaultMessage: 'Copy names' }),
|
||||||
icon: 'icon copy',
|
icon: 'icon copy',
|
||||||
onClick: selected => {
|
onClick: selected => {
|
||||||
const names = selected.map(x => x.columnName).join('\n');
|
const names = selected.map(x => x.columnName).join('\n');
|
||||||
@@ -213,7 +214,7 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Copy definitions',
|
text: _t('tableEditor.copydefinitions', { defaultMessage: 'Copy definitions' }),
|
||||||
icon: 'icon copy',
|
icon: 'icon copy',
|
||||||
onClick: selected => {
|
onClick: selected => {
|
||||||
const names = selected
|
const names = selected
|
||||||
@@ -226,55 +227,55 @@
|
|||||||
columns={[
|
columns={[
|
||||||
!driver?.dialect?.specificNullabilityImplementation && {
|
!driver?.dialect?.specificNullabilityImplementation && {
|
||||||
fieldName: 'notNull',
|
fieldName: 'notNull',
|
||||||
header: 'Nullability',
|
header: _t('tableEditor.nullability', { defaultMessage: 'Nullability' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
slot: 0,
|
slot: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'dataType',
|
fieldName: 'dataType',
|
||||||
header: 'Data Type',
|
header: _t('tableEditor.dataType', { defaultMessage: 'Data type' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'defaultValue',
|
fieldName: 'defaultValue',
|
||||||
header: 'Default value',
|
header: _t('tableEditor.defaultValue', { defaultMessage: 'Default value' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
},
|
},
|
||||||
driver?.dialect?.columnProperties?.isSparse && {
|
driver?.dialect?.columnProperties?.isSparse && {
|
||||||
fieldName: 'isSparse',
|
fieldName: 'isSparse',
|
||||||
header: 'Is Sparse',
|
header: _t('tableEditor.isSparse', { defaultMessage: 'Is Sparse' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
slot: 1,
|
slot: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'computedExpression',
|
fieldName: 'computedExpression',
|
||||||
header: 'Computed Expression',
|
header: _t('tableEditor.computedExpression', { defaultMessage: 'Computed Expression' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
},
|
},
|
||||||
driver?.dialect?.columnProperties?.isPersisted && {
|
driver?.dialect?.columnProperties?.isPersisted && {
|
||||||
fieldName: 'isPersisted',
|
fieldName: 'isPersisted',
|
||||||
header: 'Is Persisted',
|
header: _t('tableEditor.isPersisted', { defaultMessage: 'Is Persisted' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
slot: 2,
|
slot: 2,
|
||||||
},
|
},
|
||||||
driver?.dialect?.columnProperties?.isUnsigned && {
|
driver?.dialect?.columnProperties?.isUnsigned && {
|
||||||
fieldName: 'isUnsigned',
|
fieldName: 'isUnsigned',
|
||||||
header: 'Unsigned',
|
header: _t('tableEditor.isUnsigned', { defaultMessage: 'Unsigned' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
slot: 4,
|
slot: 4,
|
||||||
},
|
},
|
||||||
driver?.dialect?.columnProperties?.isZerofill && {
|
driver?.dialect?.columnProperties?.isZerofill && {
|
||||||
fieldName: 'isZerofill',
|
fieldName: 'isZerofill',
|
||||||
header: 'Zero fill',
|
header: _t('tableEditor.isZeroFill', { defaultMessage: 'Zero fill' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
slot: 5,
|
slot: 5,
|
||||||
},
|
},
|
||||||
driver?.dialect?.columnProperties?.columnComment && {
|
driver?.dialect?.columnProperties?.columnComment && {
|
||||||
fieldName: 'columnComment',
|
fieldName: 'columnComment',
|
||||||
header: 'Comment',
|
header: _t('tableEditor.columnComment', { defaultMessage: 'Comment' }),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
},
|
},
|
||||||
@@ -287,19 +288,19 @@
|
|||||||
: null,
|
: null,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<svelte:fragment slot="0" let:row>{row?.notNull ? 'NOT NULL' : 'NULL'}</svelte:fragment>
|
<svelte:fragment slot="0" let:row>{row?.notNull ? _t('tableEditor.notnull', { defaultMessage: 'NOT NULL' }) : _t('tableEditor.null', { defaultMessage: 'NULL' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="1" let:row>{row?.isSparse ? 'YES' : 'NO'}</svelte:fragment>
|
<svelte:fragment slot="1" let:row>{row?.isSparse ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="2" let:row>{row?.isPersisted ? 'YES' : 'NO'}</svelte:fragment>
|
<svelte:fragment slot="2" let:row>{row?.isPersisted ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="3" let:row
|
<svelte:fragment slot="3" let:row
|
||||||
><Link
|
><Link
|
||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTableInfo(tbl => editorDeleteColumn(tbl, row));
|
setTableInfo(tbl => editorDeleteColumn(tbl, row));
|
||||||
}}>Remove</Link
|
}}>{_t('tableEditor.remove', { defaultMessage: 'Remove' })}</Link
|
||||||
></svelte:fragment
|
></svelte:fragment
|
||||||
>
|
>
|
||||||
<svelte:fragment slot="4" let:row>{row?.isUnsigned ? 'YES' : 'NO'}</svelte:fragment>
|
<svelte:fragment slot="4" let:row>{row?.isUnsigned ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="5" let:row>{row?.isZerofill ? 'YES' : 'NO'}</svelte:fragment>
|
<svelte:fragment slot="5" let:row>{row?.isZerofill ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="name" let:row><ColumnLabel {...row} forceIcon /></svelte:fragment>
|
<svelte:fragment slot="name" let:row><ColumnLabel {...row} forceIcon /></svelte:fragment>
|
||||||
</ObjectListControl>
|
</ObjectListControl>
|
||||||
|
|
||||||
@@ -320,20 +321,20 @@
|
|||||||
<ObjectListControl
|
<ObjectListControl
|
||||||
collection={indexes}
|
collection={indexes}
|
||||||
onAddNew={isWritable && columns?.length > 0 ? addIndex : null}
|
onAddNew={isWritable && columns?.length > 0 ? addIndex : null}
|
||||||
title={`Indexes (${indexes?.length || 0})`}
|
title={_t('tableEditor.indexes', { defaultMessage: 'Indexes ({indexCount})', values: { indexCount: indexes?.length || 0 } })}
|
||||||
emptyMessage={isWritable ? 'No index defined' : null}
|
emptyMessage={isWritable ? _t('tableEditor.noindexdefined', { defaultMessage: 'No index defined' }) : null}
|
||||||
clickable
|
clickable
|
||||||
on:clickrow={e => showModal(IndexEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, driver })}
|
on:clickrow={e => showModal(IndexEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, driver })}
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
fieldName: 'columns',
|
fieldName: 'columns',
|
||||||
header: 'Columns',
|
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||||
slot: 0,
|
slot: 0,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'unique',
|
fieldName: 'unique',
|
||||||
header: 'Unique',
|
header: _t('tableEditor.unique', { defaultMessage: 'Unique' }),
|
||||||
slot: 1,
|
slot: 1,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -347,13 +348,13 @@
|
|||||||
>
|
>
|
||||||
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
||||||
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
||||||
<svelte:fragment slot="1" let:row>{row?.isUnique ? 'YES' : 'NO'}</svelte:fragment>
|
<svelte:fragment slot="1" let:row>{row?.isUnique ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||||
<svelte:fragment slot="2" let:row
|
<svelte:fragment slot="2" let:row
|
||||||
><Link
|
><Link
|
||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||||
}}>Remove</Link
|
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||||
></svelte:fragment
|
></svelte:fragment
|
||||||
>
|
>
|
||||||
</ObjectListControl>
|
</ObjectListControl>
|
||||||
@@ -363,14 +364,14 @@
|
|||||||
<ObjectListControl
|
<ObjectListControl
|
||||||
collection={uniques}
|
collection={uniques}
|
||||||
onAddNew={isWritable && columns?.length > 0 ? addUnique : null}
|
onAddNew={isWritable && columns?.length > 0 ? addUnique : null}
|
||||||
title={`Unique constraints (${uniques?.length || 0})`}
|
title={_t('tableEditor.uniqueConstraints', { defaultMessage: 'Unique constraints ({constraintCount})', values: { constraintCount: uniques?.length || 0 } })}
|
||||||
emptyMessage={isWritable ? 'No unique defined' : null}
|
emptyMessage={isWritable ? _t('tableEditor.nouniquedefined', { defaultMessage: 'No unique defined' }) : null}
|
||||||
clickable
|
clickable
|
||||||
on:clickrow={e => showModal(UniqueEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo })}
|
on:clickrow={e => showModal(UniqueEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo })}
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
fieldName: 'columns',
|
fieldName: 'columns',
|
||||||
header: 'Columns',
|
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||||
slot: 0,
|
slot: 0,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -390,7 +391,7 @@
|
|||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||||
}}>Remove</Link
|
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||||
></svelte:fragment
|
></svelte:fragment
|
||||||
>
|
>
|
||||||
</ObjectListControl>
|
</ObjectListControl>
|
||||||
@@ -400,13 +401,13 @@
|
|||||||
<ForeignKeyObjectListControl
|
<ForeignKeyObjectListControl
|
||||||
collection={foreignKeys}
|
collection={foreignKeys}
|
||||||
onAddNew={isWritable && columns?.length > 0 ? addForeignKey : null}
|
onAddNew={isWritable && columns?.length > 0 ? addForeignKey : null}
|
||||||
title={`Foreign keys (${foreignKeys?.length || 0})`}
|
title={_t('tableEditor.foreignKeys', { defaultMessage: 'Foreign keys ({foreignKeyCount})', values: { foreignKeyCount: foreignKeys?.length || 0 } })}
|
||||||
emptyMessage={isWritable ? 'No foreign key defined' : null}
|
emptyMessage={isWritable ? _t('tableEditor.noforeignkeydefined', { defaultMessage: 'No foreign key defined' }) : null}
|
||||||
clickable
|
clickable
|
||||||
onRemove={row => setTableInfo(tbl => editorDeleteConstraint(tbl, row))}
|
onRemove={row => setTableInfo(tbl => editorDeleteConstraint(tbl, row))}
|
||||||
on:clickrow={e => showModal(ForeignKeyEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, dbInfo })}
|
on:clickrow={e => showModal(ForeignKeyEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, dbInfo })}
|
||||||
/>
|
/>
|
||||||
<ForeignKeyObjectListControl collection={dependencies} title="Dependencies" />
|
<ForeignKeyObjectListControl collection={dependencies} title={_t('tableEditor.dependencies', { defaultMessage: 'Dependencies' })} />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let constraintInfo;
|
export let constraintInfo;
|
||||||
export let setTableInfo;
|
export let setTableInfo;
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
<ColumnsConstraintEditorModal
|
<ColumnsConstraintEditorModal
|
||||||
{...$$restProps}
|
{...$$restProps}
|
||||||
constraintLabel="unique"
|
constraintLabel={_t('tableEdit.unique', { defaultMessage: "unique" })}
|
||||||
constraintType="unique"
|
constraintType="unique"
|
||||||
{constraintInfo}
|
{constraintInfo}
|
||||||
{setTableInfo}
|
{setTableInfo}
|
||||||
|
|||||||
@@ -300,7 +300,7 @@
|
|||||||
contentTestId="ConnectionTab_tabControlContent"
|
contentTestId="ConnectionTab_tabControlContent"
|
||||||
tabs={[
|
tabs={[
|
||||||
{
|
{
|
||||||
label: 'General',
|
label: _t('common.general', { defaultMessage: 'General' }),
|
||||||
component: ConnectionDriverFields,
|
component: ConnectionDriverFields,
|
||||||
props: { getDatabaseList, currentConnection },
|
props: { getDatabaseList, currentConnection },
|
||||||
testid: 'ConnectionTab_tabGeneral',
|
testid: 'ConnectionTab_tabGeneral',
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
testid: 'ConnectionTab_tabSsl',
|
testid: 'ConnectionTab_tabSsl',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Advanced',
|
label: _t('common.advanced', { defaultMessage: 'Advanced' }),
|
||||||
component: ConnectionAdvancedDriverFields,
|
component: ConnectionAdvancedDriverFields,
|
||||||
testid: 'ConnectionTab_tabAdvanced',
|
testid: 'ConnectionTab_tabAdvanced',
|
||||||
},
|
},
|
||||||
@@ -383,7 +383,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{#if isTesting}
|
{#if isTesting}
|
||||||
<div>
|
<div>
|
||||||
<FontIcon icon="icon loading" /> Testing connection
|
<FontIcon icon="icon loading" /> {_t('common.testingConnection', { defaultMessage: 'Testing connection' })}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,21 +2,22 @@
|
|||||||
import registerCommand from '../commands/registerCommand';
|
import registerCommand from '../commands/registerCommand';
|
||||||
import { copyTextToClipboard } from '../utility/clipboard';
|
import { copyTextToClipboard } from '../utility/clipboard';
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
|
import { __t, _t } from '../translations';
|
||||||
|
|
||||||
const getCurrentEditor = () => getActiveComponent('QueryTab');
|
const getCurrentEditor = () => getActiveComponent('QueryTab');
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.formatCode',
|
id: 'query.formatCode',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Format code',
|
name: __t('command.query.formatCode', { defaultMessage: 'Format code' }),
|
||||||
keyText: 'Shift+Alt+F',
|
keyText: 'Shift+Alt+F',
|
||||||
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
||||||
onClick: () => getCurrentEditor().formatCode(),
|
onClick: () => getCurrentEditor().formatCode(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.switchAiAssistant',
|
id: 'query.switchAiAssistant',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'AI Assistant',
|
name: __t('command.query.AiAssistant', { defaultMessage: 'AI Assistant' }),
|
||||||
keyText: 'Shift+Alt+A',
|
keyText: 'Shift+Alt+A',
|
||||||
icon: 'icon ai',
|
icon: 'icon ai',
|
||||||
testEnabled: () => isProApp(),
|
testEnabled: () => isProApp(),
|
||||||
@@ -24,23 +25,23 @@
|
|||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.insertSqlJoin',
|
id: 'query.insertSqlJoin',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Insert SQL Join',
|
name: __t('command.query.insertSqlJoin', { defaultMessage: 'Insert SQL Join' }),
|
||||||
keyText: 'CtrlOrCommand+J',
|
keyText: 'CtrlOrCommand+J',
|
||||||
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
||||||
onClick: () => getCurrentEditor().insertSqlJoin(),
|
onClick: () => getCurrentEditor().insertSqlJoin(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.toggleVisibleResultTabs',
|
id: 'query.toggleVisibleResultTabs',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Toggle visible result tabs',
|
name: __t('command.query.toggleVisibleResultTabs', { defaultMessage: 'Toggle visible result tabs' }),
|
||||||
keyText: 'CtrlOrCommand+Shift+R',
|
keyText: 'CtrlOrCommand+Shift+R',
|
||||||
testEnabled: () => !!getCurrentEditor(),
|
testEnabled: () => !!getCurrentEditor(),
|
||||||
onClick: () => getCurrentEditor().toggleVisibleResultTabs(),
|
onClick: () => getCurrentEditor().toggleVisibleResultTabs(),
|
||||||
});
|
});
|
||||||
registerFileCommands({
|
registerFileCommands({
|
||||||
idPrefix: 'query',
|
idPrefix: 'query',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
getCurrentEditor,
|
getCurrentEditor,
|
||||||
folder: 'sql',
|
folder: 'sql',
|
||||||
format: 'text',
|
format: 'text',
|
||||||
@@ -54,8 +55,8 @@
|
|||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.executeCurrent',
|
id: 'query.executeCurrent',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Execute current',
|
name: __t('command.query.executeCurrent', { defaultMessage: 'Execute current' }),
|
||||||
keyText: 'CtrlOrCommand+Shift+Enter',
|
keyText: 'CtrlOrCommand+Shift+Enter',
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
getCurrentEditor() != null && !getCurrentEditor()?.isBusy() && getCurrentEditor()?.hasConnection(),
|
getCurrentEditor() != null && !getCurrentEditor()?.isBusy() && getCurrentEditor()?.hasConnection(),
|
||||||
@@ -63,56 +64,56 @@
|
|||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.toggleAutoExecute',
|
id: 'query.toggleAutoExecute',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Toggle auto execute',
|
name: __t('command.query.toggleAutoExecute', { defaultMessage: 'Toggle auto execute' }),
|
||||||
testEnabled: () => getCurrentEditor() != null,
|
testEnabled: () => getCurrentEditor() != null,
|
||||||
onClick: () => getCurrentEditor().toggleAutoExecute(),
|
onClick: () => getCurrentEditor().toggleAutoExecute(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.toggleFixedConnection',
|
id: 'query.toggleFixedConnection',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Toggle fixed connection',
|
name: __t('command.query.toggleFixedConnection', { defaultMessage: 'Toggle fixed connection' }),
|
||||||
testEnabled: () => getCurrentEditor() != null,
|
testEnabled: () => getCurrentEditor() != null,
|
||||||
onClick: () => getCurrentEditor().toggleFixedConnection(),
|
onClick: () => getCurrentEditor().toggleFixedConnection(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.beginTransaction',
|
id: 'query.beginTransaction',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Begin transaction',
|
name: __t('command.query.beginTransaction', { defaultMessage: 'Begin transaction' }),
|
||||||
icon: 'icon transaction',
|
icon: 'icon transaction',
|
||||||
testEnabled: () => getCurrentEditor()?.beginTransactionEnabled(),
|
testEnabled: () => getCurrentEditor()?.beginTransactionEnabled(),
|
||||||
onClick: () => getCurrentEditor().beginTransaction(),
|
onClick: () => getCurrentEditor().beginTransaction(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.autocommitOffSwitch',
|
id: 'query.autocommitOffSwitch',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Auto commit: OFF',
|
name: __t('command.query.autocommitOffSwitch', { defaultMessage: 'Auto commit: OFF' }),
|
||||||
icon: 'icon autocommit-off',
|
icon: 'icon autocommit-off',
|
||||||
testEnabled: () => getCurrentEditor()?.autocommitOffSwitchEnabled(),
|
testEnabled: () => getCurrentEditor()?.autocommitOffSwitchEnabled(),
|
||||||
onClick: () => getCurrentEditor().autocommitOffSwitch(),
|
onClick: () => getCurrentEditor().autocommitOffSwitch(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.autocommitOnSwitch',
|
id: 'query.autocommitOnSwitch',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Auto commit: ON',
|
name: __t('command.query.autocommitOnSwitch', { defaultMessage: 'Auto commit: ON' }),
|
||||||
icon: 'icon autocommit-on',
|
icon: 'icon autocommit-on',
|
||||||
testEnabled: () => getCurrentEditor()?.autocommitOnSwitchEnabled(),
|
testEnabled: () => getCurrentEditor()?.autocommitOnSwitchEnabled(),
|
||||||
onClick: () => getCurrentEditor().autocommitOnSwitch(),
|
onClick: () => getCurrentEditor().autocommitOnSwitch(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.commitTransaction',
|
id: 'query.commitTransaction',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Commit transaction',
|
name: __t('command.query.commitTransaction', { defaultMessage: 'Commit transaction' }),
|
||||||
toolbarName: 'Commit',
|
toolbarName: __t('command.query.commitTransactionToolbar', { defaultMessage: 'Commit' }),
|
||||||
icon: 'icon commit',
|
icon: 'icon commit',
|
||||||
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
||||||
onClick: () => getCurrentEditor().commitTransaction(),
|
onClick: () => getCurrentEditor().commitTransaction(),
|
||||||
});
|
});
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'query.rollbackTransaction',
|
id: 'query.rollbackTransaction',
|
||||||
category: 'Query',
|
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||||
name: 'Rollback transaction',
|
name: __t('command.query.rollbackTransaction', { defaultMessage: 'Rollback transaction' }),
|
||||||
toolbarName: 'Rollback',
|
toolbarName: __t('command.query.rollbackTransactionToolbar', { defaultMessage: 'Rollback' }),
|
||||||
icon: 'icon rollback',
|
icon: 'icon rollback',
|
||||||
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
||||||
onClick: () => getCurrentEditor().rollbackTransaction(),
|
onClick: () => getCurrentEditor().rollbackTransaction(),
|
||||||
@@ -177,27 +178,27 @@
|
|||||||
const QUERY_PARAMETER_STYLES = [
|
const QUERY_PARAMETER_STYLES = [
|
||||||
{
|
{
|
||||||
value: '',
|
value: '',
|
||||||
text: '(no parameters)',
|
text: _t('query.noParameters', { defaultMessage: '(no parameters)' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: '?',
|
value: '?',
|
||||||
text: '? (positional)',
|
text: _t('query.positional', { defaultMessage: '? (positional)' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: '@',
|
value: '@',
|
||||||
text: '@variable',
|
text: _t('query.variable', { defaultMessage: '@variable' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: ':',
|
value: ':',
|
||||||
text: ':variable',
|
text: _t('query.named', { defaultMessage: ':variable' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: '$',
|
value: '$',
|
||||||
text: '$variable',
|
text: _t('query.variable', { defaultMessage: '$variable' }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: '#',
|
value: '#',
|
||||||
text: '#variable',
|
text: _t('query.variable', { defaultMessage: '#variable' }),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -831,11 +832,11 @@
|
|||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{queryRowsLimit ? `Limit ${queryRowsLimit} rows` : 'Unlimited rows'}</ToolStripButton
|
{queryRowsLimit ? _t('query.limitRows', { defaultMessage: 'Limit {queryRowsLimit} rows', values: { queryRowsLimit } }) : _t('query.unlimitedRows', { defaultMessage: 'Unlimited rows' })}</ToolStripButton
|
||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
{#if resultCount == 1}
|
{#if resultCount == 1}
|
||||||
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label="Export result" />
|
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label={_t('export.result', { defaultMessage: 'Export result' })} />
|
||||||
{/if}
|
{/if}
|
||||||
<ToolStripDropDownButton
|
<ToolStripDropDownButton
|
||||||
menu={() =>
|
menu={() =>
|
||||||
@@ -885,7 +886,7 @@
|
|||||||
domResultTabs?.openCurrentChart();
|
domResultTabs?.openCurrentChart();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Open chart</ToolStripButton
|
{_t('chart.open', { defaultMessage: 'Open chart' })}</ToolStripButton
|
||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
{#if isProApp() && !visibleResultTabs && hasPermission('dbops/charts')}
|
{#if isProApp() && !visibleResultTabs && hasPermission('dbops/charts')}
|
||||||
@@ -896,7 +897,7 @@
|
|||||||
autoDetectCharts = !autoDetectCharts;
|
autoDetectCharts = !autoDetectCharts;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Detect chart<FontIcon
|
{_t('chart.detect', { defaultMessage: 'Detect chart' })}<FontIcon
|
||||||
icon={autoDetectCharts ? 'icon checkbox-marked' : 'icon checkbox-blank'}
|
icon={autoDetectCharts ? 'icon checkbox-marked' : 'icon checkbox-blank'}
|
||||||
padLeft
|
padLeft
|
||||||
/></ToolStripButton
|
/></ToolStripButton
|
||||||
|
|||||||
@@ -1,12 +1,35 @@
|
|||||||
<script lang="ts" context="module">
|
<script lang="ts" context="module">
|
||||||
const getCurrentEditor = () => getActiveComponent('TableDataTab');
|
const getCurrentEditor = () => getActiveComponent('TableDataTab');
|
||||||
const INTERVALS = [5, 10, 15, 13, 60];
|
const INTERVALS = [5, 10, 15, 30, 60];
|
||||||
|
|
||||||
|
const INTERVAL_COMMANDS = [
|
||||||
|
{
|
||||||
|
time: 5,
|
||||||
|
name: __t('command.datagrid.setAutoRefresh.5', { defaultMessage: 'Refresh every 5 seconds' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
time: 10,
|
||||||
|
name: __t('command.datagrid.setAutoRefresh.10', { defaultMessage: 'Refresh every 10 seconds' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
time: 15,
|
||||||
|
name: __t('command.datagrid.setAutoRefresh.15', { defaultMessage: 'Refresh every 15 seconds' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
time: 30,
|
||||||
|
name: __t('command.datagrid.setAutoRefresh.30', { defaultMessage: 'Refresh every 30 seconds' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
time: 60,
|
||||||
|
name: __t('command.datagrid.setAutoRefresh.60', { defaultMessage: 'Refresh every 60 seconds' }),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableData.save',
|
id: 'tableData.save',
|
||||||
group: 'save',
|
group: 'save',
|
||||||
category: 'Table data',
|
category: __t('command.tableData', { defaultMessage: 'Table data' }),
|
||||||
name: 'Save',
|
name: __t('command.tableData.save', { defaultMessage: 'Save' }),
|
||||||
// keyText: 'CtrlOrCommand+S',
|
// keyText: 'CtrlOrCommand+S',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -17,28 +40,28 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableData.setAutoRefresh.1',
|
id: 'tableData.setAutoRefresh.1',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Refresh every 1 second',
|
name: __t('command.datagrid.setAutoRefresh.1', { defaultMessage: 'Refresh every 1 second' }),
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
testEnabled: () => !!getCurrentEditor(),
|
testEnabled: () => !!getCurrentEditor(),
|
||||||
onClick: () => getCurrentEditor().setAutoRefresh(1),
|
onClick: () => getCurrentEditor().setAutoRefresh(1),
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const seconds of INTERVALS) {
|
for (const { time, name } of INTERVAL_COMMANDS) {
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: `tableData.setAutoRefresh.${seconds}`,
|
id: `tableData.setAutoRefresh.${time}`,
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: `Refresh every ${seconds} seconds`,
|
name,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
testEnabled: () => !!getCurrentEditor(),
|
testEnabled: () => !!getCurrentEditor(),
|
||||||
onClick: () => getCurrentEditor().setAutoRefresh(seconds),
|
onClick: () => getCurrentEditor().setAutoRefresh(time),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableData.stopAutoRefresh',
|
id: 'tableData.stopAutoRefresh',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Stop auto refresh',
|
name: __t('command.datagrid.stopAutoRefresh', { defaultMessage: 'Stop auto refresh' }),
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
keyText: 'CtrlOrCommand+Shift+R',
|
keyText: 'CtrlOrCommand+Shift+R',
|
||||||
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === true,
|
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === true,
|
||||||
@@ -47,8 +70,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableData.startAutoRefresh',
|
id: 'tableData.startAutoRefresh',
|
||||||
category: 'Data grid',
|
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||||
name: 'Start auto refresh',
|
name: __t('command.datagrid.startAutoRefresh', { defaultMessage: 'Start auto refresh' }),
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
keyText: 'CtrlOrCommand+Shift+R',
|
keyText: 'CtrlOrCommand+Shift+R',
|
||||||
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === false,
|
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === false,
|
||||||
@@ -101,6 +124,7 @@
|
|||||||
import { markTabSaved, markTabUnsaved } from '../utility/common';
|
import { markTabSaved, markTabUnsaved } from '../utility/common';
|
||||||
import ToolStripButton from '../buttons/ToolStripButton.svelte';
|
import ToolStripButton from '../buttons/ToolStripButton.svelte';
|
||||||
import { getNumberIcon } from '../icons/FontIcon.svelte';
|
import { getNumberIcon } from '../icons/FontIcon.svelte';
|
||||||
|
import { __t, _t } from '../translations';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -260,7 +284,7 @@
|
|||||||
{ command: 'tableData.stopAutoRefresh', hideDisabled: true },
|
{ command: 'tableData.stopAutoRefresh', hideDisabled: true },
|
||||||
{ command: 'tableData.startAutoRefresh', hideDisabled: true },
|
{ command: 'tableData.startAutoRefresh', hideDisabled: true },
|
||||||
'tableData.setAutoRefresh.1',
|
'tableData.setAutoRefresh.1',
|
||||||
...INTERVALS.map(seconds => ({ command: `tableData.setAutoRefresh.${seconds}`, text: `...${seconds} seconds` })),
|
...INTERVALS.map(seconds => ({ command: `tableData.setAutoRefresh.${seconds}`, text: `...${seconds}` + ' ' + _t('command.datagrid.autoRefresh.seconds', { defaultMessage: 'seconds' }) })),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -304,7 +328,7 @@
|
|||||||
defaultActionId: 'openStructure',
|
defaultActionId: 'openStructure',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}}>Structure</ToolStripButton
|
}}>{_t('datagrid.structure', { defaultMessage: 'Structure' })}</ToolStripButton
|
||||||
>
|
>
|
||||||
|
|
||||||
<ToolStripButton
|
<ToolStripButton
|
||||||
@@ -378,7 +402,7 @@
|
|||||||
|
|
||||||
<ToolStripButton
|
<ToolStripButton
|
||||||
icon={$collapsedLeftColumnStore ? 'icon columns-outline' : 'icon columns'}
|
icon={$collapsedLeftColumnStore ? 'icon columns-outline' : 'icon columns'}
|
||||||
on:click={() => collapsedLeftColumnStore.update(x => !x)}>View columns</ToolStripButton
|
on:click={() => collapsedLeftColumnStore.update(x => !x)}>{_t('tableData.viewColumns', { defaultMessage: 'View columns' })}</ToolStripButton
|
||||||
>
|
>
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
</ToolStripContainer>
|
</ToolStripContainer>
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableStructure.save',
|
id: 'tableStructure.save',
|
||||||
group: 'save',
|
group: 'save',
|
||||||
category: 'Table editor',
|
category: __t('command.tableEditor', { defaultMessage: 'Table editor' }),
|
||||||
name: 'Save',
|
name: __t('command.tableEditor.save', { defaultMessage: 'Save' }),
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
icon: 'icon save',
|
icon: 'icon save',
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tableStructure.reset',
|
id: 'tableStructure.reset',
|
||||||
category: 'Table editor',
|
category: __t('command.tableEditor', { defaultMessage: 'Table editor' }),
|
||||||
name: 'Reset changes',
|
name: __t('command.tableEditor.reset', { defaultMessage: 'Reset changes' }),
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
icon: 'icon close',
|
icon: 'icon close',
|
||||||
@@ -57,6 +57,7 @@
|
|||||||
import hasPermission from '../utility/hasPermission';
|
import hasPermission from '../utility/hasPermission';
|
||||||
import { changeTab, markTabSaved, markTabUnsaved } from '../utility/common';
|
import { changeTab, markTabSaved, markTabUnsaved } from '../utility/common';
|
||||||
import { getBoolSettingsValue } from '../settings/settingsTools';
|
import { getBoolSettingsValue } from '../settings/settingsTools';
|
||||||
|
import { _t, __t } from '../translations';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -197,7 +198,7 @@
|
|||||||
defaultActionId: 'openTable',
|
defaultActionId: 'openTable',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}}>Data</ToolStripButton
|
}}>{_t('common.data', { defaultMessage: 'Data' })}</ToolStripButton
|
||||||
>
|
>
|
||||||
|
|
||||||
<ToolStripButton
|
<ToolStripButton
|
||||||
@@ -230,7 +231,7 @@
|
|||||||
|
|
||||||
<ToolStripCommandButton
|
<ToolStripCommandButton
|
||||||
command="tableStructure.save"
|
command="tableStructure.save"
|
||||||
buttonLabel={$editorValue?.base ? 'Alter table' : 'Create table'}
|
buttonLabel={$editorValue?.base ? _t('tableStructure.alter', { defaultMessage: 'Alter table' }) : _t('tableStructure.create', { defaultMessage: 'Create table' })}
|
||||||
/>
|
/>
|
||||||
<ToolStripCommandButton command="tableStructure.reset" />
|
<ToolStripCommandButton command="tableStructure.reset" />
|
||||||
<ToolStripCommandButton command="tableEditor.addColumn" />
|
<ToolStripCommandButton command="tableEditor.addColumn" />
|
||||||
|
|||||||
@@ -15,15 +15,22 @@ const compiledMessages: Partial<Record<string, Record<string, MessageFunction<'s
|
|||||||
|
|
||||||
const defaultLanguage = 'en';
|
const defaultLanguage = 'en';
|
||||||
|
|
||||||
|
let selectedLanguageCache: string | null = null;
|
||||||
|
|
||||||
export function getSelectedLanguage(): string {
|
export function getSelectedLanguage(): string {
|
||||||
const borwserLanguage = getBrowserLanguage();
|
if (selectedLanguageCache) return selectedLanguageCache;
|
||||||
const selectedLanguage = getStringSettingsValue('localization.language', borwserLanguage);
|
|
||||||
|
const browserLanguage = getBrowserLanguage();
|
||||||
|
const selectedLanguage = getStringSettingsValue('localization.language', browserLanguage);
|
||||||
|
|
||||||
if (!supportedLanguages.includes(selectedLanguage)) return defaultLanguage;
|
if (!supportedLanguages.includes(selectedLanguage)) return defaultLanguage;
|
||||||
|
|
||||||
return selectedLanguage;
|
return selectedLanguage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function saveSelectedLanguageToCache() {
|
||||||
|
selectedLanguageCache = getSelectedLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
export function getBrowserLanguage(): string {
|
export function getBrowserLanguage(): string {
|
||||||
return 'en';
|
return 'en';
|
||||||
// if (typeof window !== 'undefined') {
|
// if (typeof window !== 'undefined') {
|
||||||
@@ -70,3 +77,7 @@ export function _t(key: string, options: TranslateOptions): string {
|
|||||||
|
|
||||||
return compliledTranslation(values ?? {});
|
return compliledTranslation(values ?? {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function __t(key: string, options: TranslateOptions): () => string {
|
||||||
|
return () => _t(key, options);
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import _ from 'lodash';
|
|||||||
import { arrayToHexString, stringifyCellValue } from 'dbgate-tools';
|
import { arrayToHexString, stringifyCellValue } from 'dbgate-tools';
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
import { DataEditorTypesBehaviour } from 'dbgate-types';
|
import { DataEditorTypesBehaviour } from 'dbgate-types';
|
||||||
|
import { __t, _t } from '../translations'
|
||||||
|
|
||||||
export function copyTextToClipboard(text) {
|
export function copyTextToClipboard(text) {
|
||||||
const oldFocus = document.activeElement;
|
const oldFocus = document.activeElement;
|
||||||
@@ -157,53 +158,53 @@ export function copyRowsToClipboard(format, columns, rows, options) {
|
|||||||
|
|
||||||
export const copyRowsFormatDefs = {
|
export const copyRowsFormatDefs = {
|
||||||
textWithHeaders: {
|
textWithHeaders: {
|
||||||
label: 'Copy with headers',
|
label: __t('clipboard.copyWithHeaders', { defaultMessage : 'Copy with headers' }),
|
||||||
name: 'With headers',
|
name: __t('clipboard.withHeaders', { defaultMessage: 'With headers' }),
|
||||||
formatter: clipboardTextFormatter('\t', true),
|
formatter: clipboardTextFormatter('\t', true),
|
||||||
},
|
},
|
||||||
textWithoutHeaders: {
|
textWithoutHeaders: {
|
||||||
label: 'Copy without headers',
|
label: __t('clipboard.copyWithoutHeaders', { defaultMessage : 'Copy without headers' }),
|
||||||
name: 'Without headers',
|
name: __t('clipboard.withoutHeaders', { defaultMessage: 'Without headers' }),
|
||||||
formatter: clipboardTextFormatter('\t', false),
|
formatter: clipboardTextFormatter('\t', false),
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
label: 'Copy only headers',
|
label: __t('clipboard.copyOnlyHeadres', { defaultMessage : 'Copy only headers'}),
|
||||||
name: 'Only Headers',
|
name: __t('clipboard.onlyHeaders', { defaultMessage : 'Only Headers' }),
|
||||||
formatter: clipboardHeadersFormatter('\t'),
|
formatter: clipboardHeadersFormatter('\t'),
|
||||||
},
|
},
|
||||||
csv: {
|
csv: {
|
||||||
label: 'Copy as CSV',
|
label: __t('clipboard.copyCSV', { defaultMessage : 'Copy as CSV'}),
|
||||||
name: 'CSV',
|
name: 'CSV',
|
||||||
formatter: clipboardTextFormatter(',', true),
|
formatter: clipboardTextFormatter(',', true),
|
||||||
},
|
},
|
||||||
json: {
|
json: {
|
||||||
label: 'Copy as JSON',
|
label: __t('clipboard.copyJSON', { defaultMessage: 'Copy as JSON'}),
|
||||||
name: 'JSON',
|
name: 'JSON',
|
||||||
formatter: clipboardJsonFormatter(),
|
formatter: clipboardJsonFormatter(),
|
||||||
},
|
},
|
||||||
jsonLines: {
|
jsonLines: {
|
||||||
label: 'Copy as JSON lines/NDJSON',
|
label: __t('clipboard.copyJSONLines', { defaultMessage : 'Copy as JSON lines/NDJSON' }),
|
||||||
name: 'JSON lines/NDJSON',
|
name: 'JSON lines/NDJSON',
|
||||||
formatter: clipboardJsonLinesFormatter(),
|
formatter: clipboardJsonLinesFormatter(),
|
||||||
},
|
},
|
||||||
yaml: {
|
yaml: {
|
||||||
label: 'Copy as YAML',
|
label: __t('clipboard.copyYAML', { defaultMessage : 'Copy as YAML'}),
|
||||||
name: 'YAML',
|
name: 'YAML',
|
||||||
formatter: clipboardYamlFormatter(),
|
formatter: clipboardYamlFormatter(),
|
||||||
},
|
},
|
||||||
inserts: {
|
inserts: {
|
||||||
label: 'Copy as SQL INSERTs',
|
label: __t('clipboard.copySQLInsert', { defaultMessage : 'Copy as SQL INSERTs'}),
|
||||||
name: 'SQL INSERTs',
|
name: __t('clipboard.SQLInsert', { defaultMessage : 'SQL INSERTs' }),
|
||||||
formatter: clipboardInsertsFormatter(),
|
formatter: clipboardInsertsFormatter(),
|
||||||
},
|
},
|
||||||
updates: {
|
updates: {
|
||||||
label: 'Copy as SQL UPDATEs',
|
label: __t('clipboard.copySQLUpdate', { defaultMessage : 'Copy as SQL UPDATEs'}),
|
||||||
name: 'SQL UPDATEs',
|
name: __t('clipboard.SQLUpdate', { defaultMessage : 'SQL UPDATEs' }),
|
||||||
formatter: clipboardUpdatesFormatter(),
|
formatter: clipboardUpdatesFormatter(),
|
||||||
},
|
},
|
||||||
mongoInsert: {
|
mongoInsert: {
|
||||||
label: 'Copy as Mongo INSERTs',
|
label: __t('clipboard.copyMongoInsert', { defaultMessage : 'Copy as Mongo INSERTs' }),
|
||||||
name: 'Mongo INSERTs',
|
name: __t('clipboard.mongoInsert', { defaultMessage : 'Mongo INSERTs' }),
|
||||||
formatter: clipboardMongoInsertFormatter(),
|
formatter: clipboardMongoInsertFormatter(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -112,8 +112,9 @@ function mapItem(item, commands) {
|
|||||||
if (item.command) {
|
if (item.command) {
|
||||||
const command = commands[item.command];
|
const command = commands[item.command];
|
||||||
if (command) {
|
if (command) {
|
||||||
|
const commandText = item.text || command.menuName || command.toolbarName || command.name;
|
||||||
return {
|
return {
|
||||||
text: item.text || command.menuName || command.toolbarName || command.name,
|
text: _.isFunction(commandText) ? commandText() : commandText,
|
||||||
keyText: command.keyText || command.keyTextFromGroup || command.disableHandleKeyText,
|
keyText: command.keyText || command.keyTextFromGroup || command.disableHandleKeyText,
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
if (command.isGroupCommand) {
|
if (command.isGroupCommand) {
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
import type { QuickExportDefinition } from 'dbgate-types';
|
import type { QuickExportDefinition } from 'dbgate-types';
|
||||||
import { currentArchive, getCurrentArchive, getExtensions } from '../stores';
|
import { currentArchive, getCurrentArchive, getExtensions } from '../stores';
|
||||||
import hasPermission from './hasPermission';
|
import hasPermission from './hasPermission';
|
||||||
|
import { _t } from '../translations'
|
||||||
import { isProApp } from './proTools';
|
import { isProApp } from './proTools';
|
||||||
|
|
||||||
export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function, advancedExportMenuItem) {
|
export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function, advancedExportMenuItem) {
|
||||||
const extensions = getExtensions();
|
const extensions = getExtensions();
|
||||||
return [
|
return [
|
||||||
isProApp() && {
|
isProApp() && {
|
||||||
text: 'Export advanced...',
|
text: _t('export.exportAdvanced', { defaultMessage : 'Export advanced...'}),
|
||||||
...advancedExportMenuItem,
|
...advancedExportMenuItem,
|
||||||
},
|
},
|
||||||
{ divider: true },
|
{ divider: true },
|
||||||
@@ -17,10 +18,10 @@ export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition)
|
|||||||
})),
|
})),
|
||||||
{ divider: true },
|
{ divider: true },
|
||||||
isProApp() && {
|
isProApp() && {
|
||||||
text: 'Current archive',
|
text: _t('export.currentArchive', { defaultMessage : 'Current archive'}),
|
||||||
onClick: handler({
|
onClick: handler({
|
||||||
extension: 'jsonl',
|
extension: 'jsonl',
|
||||||
label: 'Current archive',
|
label: _t('export.currentArchive', { defaultMessage : 'Current archive'}),
|
||||||
noFilenameDependency: true,
|
noFilenameDependency: true,
|
||||||
createWriter: (fileName, dataName) => ({
|
createWriter: (fileName, dataName) => ({
|
||||||
functionName: 'archiveWriter',
|
functionName: 'archiveWriter',
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
? (schemaList?.map(x => ({ label: x.schemaName, value: x.schemaName })) ?? [])
|
? (schemaList?.map(x => ({ label: x.schemaName, value: x.schemaName })) ?? [])
|
||||||
: [
|
: [
|
||||||
{
|
{
|
||||||
label: _t('schema.all_schemas', {
|
label: _t('schema.allSchemas', {
|
||||||
defaultMessage: 'All schemas ({count})',
|
defaultMessage: 'All schemas ({count})',
|
||||||
values: { count: objectList?.length ?? 0 },
|
values: { count: objectList?.length ?? 0 },
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -193,7 +193,7 @@
|
|||||||
|
|
||||||
<WidgetsInnerContainer hideContent={differentFocusedDb}>
|
<WidgetsInnerContainer hideContent={differentFocusedDb}>
|
||||||
<ErrorInfo
|
<ErrorInfo
|
||||||
message={_t('sqlObject.databaseEmpty', { defaultMessage: `Database ${database} is empty or structure is not loaded, press Refresh button to reload structure` })}
|
message={_t('sqlObject.databaseEmpty', { defaultMessage: 'Database {database} is empty or structure is not loaded, press Refresh button to reload structure', values: { database } })}
|
||||||
icon="img alert"
|
icon="img alert"
|
||||||
/>
|
/>
|
||||||
<div class="m-1" />
|
<div class="m-1" />
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
<InlineButton
|
<InlineButton
|
||||||
on:click={handleRefreshDatabase}
|
on:click={handleRefreshDatabase}
|
||||||
title="Refresh database connection and object list"
|
title={_t('sqlObjectList.refreshDatabase', { defaultMessage: "Refresh database connection and object list" })}
|
||||||
square
|
square
|
||||||
data-testid="SqlObjectList_refreshButton"
|
data-testid="SqlObjectList_refreshButton"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
{
|
{
|
||||||
"app.databaseName": "Název databáze",
|
"app.databaseName": "Název databáze",
|
||||||
|
"app.loading_plugin": "Načítám plugin {plugin} ...",
|
||||||
"app.preparingPlugins": "Příprava pluginů...",
|
"app.preparingPlugins": "Příprava pluginů...",
|
||||||
"app.starting": "Spouštění DbGate",
|
"app.starting": "Spouštění DbGate",
|
||||||
"authToken": "Auth token",
|
"authToken": "Auth token",
|
||||||
|
"chart.detect": "Rozpoznat graf",
|
||||||
|
"chart.open": "Otevřít graf",
|
||||||
|
"clipboard.SQLInsert": "SQL INSERT příkazy",
|
||||||
|
"clipboard.SQLUpdate": "SQL UPDATE příkazy",
|
||||||
|
"clipboard.copyCSV": "Kopírovat jako CSV",
|
||||||
|
"clipboard.copyJSON": "Kopírovat jako JSON",
|
||||||
|
"clipboard.copyJSONLines": "Kopírovat jako JSON lines/NDJSON",
|
||||||
|
"clipboard.copyMongoInsert": "Kopírovat jako Mongo INSERT příkazy",
|
||||||
|
"clipboard.copyOnlyHeadres": "Kopírovat pouze hlavičky",
|
||||||
|
"clipboard.copySQLInsert": "Kopírovat jako SQL INSERT příkazy",
|
||||||
|
"clipboard.copySQLUpdate": "Kopírovat jako SQL UPDATE příkazy",
|
||||||
|
"clipboard.copyWithHeaders": "Kopírovat s hlavičkami",
|
||||||
|
"clipboard.copyWithoutHeaders": "Kopírovat bez hlaviček",
|
||||||
|
"clipboard.copyYAML": "Kopírovat jako YAML",
|
||||||
|
"clipboard.mongoInsert": "Kopírovat jako Mongo INSERT příkazy",
|
||||||
|
"clipboard.onlyHeaders": "Pouze hlavičky",
|
||||||
|
"clipboard.withHeaders": "S hlavičkami",
|
||||||
|
"clipboard.withoutHeaders": "Bez hlaviček",
|
||||||
"column.addNew": "Přidat nový sloupec",
|
"column.addNew": "Přidat nový sloupec",
|
||||||
"column.copyName": "Kopírovat název",
|
"column.copyName": "Kopírovat název",
|
||||||
"column.dropColumn": "Odstranit sloupec",
|
"column.dropColumn": "Odstranit sloupec",
|
||||||
@@ -11,14 +30,37 @@
|
|||||||
"column.renameColumn": "Přejmenovat sloupec",
|
"column.renameColumn": "Přejmenovat sloupec",
|
||||||
"column.search": "Hledat sloupce",
|
"column.search": "Hledat sloupce",
|
||||||
"column.variable": "Proměnné sloupce (jako MongoDB)",
|
"column.variable": "Proměnné sloupce (jako MongoDB)",
|
||||||
|
"columnEditor.addColumn": "Přidat sloupec {columnNumber}",
|
||||||
|
"columnEditor.autoIncrement": "Autoinkrementace",
|
||||||
|
"columnEditor.columnComment": "Komentář",
|
||||||
|
"columnEditor.columnName": "Název sloupce",
|
||||||
|
"columnEditor.computedExpression": "Vypočítaný výraz",
|
||||||
|
"columnEditor.defaultValue": "Výchozí hodnota. Použijte platný SQL výraz, např. 'Hello World' pro řetězec, '' pro prázdný řetězec",
|
||||||
|
"columnEditor.editColumn": "Upravit sloupec",
|
||||||
|
"columnEditor.isPrimaryKey": "Je primární klíč",
|
||||||
|
"columnEditor.isSparse": "Řídký",
|
||||||
|
"columnEditor.isUnsigned": "Bez znaménka",
|
||||||
|
"columnEditor.isZerofill": "Doplňování nul",
|
||||||
|
"columnsConstraintEditor.addNewColumn": "Přidat nový sloupec",
|
||||||
|
"columnsConstraintEditor.chooseColumn": "Vybrat sloupec",
|
||||||
|
"columnsConstraintEditor.selectColumn": "Vybrat sloupec",
|
||||||
|
"command.datagrid": "Datová mřížka",
|
||||||
|
"command.datagrid.addJsonDocument": "Přidat JSON dokument",
|
||||||
"command.datagrid.addNewColumn": "Přidat nový sloupec",
|
"command.datagrid.addNewColumn": "Přidat nový sloupec",
|
||||||
"command.datagrid.addNewColumn.toolbar": "Nový sloupec",
|
"command.datagrid.addNewColumn.toolbar": "Nový sloupec",
|
||||||
|
"command.datagrid.autoRefresh.seconds": "sekund",
|
||||||
|
"command.datagrid.clearFilter": "Vymazat filtr",
|
||||||
"command.datagrid.cloneRows": "Klonovat řádky",
|
"command.datagrid.cloneRows": "Klonovat řádky",
|
||||||
"command.datagrid.cloneRows.toolbar": "Klonovat řádek(y)",
|
"command.datagrid.cloneRows.toolbar": "Klonovat řádek(y)",
|
||||||
"command.datagrid.copyToClipboard": "Kopírovat do schránky",
|
"command.datagrid.copyToClipboard": "Kopírovat do schránky",
|
||||||
"command.datagrid.deleteSelectedRows": "Odstranit vybrané řádky",
|
"command.datagrid.deleteSelectedRows": "Odstranit vybrané řádky",
|
||||||
"command.datagrid.deleteSelectedRows.toolbar": "Odstranit řádek(y)",
|
"command.datagrid.deleteSelectedRows.toolbar": "Odstranit řádek(y)",
|
||||||
|
"command.datagrid.editCell": "Upravit hodnotu buňky",
|
||||||
"command.datagrid.editJsonDocument": "Upravit řádek jako JSON dokument",
|
"command.datagrid.editJsonDocument": "Upravit řádek jako JSON dokument",
|
||||||
|
"command.datagrid.editSelection": "Upravit výběr jako tabulku",
|
||||||
|
"command.datagrid.filterSelected": "Filtrovat vybranou hodnotu",
|
||||||
|
"command.datagrid.findColumn": "Najít sloupec",
|
||||||
|
"command.datagrid.generateSql": "Generovat SQL",
|
||||||
"command.datagrid.insertNewRow": "Vložit nový řádek",
|
"command.datagrid.insertNewRow": "Vložit nový řádek",
|
||||||
"command.datagrid.insertNewRow.toolbar": "Nový řádek",
|
"command.datagrid.insertNewRow.toolbar": "Nový řádek",
|
||||||
"command.datagrid.loadCellFromFile": "Načíst buňku ze souboru",
|
"command.datagrid.loadCellFromFile": "Načíst buňku ze souboru",
|
||||||
@@ -31,12 +73,47 @@
|
|||||||
"command.datagrid.revertAllChanges.toolbar": "Vrátit vše",
|
"command.datagrid.revertAllChanges.toolbar": "Vrátit vše",
|
||||||
"command.datagrid.revertRowChanges": "Vrátit změny řádku",
|
"command.datagrid.revertRowChanges": "Vrátit změny řádku",
|
||||||
"command.datagrid.saveCellToFile": "Uložit buňku do souboru",
|
"command.datagrid.saveCellToFile": "Uložit buňku do souboru",
|
||||||
|
"command.datagrid.sendToDataDeployer": "Odeslat do data deployer",
|
||||||
|
"command.datagrid.setAutoRefresh.1": "Obnovit každou sekundu",
|
||||||
|
"command.datagrid.setAutoRefresh.10": "Obnovit každých 10 sekund",
|
||||||
|
"command.datagrid.setAutoRefresh.15": "Obnovit každých 15 sekund",
|
||||||
|
"command.datagrid.setAutoRefresh.30": "Obnovit každých 30 sekund",
|
||||||
|
"command.datagrid.setAutoRefresh.5": "Obnovit každých 5 sekund",
|
||||||
|
"command.datagrid.setAutoRefresh.60": "Obnovit každých 60 sekund",
|
||||||
"command.datagrid.setNull": "Nastavit NULL",
|
"command.datagrid.setNull": "Nastavit NULL",
|
||||||
|
"command.datagrid.startAutoRefresh": "Spustit automatické obnovování",
|
||||||
|
"command.datagrid.stopAutoRefresh": "Zastavit automatické obnovování",
|
||||||
|
"command.datagrid.switchToJSON": "Přepnout na JSON",
|
||||||
|
"command.datagrid.switchToform": "Přepnout na formulář",
|
||||||
|
"command.datagrid.toggleLeftPanel": "Přepnout levý panel",
|
||||||
"command.datagrid.undo": "Krok zpět",
|
"command.datagrid.undo": "Krok zpět",
|
||||||
"command.datagrid.viewJsonDocument": "Zobrazit řádek jako JSON dokument",
|
"command.datagrid.viewJsonDocument": "Zobrazit řádek jako JSON dokument",
|
||||||
"command.datagrid.viewJsonValue": "Zobrazit buňku jako JSON dokument",
|
"command.datagrid.viewJsonValue": "Zobrazit buňku jako JSON dokument",
|
||||||
|
"command.datagrid.witchToTable": "Přepnout na tabulku",
|
||||||
|
"command.datgrid.hideColumn": "Skrýt sloupec",
|
||||||
"command.new.duckdbDatabase": "Nová DuckDB databáze",
|
"command.new.duckdbDatabase": "Nová DuckDB databáze",
|
||||||
"command.new.sqliteDatabase": "Nová SQLite databáze",
|
"command.new.sqliteDatabase": "Nová SQLite databáze",
|
||||||
|
"command.openQuery": "Otevřít dotaz",
|
||||||
|
"command.query": "Dotaz",
|
||||||
|
"command.query.AiAssistant": "AI Asistent",
|
||||||
|
"command.query.autocommitOffSwitch": "Automatické potvrzování: VYPNUTO",
|
||||||
|
"command.query.autocommitOnSwitch": "Automatické potvrzování: ZAPNUTO",
|
||||||
|
"command.query.beginTransaction": "Začít transakci",
|
||||||
|
"command.query.commitTransaction": "Potvrdit transakci",
|
||||||
|
"command.query.commitTransactionToolbar": "Potvrdit",
|
||||||
|
"command.query.executeCurrent": "Spustit aktuální",
|
||||||
|
"command.query.formatCode": "Formátovat kód",
|
||||||
|
"command.query.insertSqlJoin": "Vložit SQL Join",
|
||||||
|
"command.query.rollbackTransaction": "Vrátit transakci",
|
||||||
|
"command.query.rollbackTransactionToolbar": "Vrátit",
|
||||||
|
"command.query.toggleAutoExecute": "Přepnout automatické spuštění",
|
||||||
|
"command.query.toggleFixedConnection": "Přepnout pevné připojení",
|
||||||
|
"command.query.toggleVisibleResultTabs": "Přepnout zobrazení záložek výsledků",
|
||||||
|
"command.tableData": "Data tabulky",
|
||||||
|
"command.tableData.save": "Uložit",
|
||||||
|
"command.tableEditor": "Editor tabulek",
|
||||||
|
"command.tableEditor.reset": "Resetovat změny",
|
||||||
|
"command.tableEditor.save": "Uložit",
|
||||||
"command.tabs.addToFavorites": "Přidat aktuální kartu do oblíbených",
|
"command.tabs.addToFavorites": "Přidat aktuální kartu do oblíbených",
|
||||||
"command.tabs.closeAll": "Zavřít všechny karty",
|
"command.tabs.closeAll": "Zavřít všechny karty",
|
||||||
"command.tabs.closeTab": "Zavřít kartu",
|
"command.tabs.closeTab": "Zavřít kartu",
|
||||||
@@ -45,27 +122,58 @@
|
|||||||
"command.tabs.nextTab": "Další karta",
|
"command.tabs.nextTab": "Další karta",
|
||||||
"command.tabs.previousTab": "Předchozí karta",
|
"command.tabs.previousTab": "Předchozí karta",
|
||||||
"command.tabs.reopenClosedTab": "Znovu otevřít zavřenou kartu",
|
"command.tabs.reopenClosedTab": "Znovu otevřít zavřenou kartu",
|
||||||
|
"common.addNew": "Přidat nový",
|
||||||
|
"common.advanced": "Pokročilé",
|
||||||
"common.archive": "Archivovat (JSONL)",
|
"common.archive": "Archivovat (JSONL)",
|
||||||
"common.cancel": "Zrušiť",
|
"common.cancel": "Zrušit",
|
||||||
"common.close": "Zavřít",
|
"common.close": "Zavřít",
|
||||||
|
"common.column": "Sloupec",
|
||||||
|
"common.compare": "Porovnat databáze",
|
||||||
|
"common.connection": "Připojení",
|
||||||
|
"common.connectionOnCloud": "Připojení na cloudu",
|
||||||
"common.connections": "Připojení",
|
"common.connections": "Připojení",
|
||||||
|
"common.createNew": "Vytvořit",
|
||||||
|
"common.data": "Data",
|
||||||
"common.database": "Databáze",
|
"common.database": "Databáze",
|
||||||
|
"common.databaseChat": "Databázový chat",
|
||||||
|
"common.datagrid.deepRefresh": "Obnovit se strukturou",
|
||||||
|
"common.delete": "Smazat",
|
||||||
|
"common.description": "Popis",
|
||||||
|
"common.erDiagram": "ER Diagram",
|
||||||
|
"common.execute": "Spustit",
|
||||||
"common.export": "Export",
|
"common.export": "Export",
|
||||||
|
"common.exportDatabase": "Exportovat databázi",
|
||||||
|
"common.featurePremium": "Tato funkce je k dispozici pouze v DbGate Premium",
|
||||||
|
"common.general": "Obecné",
|
||||||
"common.import": "Import",
|
"common.import": "Import",
|
||||||
"common.kill": "Ukončit",
|
"common.kill": "Ukončit",
|
||||||
|
"common.name": "Název",
|
||||||
|
"common.notSelectedOptional": "(nezvoleno - volitelné)",
|
||||||
|
"common.parameters": "Parametry",
|
||||||
|
"common.perspective": "Perspektiva",
|
||||||
"common.query": "Dotaz",
|
"common.query": "Dotaz",
|
||||||
|
"common.queryDesigner": "Návrhář dotazů",
|
||||||
|
"common.queryEditor": "Editor SQL dotazů",
|
||||||
"common.refresh": "Obnovit",
|
"common.refresh": "Obnovit",
|
||||||
|
"common.remove": "Odstranit",
|
||||||
"common.save": "Uložit",
|
"common.save": "Uložit",
|
||||||
|
"common.saveAndNext": "Uložit a další",
|
||||||
"common.saveToArchive": "Uložit do archívu",
|
"common.saveToArchive": "Uložit do archívu",
|
||||||
"common.schema": "Schéma",
|
"common.schema": "Schéma",
|
||||||
"common.searchBy": "Hledat podle:",
|
"common.searchBy": "Hledat podle:",
|
||||||
|
"common.sqlGenerator": "SQL Generátor",
|
||||||
|
"common.table": "Tabulka",
|
||||||
|
"common.testingConnection": "Testování připojení",
|
||||||
"connection.accessKeyId": "ID přístupového klíče",
|
"connection.accessKeyId": "ID přístupového klíče",
|
||||||
"connection.allowedDatabases": "Povolené databáze, jedna na řádek",
|
"connection.allowedDatabases": "Povolené databáze, jedna na řádek",
|
||||||
"connection.allowedDatabasesRegex": "Regulární výraz pro povolené databáze",
|
"connection.allowedDatabasesRegex": "Regulární výraz pro povolené databáze",
|
||||||
|
"connection.askPassword": "Neukládat, ptát se na heslo",
|
||||||
|
"connection.askUser": "Neukládat, ptát se na přihlašovací jméno a heslo",
|
||||||
"connection.authentication": "Autentizace",
|
"connection.authentication": "Autentizace",
|
||||||
"connection.autoDetectNatMap": "Automatická detekce NAT mapy (použijte pro Redis Cluster v Docker síti)",
|
"connection.autoDetectNatMap": "Automatická detekce NAT mapy (použijte pro Redis Cluster v Docker síti)",
|
||||||
"connection.chooseType": "Vyberte typ",
|
"connection.chooseType": "Vyberte typ",
|
||||||
"connection.clientLibraryPath": "Cesta ke klientské knihovně",
|
"connection.clientLibraryPath": "Cesta ke klientské knihovně",
|
||||||
|
"connection.closeConfirm": "Uzavření připojení uzavře {count} otevřených karet, pokračovat?",
|
||||||
"connection.clusterNodes": "Uzly clusteru",
|
"connection.clusterNodes": "Uzly clusteru",
|
||||||
"connection.color": "Barva",
|
"connection.color": "Barva",
|
||||||
"connection.connect": "Připojit",
|
"connection.connect": "Připojit",
|
||||||
@@ -80,6 +188,7 @@
|
|||||||
"connection.databaseUrl": "URL databáze",
|
"connection.databaseUrl": "URL databáze",
|
||||||
"connection.defaultDatabase": "Výchozí databáze",
|
"connection.defaultDatabase": "Výchozí databáze",
|
||||||
"connection.delete": "Odstranit",
|
"connection.delete": "Odstranit",
|
||||||
|
"connection.deleteConfirm": "Opravdu smazat připojení {name}?",
|
||||||
"connection.disconnect": "Odpojit",
|
"connection.disconnect": "Odpojit",
|
||||||
"connection.displayName": "Zobrazený název",
|
"connection.displayName": "Zobrazený název",
|
||||||
"connection.dockerWarning": "V Dockeru localhost a 127.0.0.1 nefungují, použijte místo toho dockerhost",
|
"connection.dockerWarning": "V Dockeru localhost a 127.0.0.1 nefungují, použijte místo toho dockerhost",
|
||||||
@@ -87,6 +196,7 @@
|
|||||||
"connection.edit": "Upravit",
|
"connection.edit": "Upravit",
|
||||||
"connection.endpointKey": "Klíč",
|
"connection.endpointKey": "Klíč",
|
||||||
"connection.engine": "Typ databáze",
|
"connection.engine": "Typ databáze",
|
||||||
|
"connection.engineDriverNotFound": "Ovladač databáze {engine} nebyl nalezen, zkontrolujte nainstalované pluginy a změňte typ databáze v dialogu úpravy připojení",
|
||||||
"connection.fillDetails": "Vyplňte detaily připojení k databázi",
|
"connection.fillDetails": "Vyplňte detaily připojení k databázi",
|
||||||
"connection.isReadOnly": "Je pouze pro čtení",
|
"connection.isReadOnly": "Je pouze pro čtení",
|
||||||
"connection.keySeparator": "Oddělovač klíčů",
|
"connection.keySeparator": "Oddělovač klíčů",
|
||||||
@@ -107,6 +217,7 @@
|
|||||||
"connection.server": "Server",
|
"connection.server": "Server",
|
||||||
"connection.serverSummary": "Shrnutí serveru",
|
"connection.serverSummary": "Shrnutí serveru",
|
||||||
"connection.serviceName": "Název služby",
|
"connection.serviceName": "Název služby",
|
||||||
|
"connection.singleDatabase": "Používat pouze databázi {defaultDatabase}",
|
||||||
"connection.socketPath": "Cesta k socketu",
|
"connection.socketPath": "Cesta k socketu",
|
||||||
"connection.sshTunnel.agentFound": "SSH Agent nalezen",
|
"connection.sshTunnel.agentFound": "SSH Agent nalezen",
|
||||||
"connection.sshTunnel.agentNotFound": "SSH Agent nenalezen",
|
"connection.sshTunnel.agentNotFound": "SSH Agent nenalezen",
|
||||||
@@ -124,28 +235,42 @@
|
|||||||
"connection.ssl.use": "Použít SSL",
|
"connection.ssl.use": "Použít SSL",
|
||||||
"connection.trustServerCertificate": "Důvěřovat certifikátu serveru",
|
"connection.trustServerCertificate": "Důvěřovat certifikátu serveru",
|
||||||
"connection.type": "Typ připojení",
|
"connection.type": "Typ připojení",
|
||||||
|
"connection.useSeparateSchemas": "Používat schémata samostatně (použijte, pokud máte mnoho velkých schémat).",
|
||||||
"connection.useUrl": "Použít URL databáze",
|
"connection.useUrl": "Použít URL databáze",
|
||||||
"connection.user": "Uživatel",
|
"connection.user": "Uživatel",
|
||||||
"connection.viewDetails": "Zobrazit detaily",
|
"connection.viewDetails": "Zobrazit detaily",
|
||||||
"connection.windowsDomain": "Doména (zadejte pro použití NTLM autentizace)",
|
"connection.windowsDomain": "Doména (zadejte pro použití NTLM autentizace)",
|
||||||
|
"dataGrid.columns": "Sloupce",
|
||||||
|
"dataGrid.filters": "Filtry",
|
||||||
|
"dataGrid.macros": "Makra",
|
||||||
|
"dataGrid.multiColumnFilter": "Filtr více sloupců",
|
||||||
|
"dataGrid.references": "Reference",
|
||||||
|
"dataGrid.referencesTables": "Reference na tabulky",
|
||||||
|
"dataGrid.searchReferences": "Hledat reference",
|
||||||
"database.backup": "Záloha #",
|
"database.backup": "Záloha #",
|
||||||
|
"database.chooseArchiveFolderForDataDeployer": "Vybrat archivní složku pro data deployer",
|
||||||
|
"database.closeConfirm": "Uzavření připojení uzavře {count} otevřených karet, pokračovat?",
|
||||||
"database.compare": "Porovnat",
|
"database.compare": "Porovnat",
|
||||||
|
"database.compareWithCurrentDb": "Porovnat s {name}",
|
||||||
"database.copyDatabaseName": "Kopírovat název databáze",
|
"database.copyDatabaseName": "Kopírovat název databáze",
|
||||||
"database.createDatabaseBackup": "Vytvořit zálohu databáze",
|
"database.createDatabaseBackup": "Vytvořit zálohu databáze",
|
||||||
"database.createNewApplication": "Vytvořit novou aplikaci",
|
"database.createNewApplication": "Vytvořit novou aplikaci",
|
||||||
"database.dataDeployer": "Nasazovač dat",
|
"database.dataDeployer": "Data Deployer",
|
||||||
"database.databaseChat": "Databázový chat",
|
"database.databaseChat": "Databázový chat",
|
||||||
"database.databaseProfiler": "Databázový profilovač",
|
"database.databaseProfiler": "Databázový profilovač",
|
||||||
"database.designPerspectiveQuery": "Návrh perspektivního dotazu",
|
"database.designPerspectiveQuery": "Návrh perspektivního dotazu",
|
||||||
"database.designQuery": "Návrh dotazu",
|
"database.designQuery": "Návrh dotazu",
|
||||||
"database.diagram": "Diagram #",
|
"database.diagram": "Diagram #",
|
||||||
"database.disconnect": "Odpojit",
|
"database.disconnect": "Odpojit",
|
||||||
|
"database.dropAllObjectsConfirm": "Toto vygeneruje skript, po spuštění tohoto skriptu budou všechny objekty v {name} odstraněny. Pokračovat?",
|
||||||
|
"database.dropConfirm": "Opravdu odstranit databázi {name}? Všechny otevřené relace s touto databází budou násilně uzavřeny.",
|
||||||
"database.dropDatabase": "Odstranit databázi",
|
"database.dropDatabase": "Odstranit databázi",
|
||||||
"database.editApplications": "Upravit aplikaci",
|
"database.editApplications": "Upravit aplikaci",
|
||||||
"database.export": "Export",
|
"database.export": "Export",
|
||||||
"database.exportDbModel": "Export DB model",
|
"database.exportDbModel": "Export DB model",
|
||||||
"database.generateScript": "Vygenerovat skript",
|
"database.generateScript": "Vygenerovat skript",
|
||||||
"database.import": "Import",
|
"database.import": "Import",
|
||||||
|
"database.newCollection": "Nová {collectionLabel}",
|
||||||
"database.newQuery": "Nový dotaz",
|
"database.newQuery": "Nový dotaz",
|
||||||
"database.newTable": "Nová tabulka",
|
"database.newTable": "Nová tabulka",
|
||||||
"database.perspective": "Perspektiva #",
|
"database.perspective": "Perspektiva #",
|
||||||
@@ -159,9 +284,77 @@
|
|||||||
"database.shellTitle": "Shell #",
|
"database.shellTitle": "Shell #",
|
||||||
"database.showDiagram": "Zobrazit diagram",
|
"database.showDiagram": "Zobrazit diagram",
|
||||||
"database.sqlGenerator": "SQL generátor",
|
"database.sqlGenerator": "SQL generátor",
|
||||||
|
"datagrid.closeTabs.close": "Zavřít karty",
|
||||||
|
"datagrid.closeTabs.header": "Potvrdit zavření karet",
|
||||||
|
"datagrid.closeTabs.modifiedFiles": "Následující soubory jsou změněny, opravdu zavřít karty? Po zavření je můžete znovu otevřít v historii",
|
||||||
|
"datagrid.columnNameFilter": "Filtr názvu sloupce",
|
||||||
|
"datagrid.copyAdvanced": "Pokročilé kopírování",
|
||||||
|
"datagrid.macros.calculation": "Výpočet",
|
||||||
|
"datagrid.macros.calculationDescription": "Vlastní výraz. Použijte řádek.název_sloupce pro přístup k hodnotám sloupců, value pro původní hodnotu",
|
||||||
|
"datagrid.macros.changeTextCase": "Změnit velikost písmen",
|
||||||
|
"datagrid.macros.changeTextCaseDescription": "Funkce pro velká písmena, malá písmena a další úpravy",
|
||||||
|
"datagrid.macros.changeTextCaseType": "Typ",
|
||||||
|
"datagrid.macros.currentDate": "Aktuální datum",
|
||||||
|
"datagrid.macros.currentDateDescription": "Získá aktuální datum",
|
||||||
|
"datagrid.macros.dayName": "Název dne",
|
||||||
|
"datagrid.macros.delimiter": "Oddělovač",
|
||||||
|
"datagrid.macros.detail": "Detail makra",
|
||||||
|
"datagrid.macros.duplicateColumns": "Duplikovat sloupce",
|
||||||
|
"datagrid.macros.duplicateColumnsDescription": "Duplikovat vybrané sloupce",
|
||||||
|
"datagrid.macros.expression": "Výraz",
|
||||||
|
"datagrid.macros.extractDateFields": "Extrahovat datumová pole",
|
||||||
|
"datagrid.macros.extractDateFieldsDescription": "Extrahuje rok, měsíc, den a další časové údaje z výběru a přidá je jako nové sloupce",
|
||||||
|
"datagrid.macros.format": "Formát",
|
||||||
|
"datagrid.macros.generateUUID": "Generovat UUID",
|
||||||
|
"datagrid.macros.generateUUIDDescription": "Generuje unikátní identifikátor",
|
||||||
|
"datagrid.macros.hourName": "Název hodiny",
|
||||||
|
"datagrid.macros.minuteName": "Název minuty",
|
||||||
|
"datagrid.macros.monthName": "Název měsíce",
|
||||||
|
"datagrid.macros.noParameters": "Nemá žádné parametry",
|
||||||
|
"datagrid.macros.padCharacter": "Znak",
|
||||||
|
"datagrid.macros.padLeft": "Doplnit zleva",
|
||||||
|
"datagrid.macros.padLeftDescription": "Vrátí řetězec zadané délky, ve kterém je začátek aktuálního řetězce doplněn mezerami nebo jiným znakem",
|
||||||
|
"datagrid.macros.padLength": "Délka",
|
||||||
|
"datagrid.macros.padRight": "Doplnit zprava",
|
||||||
|
"datagrid.macros.padRightDescription": "Vrátí řetězec zadané délky, ve kterém je konec aktuálního řetězce doplněn mezerami nebo jiným znakem",
|
||||||
|
"datagrid.macros.postfix": "Přípona",
|
||||||
|
"datagrid.macros.prefix": "Předpona",
|
||||||
|
"datagrid.macros.removeDiacritics": "Odstranit diakritiku",
|
||||||
|
"datagrid.macros.removeDiacriticsDescription": "Odstraní diakritiku z vybraných buněk",
|
||||||
|
"datagrid.macros.rowIndex": "Index řádku",
|
||||||
|
"datagrid.macros.rowIndexDescription": "Index řádku od 1 (automatické číslování)",
|
||||||
|
"datagrid.macros.searchReplaceText": "Najít a nahradit text",
|
||||||
|
"datagrid.macros.searchReplaceTextCaseSensitive": "Rozlišovat velikost písmen",
|
||||||
|
"datagrid.macros.searchReplaceTextDescription": "Najít a nahradit text nebo regulární výraz",
|
||||||
|
"datagrid.macros.searchReplaceTextFind": "Najít",
|
||||||
|
"datagrid.macros.searchReplaceTextIsRegex": "Regulární výraz",
|
||||||
|
"datagrid.macros.searchReplaceTextReplaceWith": "Nahradit čím",
|
||||||
|
"datagrid.macros.secondName": "Název sekundy",
|
||||||
|
"datagrid.macros.splitColumns": "Rozdělit sloupce",
|
||||||
|
"datagrid.macros.splitColumnsDescription": "Rozdělit vybrané sloupce",
|
||||||
|
"datagrid.macros.textGroup": "Textové",
|
||||||
|
"datagrid.macros.toBoolean": "Převést na boolean",
|
||||||
|
"datagrid.macros.toBooleanDescription": "Převede na boolean",
|
||||||
|
"datagrid.macros.toInt": "Převést na celé číslo",
|
||||||
|
"datagrid.macros.toIntDescription": "Převede na celé číslo",
|
||||||
|
"datagrid.macros.toNumber": "Převést na číslo",
|
||||||
|
"datagrid.macros.toNumberDescription": "Převede na číslo",
|
||||||
|
"datagrid.macros.toString": "Převést na text",
|
||||||
|
"datagrid.macros.toStringDescription": "Převede na text",
|
||||||
|
"datagrid.macros.toolsGroup": "Nástroje",
|
||||||
|
"datagrid.macros.trim": "Oříznout",
|
||||||
|
"datagrid.macros.trimDescription": "Odstraní mezery na začátku a konci",
|
||||||
|
"datagrid.macros.version": "Verze",
|
||||||
|
"datagrid.macros.yearName": "Název roku",
|
||||||
|
"datagrid.searchMacros": "Hledat makra",
|
||||||
|
"datagrid.setFormat": "Nastavit formát: ",
|
||||||
|
"datagrid.structure": "Struktura",
|
||||||
"error.driverNotFound": "Neplatné připojení k databázi, ovladač nebyl nalezen",
|
"error.driverNotFound": "Neplatné připojení k databázi, ovladač nebyl nalezen",
|
||||||
"error.selectedCloudConnection": "Vybrané připojení je z DbGate cloudu",
|
"error.selectedCloudConnection": "Vybrané připojení je z DbGate cloudu",
|
||||||
"error.selectedNotCloudConnection": "Vybrané připojení není z DbGate cloudu",
|
"error.selectedNotCloudConnection": "Vybrané připojení není z DbGate cloudu",
|
||||||
|
"export.currentArchive": "Aktuální archiv",
|
||||||
|
"export.exportAdvanced": "Pokročilý export...",
|
||||||
|
"export.result": "Exportovat výsledek",
|
||||||
"file.allSupported": "Všechny podporované soubory",
|
"file.allSupported": "Všechny podporované soubory",
|
||||||
"file.diagramFiles": "Soubory diagramů",
|
"file.diagramFiles": "Soubory diagramů",
|
||||||
"file.duckdb": "Databáze DuckDB",
|
"file.duckdb": "Databáze DuckDB",
|
||||||
@@ -239,6 +432,18 @@
|
|||||||
"filter.today": "Dnes",
|
"filter.today": "Dnes",
|
||||||
"filter.tomorrow": "Zítra",
|
"filter.tomorrow": "Zítra",
|
||||||
"filter.yesterday": "Včera",
|
"filter.yesterday": "Včera",
|
||||||
|
"foreignKey.baseColumns": "Základní sloupce",
|
||||||
|
"foreignKey.refColumns": "Odkazované sloupce",
|
||||||
|
"foreignKey.refTableName": "Odkazovaná tabulka",
|
||||||
|
"foreignKeyEditor.addColumn": "Přidat sloupec",
|
||||||
|
"foreignKeyEditor.addForeignKey": "Přidat cizí klíč",
|
||||||
|
"foreignKeyEditor.baseColumn": "Základní sloupec - ",
|
||||||
|
"foreignKeyEditor.editForeignKey": "Upravit cizí klíč",
|
||||||
|
"foreignKeyEditor.onDeleteAction": "Akce při mazání",
|
||||||
|
"foreignKeyEditor.onUpdateAction": "Akce při aktualizaci",
|
||||||
|
"foreignKeyEditor.refColumn": "Referenční sloupec - ",
|
||||||
|
"foreignKeyEditor.referencedTable": "Odkazovaná tabulka",
|
||||||
|
"foreignKeyEditor.tableNotSet": "(tabulka není nastavena)",
|
||||||
"importExport.createZipFileInArchive": "Vytvořit ZIP soubor v archivu",
|
"importExport.createZipFileInArchive": "Vytvořit ZIP soubor v archivu",
|
||||||
"importExport.exportToZipArchive": "Exportovat do ZIP archivu",
|
"importExport.exportToZipArchive": "Exportovat do ZIP archivu",
|
||||||
"importExport.exportToZipFile": "Exportovat do ZIP souboru",
|
"importExport.exportToZipFile": "Exportovat do ZIP souboru",
|
||||||
@@ -246,7 +451,36 @@
|
|||||||
"importExport.importFromZipFile": "Importovat z ZIP souboru (v archivní složce)",
|
"importExport.importFromZipFile": "Importovat z ZIP souboru (v archivní složce)",
|
||||||
"importExport.sourceFiles": "Zdrojové soubory",
|
"importExport.sourceFiles": "Zdrojové soubory",
|
||||||
"importExport.tablesViewsCollections": "Tabulky / pohledy / kolekce",
|
"importExport.tablesViewsCollections": "Tabulky / pohledy / kolekce",
|
||||||
|
"indexEditor.filteredIndexCondition": "Podmínka filtrovaného indexu",
|
||||||
|
"indexEditor.indexName": "Název indexu",
|
||||||
|
"indexEditor.isUnique": "Je jedinečný index",
|
||||||
|
"newObject.compareDescription": "Porovnat schémata databází",
|
||||||
|
"newObject.compareDisabled": "Porovnání databází není pro aktuální databázi k dispozici.",
|
||||||
|
"newObject.connectionLocal": "Připojení k databázi je uloženo lokálně",
|
||||||
|
"newObject.connectionLocalDisabled": "Nemáte oprávnění vytvářet npvá připojení",
|
||||||
|
"newObject.connectionOnCloudDescription": "Připojení k databázi je uloženo na DbGate Cloud",
|
||||||
|
"newObject.connectionOnCloudDisabled": "Pro vytváření připojení v DbGate cloudu nemáte oprávnění",
|
||||||
|
"newObject.databaseChatDescription": "Chatovat s databází pomocí AI",
|
||||||
|
"newObject.databaseChatDisabled": "Databázový chat není pro aktuální databázi k dispozici",
|
||||||
|
"newObject.erDiagramDescription": "Vizualizovat strukturu databáze",
|
||||||
|
"newObject.erDiagramDisabled": "ER Diagram není pro aktuální databázi k dispozici",
|
||||||
|
"newObject.exportDescription": "Exportovat do souboru jako CSV, JSON, Excel nebo jiné databáze",
|
||||||
|
"newObject.exportDisabled": "Export není pro aktuální databázi k dispozici",
|
||||||
|
"newObject.perspectiveDescription": "Propojte data z více databází",
|
||||||
|
"newObject.queryDesignerDescription": "Vizuálně navrhnout SQL dotazy",
|
||||||
|
"newObject.queryDesignerDisabled": "Návrhář dotazů není pro aktuální databázi k dispozici",
|
||||||
|
"newObject.sqlGeneratorDescription": "Vygenerovat SQL skripty pro databázové objekty",
|
||||||
|
"newObject.sqlGeneratorDisabled": "SQL generátor není pro aktuální databázi k dispozici",
|
||||||
|
"newObject.tableDescription": "Vytvořit tabulku v aktuální databázi",
|
||||||
|
"newObject.tableDisabled": "Vytvoření tabulky není pro aktuální databázi k dispozici",
|
||||||
|
"query.limitRows": "Omezit na {queryRowsLimit} řádků",
|
||||||
|
"query.named": ":proměnná",
|
||||||
|
"query.noParameters": "(žádné parametry)",
|
||||||
|
"query.positional": "? (poziční)",
|
||||||
|
"query.unlimitedRows": "Neomezený počet řádků",
|
||||||
|
"query.variable": "#proměnná",
|
||||||
"schema.add": "Přidat nové schéma",
|
"schema.add": "Přidat nové schéma",
|
||||||
|
"schema.allSchemas": "Všechna schémata ({count})",
|
||||||
"schema.createSchema": "Vytvořit schéma",
|
"schema.createSchema": "Vytvořit schéma",
|
||||||
"schema.delete": "Odstranit schéma",
|
"schema.delete": "Odstranit schéma",
|
||||||
"schema.resetToDefault": "Resetovat na výchozí",
|
"schema.resetToDefault": "Resetovat na výchozí",
|
||||||
@@ -257,6 +491,7 @@
|
|||||||
"serverSummaryTab.processes": "Procesy",
|
"serverSummaryTab.processes": "Procesy",
|
||||||
"serverSummaryTab.variables": "Proměnné",
|
"serverSummaryTab.variables": "Proměnné",
|
||||||
"settings.appearance": "Vzhled aplikace",
|
"settings.appearance": "Vzhled aplikace",
|
||||||
|
"settings.appearance.afterInstalling": "Po instalaci pluginu témat (zkuste vyhledat \"theme\" v dostupných rozšířeních) zde budou k dispozici nová témata.",
|
||||||
"settings.appearance.customSize": "Vlastní velikost",
|
"settings.appearance.customSize": "Vlastní velikost",
|
||||||
"settings.appearance.editorTheme": "Téma",
|
"settings.appearance.editorTheme": "Téma",
|
||||||
"settings.appearance.editorTheme.default": "(použít výchozí téma)",
|
"settings.appearance.editorTheme.default": "(použít výchozí téma)",
|
||||||
@@ -267,6 +502,7 @@
|
|||||||
"settings.behaviour": "Chování",
|
"settings.behaviour": "Chování",
|
||||||
"settings.behaviour.jsonPreviewWrap": "Zalomit JSON v náhledu",
|
"settings.behaviour.jsonPreviewWrap": "Zalomit JSON v náhledu",
|
||||||
"settings.behaviour.openDetailOnArrows": "Otevřít detail při navigaci klávesnicí",
|
"settings.behaviour.openDetailOnArrows": "Otevřít detail při navigaci klávesnicí",
|
||||||
|
"settings.behaviour.singleClickPreview": "Když jedním kliknutím nebo výběrem souboru v zobrazení \"Tabulky, Pohledy, Funkce\", je zobrazen v režimu náhledu a znovu používá existující kartu (karta náhledu). To je užitečné, pokud rychle procházíte tabulky a nechcete, aby každá navštívená tabulka měla svou vlastní kartu. Když začnete upravovat tabulku nebo použijete dvojklik pro otevření tabulky ze zobrazení \"Tabulky\", nová karta je věnována této tabulce.",
|
||||||
"settings.behaviour.useTabPreviewMode": "Použít režim náhledu na kartě",
|
"settings.behaviour.useTabPreviewMode": "Použít režim náhledu na kartě",
|
||||||
"settings.confirmations": "Potvrzení",
|
"settings.confirmations": "Potvrzení",
|
||||||
"settings.confirmations.skipConfirm.collectionDataSave": "Přeskočit potvrzení při ukládání údajů kolekce (NoSQL)",
|
"settings.confirmations.skipConfirm.collectionDataSave": "Přeskočit potvrzení při ukládání údajů kolekce (NoSQL)",
|
||||||
@@ -349,6 +585,7 @@
|
|||||||
"sqlObject.columnComment": "Komentář sloupce",
|
"sqlObject.columnComment": "Komentář sloupce",
|
||||||
"sqlObject.columnDataType": "Datový typ sloupce",
|
"sqlObject.columnDataType": "Datový typ sloupce",
|
||||||
"sqlObject.columnName": "Název sloupce",
|
"sqlObject.columnName": "Název sloupce",
|
||||||
|
"sqlObject.databaseEmpty": "Databáze {database} je prázdná nebo struktura není načtena, stiskněte tlačítko Obnovit pro znovunačtení struktury",
|
||||||
"sqlObject.loadingStructure": "Načítání struktury databáze",
|
"sqlObject.loadingStructure": "Načítání struktury databáze",
|
||||||
"sqlObject.schemaName": "Schéma",
|
"sqlObject.schemaName": "Schéma",
|
||||||
"sqlObject.search.placeholder": "Hledat v tabulkách, pohledech, procedurách",
|
"sqlObject.search.placeholder": "Hledat v tabulkách, pohledech, procedurách",
|
||||||
@@ -358,9 +595,13 @@
|
|||||||
"sqlObject.tableViewProcedureName": "Název tabulky/pohledu/procedury",
|
"sqlObject.tableViewProcedureName": "Název tabulky/pohledu/procedury",
|
||||||
"sqlObject.tablesWithRows": "Pouze tabulky s řádky",
|
"sqlObject.tablesWithRows": "Pouze tabulky s řádky",
|
||||||
"sqlObject.viewProcedureTriggerText": "Text pohledu/procedury/triggeru",
|
"sqlObject.viewProcedureTriggerText": "Text pohledu/procedury/triggeru",
|
||||||
|
"sqlObjectList.refreshDatabase": "Obnovit připojení k databázi a seznam objektů",
|
||||||
"summaryProcesses.actions": "Akce",
|
"summaryProcesses.actions": "Akce",
|
||||||
"summaryProcesses.client": "Klient",
|
"summaryProcesses.client": "Klient",
|
||||||
"summaryProcesses.connectionId": "ID připojení",
|
"summaryProcesses.connectionId": "ID připojení",
|
||||||
|
"summaryProcesses.killConfirm": "Jste si jisti, že chcete ukončit proces {processId}?",
|
||||||
|
"summaryProcesses.killError": "Chyba při ukončování procesu {processId}: {errorMessage}",
|
||||||
|
"summaryProcesses.killSuccess": "Proces {processId} byl úspěšně ukončen",
|
||||||
"summaryProcesses.namespace": "Namespace",
|
"summaryProcesses.namespace": "Namespace",
|
||||||
"summaryProcesses.operation": "Operace",
|
"summaryProcesses.operation": "Operace",
|
||||||
"summaryProcesses.processId": "ID procesu",
|
"summaryProcesses.processId": "ID procesu",
|
||||||
@@ -370,6 +611,49 @@
|
|||||||
"summaryVariables.value": "Hodnota",
|
"summaryVariables.value": "Hodnota",
|
||||||
"summaryVariables.variable": "Proměnná",
|
"summaryVariables.variable": "Proměnná",
|
||||||
"tab.administration": "Administrace",
|
"tab.administration": "Administrace",
|
||||||
|
"tableData.viewColumns": "Zobrazit sloupce",
|
||||||
|
"tableEdit.addConstraintLabel": "Přidat {constraintLabel}",
|
||||||
|
"tableEdit.editConstraintLabel": "Upravit {constraintLabel}",
|
||||||
|
"tableEdit.unique": "jedinečné",
|
||||||
|
"tableEditor": "Editor tabulek",
|
||||||
|
"tableEditor.addColumn": "Přidat sloupec",
|
||||||
|
"tableEditor.addForeignKey": "Přidat cizí klíč",
|
||||||
|
"tableEditor.addIndex": "Přidat index",
|
||||||
|
"tableEditor.addPrimaryKey": "Přidat primární klíč",
|
||||||
|
"tableEditor.addUnique": "Přidat jedinečný",
|
||||||
|
"tableEditor.columnComment": "Komentář",
|
||||||
|
"tableEditor.columns": "Sloupce",
|
||||||
|
"tableEditor.computedExpression": "Vypočítaný výraz",
|
||||||
|
"tableEditor.constraintName": "Název omezení",
|
||||||
|
"tableEditor.copydefinitions": "Kopírovat definice",
|
||||||
|
"tableEditor.copynames": "Kopírovat názvy",
|
||||||
|
"tableEditor.dataType": "Datový typ",
|
||||||
|
"tableEditor.defaultValue": "Výchozí hodnota",
|
||||||
|
"tableEditor.dependencies": "Závislosti",
|
||||||
|
"tableEditor.foreignKeys": "Cizí klíče ({foreignKeyCount})",
|
||||||
|
"tableEditor.indexes": "Indexy ({indexCount})",
|
||||||
|
"tableEditor.isPersisted": "Je persistentní",
|
||||||
|
"tableEditor.isSparse": "Je řídký",
|
||||||
|
"tableEditor.isUnsigned": "Bez znaménka",
|
||||||
|
"tableEditor.isZeroFill": "Doplňování nul",
|
||||||
|
"tableEditor.no": "NE",
|
||||||
|
"tableEditor.noConstraintDefined": "Žádné {constraintLabel} nejsou definovány",
|
||||||
|
"tableEditor.nocolumnsdefined": "Žádné sloupce nejsou definovány",
|
||||||
|
"tableEditor.noforeignkeydefined": "Žádný cizí klíč není definován",
|
||||||
|
"tableEditor.noindexdefined": "Žádný index není definován",
|
||||||
|
"tableEditor.notnull": "NOT NULL",
|
||||||
|
"tableEditor.nouniquedefined": "Žádný jedinečný klíč není definován",
|
||||||
|
"tableEditor.null": "NULL",
|
||||||
|
"tableEditor.nullability": "Možnost NULL",
|
||||||
|
"tableEditor.primaryKey": "primární klíč",
|
||||||
|
"tableEditor.remove": "Odstranit",
|
||||||
|
"tableEditor.tablename": "Název tabulky",
|
||||||
|
"tableEditor.tableproperties": "Vlastnosti tabulky",
|
||||||
|
"tableEditor.unique": "Jedinečný",
|
||||||
|
"tableEditor.uniqueConstraints": "Omezení jedinečnosti ({constraintCount})",
|
||||||
|
"tableEditor.yes": "ANO",
|
||||||
|
"tableStructure.alter": "Upravit tabulku",
|
||||||
|
"tableStructure.create": "Vytvořit tabulku",
|
||||||
"widget.databaseContent": "Obsah databáze",
|
"widget.databaseContent": "Obsah databáze",
|
||||||
"widget.databases": "Databáze",
|
"widget.databases": "Databáze",
|
||||||
"widget.keys": "Klíče",
|
"widget.keys": "Klíče",
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
{
|
{
|
||||||
"app.databaseName": "Database name",
|
"app.databaseName": "Database name",
|
||||||
|
"app.loading_plugin": "Loading plugin {plugin} ...",
|
||||||
"app.preparingPlugins": "Preparing plugins ...",
|
"app.preparingPlugins": "Preparing plugins ...",
|
||||||
"app.starting": "Starting DbGate",
|
"app.starting": "Starting DbGate",
|
||||||
"authToken": "Auth token",
|
"authToken": "Auth token",
|
||||||
|
"chart.detect": "Detect chart",
|
||||||
|
"chart.open": "Open chart",
|
||||||
|
"clipboard.SQLInsert": "SQL INSERTs",
|
||||||
|
"clipboard.SQLUpdate": "SQL UPDATEs",
|
||||||
|
"clipboard.copyCSV": "Copy as CSV",
|
||||||
|
"clipboard.copyJSON": "Copy as JSON",
|
||||||
|
"clipboard.copyJSONLines": "Copy as JSON lines/NDJSON",
|
||||||
|
"clipboard.copyMongoInsert": "Copy as Mongo INSERTs",
|
||||||
|
"clipboard.copyOnlyHeadres": "Copy only headers",
|
||||||
|
"clipboard.copySQLInsert": "Copy as SQL INSERTs",
|
||||||
|
"clipboard.copySQLUpdate": "Copy as SQL UPDATEs",
|
||||||
|
"clipboard.copyWithHeaders": "Copy with headers",
|
||||||
|
"clipboard.copyWithoutHeaders": "Copy without headers",
|
||||||
|
"clipboard.copyYAML": "Copy as YAML",
|
||||||
|
"clipboard.mongoInsert": "Mongo INSERTs",
|
||||||
|
"clipboard.onlyHeaders": "Only Headers",
|
||||||
|
"clipboard.withHeaders": "With headers",
|
||||||
|
"clipboard.withoutHeaders": "Without headers",
|
||||||
"column.addNew": "Add new column",
|
"column.addNew": "Add new column",
|
||||||
"column.copyName": "Copy name",
|
"column.copyName": "Copy name",
|
||||||
"column.dropColumn": "Drop column",
|
"column.dropColumn": "Drop column",
|
||||||
@@ -11,14 +30,37 @@
|
|||||||
"column.renameColumn": "Rename column",
|
"column.renameColumn": "Rename column",
|
||||||
"column.search": "Search columns",
|
"column.search": "Search columns",
|
||||||
"column.variable": "Variable columns (like MongoDB)",
|
"column.variable": "Variable columns (like MongoDB)",
|
||||||
|
"columnEditor.addColumn": "Add column {columnNumber}",
|
||||||
|
"columnEditor.autoIncrement": "Is Autoincrement",
|
||||||
|
"columnEditor.columnComment": "Comment",
|
||||||
|
"columnEditor.columnName": "Column name",
|
||||||
|
"columnEditor.computedExpression": "Computed expression",
|
||||||
|
"columnEditor.defaultValue": "Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string",
|
||||||
|
"columnEditor.editColumn": "Edit column",
|
||||||
|
"columnEditor.isPrimaryKey": "Is Primary Key",
|
||||||
|
"columnEditor.isSparse": "Sparse",
|
||||||
|
"columnEditor.isUnsigned": "Unsigned",
|
||||||
|
"columnEditor.isZerofill": "Zero fill",
|
||||||
|
"columnsConstraintEditor.addNewColumn": "Add new column",
|
||||||
|
"columnsConstraintEditor.chooseColumn": "Choose column",
|
||||||
|
"columnsConstraintEditor.selectColumn": "Select column",
|
||||||
|
"command.datagrid": "Data grid",
|
||||||
|
"command.datagrid.addJsonDocument": "Add JSON document",
|
||||||
"command.datagrid.addNewColumn": "Add new column",
|
"command.datagrid.addNewColumn": "Add new column",
|
||||||
"command.datagrid.addNewColumn.toolbar": "New column",
|
"command.datagrid.addNewColumn.toolbar": "New column",
|
||||||
|
"command.datagrid.autoRefresh.seconds": "seconds",
|
||||||
|
"command.datagrid.clearFilter": "Clear filter",
|
||||||
"command.datagrid.cloneRows": "Clone rows",
|
"command.datagrid.cloneRows": "Clone rows",
|
||||||
"command.datagrid.cloneRows.toolbar": "Clone row(s)",
|
"command.datagrid.cloneRows.toolbar": "Clone row(s)",
|
||||||
"command.datagrid.copyToClipboard": "Copy to clipboard",
|
"command.datagrid.copyToClipboard": "Copy to clipboard",
|
||||||
"command.datagrid.deleteSelectedRows": "Delete selected rows",
|
"command.datagrid.deleteSelectedRows": "Delete selected rows",
|
||||||
"command.datagrid.deleteSelectedRows.toolbar": "Delete row(s)",
|
"command.datagrid.deleteSelectedRows.toolbar": "Delete row(s)",
|
||||||
|
"command.datagrid.editCell": "Edit cell value",
|
||||||
"command.datagrid.editJsonDocument": "Edit row as JSON document",
|
"command.datagrid.editJsonDocument": "Edit row as JSON document",
|
||||||
|
"command.datagrid.editSelection": "Edit selection as table",
|
||||||
|
"command.datagrid.filterSelected": "Filter selected value",
|
||||||
|
"command.datagrid.findColumn": "Find column",
|
||||||
|
"command.datagrid.generateSql": "Generate SQL",
|
||||||
"command.datagrid.insertNewRow": "Insert new row",
|
"command.datagrid.insertNewRow": "Insert new row",
|
||||||
"command.datagrid.insertNewRow.toolbar": "New row",
|
"command.datagrid.insertNewRow.toolbar": "New row",
|
||||||
"command.datagrid.loadCellFromFile": "Load cell from file",
|
"command.datagrid.loadCellFromFile": "Load cell from file",
|
||||||
@@ -31,12 +73,47 @@
|
|||||||
"command.datagrid.revertAllChanges.toolbar": "Revert all",
|
"command.datagrid.revertAllChanges.toolbar": "Revert all",
|
||||||
"command.datagrid.revertRowChanges": "Revert row changes",
|
"command.datagrid.revertRowChanges": "Revert row changes",
|
||||||
"command.datagrid.saveCellToFile": "Save cell to file",
|
"command.datagrid.saveCellToFile": "Save cell to file",
|
||||||
|
"command.datagrid.sendToDataDeployer": "Send to data deployer",
|
||||||
|
"command.datagrid.setAutoRefresh.1": "Refresh every 1 second",
|
||||||
|
"command.datagrid.setAutoRefresh.10": "Refresh every 10 seconds",
|
||||||
|
"command.datagrid.setAutoRefresh.15": "Refresh every 15 seconds",
|
||||||
|
"command.datagrid.setAutoRefresh.30": "Refresh every 30 seconds",
|
||||||
|
"command.datagrid.setAutoRefresh.5": "Refresh every 5 seconds",
|
||||||
|
"command.datagrid.setAutoRefresh.60": "Refresh every 60 seconds",
|
||||||
"command.datagrid.setNull": "Set NULL",
|
"command.datagrid.setNull": "Set NULL",
|
||||||
|
"command.datagrid.startAutoRefresh": "Start auto refresh",
|
||||||
|
"command.datagrid.stopAutoRefresh": "Stop auto refresh",
|
||||||
|
"command.datagrid.switchToJSON": "Switch to JSON",
|
||||||
|
"command.datagrid.switchToform": "Switch to form",
|
||||||
|
"command.datagrid.toggleLeftPanel": "Toggle left panel",
|
||||||
"command.datagrid.undo": "Undo",
|
"command.datagrid.undo": "Undo",
|
||||||
"command.datagrid.viewJsonDocument": "View row as JSON document",
|
"command.datagrid.viewJsonDocument": "View row as JSON document",
|
||||||
"command.datagrid.viewJsonValue": "View cell as JSON document",
|
"command.datagrid.viewJsonValue": "View cell as JSON document",
|
||||||
|
"command.datagrid.witchToTable": "Switch to table",
|
||||||
|
"command.datgrid.hideColumn": "Hide column",
|
||||||
"command.new.duckdbDatabase": "New DuckDB database",
|
"command.new.duckdbDatabase": "New DuckDB database",
|
||||||
"command.new.sqliteDatabase": "New SQLite database",
|
"command.new.sqliteDatabase": "New SQLite database",
|
||||||
|
"command.openQuery": "Open query",
|
||||||
|
"command.query": "Query",
|
||||||
|
"command.query.AiAssistant": "AI Assistant",
|
||||||
|
"command.query.autocommitOffSwitch": "Auto commit: OFF",
|
||||||
|
"command.query.autocommitOnSwitch": "Auto commit: ON",
|
||||||
|
"command.query.beginTransaction": "Begin transaction",
|
||||||
|
"command.query.commitTransaction": "Commit transaction",
|
||||||
|
"command.query.commitTransactionToolbar": "Commit",
|
||||||
|
"command.query.executeCurrent": "Execute current",
|
||||||
|
"command.query.formatCode": "Format code",
|
||||||
|
"command.query.insertSqlJoin": "Insert SQL Join",
|
||||||
|
"command.query.rollbackTransaction": "Rollback transaction",
|
||||||
|
"command.query.rollbackTransactionToolbar": "Rollback",
|
||||||
|
"command.query.toggleAutoExecute": "Toggle auto execute",
|
||||||
|
"command.query.toggleFixedConnection": "Toggle fixed connection",
|
||||||
|
"command.query.toggleVisibleResultTabs": "Toggle visible result tabs",
|
||||||
|
"command.tableData": "Table data",
|
||||||
|
"command.tableData.save": "Save",
|
||||||
|
"command.tableEditor": "Table editor",
|
||||||
|
"command.tableEditor.reset": "Reset changes",
|
||||||
|
"command.tableEditor.save": "Save",
|
||||||
"command.tabs.addToFavorites": "Add current tab to favorites",
|
"command.tabs.addToFavorites": "Add current tab to favorites",
|
||||||
"command.tabs.closeAll": "Close all tabs",
|
"command.tabs.closeAll": "Close all tabs",
|
||||||
"command.tabs.closeTab": "Close tab",
|
"command.tabs.closeTab": "Close tab",
|
||||||
@@ -45,27 +122,58 @@
|
|||||||
"command.tabs.nextTab": "Next tab",
|
"command.tabs.nextTab": "Next tab",
|
||||||
"command.tabs.previousTab": "Previous tab",
|
"command.tabs.previousTab": "Previous tab",
|
||||||
"command.tabs.reopenClosedTab": "Reopen closed tab",
|
"command.tabs.reopenClosedTab": "Reopen closed tab",
|
||||||
|
"common.addNew": "Add new",
|
||||||
|
"common.advanced": "Advanced",
|
||||||
"common.archive": "Archive (JSONL)",
|
"common.archive": "Archive (JSONL)",
|
||||||
"common.cancel": "Cancel",
|
"common.cancel": "Cancel",
|
||||||
"common.close": "Close",
|
"common.close": "Close",
|
||||||
|
"common.column": "Column ",
|
||||||
|
"common.compare": "Compare database",
|
||||||
|
"common.connection": "Connection",
|
||||||
|
"common.connectionOnCloud": "Connection on Cloud",
|
||||||
"common.connections": "Connections",
|
"common.connections": "Connections",
|
||||||
|
"common.createNew": "Create new",
|
||||||
|
"common.data": "Data",
|
||||||
"common.database": "Database",
|
"common.database": "Database",
|
||||||
|
"common.databaseChat": "Database Chat",
|
||||||
|
"common.datagrid.deepRefresh": "Refresh with structure",
|
||||||
|
"common.delete": "Delete",
|
||||||
|
"common.description": "Description",
|
||||||
|
"common.erDiagram": "ER Diagram",
|
||||||
|
"common.execute": "Execute",
|
||||||
"common.export": "Export",
|
"common.export": "Export",
|
||||||
|
"common.exportDatabase": "Export database",
|
||||||
|
"common.featurePremium": "This feature is available only in DbGate Premium",
|
||||||
|
"common.general": "General",
|
||||||
"common.import": "Import",
|
"common.import": "Import",
|
||||||
"common.kill": "Kill",
|
"common.kill": "Kill",
|
||||||
|
"common.name": "Name",
|
||||||
|
"common.notSelectedOptional": "(not selected - optional)",
|
||||||
|
"common.parameters": "Parameters",
|
||||||
|
"common.perspective": "Perspective",
|
||||||
"common.query": "Query",
|
"common.query": "Query",
|
||||||
|
"common.queryDesigner": "Query Designer",
|
||||||
|
"common.queryEditor": "SQL query editor",
|
||||||
"common.refresh": "Refresh",
|
"common.refresh": "Refresh",
|
||||||
|
"common.remove": "Remove",
|
||||||
"common.save": "Save",
|
"common.save": "Save",
|
||||||
|
"common.saveAndNext": "Save and next",
|
||||||
"common.saveToArchive": "Save to archive",
|
"common.saveToArchive": "Save to archive",
|
||||||
"common.schema": "Schema",
|
"common.schema": "Schema",
|
||||||
"common.searchBy": "Search by:",
|
"common.searchBy": "Search by:",
|
||||||
|
"common.sqlGenerator": "SQL Generator",
|
||||||
|
"common.table": "Table",
|
||||||
|
"common.testingConnection": "Testing connection",
|
||||||
"connection.accessKeyId": "Access Key ID",
|
"connection.accessKeyId": "Access Key ID",
|
||||||
"connection.allowedDatabases": "Allowed databases, one per line",
|
"connection.allowedDatabases": "Allowed databases, one per line",
|
||||||
"connection.allowedDatabasesRegex": "Allowed databases regular expression",
|
"connection.allowedDatabasesRegex": "Allowed databases regular expression",
|
||||||
|
"connection.askPassword": "Don't save, ask for password",
|
||||||
|
"connection.askUser": "Don't save, ask for login and password",
|
||||||
"connection.authentication": "Authentication",
|
"connection.authentication": "Authentication",
|
||||||
"connection.autoDetectNatMap": "Auto detect NAT map (use for Redis Cluster in Docker network)",
|
"connection.autoDetectNatMap": "Auto detect NAT map (use for Redis Cluster in Docker network)",
|
||||||
"connection.chooseType": "Choose type",
|
"connection.chooseType": "Choose type",
|
||||||
"connection.clientLibraryPath": "Client library path",
|
"connection.clientLibraryPath": "Client library path",
|
||||||
|
"connection.closeConfirm": "Closing connection will close {count} opened tabs, continue?",
|
||||||
"connection.clusterNodes": "Cluster nodes",
|
"connection.clusterNodes": "Cluster nodes",
|
||||||
"connection.color": "Color",
|
"connection.color": "Color",
|
||||||
"connection.connect": "Connect",
|
"connection.connect": "Connect",
|
||||||
@@ -80,6 +188,7 @@
|
|||||||
"connection.databaseUrl": "Database URL",
|
"connection.databaseUrl": "Database URL",
|
||||||
"connection.defaultDatabase": "Default database",
|
"connection.defaultDatabase": "Default database",
|
||||||
"connection.delete": "Delete",
|
"connection.delete": "Delete",
|
||||||
|
"connection.deleteConfirm": "Really delete connection {name}?",
|
||||||
"connection.disconnect": "Disconnect",
|
"connection.disconnect": "Disconnect",
|
||||||
"connection.displayName": "Display name",
|
"connection.displayName": "Display name",
|
||||||
"connection.dockerWarning": "Under docker, localhost and 127.0.0.1 will not work, use dockerhost instead",
|
"connection.dockerWarning": "Under docker, localhost and 127.0.0.1 will not work, use dockerhost instead",
|
||||||
@@ -87,6 +196,7 @@
|
|||||||
"connection.edit": "Edit",
|
"connection.edit": "Edit",
|
||||||
"connection.endpointKey": "Key",
|
"connection.endpointKey": "Key",
|
||||||
"connection.engine": "Database engine",
|
"connection.engine": "Database engine",
|
||||||
|
"connection.engineDriverNotFound": "Engine driver {engine} not found, review installed plugins and change engine in edit connection dialog",
|
||||||
"connection.fillDetails": "Fill database connection details",
|
"connection.fillDetails": "Fill database connection details",
|
||||||
"connection.isReadOnly": "Is read only",
|
"connection.isReadOnly": "Is read only",
|
||||||
"connection.keySeparator": "Key separator",
|
"connection.keySeparator": "Key separator",
|
||||||
@@ -107,6 +217,7 @@
|
|||||||
"connection.server": "Server",
|
"connection.server": "Server",
|
||||||
"connection.serverSummary": "Server summary",
|
"connection.serverSummary": "Server summary",
|
||||||
"connection.serviceName": "Service name",
|
"connection.serviceName": "Service name",
|
||||||
|
"connection.singleDatabase": "Use only database {defaultDatabase}",
|
||||||
"connection.socketPath": "Socket path",
|
"connection.socketPath": "Socket path",
|
||||||
"connection.sshTunnel.agentFound": "SSH Agent found",
|
"connection.sshTunnel.agentFound": "SSH Agent found",
|
||||||
"connection.sshTunnel.agentNotFound": "SSH Agent not found",
|
"connection.sshTunnel.agentNotFound": "SSH Agent not found",
|
||||||
@@ -124,12 +235,23 @@
|
|||||||
"connection.ssl.use": "Use SSL",
|
"connection.ssl.use": "Use SSL",
|
||||||
"connection.trustServerCertificate": "Trust server certificate",
|
"connection.trustServerCertificate": "Trust server certificate",
|
||||||
"connection.type": "Connection type",
|
"connection.type": "Connection type",
|
||||||
|
"connection.useSeparateSchemas": "Use schemas separately (use this if you have many large schemas)",
|
||||||
"connection.useUrl": "Use database URL",
|
"connection.useUrl": "Use database URL",
|
||||||
"connection.user": "User",
|
"connection.user": "User",
|
||||||
"connection.viewDetails": "View details",
|
"connection.viewDetails": "View details",
|
||||||
"connection.windowsDomain": "Domain (specify to use NTLM authentication)",
|
"connection.windowsDomain": "Domain (specify to use NTLM authentication)",
|
||||||
|
"dataGrid.columns": "Columns",
|
||||||
|
"dataGrid.filters": "Filters",
|
||||||
|
"dataGrid.macros": "Macros",
|
||||||
|
"dataGrid.multiColumnFilter": "Multi column filter",
|
||||||
|
"dataGrid.references": "References",
|
||||||
|
"dataGrid.referencesTables": "References tables",
|
||||||
|
"dataGrid.searchReferences": "Search references",
|
||||||
"database.backup": "Backup #",
|
"database.backup": "Backup #",
|
||||||
|
"database.chooseArchiveFolderForDataDeployer": "Choose archive folder for data deployer",
|
||||||
|
"database.closeConfirm": "Closing connection will close {count} opened tabs, continue?",
|
||||||
"database.compare": "Compare",
|
"database.compare": "Compare",
|
||||||
|
"database.compareWithCurrentDb": "Compare with {name}",
|
||||||
"database.copyDatabaseName": "Copy database name",
|
"database.copyDatabaseName": "Copy database name",
|
||||||
"database.createDatabaseBackup": "Create database backup",
|
"database.createDatabaseBackup": "Create database backup",
|
||||||
"database.createNewApplication": "Create new application",
|
"database.createNewApplication": "Create new application",
|
||||||
@@ -140,12 +262,15 @@
|
|||||||
"database.designQuery": "Design query",
|
"database.designQuery": "Design query",
|
||||||
"database.diagram": "Diagram #",
|
"database.diagram": "Diagram #",
|
||||||
"database.disconnect": "Disconnect",
|
"database.disconnect": "Disconnect",
|
||||||
|
"database.dropAllObjectsConfirm": "This will generate script, after executing this script all objects in {name} will be dropped. Continue?",
|
||||||
|
"database.dropConfirm": "Really drop database {name}? All opened sessions with this database will be forcefully closed.",
|
||||||
"database.dropDatabase": "Drop database",
|
"database.dropDatabase": "Drop database",
|
||||||
"database.editApplications": "Edit application",
|
"database.editApplications": "Edit application",
|
||||||
"database.export": "Export",
|
"database.export": "Export",
|
||||||
"database.exportDbModel": "Export DB model",
|
"database.exportDbModel": "Export DB model",
|
||||||
"database.generateScript": "Generate script",
|
"database.generateScript": "Generate script",
|
||||||
"database.import": "Import",
|
"database.import": "Import",
|
||||||
|
"database.newCollection": "New {collectionLabel}",
|
||||||
"database.newQuery": "New query",
|
"database.newQuery": "New query",
|
||||||
"database.newTable": "New table",
|
"database.newTable": "New table",
|
||||||
"database.perspective": "Perspective #",
|
"database.perspective": "Perspective #",
|
||||||
@@ -159,9 +284,77 @@
|
|||||||
"database.shellTitle": "Shell #",
|
"database.shellTitle": "Shell #",
|
||||||
"database.showDiagram": "Show diagram",
|
"database.showDiagram": "Show diagram",
|
||||||
"database.sqlGenerator": "SQL Generator",
|
"database.sqlGenerator": "SQL Generator",
|
||||||
|
"datagrid.closeTabs.close": "Close tabs",
|
||||||
|
"datagrid.closeTabs.header": "Confirm close tabs",
|
||||||
|
"datagrid.closeTabs.modifiedFiles": "Following files are modified, really close tabs? After closing, you could reopen them in history",
|
||||||
|
"datagrid.columnNameFilter": "Column name filter",
|
||||||
|
"datagrid.copyAdvanced": "Copy advanced",
|
||||||
|
"datagrid.macros.calculation": "Calculation",
|
||||||
|
"datagrid.macros.calculationDescription": "Custom expression. Use row.column_name for accessing column values, value for original value",
|
||||||
|
"datagrid.macros.changeTextCase": "Change text case",
|
||||||
|
"datagrid.macros.changeTextCaseDescription": "Uppercase, lowercase and other case functions",
|
||||||
|
"datagrid.macros.changeTextCaseType": "Type",
|
||||||
|
"datagrid.macros.currentDate": "Current date",
|
||||||
|
"datagrid.macros.currentDateDescription": "Gets current date",
|
||||||
|
"datagrid.macros.dayName": "Day name",
|
||||||
|
"datagrid.macros.delimiter": "Delimiter",
|
||||||
|
"datagrid.macros.detail": "Macro detail",
|
||||||
|
"datagrid.macros.duplicateColumns": "Duplicate columns",
|
||||||
|
"datagrid.macros.duplicateColumnsDescription": "Duplicate selected columns",
|
||||||
|
"datagrid.macros.expression": "Expression",
|
||||||
|
"datagrid.macros.extractDateFields": "Extract date fields",
|
||||||
|
"datagrid.macros.extractDateFieldsDescription": "Extract year, month, day and other date/time fields from selection and adds it as new columns",
|
||||||
|
"datagrid.macros.format": "Format",
|
||||||
|
"datagrid.macros.generateUUID": "Generate UUID",
|
||||||
|
"datagrid.macros.generateUUIDDescription": "Generate unique identifier",
|
||||||
|
"datagrid.macros.hourName": "Hour name",
|
||||||
|
"datagrid.macros.minuteName": "Minute name",
|
||||||
|
"datagrid.macros.monthName": "Month name",
|
||||||
|
"datagrid.macros.noParameters": "This macro has no parameters",
|
||||||
|
"datagrid.macros.padCharacter": "Character",
|
||||||
|
"datagrid.macros.padLeft": "Pad left",
|
||||||
|
"datagrid.macros.padLeftDescription": "Returns string of a specified length in which the beginning of the current string is padded with spaces or other character",
|
||||||
|
"datagrid.macros.padLength": "Length",
|
||||||
|
"datagrid.macros.padRight": "Pad right",
|
||||||
|
"datagrid.macros.padRightDescription": "Returns string of a specified length in which the end of the current string is padded with spaces or other character",
|
||||||
|
"datagrid.macros.postfix": "Postfix",
|
||||||
|
"datagrid.macros.prefix": "Prefix",
|
||||||
|
"datagrid.macros.removeDiacritics": "Remove diacritics",
|
||||||
|
"datagrid.macros.removeDiacriticsDescription": "Removes diacritics from selected cells",
|
||||||
|
"datagrid.macros.rowIndex": "Row index",
|
||||||
|
"datagrid.macros.rowIndexDescription": "Index of row from 1 (autoincrement)",
|
||||||
|
"datagrid.macros.searchReplaceText": "Search & replace text",
|
||||||
|
"datagrid.macros.searchReplaceTextCaseSensitive": "Case sensitive",
|
||||||
|
"datagrid.macros.searchReplaceTextDescription": "Search & replace text or regular expression",
|
||||||
|
"datagrid.macros.searchReplaceTextFind": "Find",
|
||||||
|
"datagrid.macros.searchReplaceTextIsRegex": "Regular expression",
|
||||||
|
"datagrid.macros.searchReplaceTextReplaceWith": "Replace with",
|
||||||
|
"datagrid.macros.secondName": "Second name",
|
||||||
|
"datagrid.macros.splitColumns": "Split columns",
|
||||||
|
"datagrid.macros.splitColumnsDescription": "Split selected columns",
|
||||||
|
"datagrid.macros.textGroup": "Text",
|
||||||
|
"datagrid.macros.toBoolean": "Convert to boolean",
|
||||||
|
"datagrid.macros.toBooleanDescription": "Converts to boolean",
|
||||||
|
"datagrid.macros.toInt": "Convert to integer",
|
||||||
|
"datagrid.macros.toIntDescription": "Converts to integral number",
|
||||||
|
"datagrid.macros.toNumber": "Convert to number",
|
||||||
|
"datagrid.macros.toNumberDescription": "Converts to number",
|
||||||
|
"datagrid.macros.toString": "Convert to string",
|
||||||
|
"datagrid.macros.toStringDescription": "Converts to string",
|
||||||
|
"datagrid.macros.toolsGroup": "Tools",
|
||||||
|
"datagrid.macros.trim": "Trim",
|
||||||
|
"datagrid.macros.trimDescription": "Removes leading and trailing whitespace",
|
||||||
|
"datagrid.macros.version": "Version",
|
||||||
|
"datagrid.macros.yearName": "Year name",
|
||||||
|
"datagrid.searchMacros": "Search macros",
|
||||||
|
"datagrid.setFormat": "Set format: ",
|
||||||
|
"datagrid.structure": "Structure",
|
||||||
"error.driverNotFound": "Invalid database connection, driver not found",
|
"error.driverNotFound": "Invalid database connection, driver not found",
|
||||||
"error.selectedCloudConnection": "Selected connection is from DbGate cloud",
|
"error.selectedCloudConnection": "Selected connection is from DbGate cloud",
|
||||||
"error.selectedNotCloudConnection": "Selected connection is not from DbGate cloud",
|
"error.selectedNotCloudConnection": "Selected connection is not from DbGate cloud",
|
||||||
|
"export.currentArchive": "Current archive",
|
||||||
|
"export.exportAdvanced": "Export advanced...",
|
||||||
|
"export.result": "Export result",
|
||||||
"file.allSupported": "All supported files",
|
"file.allSupported": "All supported files",
|
||||||
"file.diagramFiles": "Diagram files",
|
"file.diagramFiles": "Diagram files",
|
||||||
"file.duckdb": "DuckDB database",
|
"file.duckdb": "DuckDB database",
|
||||||
@@ -239,6 +432,18 @@
|
|||||||
"filter.today": "Today",
|
"filter.today": "Today",
|
||||||
"filter.tomorrow": "Tomorrow",
|
"filter.tomorrow": "Tomorrow",
|
||||||
"filter.yesterday": "Yesterday",
|
"filter.yesterday": "Yesterday",
|
||||||
|
"foreignKey.baseColumns": "Base columns",
|
||||||
|
"foreignKey.refColumns": "Referenced columns",
|
||||||
|
"foreignKey.refTableName": "Referenced table",
|
||||||
|
"foreignKeyEditor.addColumn": "Add column",
|
||||||
|
"foreignKeyEditor.addForeignKey": "Add foreign key",
|
||||||
|
"foreignKeyEditor.baseColumn": "Base column - ",
|
||||||
|
"foreignKeyEditor.editForeignKey": "Edit foreign key",
|
||||||
|
"foreignKeyEditor.onDeleteAction": "On delete action",
|
||||||
|
"foreignKeyEditor.onUpdateAction": "On update action",
|
||||||
|
"foreignKeyEditor.refColumn": "Ref column - ",
|
||||||
|
"foreignKeyEditor.referencedTable": "Referenced table",
|
||||||
|
"foreignKeyEditor.tableNotSet": "(table not set)",
|
||||||
"importExport.createZipFileInArchive": "Create ZIP file in archive",
|
"importExport.createZipFileInArchive": "Create ZIP file in archive",
|
||||||
"importExport.exportToZipArchive": "Output ZIP archive",
|
"importExport.exportToZipArchive": "Output ZIP archive",
|
||||||
"importExport.exportToZipFile": "Export to ZIP file",
|
"importExport.exportToZipFile": "Export to ZIP file",
|
||||||
@@ -246,7 +451,36 @@
|
|||||||
"importExport.importFromZipFile": "Import from ZIP file (in archive folder)",
|
"importExport.importFromZipFile": "Import from ZIP file (in archive folder)",
|
||||||
"importExport.sourceFiles": "Source files",
|
"importExport.sourceFiles": "Source files",
|
||||||
"importExport.tablesViewsCollections": "Tables / views / collections",
|
"importExport.tablesViewsCollections": "Tables / views / collections",
|
||||||
|
"indexEditor.filteredIndexCondition": "Filtered index condition",
|
||||||
|
"indexEditor.indexName": "Index name",
|
||||||
|
"indexEditor.isUnique": "Is unique index",
|
||||||
|
"newObject.compareDescription": "Compare database schemas",
|
||||||
|
"newObject.compareDisabled": "Database comparison is not available for current database",
|
||||||
|
"newObject.connectionLocal": "Database connection stored locally",
|
||||||
|
"newObject.connectionLocalDisabled": "You are not allowed to create new connections",
|
||||||
|
"newObject.connectionOnCloudDescription": "Database connection stored on DbGate Cloud",
|
||||||
|
"newObject.connectionOnCloudDisabled": "For creating connections on DbGate Cloud, you need to be logged in",
|
||||||
|
"newObject.databaseChatDescription": "Chat with your database using AI",
|
||||||
|
"newObject.databaseChatDisabled": "Database chat is not available for current database",
|
||||||
|
"newObject.erDiagramDescription": "Visualize database structure",
|
||||||
|
"newObject.erDiagramDisabled": "ER Diagram is not available for current database",
|
||||||
|
"newObject.exportDescription": "Export to file like CSV, JSON, Excel, or other DB",
|
||||||
|
"newObject.exportDisabled": "Export is not available for current database",
|
||||||
|
"newObject.perspectiveDescription": "Join complex data from multiple databases",
|
||||||
|
"newObject.queryDesignerDescription": "Design SQL queries visually",
|
||||||
|
"newObject.queryDesignerDisabled": "Query Designer is not available for current database",
|
||||||
|
"newObject.sqlGeneratorDescription": "Generate SQL scripts for database objects",
|
||||||
|
"newObject.sqlGeneratorDisabled": "SQL Generator is not available for current database",
|
||||||
|
"newObject.tableDescription": "Create table in the current database",
|
||||||
|
"newObject.tableDisabled": "Table creation is not available for current database",
|
||||||
|
"query.limitRows": "Limit {queryRowsLimit} rows",
|
||||||
|
"query.named": ":variable",
|
||||||
|
"query.noParameters": "(no parameters)",
|
||||||
|
"query.positional": "? (positional)",
|
||||||
|
"query.unlimitedRows": "Unlimited rows",
|
||||||
|
"query.variable": "#variable",
|
||||||
"schema.add": "Add new schema",
|
"schema.add": "Add new schema",
|
||||||
|
"schema.allSchemas": "All schemas ({count})",
|
||||||
"schema.createSchema": "Create schema",
|
"schema.createSchema": "Create schema",
|
||||||
"schema.delete": "Delete schema",
|
"schema.delete": "Delete schema",
|
||||||
"schema.resetToDefault": "Reset to default",
|
"schema.resetToDefault": "Reset to default",
|
||||||
@@ -257,6 +491,7 @@
|
|||||||
"serverSummaryTab.processes": "Processes",
|
"serverSummaryTab.processes": "Processes",
|
||||||
"serverSummaryTab.variables": "Variables",
|
"serverSummaryTab.variables": "Variables",
|
||||||
"settings.appearance": "Application theme",
|
"settings.appearance": "Application theme",
|
||||||
|
"settings.appearance.afterInstalling": "After installing theme plugin (try search \"theme\" in available extensions) new themes will be available here.",
|
||||||
"settings.appearance.customSize": "Custom size",
|
"settings.appearance.customSize": "Custom size",
|
||||||
"settings.appearance.editorTheme": "Theme",
|
"settings.appearance.editorTheme": "Theme",
|
||||||
"settings.appearance.editorTheme.default": "(use theme default)",
|
"settings.appearance.editorTheme.default": "(use theme default)",
|
||||||
@@ -267,6 +502,7 @@
|
|||||||
"settings.behaviour": "Behaviour",
|
"settings.behaviour": "Behaviour",
|
||||||
"settings.behaviour.jsonPreviewWrap": "Wrap JSON in preview",
|
"settings.behaviour.jsonPreviewWrap": "Wrap JSON in preview",
|
||||||
"settings.behaviour.openDetailOnArrows": "Open detail on keyboard navigation",
|
"settings.behaviour.openDetailOnArrows": "Open detail on keyboard navigation",
|
||||||
|
"settings.behaviour.singleClickPreview": "When you single-click or select a file in the \"Tables, Views, Functions\" view, it is shown in a preview mode and reuses an existing tab (preview tab). This is useful if you are quickly browsing tables and don\\'t want every visited table to have its own tab. When you start editing the table or use double-click to open the table from the \"Tables\" view, a new tab is dedicated to that table.",
|
||||||
"settings.behaviour.useTabPreviewMode": "Use tab preview mode",
|
"settings.behaviour.useTabPreviewMode": "Use tab preview mode",
|
||||||
"settings.confirmations": "Confirmations",
|
"settings.confirmations": "Confirmations",
|
||||||
"settings.confirmations.skipConfirm.collectionDataSave": "Skip confirmation when saving collection data (NoSQL)",
|
"settings.confirmations.skipConfirm.collectionDataSave": "Skip confirmation when saving collection data (NoSQL)",
|
||||||
@@ -349,6 +585,7 @@
|
|||||||
"sqlObject.columnComment": "Column comment",
|
"sqlObject.columnComment": "Column comment",
|
||||||
"sqlObject.columnDataType": "Column data type",
|
"sqlObject.columnDataType": "Column data type",
|
||||||
"sqlObject.columnName": "Column name",
|
"sqlObject.columnName": "Column name",
|
||||||
|
"sqlObject.databaseEmpty": "Database {database} is empty or structure is not loaded, press Refresh button to reload structure",
|
||||||
"sqlObject.loadingStructure": "Loading database structure",
|
"sqlObject.loadingStructure": "Loading database structure",
|
||||||
"sqlObject.schemaName": "Schema",
|
"sqlObject.schemaName": "Schema",
|
||||||
"sqlObject.search.placeholder": "Search in tables, views, procedures",
|
"sqlObject.search.placeholder": "Search in tables, views, procedures",
|
||||||
@@ -358,9 +595,13 @@
|
|||||||
"sqlObject.tableViewProcedureName": "Table/view/procedure name",
|
"sqlObject.tableViewProcedureName": "Table/view/procedure name",
|
||||||
"sqlObject.tablesWithRows": "Only tables with rows",
|
"sqlObject.tablesWithRows": "Only tables with rows",
|
||||||
"sqlObject.viewProcedureTriggerText": "View/procedure/trigger text",
|
"sqlObject.viewProcedureTriggerText": "View/procedure/trigger text",
|
||||||
|
"sqlObjectList.refreshDatabase": "Refresh database connection and object list",
|
||||||
"summaryProcesses.actions": "Actions",
|
"summaryProcesses.actions": "Actions",
|
||||||
"summaryProcesses.client": "Client",
|
"summaryProcesses.client": "Client",
|
||||||
"summaryProcesses.connectionId": "Connection ID",
|
"summaryProcesses.connectionId": "Connection ID",
|
||||||
|
"summaryProcesses.killConfirm": "Are you sure you want to kill process {processId}?",
|
||||||
|
"summaryProcesses.killError": "Error while killing process {processId}: {errorMessage}",
|
||||||
|
"summaryProcesses.killSuccess": "Process {processId} killed successfully",
|
||||||
"summaryProcesses.namespace": "Namespace",
|
"summaryProcesses.namespace": "Namespace",
|
||||||
"summaryProcesses.operation": "Operation",
|
"summaryProcesses.operation": "Operation",
|
||||||
"summaryProcesses.processId": "Process ID",
|
"summaryProcesses.processId": "Process ID",
|
||||||
@@ -370,6 +611,49 @@
|
|||||||
"summaryVariables.value": "Value",
|
"summaryVariables.value": "Value",
|
||||||
"summaryVariables.variable": "Variable",
|
"summaryVariables.variable": "Variable",
|
||||||
"tab.administration": "Administration",
|
"tab.administration": "Administration",
|
||||||
|
"tableData.viewColumns": "View columns",
|
||||||
|
"tableEdit.addConstraintLabel": "Add {constraintLabel}",
|
||||||
|
"tableEdit.editConstraintLabel": "Edit {constraintLabel}",
|
||||||
|
"tableEdit.unique": "unique",
|
||||||
|
"tableEditor": "Table editor",
|
||||||
|
"tableEditor.addColumn": "Add column",
|
||||||
|
"tableEditor.addForeignKey": "Add foreign key",
|
||||||
|
"tableEditor.addIndex": "Add index",
|
||||||
|
"tableEditor.addPrimaryKey": "Add primary key",
|
||||||
|
"tableEditor.addUnique": "Add unique",
|
||||||
|
"tableEditor.columnComment": "Comment",
|
||||||
|
"tableEditor.columns": "Columns",
|
||||||
|
"tableEditor.computedExpression": "Computed Expression",
|
||||||
|
"tableEditor.constraintName": "Constraint name",
|
||||||
|
"tableEditor.copydefinitions": "Copy definitions",
|
||||||
|
"tableEditor.copynames": "Copy names",
|
||||||
|
"tableEditor.dataType": "Data type",
|
||||||
|
"tableEditor.defaultValue": "Default value",
|
||||||
|
"tableEditor.dependencies": "Dependencies",
|
||||||
|
"tableEditor.foreignKeys": "Foreign keys ({foreignKeyCount})",
|
||||||
|
"tableEditor.indexes": "Indexes ({indexCount})",
|
||||||
|
"tableEditor.isPersisted": "Is Persisted",
|
||||||
|
"tableEditor.isSparse": "Is Sparse",
|
||||||
|
"tableEditor.isUnsigned": "Unsigned",
|
||||||
|
"tableEditor.isZeroFill": "Zero fill",
|
||||||
|
"tableEditor.no": "NO",
|
||||||
|
"tableEditor.noConstraintDefined": "No {constraintLabel} defined",
|
||||||
|
"tableEditor.nocolumnsdefined": "No columns defined",
|
||||||
|
"tableEditor.noforeignkeydefined": "No foreign key defined",
|
||||||
|
"tableEditor.noindexdefined": "No index defined",
|
||||||
|
"tableEditor.notnull": "NOT NULL",
|
||||||
|
"tableEditor.nouniquedefined": "No unique defined",
|
||||||
|
"tableEditor.null": "NULL",
|
||||||
|
"tableEditor.nullability": "Nullability",
|
||||||
|
"tableEditor.primaryKey": "primary key",
|
||||||
|
"tableEditor.remove": "Remove",
|
||||||
|
"tableEditor.tablename": "Table name",
|
||||||
|
"tableEditor.tableproperties": "Table properties",
|
||||||
|
"tableEditor.unique": "Unique",
|
||||||
|
"tableEditor.uniqueConstraints": "Unique constraints ({constraintCount})",
|
||||||
|
"tableEditor.yes": "YES",
|
||||||
|
"tableStructure.alter": "Alter table",
|
||||||
|
"tableStructure.create": "Create table",
|
||||||
"widget.databaseContent": "Database content",
|
"widget.databaseContent": "Database content",
|
||||||
"widget.databases": "Databases",
|
"widget.databases": "Databases",
|
||||||
"widget.keys": "Keys",
|
"widget.keys": "Keys",
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
{
|
{
|
||||||
"app.databaseName": "Názov databázy",
|
"app.databaseName": "Názov databázy",
|
||||||
|
"app.loading_plugin": "Načítavam plugin {plugin} ...",
|
||||||
"app.preparingPlugins": "Príprava pluginov...",
|
"app.preparingPlugins": "Príprava pluginov...",
|
||||||
"app.starting": "Spúšťam DbGate",
|
"app.starting": "Spúšťam DbGate",
|
||||||
"authToken": "Autentifikačný token",
|
"authToken": "Autentifikačný token",
|
||||||
|
"chart.detect": "Rozpoznať graf",
|
||||||
|
"chart.open": "Otvoriť graf",
|
||||||
|
"clipboard.SQLInsert": "SQL INSERT príkazy",
|
||||||
|
"clipboard.SQLUpdate": "SQL UPDATE príkazy",
|
||||||
|
"clipboard.copyCSV": "Kopírovať ako CSV",
|
||||||
|
"clipboard.copyJSON": "Kopírovať ako JSON",
|
||||||
|
"clipboard.copyJSONLines": "Kopírovať ako JSON riadky/NDJSON",
|
||||||
|
"clipboard.copyMongoInsert": "Kopírovať ako Mongo INSERT príkazy",
|
||||||
|
"clipboard.copyOnlyHeadres": "Kopírovať iba hlavičky",
|
||||||
|
"clipboard.copySQLInsert": "Kopírovať ako SQL INSERT príkazy",
|
||||||
|
"clipboard.copySQLUpdate": "Kopírovať ako SQL UPDATE príkazy",
|
||||||
|
"clipboard.copyWithHeaders": "Kopírovať s hlavičkami",
|
||||||
|
"clipboard.copyWithoutHeaders": "Kopírovať bez hlavičiek",
|
||||||
|
"clipboard.copyYAML": "Kopírovať ako YAML",
|
||||||
|
"clipboard.mongoInsert": "Mongo INSERT príkazy",
|
||||||
|
"clipboard.onlyHeaders": "Iba hlavičky",
|
||||||
|
"clipboard.withHeaders": "S hlavičkami",
|
||||||
|
"clipboard.withoutHeaders": "Bez hlavičiek",
|
||||||
"column.addNew": "Pridať nový stĺpec",
|
"column.addNew": "Pridať nový stĺpec",
|
||||||
"column.copyName": "Kopírovať názov",
|
"column.copyName": "Kopírovať názov",
|
||||||
"column.dropColumn": "Odstrániť stĺpec",
|
"column.dropColumn": "Odstrániť stĺpec",
|
||||||
@@ -11,14 +30,37 @@
|
|||||||
"column.renameColumn": "Premenovať stĺpec",
|
"column.renameColumn": "Premenovať stĺpec",
|
||||||
"column.search": "Hľadať stĺpce",
|
"column.search": "Hľadať stĺpce",
|
||||||
"column.variable": "Premenlivé stĺpce (ako MongoDB)",
|
"column.variable": "Premenlivé stĺpce (ako MongoDB)",
|
||||||
|
"columnEditor.addColumn": "Pridať stĺpec {columnNumber}",
|
||||||
|
"columnEditor.autoIncrement": "Autoinkrement",
|
||||||
|
"columnEditor.columnComment": "Komentár",
|
||||||
|
"columnEditor.columnName": "Názov stĺpca",
|
||||||
|
"columnEditor.computedExpression": "Vypočítaný výraz",
|
||||||
|
"columnEditor.defaultValue": "Predvolená hodnota. Použite platný SQL výraz, napr. 'Hello World' pre reťazec, ' ' pre prázdny reťazec",
|
||||||
|
"columnEditor.editColumn": "Upraviť stĺpec",
|
||||||
|
"columnEditor.isPrimaryKey": "Je primárny kľúč",
|
||||||
|
"columnEditor.isSparse": "Riedky",
|
||||||
|
"columnEditor.isUnsigned": "Bez znamienka",
|
||||||
|
"columnEditor.isZerofill": "Výplň nulami",
|
||||||
|
"columnsConstraintEditor.addNewColumn": "Pridať nový stĺpec",
|
||||||
|
"columnsConstraintEditor.chooseColumn": "Vybrať stĺpec",
|
||||||
|
"columnsConstraintEditor.selectColumn": "Vybrať stĺpec",
|
||||||
|
"command.datagrid": "Dátová mriežka",
|
||||||
|
"command.datagrid.addJsonDocument": "Pridať JSON dokument",
|
||||||
"command.datagrid.addNewColumn": "Pridať nový stĺpec",
|
"command.datagrid.addNewColumn": "Pridať nový stĺpec",
|
||||||
"command.datagrid.addNewColumn.toolbar": "Nový stĺpec",
|
"command.datagrid.addNewColumn.toolbar": "Nový stĺpec",
|
||||||
|
"command.datagrid.autoRefresh.seconds": "sekúnd",
|
||||||
|
"command.datagrid.clearFilter": "Vymazať filter",
|
||||||
"command.datagrid.cloneRows": "Klonovať riadky",
|
"command.datagrid.cloneRows": "Klonovať riadky",
|
||||||
"command.datagrid.cloneRows.toolbar": "Klonovať riadok(y)",
|
"command.datagrid.cloneRows.toolbar": "Klonovať riadok(y)",
|
||||||
"command.datagrid.copyToClipboard": "Kopírovať do schránky",
|
"command.datagrid.copyToClipboard": "Kopírovať do schránky",
|
||||||
"command.datagrid.deleteSelectedRows": "Odstrániť vybrané riadky",
|
"command.datagrid.deleteSelectedRows": "Odstrániť vybrané riadky",
|
||||||
"command.datagrid.deleteSelectedRows.toolbar": "Odstrániť riadok(y)",
|
"command.datagrid.deleteSelectedRows.toolbar": "Odstrániť riadok(y)",
|
||||||
|
"command.datagrid.editCell": "Upraviť hodnotu bunky",
|
||||||
"command.datagrid.editJsonDocument": "Upraviť riadok ako JSON dokument",
|
"command.datagrid.editJsonDocument": "Upraviť riadok ako JSON dokument",
|
||||||
|
"command.datagrid.editSelection": "Upraviť výber ako tabuľku",
|
||||||
|
"command.datagrid.filterSelected": "Filtrovať vybranú hodnotu",
|
||||||
|
"command.datagrid.findColumn": "Nájsť stĺpec",
|
||||||
|
"command.datagrid.generateSql": "Generovať SQL",
|
||||||
"command.datagrid.insertNewRow": "Vložiť nový riadok",
|
"command.datagrid.insertNewRow": "Vložiť nový riadok",
|
||||||
"command.datagrid.insertNewRow.toolbar": "Nový riadok",
|
"command.datagrid.insertNewRow.toolbar": "Nový riadok",
|
||||||
"command.datagrid.loadCellFromFile": "Načítať bunku zo súboru",
|
"command.datagrid.loadCellFromFile": "Načítať bunku zo súboru",
|
||||||
@@ -31,12 +73,47 @@
|
|||||||
"command.datagrid.revertAllChanges.toolbar": "Vrátiť všetko",
|
"command.datagrid.revertAllChanges.toolbar": "Vrátiť všetko",
|
||||||
"command.datagrid.revertRowChanges": "Vrátiť zmeny riadka",
|
"command.datagrid.revertRowChanges": "Vrátiť zmeny riadka",
|
||||||
"command.datagrid.saveCellToFile": "Uložiť bunku do súboru",
|
"command.datagrid.saveCellToFile": "Uložiť bunku do súboru",
|
||||||
|
"command.datagrid.sendToDataDeployer": "Odoslať do data deployer",
|
||||||
|
"command.datagrid.setAutoRefresh.1": "Obnoviť každú sekundu",
|
||||||
|
"command.datagrid.setAutoRefresh.10": "Obnoviť každých 10 sekúnd",
|
||||||
|
"command.datagrid.setAutoRefresh.15": "Obnoviť každých 15 sekúnd",
|
||||||
|
"command.datagrid.setAutoRefresh.30": "Obnoviť každých 30 sekúnd",
|
||||||
|
"command.datagrid.setAutoRefresh.5": "Obnoviť každých 5 sekúnd",
|
||||||
|
"command.datagrid.setAutoRefresh.60": "Obnoviť každých 60 sekúnd",
|
||||||
"command.datagrid.setNull": "Nastaviť NULL",
|
"command.datagrid.setNull": "Nastaviť NULL",
|
||||||
|
"command.datagrid.startAutoRefresh": "Spustiť automatické obnovovanie",
|
||||||
|
"command.datagrid.stopAutoRefresh": "Zastaviť automatické obnovovanie",
|
||||||
|
"command.datagrid.switchToJSON": "Prepnúť na JSON",
|
||||||
|
"command.datagrid.switchToform": "Prepnúť na formulár",
|
||||||
|
"command.datagrid.toggleLeftPanel": "Prepnúť ľavý panel",
|
||||||
"command.datagrid.undo": "Krok späť",
|
"command.datagrid.undo": "Krok späť",
|
||||||
"command.datagrid.viewJsonDocument": "Zobraziť riadok ako JSON dokument",
|
"command.datagrid.viewJsonDocument": "Zobraziť riadok ako JSON dokument",
|
||||||
"command.datagrid.viewJsonValue": "Zobraziť bunku ako JSON dokument",
|
"command.datagrid.viewJsonValue": "Zobraziť bunku ako JSON dokument",
|
||||||
|
"command.datagrid.witchToTable": "Prepnúť na tabuľku",
|
||||||
|
"command.datgrid.hideColumn": "Skryť stĺpec",
|
||||||
"command.new.duckdbDatabase": "Nová DuckDB databáza",
|
"command.new.duckdbDatabase": "Nová DuckDB databáza",
|
||||||
"command.new.sqliteDatabase": "Nová SQLite databáza",
|
"command.new.sqliteDatabase": "Nová SQLite databáza",
|
||||||
|
"command.openQuery": "Otvoriť dotaz",
|
||||||
|
"command.query": "Dotaz",
|
||||||
|
"command.query.AiAssistant": "AI Asistent",
|
||||||
|
"command.query.autocommitOffSwitch": "Automatické potvrdenie: VYPNUTÉ",
|
||||||
|
"command.query.autocommitOnSwitch": "Automatické potvrdenie: ZAPNUTÉ",
|
||||||
|
"command.query.beginTransaction": "Začať transakciu",
|
||||||
|
"command.query.commitTransaction": "Potvrdiť transakciu",
|
||||||
|
"command.query.commitTransactionToolbar": "Potvrdiť",
|
||||||
|
"command.query.executeCurrent": "Spustiť aktuálny",
|
||||||
|
"command.query.formatCode": "Formátovať kód",
|
||||||
|
"command.query.insertSqlJoin": "Vložiť SQL Join",
|
||||||
|
"command.query.rollbackTransaction": "Vrátiť transakciu",
|
||||||
|
"command.query.rollbackTransactionToolbar": "Vrátiť",
|
||||||
|
"command.query.toggleAutoExecute": "Prepnúť automatické vykonávanie",
|
||||||
|
"command.query.toggleFixedConnection": "Prepnúť pevné pripojenie",
|
||||||
|
"command.query.toggleVisibleResultTabs": "Prepnúť viditeľné výsledkové karty",
|
||||||
|
"command.tableData": "Dáta tabuľky",
|
||||||
|
"command.tableData.save": "Uložiť",
|
||||||
|
"command.tableEditor": "Editor tabuliek",
|
||||||
|
"command.tableEditor.reset": "Resetovať zmeny",
|
||||||
|
"command.tableEditor.save": "Uložiť",
|
||||||
"command.tabs.addToFavorites": "Pridať aktuálnu kartu do obľúbených",
|
"command.tabs.addToFavorites": "Pridať aktuálnu kartu do obľúbených",
|
||||||
"command.tabs.closeAll": "Zavrieť všetky karty",
|
"command.tabs.closeAll": "Zavrieť všetky karty",
|
||||||
"command.tabs.closeTab": "Zavrieť kartu",
|
"command.tabs.closeTab": "Zavrieť kartu",
|
||||||
@@ -45,27 +122,58 @@
|
|||||||
"command.tabs.nextTab": "Ďalšia karta",
|
"command.tabs.nextTab": "Ďalšia karta",
|
||||||
"command.tabs.previousTab": "Predchádzajúca karta",
|
"command.tabs.previousTab": "Predchádzajúca karta",
|
||||||
"command.tabs.reopenClosedTab": "Znovu otvoriť zatvorenú kartu",
|
"command.tabs.reopenClosedTab": "Znovu otvoriť zatvorenú kartu",
|
||||||
|
"common.addNew": "Pridať nový",
|
||||||
|
"common.advanced": "Pokročilé",
|
||||||
"common.archive": "Archivovať (JSONL)",
|
"common.archive": "Archivovať (JSONL)",
|
||||||
"common.cancel": "Zrušiť",
|
"common.cancel": "Zrušiť",
|
||||||
"common.close": "Zavrieť",
|
"common.close": "Zavrieť",
|
||||||
|
"common.column": "Stĺpec ",
|
||||||
|
"common.compare": "Porovnať databázy",
|
||||||
|
"common.connection": "Pripojenie",
|
||||||
|
"common.connectionOnCloud": "Pripojenie na cloude",
|
||||||
"common.connections": "Pripojenia",
|
"common.connections": "Pripojenia",
|
||||||
|
"common.createNew": "Vytvoriť",
|
||||||
|
"common.data": "Dáta",
|
||||||
"common.database": "Databáza",
|
"common.database": "Databáza",
|
||||||
|
"common.databaseChat": "Chat s databázou",
|
||||||
|
"common.datagrid.deepRefresh": "Obnoviť so štruktúrou",
|
||||||
|
"common.delete": "Odstrániť",
|
||||||
|
"common.description": "Popis",
|
||||||
|
"common.erDiagram": "ER Diagram",
|
||||||
|
"common.execute": "Spustiť",
|
||||||
"common.export": "Exportovať",
|
"common.export": "Exportovať",
|
||||||
|
"common.exportDatabase": "Exportovať databázu",
|
||||||
|
"common.featurePremium": "Táto funkcia je k dispozícii iba v DbGate Premium",
|
||||||
|
"common.general": "Všeobecné",
|
||||||
"common.import": "Importovať",
|
"common.import": "Importovať",
|
||||||
"common.kill": "Ukončiť",
|
"common.kill": "Ukončiť",
|
||||||
|
"common.name": "Názov",
|
||||||
|
"common.notSelectedOptional": "(nezvolené - voliteľné)",
|
||||||
|
"common.parameters": "Parametre",
|
||||||
|
"common.perspective": "Perspektíva",
|
||||||
"common.query": "Dotaz",
|
"common.query": "Dotaz",
|
||||||
|
"common.queryDesigner": "Návrhár dotazov",
|
||||||
|
"common.queryEditor": "Editor SQL dotazov",
|
||||||
"common.refresh": "Obnoviť",
|
"common.refresh": "Obnoviť",
|
||||||
|
"common.remove": "Odstrániť",
|
||||||
"common.save": "Uložiť",
|
"common.save": "Uložiť",
|
||||||
|
"common.saveAndNext": "Uložiť a pokračovať",
|
||||||
"common.saveToArchive": "Uložiť do archívu",
|
"common.saveToArchive": "Uložiť do archívu",
|
||||||
"common.schema": "Schéma",
|
"common.schema": "Schéma",
|
||||||
"common.searchBy": "Hľadať podľa:",
|
"common.searchBy": "Hľadať podľa:",
|
||||||
|
"common.sqlGenerator": "SQL Generátor",
|
||||||
|
"common.table": "Tabuľka",
|
||||||
|
"common.testingConnection": "Testovanie pripojenia",
|
||||||
"connection.accessKeyId": "ID prístupového kľúča",
|
"connection.accessKeyId": "ID prístupového kľúča",
|
||||||
"connection.allowedDatabases": "Povolené databázy, jedna na riadok",
|
"connection.allowedDatabases": "Povolené databázy, jedna na riadok",
|
||||||
"connection.allowedDatabasesRegex": "Regulárny výraz pre povolené databázy",
|
"connection.allowedDatabasesRegex": "Regulárny výraz pre povolené databázy",
|
||||||
|
"connection.askPassword": "Neukladať, pýtať sa na heslo",
|
||||||
|
"connection.askUser": "Neukladať, pýtať sa na prihlasovacie údaje a heslo",
|
||||||
"connection.authentication": "Autentizácia",
|
"connection.authentication": "Autentizácia",
|
||||||
"connection.autoDetectNatMap": "Automatická detekcia NAT mapy (použite pre Redis Cluster v Docker sieti)",
|
"connection.autoDetectNatMap": "Automatická detekcia NAT mapy (použite pre Redis Cluster v Docker sieti)",
|
||||||
"connection.chooseType": "Vyberte typ",
|
"connection.chooseType": "Vyberte typ",
|
||||||
"connection.clientLibraryPath": "Cesta ku klientskej knižnici",
|
"connection.clientLibraryPath": "Cesta ku klientskej knižnici",
|
||||||
|
"connection.closeConfirm": "Zatvorenie pripojenia zatvorí {count} otvorených kariet, pokračovať?",
|
||||||
"connection.clusterNodes": "Uzly klastra",
|
"connection.clusterNodes": "Uzly klastra",
|
||||||
"connection.color": "Farba",
|
"connection.color": "Farba",
|
||||||
"connection.connect": "Pripojiť",
|
"connection.connect": "Pripojiť",
|
||||||
@@ -80,6 +188,7 @@
|
|||||||
"connection.databaseUrl": "URL databázy",
|
"connection.databaseUrl": "URL databázy",
|
||||||
"connection.defaultDatabase": "Predvolená databáza",
|
"connection.defaultDatabase": "Predvolená databáza",
|
||||||
"connection.delete": "Odstrániť",
|
"connection.delete": "Odstrániť",
|
||||||
|
"connection.deleteConfirm": "Naozaj odstrániť pripojenie {name}?",
|
||||||
"connection.disconnect": "Odpojiť",
|
"connection.disconnect": "Odpojiť",
|
||||||
"connection.displayName": "Zobrazovaný názov",
|
"connection.displayName": "Zobrazovaný názov",
|
||||||
"connection.dockerWarning": "V Dockeri localhost a 127.0.0.1 nefungujú, použite namiesto toho dockerhost",
|
"connection.dockerWarning": "V Dockeri localhost a 127.0.0.1 nefungujú, použite namiesto toho dockerhost",
|
||||||
@@ -87,6 +196,7 @@
|
|||||||
"connection.edit": "Upraviť",
|
"connection.edit": "Upraviť",
|
||||||
"connection.endpointKey": "Kľúč",
|
"connection.endpointKey": "Kľúč",
|
||||||
"connection.engine": "Typ databázy",
|
"connection.engine": "Typ databázy",
|
||||||
|
"connection.engineDriverNotFound": "Driver databázy {engine} nebol nájdený, skontrolujte nainštalované pluginy a zmeňte typ databázy v dialógu úpravy pripojenia",
|
||||||
"connection.fillDetails": "Vyplňte údaje o pripojení k databáze",
|
"connection.fillDetails": "Vyplňte údaje o pripojení k databáze",
|
||||||
"connection.isReadOnly": "Je iba na čítanie",
|
"connection.isReadOnly": "Je iba na čítanie",
|
||||||
"connection.keySeparator": "Oddeľovač kľúčov",
|
"connection.keySeparator": "Oddeľovač kľúčov",
|
||||||
@@ -107,6 +217,7 @@
|
|||||||
"connection.server": "Server",
|
"connection.server": "Server",
|
||||||
"connection.serverSummary": "Zhrnutie servera",
|
"connection.serverSummary": "Zhrnutie servera",
|
||||||
"connection.serviceName": "Názov služby",
|
"connection.serviceName": "Názov služby",
|
||||||
|
"connection.singleDatabase": "Používať iba databázu {defaultDatabase}",
|
||||||
"connection.socketPath": "Cesta k socketu",
|
"connection.socketPath": "Cesta k socketu",
|
||||||
"connection.sshTunnel.agentFound": "SSH Agent nájdený",
|
"connection.sshTunnel.agentFound": "SSH Agent nájdený",
|
||||||
"connection.sshTunnel.agentNotFound": "SSH Agent nenájdený",
|
"connection.sshTunnel.agentNotFound": "SSH Agent nenájdený",
|
||||||
@@ -124,28 +235,42 @@
|
|||||||
"connection.ssl.use": "Použiť SSL",
|
"connection.ssl.use": "Použiť SSL",
|
||||||
"connection.trustServerCertificate": "Dôverovať certifikátu servera",
|
"connection.trustServerCertificate": "Dôverovať certifikátu servera",
|
||||||
"connection.type": "Typ pripojenia",
|
"connection.type": "Typ pripojenia",
|
||||||
|
"connection.useSeparateSchemas": "Používať schémy samostatne (použite, ak máte veľa veľkých schém)",
|
||||||
"connection.useUrl": "Použiť URL databázy",
|
"connection.useUrl": "Použiť URL databázy",
|
||||||
"connection.user": "Používateľ",
|
"connection.user": "Používateľ",
|
||||||
"connection.viewDetails": "Zobraziť detaily",
|
"connection.viewDetails": "Zobraziť detaily",
|
||||||
"connection.windowsDomain": "Doména (zadajte pre použitie NTLM autentizácie)",
|
"connection.windowsDomain": "Doména (zadajte pre použitie NTLM autentizácie)",
|
||||||
|
"dataGrid.columns": "Stĺpce",
|
||||||
|
"dataGrid.filters": "Filtre",
|
||||||
|
"dataGrid.macros": "Makrá",
|
||||||
|
"dataGrid.multiColumnFilter": "Filter viacerých stĺpcov",
|
||||||
|
"dataGrid.references": "Referencie",
|
||||||
|
"dataGrid.referencesTables": "Referencie na tabuľky",
|
||||||
|
"dataGrid.searchReferences": "Vyhľadať referencie",
|
||||||
"database.backup": "Záloha #",
|
"database.backup": "Záloha #",
|
||||||
|
"database.chooseArchiveFolderForDataDeployer": "Vybrať archívnu zložku pre data deployer",
|
||||||
|
"database.closeConfirm": "Zatvorenie pripojenia zatvorí {count} otvorených kariet, pokračovať?",
|
||||||
"database.compare": "Porovnať",
|
"database.compare": "Porovnať",
|
||||||
|
"database.compareWithCurrentDb": "Porovnať s {name}",
|
||||||
"database.copyDatabaseName": "Kopírovať názov databázy",
|
"database.copyDatabaseName": "Kopírovať názov databázy",
|
||||||
"database.createDatabaseBackup": "Vytvoriť zálohu databázy",
|
"database.createDatabaseBackup": "Vytvoriť zálohu databázy",
|
||||||
"database.createNewApplication": "Vytvoriť novú aplikáciu",
|
"database.createNewApplication": "Vytvoriť novú aplikáciu",
|
||||||
"database.dataDeployer": "Nasadzovač dát",
|
"database.dataDeployer": "Data deployer",
|
||||||
"database.databaseChat": "Databázový chat",
|
"database.databaseChat": "Databázový chat",
|
||||||
"database.databaseProfiler": "Databázový profilovač",
|
"database.databaseProfiler": "Databázový profilovač",
|
||||||
"database.designPerspectiveQuery": "Návrh perspektívneho dotazu",
|
"database.designPerspectiveQuery": "Návrh perspektívneho dotazu",
|
||||||
"database.designQuery": "Návrh dotazu",
|
"database.designQuery": "Návrh dotazu",
|
||||||
"database.diagram": "Diagram #",
|
"database.diagram": "Diagram #",
|
||||||
"database.disconnect": "Odpojiť",
|
"database.disconnect": "Odpojiť",
|
||||||
|
"database.dropAllObjectsConfirm": "Toto vygeneruje skript, po spustení tohto skriptu budú všetky objekty v {name} odstránené. Pokračovať?",
|
||||||
|
"database.dropConfirm": "Naozaj odstrániť databázu {name}? Všetky otvorené relácie s touto databázou budú zatvorené.",
|
||||||
"database.dropDatabase": "Odstrániť databázu",
|
"database.dropDatabase": "Odstrániť databázu",
|
||||||
"database.editApplications": "Upraviť aplikáciu",
|
"database.editApplications": "Upraviť aplikáciu",
|
||||||
"database.export": "Exportovať",
|
"database.export": "Exportovať",
|
||||||
"database.exportDbModel": "Exportovať DB model",
|
"database.exportDbModel": "Exportovať DB model",
|
||||||
"database.generateScript": "Generovať skript",
|
"database.generateScript": "Generovať skript",
|
||||||
"database.import": "Importovať",
|
"database.import": "Importovať",
|
||||||
|
"database.newCollection": "Nová {collectionLabel}",
|
||||||
"database.newQuery": "Nový dotaz",
|
"database.newQuery": "Nový dotaz",
|
||||||
"database.newTable": "Nová tabuľka",
|
"database.newTable": "Nová tabuľka",
|
||||||
"database.perspective": "Perspektíva #",
|
"database.perspective": "Perspektíva #",
|
||||||
@@ -159,9 +284,77 @@
|
|||||||
"database.shellTitle": "Shell #",
|
"database.shellTitle": "Shell #",
|
||||||
"database.showDiagram": "Zobraziť",
|
"database.showDiagram": "Zobraziť",
|
||||||
"database.sqlGenerator": "SQL generátor",
|
"database.sqlGenerator": "SQL generátor",
|
||||||
|
"datagrid.closeTabs.close": "Zavrieť karty",
|
||||||
|
"datagrid.closeTabs.header": "Potvrdiť zatvorenie kariet",
|
||||||
|
"datagrid.closeTabs.modifiedFiles": "Nasledujúce súbory sú upravené, naozaj zavrieť karty? Po zatvorení ich môžete znovu otvoriť v histórii",
|
||||||
|
"datagrid.columnNameFilter": "Filter názvu stĺpca",
|
||||||
|
"datagrid.copyAdvanced": "Pokročilé kopírovanie",
|
||||||
|
"datagrid.macros.calculation": "Výpočet",
|
||||||
|
"datagrid.macros.calculationDescription": "Vlastný výraz. Použite riadok.názov_stĺpca pre prístup k hodnotám stĺpcov, value pre pôvodnú hodnotu",
|
||||||
|
"datagrid.macros.changeTextCase": "Zmeniť veľkosť písmen",
|
||||||
|
"datagrid.macros.changeTextCaseDescription": "Funkcie pre veľké, malé a iné formáty písmen",
|
||||||
|
"datagrid.macros.changeTextCaseType": "Typ",
|
||||||
|
"datagrid.macros.currentDate": "Aktuálny dátum",
|
||||||
|
"datagrid.macros.currentDateDescription": "Získa aktuálny dátum",
|
||||||
|
"datagrid.macros.dayName": "Názov dňa",
|
||||||
|
"datagrid.macros.delimiter": "Oddeľovač",
|
||||||
|
"datagrid.macros.detail": "Detail makra",
|
||||||
|
"datagrid.macros.duplicateColumns": "Duplikovať stĺpce",
|
||||||
|
"datagrid.macros.duplicateColumnsDescription": "Duplikovať vybrané stĺpce",
|
||||||
|
"datagrid.macros.expression": "Výraz",
|
||||||
|
"datagrid.macros.extractDateFields": "Extrahovať polia dátumu",
|
||||||
|
"datagrid.macros.extractDateFieldsDescription": "Extrahuje rok, mesiac, deň a ďalšie dátumové/časové polia z výberu a pridá ich ako nové stĺpce",
|
||||||
|
"datagrid.macros.format": "Formát",
|
||||||
|
"datagrid.macros.generateUUID": "Generovať UUID",
|
||||||
|
"datagrid.macros.generateUUIDDescription": "Generovať unikátny identifikátor",
|
||||||
|
"datagrid.macros.hourName": "Názov hodiny",
|
||||||
|
"datagrid.macros.minuteName": "Názov minúty",
|
||||||
|
"datagrid.macros.monthName": "Názov mesiaca",
|
||||||
|
"datagrid.macros.noParameters": "Nemá žiadne parametre",
|
||||||
|
"datagrid.macros.padCharacter": "Znak",
|
||||||
|
"datagrid.macros.padLeft": "Doplniť zľava",
|
||||||
|
"datagrid.macros.padLeftDescription": "Vráti reťazec zadanej dĺžky, v ktorom je začiatok aktuálneho reťazca doplnený medzerami alebo iným znakom",
|
||||||
|
"datagrid.macros.padLength": "Dĺžka",
|
||||||
|
"datagrid.macros.padRight": "Doplniť sprava",
|
||||||
|
"datagrid.macros.padRightDescription": "Vráti reťazec zadanej dĺžky, v ktorom je koniec aktuálneho reťazca doplnený medzerami alebo iným znakom",
|
||||||
|
"datagrid.macros.postfix": "Prípona",
|
||||||
|
"datagrid.macros.prefix": "Predpona",
|
||||||
|
"datagrid.macros.removeDiacritics": "Odstrániť diakritiku",
|
||||||
|
"datagrid.macros.removeDiacriticsDescription": "Odstráni diakritiku z vybraných buniek",
|
||||||
|
"datagrid.macros.rowIndex": "Index riadku",
|
||||||
|
"datagrid.macros.rowIndexDescription": "Index riadku od 1 (automatické číslovanie)",
|
||||||
|
"datagrid.macros.searchReplaceText": "Nájsť a nahradiť text",
|
||||||
|
"datagrid.macros.searchReplaceTextCaseSensitive": "Rozlišovať veľkosť písmen",
|
||||||
|
"datagrid.macros.searchReplaceTextDescription": "Nájsť a nahradiť text alebo regulárny výraz",
|
||||||
|
"datagrid.macros.searchReplaceTextFind": "Nájsť",
|
||||||
|
"datagrid.macros.searchReplaceTextIsRegex": "Regulárny výraz",
|
||||||
|
"datagrid.macros.searchReplaceTextReplaceWith": "Nahradiť s",
|
||||||
|
"datagrid.macros.secondName": "Názov sekundy",
|
||||||
|
"datagrid.macros.splitColumns": "Rozdeliť stĺpce",
|
||||||
|
"datagrid.macros.splitColumnsDescription": "Rozdeliť vybrané stĺpce",
|
||||||
|
"datagrid.macros.textGroup": "Textové",
|
||||||
|
"datagrid.macros.toBoolean": "Previesť na boolean",
|
||||||
|
"datagrid.macros.toBooleanDescription": "Prevedie na boolean",
|
||||||
|
"datagrid.macros.toInt": "Previesť na celé číslo",
|
||||||
|
"datagrid.macros.toIntDescription": "Prevedie na celé číslo",
|
||||||
|
"datagrid.macros.toNumber": "Previesť na číslo",
|
||||||
|
"datagrid.macros.toNumberDescription": "Prevedie na číslo",
|
||||||
|
"datagrid.macros.toString": "Previesť na reťazec",
|
||||||
|
"datagrid.macros.toStringDescription": "Prevedie na reťazec",
|
||||||
|
"datagrid.macros.toolsGroup": "Nástroje",
|
||||||
|
"datagrid.macros.trim": "Orezať",
|
||||||
|
"datagrid.macros.trimDescription": "Odstráni medzery na začiatku a konci",
|
||||||
|
"datagrid.macros.version": "Verzia",
|
||||||
|
"datagrid.macros.yearName": "Názov roka",
|
||||||
|
"datagrid.searchMacros": "Vyhľadať makrá",
|
||||||
|
"datagrid.setFormat": "Nastaviť formát: ",
|
||||||
|
"datagrid.structure": "Štruktúra",
|
||||||
"error.driverNotFound": "Neplatné pripojenie k databáze, ovládač nenájdený",
|
"error.driverNotFound": "Neplatné pripojenie k databáze, ovládač nenájdený",
|
||||||
"error.selectedCloudConnection": "Vybrané pripojenie je z DbGate cloudu",
|
"error.selectedCloudConnection": "Vybrané pripojenie je z DbGate cloudu",
|
||||||
"error.selectedNotCloudConnection": "Vybrané pripojenie nie je z DbGate cloudu",
|
"error.selectedNotCloudConnection": "Vybrané pripojenie nie je z DbGate cloudu",
|
||||||
|
"export.currentArchive": "Aktuálny archív",
|
||||||
|
"export.exportAdvanced": "Pokročilý export...",
|
||||||
|
"export.result": "Exportovať výsledok",
|
||||||
"file.allSupported": "Všetky podporované súbory",
|
"file.allSupported": "Všetky podporované súbory",
|
||||||
"file.diagramFiles": "Súbory diagramov",
|
"file.diagramFiles": "Súbory diagramov",
|
||||||
"file.duckdb": "Databáza DuckDB",
|
"file.duckdb": "Databáza DuckDB",
|
||||||
@@ -239,6 +432,18 @@
|
|||||||
"filter.today": "Dnes",
|
"filter.today": "Dnes",
|
||||||
"filter.tomorrow": "Zajtra",
|
"filter.tomorrow": "Zajtra",
|
||||||
"filter.yesterday": "Včera",
|
"filter.yesterday": "Včera",
|
||||||
|
"foreignKey.baseColumns": "Základné stĺpce",
|
||||||
|
"foreignKey.refColumns": "Referencované stĺpce",
|
||||||
|
"foreignKey.refTableName": "Referencovaná tabuľka",
|
||||||
|
"foreignKeyEditor.addColumn": "Pridať stĺpec",
|
||||||
|
"foreignKeyEditor.addForeignKey": "Pridať cudzí kľúč",
|
||||||
|
"foreignKeyEditor.baseColumn": "Základný stĺpec - ",
|
||||||
|
"foreignKeyEditor.editForeignKey": "Upraviť cudzí kľúč",
|
||||||
|
"foreignKeyEditor.onDeleteAction": "Akcia pri odstránení",
|
||||||
|
"foreignKeyEditor.onUpdateAction": "Akcia pri aktualizácii",
|
||||||
|
"foreignKeyEditor.refColumn": "Referencovaný stĺpec - ",
|
||||||
|
"foreignKeyEditor.referencedTable": "Referencovaná tabuľka - ",
|
||||||
|
"foreignKeyEditor.tableNotSet": "(tabuľka nie je nastavená)",
|
||||||
"importExport.createZipFileInArchive": "Vytvoriť ZIP súbor v archíve",
|
"importExport.createZipFileInArchive": "Vytvoriť ZIP súbor v archíve",
|
||||||
"importExport.exportToZipArchive": "Exportovať do ZIP archívu",
|
"importExport.exportToZipArchive": "Exportovať do ZIP archívu",
|
||||||
"importExport.exportToZipFile": "Exportovať do ZIP súboru",
|
"importExport.exportToZipFile": "Exportovať do ZIP súboru",
|
||||||
@@ -246,7 +451,36 @@
|
|||||||
"importExport.importFromZipFile": "Importovať zo ZIP súboru (v archívnej zložke)",
|
"importExport.importFromZipFile": "Importovať zo ZIP súboru (v archívnej zložke)",
|
||||||
"importExport.sourceFiles": "Zdrojové súbory",
|
"importExport.sourceFiles": "Zdrojové súbory",
|
||||||
"importExport.tablesViewsCollections": "Tabuľky / pohľady / kolekcie",
|
"importExport.tablesViewsCollections": "Tabuľky / pohľady / kolekcie",
|
||||||
|
"indexEditor.filteredIndexCondition": "Podmienka filtrovaného indexu",
|
||||||
|
"indexEditor.indexName": "Názov indexu",
|
||||||
|
"indexEditor.isUnique": "Je jedinečný index",
|
||||||
|
"newObject.compareDescription": "Porovnať schémy databáz",
|
||||||
|
"newObject.compareDisabled": "Porovnávanie databáz nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.connectionLocal": "Pripojenie databázy uložené lokálne",
|
||||||
|
"newObject.connectionLocalDisabled": "Nie ste oprávnení vytvárať nové pripojenia",
|
||||||
|
"newObject.connectionOnCloudDescription": "Pripojenie databázy uložené na DbGate Cloud",
|
||||||
|
"newObject.connectionOnCloudDisabled": "Na vytvorenie pripojení na DbGate Cloud sa musíte prihlásiť",
|
||||||
|
"newObject.databaseChatDescription": "Chat s vašou databázou pomocou AI",
|
||||||
|
"newObject.databaseChatDisabled": "Chat s databázou nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.erDiagramDescription": "Vizualizovať štruktúru databázy",
|
||||||
|
"newObject.erDiagramDisabled": "ER Diagram nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.exportDescription": "Exportovať do súboru ako CSV, JSON, Excel alebo inej DB",
|
||||||
|
"newObject.exportDisabled": "Export nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.perspectiveDescription": "Spojiť údaje z viacerých databáz",
|
||||||
|
"newObject.queryDesignerDescription": "Navrhnúť SQL dotazy vizuálne",
|
||||||
|
"newObject.queryDesignerDisabled": "Návrhár dotazov nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.sqlGeneratorDescription": "Generovať SQL skripty pre objekty databázy",
|
||||||
|
"newObject.sqlGeneratorDisabled": "SQL Generátor nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"newObject.tableDescription": "Vytvoriť tabuľku v aktuálnej databáze",
|
||||||
|
"newObject.tableDisabled": "Vytvorenie tabuľky nie je k dispozícii pre aktuálnu databázu",
|
||||||
|
"query.limitRows": "Obmedziť na {queryRowsLimit} riadkov",
|
||||||
|
"query.named": ":premenná",
|
||||||
|
"query.noParameters": "(žiadne parametre)",
|
||||||
|
"query.positional": "? (pozíciový)",
|
||||||
|
"query.unlimitedRows": "Neobmedzené riadky",
|
||||||
|
"query.variable": "#premenná",
|
||||||
"schema.add": "Pridať novú schému",
|
"schema.add": "Pridať novú schému",
|
||||||
|
"schema.allSchemas": "Všetky schémy ({count})",
|
||||||
"schema.createSchema": "Vytvoriť schému",
|
"schema.createSchema": "Vytvoriť schému",
|
||||||
"schema.delete": "Odstrániť schému",
|
"schema.delete": "Odstrániť schému",
|
||||||
"schema.resetToDefault": "Resetovať na predvolené",
|
"schema.resetToDefault": "Resetovať na predvolené",
|
||||||
@@ -257,6 +491,7 @@
|
|||||||
"serverSummaryTab.processes": "Procesy",
|
"serverSummaryTab.processes": "Procesy",
|
||||||
"serverSummaryTab.variables": "Premenné",
|
"serverSummaryTab.variables": "Premenné",
|
||||||
"settings.appearance": "Vzhľad aplikácie",
|
"settings.appearance": "Vzhľad aplikácie",
|
||||||
|
"settings.appearance.afterInstalling": "Po nainštalovaní (skúste vyhľadať \"themes\" v dostupných rozšíreniach) budú nové témy k dispozícii tu.",
|
||||||
"settings.appearance.customSize": "Vlastná veľkosť",
|
"settings.appearance.customSize": "Vlastná veľkosť",
|
||||||
"settings.appearance.editorTheme": "Téma",
|
"settings.appearance.editorTheme": "Téma",
|
||||||
"settings.appearance.editorTheme.default": "(použiť predvolenú tému)",
|
"settings.appearance.editorTheme.default": "(použiť predvolenú tému)",
|
||||||
@@ -267,6 +502,7 @@
|
|||||||
"settings.behaviour": "Správanie",
|
"settings.behaviour": "Správanie",
|
||||||
"settings.behaviour.jsonPreviewWrap": "Zalomiť JSON v náhľade",
|
"settings.behaviour.jsonPreviewWrap": "Zalomiť JSON v náhľade",
|
||||||
"settings.behaviour.openDetailOnArrows": "Otvoriť detail pri navigácii klávesnicou",
|
"settings.behaviour.openDetailOnArrows": "Otvoriť detail pri navigácii klávesnicou",
|
||||||
|
"settings.behaviour.singleClickPreview": "Pri jednoduchom kliknutí alebo výbere súboru v zobrazení \"Tabuľky, pohľady, funkcie\" sa zobrazí v režime náhľadu a znovu použije existujúcu kartu (karta náhľadu). Toto je užitočné, ak rýchlo prehliadate tabuľky a nechcete, aby každá navštívená tabuľka mala svoju vlastnú kartu. Keď začnete upravovať tabuľku alebo použijete dvojklik na otvorenie tabuľky zo zobrazenia \"Tabuľky\", nová karta bude venovaná tejto tabuľke.",
|
||||||
"settings.behaviour.useTabPreviewMode": "Použiť režim náhľadu na karte",
|
"settings.behaviour.useTabPreviewMode": "Použiť režim náhľadu na karte",
|
||||||
"settings.confirmations": "Potvrdenia",
|
"settings.confirmations": "Potvrdenia",
|
||||||
"settings.confirmations.skipConfirm.collectionDataSave": "Preskočiť potvrdenie pri ukladaní údajov kolekcie (NoSQL)",
|
"settings.confirmations.skipConfirm.collectionDataSave": "Preskočiť potvrdenie pri ukladaní údajov kolekcie (NoSQL)",
|
||||||
@@ -349,6 +585,7 @@
|
|||||||
"sqlObject.columnComment": "Komentár stĺpca",
|
"sqlObject.columnComment": "Komentár stĺpca",
|
||||||
"sqlObject.columnDataType": "Dátový typ stĺpca",
|
"sqlObject.columnDataType": "Dátový typ stĺpca",
|
||||||
"sqlObject.columnName": "Názov stĺpca",
|
"sqlObject.columnName": "Názov stĺpca",
|
||||||
|
"sqlObject.databaseEmpty": "Databáza {database} je prázdna alebo štruktúra nie je načítaná, stlačte tlačidlo Obnoviť pre opätovné načítanie štruktúry",
|
||||||
"sqlObject.loadingStructure": "Načítavanie štruktúry databázy",
|
"sqlObject.loadingStructure": "Načítavanie štruktúry databázy",
|
||||||
"sqlObject.schemaName": "Schéma",
|
"sqlObject.schemaName": "Schéma",
|
||||||
"sqlObject.search.placeholder": "Hľadať v tabuľkách, pohľadoch, procedúrach",
|
"sqlObject.search.placeholder": "Hľadať v tabuľkách, pohľadoch, procedúrach",
|
||||||
@@ -358,9 +595,13 @@
|
|||||||
"sqlObject.tableViewProcedureName": "Názov tabuľky/pohľadu/procedúry",
|
"sqlObject.tableViewProcedureName": "Názov tabuľky/pohľadu/procedúry",
|
||||||
"sqlObject.tablesWithRows": "Iba tabuľky s riadkami",
|
"sqlObject.tablesWithRows": "Iba tabuľky s riadkami",
|
||||||
"sqlObject.viewProcedureTriggerText": "Text pohľadu/procedúry/triggera",
|
"sqlObject.viewProcedureTriggerText": "Text pohľadu/procedúry/triggera",
|
||||||
|
"sqlObjectList.refreshDatabase": "Obnoviť databázové pripojenia a zoznam objektov",
|
||||||
"summaryProcesses.actions": "Akcie",
|
"summaryProcesses.actions": "Akcie",
|
||||||
"summaryProcesses.client": "Klient",
|
"summaryProcesses.client": "Klient",
|
||||||
"summaryProcesses.connectionId": "ID pripojenia",
|
"summaryProcesses.connectionId": "ID pripojenia",
|
||||||
|
"summaryProcesses.killConfirm": "Ste si istí, že chcete ukončiť proces {processId}?",
|
||||||
|
"summaryProcesses.killError": "Chyba pri ukončovaní procesu {processId}: {errorMessage}",
|
||||||
|
"summaryProcesses.killSuccess": "Proces {processId} bol úspešne ukončený",
|
||||||
"summaryProcesses.namespace": "Namespace",
|
"summaryProcesses.namespace": "Namespace",
|
||||||
"summaryProcesses.operation": "Operácia",
|
"summaryProcesses.operation": "Operácia",
|
||||||
"summaryProcesses.processId": "ID procesu",
|
"summaryProcesses.processId": "ID procesu",
|
||||||
@@ -370,6 +611,49 @@
|
|||||||
"summaryVariables.value": "Hodnota",
|
"summaryVariables.value": "Hodnota",
|
||||||
"summaryVariables.variable": "Premenná",
|
"summaryVariables.variable": "Premenná",
|
||||||
"tab.administration": "Administrácia",
|
"tab.administration": "Administrácia",
|
||||||
|
"tableData.viewColumns": "Zobraziť stĺpce",
|
||||||
|
"tableEdit.addConstraintLabel": "Pridať {constraintLabel}",
|
||||||
|
"tableEdit.editConstraintLabel": "Upraviť {constraintLabel}",
|
||||||
|
"tableEdit.unique": "jedinečné",
|
||||||
|
"tableEditor": "Editor tabuliek",
|
||||||
|
"tableEditor.addColumn": "Pridať stĺpec",
|
||||||
|
"tableEditor.addForeignKey": "Pridať cudzí kľúč",
|
||||||
|
"tableEditor.addIndex": "Pridať index",
|
||||||
|
"tableEditor.addPrimaryKey": "Pridať primárny kľúč",
|
||||||
|
"tableEditor.addUnique": "Pridať obmedzenie jedinečnosti",
|
||||||
|
"tableEditor.columnComment": "Komentár",
|
||||||
|
"tableEditor.columns": "Stĺpce",
|
||||||
|
"tableEditor.computedExpression": "Vypočítaný výraz",
|
||||||
|
"tableEditor.constraintName": "Názov obmedzenia",
|
||||||
|
"tableEditor.copydefinitions": "Kopírovať definície",
|
||||||
|
"tableEditor.copynames": "Kopírovať názvy",
|
||||||
|
"tableEditor.dataType": "Dátový typ",
|
||||||
|
"tableEditor.defaultValue": "Predvolená hodnota",
|
||||||
|
"tableEditor.dependencies": "Závislosti",
|
||||||
|
"tableEditor.foreignKeys": "Cudzie kľúče ({foreignKeyCount})",
|
||||||
|
"tableEditor.indexes": "Indexy ({indexCount})",
|
||||||
|
"tableEditor.isPersisted": "Je perzistentný",
|
||||||
|
"tableEditor.isSparse": "Je riedky",
|
||||||
|
"tableEditor.isUnsigned": "Bez znamienka",
|
||||||
|
"tableEditor.isZeroFill": "Je vyplnený nulami",
|
||||||
|
"tableEditor.no": "NIE",
|
||||||
|
"tableEditor.noConstraintDefined": "Nie je definovaný žiaden {constraintLabel}",
|
||||||
|
"tableEditor.nocolumnsdefined": "Žiadne stĺpce nie sú definované",
|
||||||
|
"tableEditor.noforeignkeydefined": "Nie je definovaný žiadny cudzí kľúč",
|
||||||
|
"tableEditor.noindexdefined": "Nie je definovaný žiadny index",
|
||||||
|
"tableEditor.notnull": "NOT NULL",
|
||||||
|
"tableEditor.nouniquedefined": "Nie je definované žiadne obmedzenie jedinečnosti",
|
||||||
|
"tableEditor.null": "NULL",
|
||||||
|
"tableEditor.nullability": "Možnosť NULL",
|
||||||
|
"tableEditor.primaryKey": "primárny kľúč",
|
||||||
|
"tableEditor.remove": "Odstrániť",
|
||||||
|
"tableEditor.tablename": "Názov tabuľky",
|
||||||
|
"tableEditor.tableproperties": "Vlastnosti tabuľky",
|
||||||
|
"tableEditor.unique": "Jedinečné",
|
||||||
|
"tableEditor.uniqueConstraints": "Obmedzenia jedinečnosti ({constraintCount})",
|
||||||
|
"tableEditor.yes": "ÁNO",
|
||||||
|
"tableStructure.alter": "Úprava tabuľky",
|
||||||
|
"tableStructure.create": "Vytvoriť tabuľku",
|
||||||
"widget.databaseContent": "Obsah databázy",
|
"widget.databaseContent": "Obsah databázy",
|
||||||
"widget.databases": "Databázy",
|
"widget.databases": "Databázy",
|
||||||
"widget.keys": "Kľúče",
|
"widget.keys": "Kľúče",
|
||||||
|
|||||||
Reference in New Issue
Block a user