Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 64a0ebf3e0 | |||
| a345f78ae0 |
@@ -0,0 +1,45 @@
|
||||
import { useState } from 'react';
|
||||
|
||||
import { t } from '@grafana/i18n';
|
||||
import { EmptyState, FilterInput, Stack } from '@grafana/ui';
|
||||
import { Connection } from 'app/api/clients/provisioning/v0alpha1';
|
||||
|
||||
import { ConnectionListItem } from './ConnectionListItem';
|
||||
|
||||
interface Props {
|
||||
items: Connection[];
|
||||
}
|
||||
|
||||
export function ConnectionList({ items }: Props) {
|
||||
const [query, setQuery] = useState('');
|
||||
|
||||
const filteredItems = items.filter((item) => {
|
||||
if (!query) {
|
||||
return true;
|
||||
}
|
||||
const lowerQuery = query.toLowerCase();
|
||||
const name = item.metadata?.name?.toLowerCase() ?? '';
|
||||
const providerType = item.spec?.type?.toLowerCase() ?? '';
|
||||
return name.includes(lowerQuery) || providerType.includes(lowerQuery);
|
||||
});
|
||||
|
||||
return (
|
||||
<Stack direction={'column'} gap={3}>
|
||||
<FilterInput
|
||||
placeholder={t('provisioning.connections.search-placeholder', 'Search connections')}
|
||||
value={query}
|
||||
onChange={setQuery}
|
||||
/>
|
||||
<Stack direction={'column'} gap={2}>
|
||||
{filteredItems.length ? (
|
||||
filteredItems.map((item) => <ConnectionListItem key={item.metadata?.name} connection={item} />)
|
||||
) : (
|
||||
<EmptyState
|
||||
variant="not-found"
|
||||
message={t('provisioning.connections.no-results', 'No results matching your query')}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
import { Trans } from '@grafana/i18n';
|
||||
import { Card, LinkButton, Stack, Text, TextLink } from '@grafana/ui';
|
||||
import { Connection } from 'app/api/clients/provisioning/v0alpha1';
|
||||
|
||||
import { RepoIcon } from '../Shared/RepoIcon';
|
||||
import { CONNECTIONS_URL } from '../constants';
|
||||
|
||||
import { ConnectionStatusBadge } from './ConnectionStatusBadge';
|
||||
import { DeleteConnectionButton } from './DeleteConnectionButton';
|
||||
|
||||
interface Props {
|
||||
connection: Connection;
|
||||
}
|
||||
|
||||
export function ConnectionListItem({ connection }: Props) {
|
||||
const { metadata, spec, status } = connection;
|
||||
const name = metadata?.name ?? '';
|
||||
const providerType = spec?.type;
|
||||
const url = spec?.url;
|
||||
|
||||
return (
|
||||
<Card noMargin key={name}>
|
||||
<Card.Figure>
|
||||
<RepoIcon type={providerType} />
|
||||
</Card.Figure>
|
||||
<Card.Heading>
|
||||
<Stack gap={2} direction="row" alignItems="center">
|
||||
<Text variant="h3">{name}</Text>
|
||||
<ConnectionStatusBadge status={status} />
|
||||
</Stack>
|
||||
</Card.Heading>
|
||||
|
||||
{url && (
|
||||
<Card.Meta>
|
||||
<TextLink external href={url}>
|
||||
{url}
|
||||
</TextLink>
|
||||
</Card.Meta>
|
||||
)}
|
||||
|
||||
<Card.Actions>
|
||||
<Stack gap={1} direction="row">
|
||||
<LinkButton icon="eye" href={`${CONNECTIONS_URL}/${name}`} variant="primary" size="md">
|
||||
<Trans i18nKey="provisioning.connections.view">View</Trans>
|
||||
</LinkButton>
|
||||
<DeleteConnectionButton name={name} connection={connection} />
|
||||
</Stack>
|
||||
</Card.Actions>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import { t } from '@grafana/i18n';
|
||||
import { Badge, IconName } from '@grafana/ui';
|
||||
import { ConnectionStatus } from 'app/api/clients/provisioning/v0alpha1';
|
||||
|
||||
interface Props {
|
||||
status?: ConnectionStatus;
|
||||
}
|
||||
|
||||
interface BadgeConfig {
|
||||
color: 'green' | 'red' | 'darkgrey';
|
||||
text: string;
|
||||
icon: IconName;
|
||||
}
|
||||
|
||||
function getBadgeConfig(status?: ConnectionStatus): BadgeConfig {
|
||||
if (!status) {
|
||||
return {
|
||||
color: 'darkgrey',
|
||||
text: t('provisioning.connections.status-unknown', 'Unknown'),
|
||||
icon: 'question-circle',
|
||||
};
|
||||
}
|
||||
|
||||
switch (status.state) {
|
||||
case 'connected':
|
||||
return {
|
||||
color: 'green',
|
||||
text: t('provisioning.connections.status-connected', 'Connected'),
|
||||
icon: 'check',
|
||||
};
|
||||
case 'disconnected':
|
||||
return {
|
||||
color: 'red',
|
||||
text: t('provisioning.connections.status-disconnected', 'Disconnected'),
|
||||
icon: 'times-circle',
|
||||
};
|
||||
default:
|
||||
return {
|
||||
color: 'darkgrey',
|
||||
text: t('provisioning.connections.status-unknown', 'Unknown'),
|
||||
icon: 'question-circle',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export function ConnectionStatusBadge({ status }: Props) {
|
||||
const config = getBadgeConfig(status);
|
||||
|
||||
return <Badge color={config.color} text={config.text} icon={config.icon} />;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
import { Alert, Button, EmptyState, Stack, Text } from '@grafana/ui';
|
||||
import { Page } from 'app/core/components/Page/Page';
|
||||
|
||||
import { useConnectionList } from '../hooks/useConnectionList';
|
||||
import { getErrorMessage } from '../utils/httpUtils';
|
||||
|
||||
import { ConnectionList } from './ConnectionList';
|
||||
|
||||
export default function ConnectionsPage() {
|
||||
const [items, isLoading] = useConnectionList();
|
||||
|
||||
const hasError = !isLoading && !items;
|
||||
const hasNoConnections = !isLoading && items?.length === 0;
|
||||
|
||||
return (
|
||||
<Page
|
||||
navId="provisioning"
|
||||
subTitle={t('provisioning.connections.page-subtitle', 'View and manage your app connections')}
|
||||
actions={
|
||||
<Button
|
||||
variant="primary"
|
||||
disabled
|
||||
tooltip={t('provisioning.connections.create-tooltip', 'Connection creation coming soon')}
|
||||
>
|
||||
<Trans i18nKey="provisioning.connections.add-connection">Add connection</Trans>
|
||||
</Button>
|
||||
}
|
||||
>
|
||||
<Page.Contents isLoading={isLoading}>
|
||||
<Stack direction={'column'} gap={3}>
|
||||
{hasError && (
|
||||
<Alert severity="error" title={t('provisioning.connections.error-loading', 'Failed to load connections')}>
|
||||
{getErrorMessage(hasError)}
|
||||
</Alert>
|
||||
)}
|
||||
|
||||
{hasNoConnections && (
|
||||
<EmptyState
|
||||
variant="call-to-action"
|
||||
message={t('provisioning.connections.no-connections', 'No connections configured')}
|
||||
>
|
||||
<Text element="p">
|
||||
{t(
|
||||
'provisioning.connections.no-connections-message',
|
||||
'Add a connection to authenticate with external providers'
|
||||
)}
|
||||
</Text>
|
||||
</EmptyState>
|
||||
)}
|
||||
|
||||
{items && items.length > 0 && <ConnectionList items={items} />}
|
||||
</Stack>
|
||||
</Page.Contents>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
import { t, Trans } from '@grafana/i18n';
|
||||
import { reportInteraction } from '@grafana/runtime';
|
||||
import { Button, ConfirmModal } from '@grafana/ui';
|
||||
import { Connection, useDeleteConnectionMutation } from 'app/api/clients/provisioning/v0alpha1';
|
||||
|
||||
interface Props {
|
||||
name: string;
|
||||
connection: Connection;
|
||||
}
|
||||
|
||||
export function DeleteConnectionButton({ name, connection }: Props) {
|
||||
const [deleteConnection, deleteRequest] = useDeleteConnectionMutation();
|
||||
const [showModal, setShowModal] = useState(false);
|
||||
|
||||
const onConfirm = useCallback(async () => {
|
||||
reportInteraction('grafana_provisioning_connection_deleted', {
|
||||
connectionName: name,
|
||||
connectionType: connection?.spec?.type ?? 'unknown',
|
||||
});
|
||||
|
||||
await deleteConnection({ name });
|
||||
setShowModal(false);
|
||||
}, [deleteConnection, name, connection]);
|
||||
|
||||
const isLoading = deleteRequest.isLoading;
|
||||
|
||||
return (
|
||||
<>
|
||||
<Button variant="destructive" size="md" disabled={isLoading} onClick={() => setShowModal(true)}>
|
||||
<Trans i18nKey="provisioning.connections.delete">Delete</Trans>
|
||||
</Button>
|
||||
<ConfirmModal
|
||||
isOpen={showModal}
|
||||
title={t('provisioning.connections.delete-title', 'Delete connection')}
|
||||
body={t(
|
||||
'provisioning.connections.delete-confirm',
|
||||
'Are you sure you want to delete this connection? This action cannot be undone.'
|
||||
)}
|
||||
confirmText={t('provisioning.connections.delete', 'Delete')}
|
||||
onConfirm={onConfirm}
|
||||
onDismiss={() => setShowModal(false)}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
export const PROVISIONING_URL = '/admin/provisioning';
|
||||
export const CONNECTIONS_URL = `${PROVISIONING_URL}/connections`;
|
||||
export const CONNECT_URL = `${PROVISIONING_URL}/connect`;
|
||||
export const GETTING_STARTED_URL = `${PROVISIONING_URL}/getting-started`;
|
||||
export const UPGRADE_URL = 'https://grafana.com/profile/org/subscription';
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import { skipToken } from '@reduxjs/toolkit/query';
|
||||
|
||||
import { ListConnectionApiArg, Connection, useListConnectionQuery } from 'app/api/clients/provisioning/v0alpha1';
|
||||
|
||||
// Sort connections alphabetically by name
|
||||
export function useConnectionList(
|
||||
options: ListConnectionApiArg | typeof skipToken = {}
|
||||
): [Connection[] | undefined, boolean] {
|
||||
const query = useListConnectionQuery(options);
|
||||
const collator = new Intl.Collator(undefined, { numeric: true });
|
||||
|
||||
const sortedItems = query.data?.items?.slice().sort((a, b) => {
|
||||
const nameA = a.metadata?.name ?? '';
|
||||
const nameB = b.metadata?.name ?? '';
|
||||
return collator.compare(nameA, nameB);
|
||||
});
|
||||
|
||||
return [sortedItems, query.isLoading];
|
||||
}
|
||||
@@ -3,7 +3,7 @@ import { RouteDescriptor } from 'app/core/navigation/types';
|
||||
import { DashboardRoutes } from 'app/types/dashboard';
|
||||
|
||||
import { checkRequiredFeatures } from '../GettingStarted/features';
|
||||
import { PROVISIONING_URL, CONNECT_URL, GETTING_STARTED_URL } from '../constants';
|
||||
import { PROVISIONING_URL, CONNECTIONS_URL, CONNECT_URL, GETTING_STARTED_URL } from '../constants';
|
||||
|
||||
export function getProvisioningRoutes(): RouteDescriptor[] {
|
||||
if (!checkRequiredFeatures()) {
|
||||
@@ -36,6 +36,12 @@ export function getProvisioningRoutes(): RouteDescriptor[] {
|
||||
)
|
||||
),
|
||||
},
|
||||
{
|
||||
path: CONNECTIONS_URL,
|
||||
component: SafeDynamicImport(
|
||||
() => import(/* webpackChunkName: "ConnectionsPage"*/ 'app/features/provisioning/Connection/ConnectionsPage')
|
||||
),
|
||||
},
|
||||
{
|
||||
path: `${CONNECT_URL}/:type`,
|
||||
component: SafeDynamicImport(
|
||||
|
||||
@@ -729,6 +729,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Zadejte obsah vlastní vysvětlivky…"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Pravidla byla úspěšně odstraněna ze složky"
|
||||
@@ -2219,11 +2224,15 @@
|
||||
"min-interval": "Min. Interval = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Vybrané dotazy a výrazy nelze převést na výchozí. Pokud deaktivujete pokročilé možnosti, váš dotaz a podmínka budou obnoveny do výchozího nastavení."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Náhled",
|
||||
"previewCondition": "Podmínka pravidla náhledu výstrahy"
|
||||
"previewCondition": "Podmínka pravidla náhledu výstrahy",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrovat podle kontaktních bodů",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Inhalt der benutzerdefinierten Anmerkung eingeben …"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Die Regeln wurden erfolgreich aus dem Ordner gelöscht"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Mind. Intervall = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Die ausgewählten Abfragen und Ausdrücke können nicht in die Standardeinstellung konvertiert werden. Wenn Sie die erweiterten Optionen deaktivieren, werden Ihre Abfrage und Bedingung auf die Standardeinstellungen zurückgesetzt."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Vorschau",
|
||||
"previewCondition": "Vorschau der Warnregelbedingung"
|
||||
"previewCondition": "Vorschau der Warnregelbedingung",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Nach Kontaktpunkten filtern",
|
||||
|
||||
@@ -11797,6 +11797,23 @@
|
||||
"free-tier-limit-tooltip": "Free-tier accounts are restricted to one connection",
|
||||
"instance-fully-managed-tooltip": "Configuration is disabled because this instance is fully managed"
|
||||
},
|
||||
"connections": {
|
||||
"add-connection": "Add connection",
|
||||
"create-tooltip": "Connection creation coming soon",
|
||||
"delete": "Delete",
|
||||
"delete-confirm": "Are you sure you want to delete this connection? This action cannot be undone.",
|
||||
"delete-title": "Delete connection",
|
||||
"error-loading": "Failed to load connections",
|
||||
"no-connections": "No connections configured",
|
||||
"no-connections-message": "Add a connection to authenticate with external providers",
|
||||
"no-results": "No results matching your query",
|
||||
"page-subtitle": "View and manage your app connections",
|
||||
"search-placeholder": "Search connections",
|
||||
"status-connected": "Connected",
|
||||
"status-disconnected": "Disconnected",
|
||||
"status-unknown": "Unknown",
|
||||
"view": "View"
|
||||
},
|
||||
"delete-repository-button": {
|
||||
"button-delete": "Delete",
|
||||
"confirm-delete-keep-resources": "Are you sure you want to delete the repository configuration but keep its resources?",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Introduce el contenido de la anotación personalizada..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Reglas eliminadas correctamente de la carpeta"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Tamaño min. Intervalo = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Las consultas y expresiones seleccionadas no se pueden convertir a predeterminadas. Si desactivas las opciones avanzadas, tu consulta y condición se restablecerán a la configuración predeterminada."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Vista previa",
|
||||
"previewCondition": "Vista previa de la condición de la regla de alerta"
|
||||
"previewCondition": "Vista previa de la condición de la regla de alerta",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrar por puntos de contacto",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Saisir le contenu de l’annotation personnalisée..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Règles supprimées du dossier"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. Intervalle = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Les requêtes et expressions sélectionnées ne peuvent pas être converties en valeurs par défaut. Si vous désactivez les options avancées, votre requête et votre condition seront réinitialisées aux valeurs par défaut."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Aperçu",
|
||||
"previewCondition": "Aperçu de la condition de la règle d'alerte"
|
||||
"previewCondition": "Aperçu de la condition de la règle d'alerte",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrer par points de contact",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Adja meg az egyéni jegyzet tartalmát…"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "A szabályok sikeresen törlődtek a mappából"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. intervallum = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "A kijelölt lekérdezések és kifejezések nem konvertálhatók alapértelmezettre. Ha kikapcsolja a speciális beállításokat, a lekérdezés és a feltétel visszaáll az alapértelmezett beállításokra."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Előnézet",
|
||||
"previewCondition": "Riasztási szabály előnézeti feltétele"
|
||||
"previewCondition": "Riasztási szabály előnézeti feltétele",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Szűrés kapcsolattartási pontok szerint",
|
||||
|
||||
@@ -720,6 +720,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Masukkan konten anotasi kustom..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Aturan berhasil dihapus dari folder"
|
||||
@@ -2195,11 +2200,15 @@
|
||||
"min-interval": "Min. Interval = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Kueri dan ekspresi yang dipilih tidak dapat dikonversi ke default. Jika Anda menonaktifkan opsi lanjutan, kueri dan kondisi Anda akan diatur ulang ke pengaturan default."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Pratinjau",
|
||||
"previewCondition": "Pratinjau kondisi aturan peringatan"
|
||||
"previewCondition": "Pratinjau kondisi aturan peringatan",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filter berdasarkan titik kontak",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Inserisci il contenuto dell'annotazione personalizzata..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Regole eliminate dalla cartella"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min Intervallo = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Le query e le espressioni selezionate non possono essere convertite in predefinite. Se disattivi le opzioni avanzate, la query e la condizione verranno ripristinate alle impostazioni predefinite."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Anteprima",
|
||||
"previewCondition": "Anteprima condizione regola di avviso"
|
||||
"previewCondition": "Anteprima condizione regola di avviso",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtra per punti di contatto",
|
||||
|
||||
@@ -720,6 +720,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "カスタム注釈内容を入力..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "ルールがフォルダから正常に削除されました"
|
||||
@@ -2195,11 +2200,15 @@
|
||||
"min-interval": "最小間隔= {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "選択したクエリと式はデフォルトに変換できません。高度なオプションを無効にすると、クエリと条件はデフォルト設定にリセットされます。"
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "プレビュー",
|
||||
"previewCondition": "アラートルール条件をプレビューする"
|
||||
"previewCondition": "アラートルール条件をプレビューする",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "コンタクトポイントで絞り込む",
|
||||
|
||||
@@ -720,6 +720,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "사용자 지정 주석 내용을 입력하세요..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "폴더에서 규칙이 성공적으로 삭제되었습니다"
|
||||
@@ -2195,11 +2200,15 @@
|
||||
"min-interval": "최소 간격 = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "선택한 쿼리와 표현식을 기본값으로 변환할 수 없습니다. 고급 옵션을 비활성화하면 쿼리와 조건이 기본 설정으로 재설정됩니다."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "미리보기",
|
||||
"previewCondition": "경고 규칙 조건 미리보기"
|
||||
"previewCondition": "경고 규칙 조건 미리보기",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "연락처로 필터링",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Aangepaste annotatie-inhoud invoeren..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Regels zijn verwijderd uit de map"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. Interval = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "De geselecteerde query's en expressies kunnen niet worden geconverteerd naar standaard. Als je geavanceerde opties deactiveert, worden je query en voorwaarde teruggezet naar de standaardinstellingen."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Voorbeeld",
|
||||
"previewCondition": "Voorbeeld waarschuwingsregel voorwaarde"
|
||||
"previewCondition": "Voorbeeld waarschuwingsregel voorwaarde",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filteren op contactpunten",
|
||||
|
||||
@@ -729,6 +729,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Wpisz treść niestandardowej adnotacji…"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Reguły zostały usunięte z folderu"
|
||||
@@ -2219,11 +2224,15 @@
|
||||
"min-interval": "Min. odstęp czasu = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Nie można przekonwertować wybranych zapytań i wyrażeń na domyślne. Jeśli wyłączysz opcje zaawansowane, zapytanie i warunek zostaną zresetowane do ustawień domyślnych."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Podgląd",
|
||||
"previewCondition": "Podgląd warunku reguły alertu"
|
||||
"previewCondition": "Podgląd warunku reguły alertu",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtruj według punktów kontaktu",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Insira o conteúdo da anotação personalizada…"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "As regras foram excluídas da pasta"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Mín. Intervalo = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "As consultas e expressões selecionadas não podem ser convertidas para o padrão. Se você desativar as opções avançadas, sua consulta e condição serão redefinidas para as configurações padrão."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Visualizar",
|
||||
"previewCondition": "Visualizar condição de regra de alerta"
|
||||
"previewCondition": "Visualizar condição de regra de alerta",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrar por pontos de contato",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Introduzir o conteúdo da anotação personalizada..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Regras eliminadas da pasta com sucesso"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. Intervalo = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "As consultas e expressões selecionadas não podem ser convertidas para padrão. Se desativar as opções avançadas, a sua consulta e condição serão repostas para as definições padrão."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Pré-visualizar",
|
||||
"previewCondition": "Pré-visualizar a condição da regra de alerta"
|
||||
"previewCondition": "Pré-visualizar a condição da regra de alerta",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrar por pontos de contacto",
|
||||
|
||||
@@ -729,6 +729,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Ввести содержимое пользовательской аннотации..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Правила удалены из папки"
|
||||
@@ -2219,11 +2224,15 @@
|
||||
"min-interval": "Мин. интервал = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Выбранные запросы и выражения не могут быть преобразованы в используемые по умолчанию. Если вы отключите расширенные параметры, ваш запрос и условие будут сброшены до настроек по умолчанию."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Предварительный просмотр",
|
||||
"previewCondition": "Предварительный просмотр условия правила оповещения"
|
||||
"previewCondition": "Предварительный просмотр условия правила оповещения",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Фильтр по точкам контакта",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Ange innehåll för anpassad kommentar …"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Reglerna har raderats från mappen"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. Intervall = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "De valda frågorna och uttrycken kan inte konverteras till standard. Om du inaktiverar avancerade alternativ kommer din fråga och ditt villkor att återställas till standardinställningarna."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Förhandsgranska",
|
||||
"previewCondition": "Förhandsgranska varningsregeltillstånd"
|
||||
"previewCondition": "Förhandsgranska varningsregeltillstånd",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "Filtrera efter kontaktpunkter",
|
||||
|
||||
@@ -723,6 +723,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "Özel ek açıklama içeriği girin..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "Kurallar klasörden başarıyla silindi"
|
||||
@@ -2203,11 +2208,15 @@
|
||||
"min-interval": "Min. Aralık = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "Seçilen sorgular ve ifadeler varsayılana dönüştürülemez. Gelişmiş seçenekleri devre dışı bırakırsanız sorgunuz ve koşulunuz varsayılan ayarlara sıfırlanır."
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "Ön izleme",
|
||||
"previewCondition": "Uyarı kuralı koşulunu ön izle"
|
||||
"previewCondition": "Uyarı kuralı koşulunu ön izle",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "",
|
||||
|
||||
@@ -720,6 +720,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "输入自定义注释内容..."
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "规则已成功从文件夹中删除"
|
||||
@@ -2195,11 +2200,15 @@
|
||||
"min-interval": "最小间隔 = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "无法将所选查询和表达式转换为默认值。如果停用高级选项,您的查询和条件将重置为默认设置。"
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "预览",
|
||||
"previewCondition": "预览提醒规则条件"
|
||||
"previewCondition": "预览提醒规则条件",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "按联络点筛选",
|
||||
|
||||
@@ -720,6 +720,11 @@
|
||||
"placeholder-value-input": "",
|
||||
"placeholder-value-input-default": "輸入自訂註解內容…"
|
||||
},
|
||||
"backtest": {
|
||||
"error-title": "",
|
||||
"loading": "",
|
||||
"panel-title": ""
|
||||
},
|
||||
"bulk-actions": {
|
||||
"delete": {
|
||||
"success": "已成功從資料夾中刪除規則"
|
||||
@@ -2195,11 +2200,15 @@
|
||||
"min-interval": "最小間隔 = {{minInterval}}"
|
||||
},
|
||||
"queryAndExpressionsStep": {
|
||||
"custom": "",
|
||||
"disableAdvancedOptions": {
|
||||
"text": "所選查詢和表達式無法轉換為預設值。如果停用進階選項,您的查詢和條件將重設為預設設定。"
|
||||
},
|
||||
"last15m": "",
|
||||
"last1h": "",
|
||||
"preview": "預覽",
|
||||
"previewCondition": "預覽警報規則條件"
|
||||
"previewCondition": "預覽警報規則條件",
|
||||
"testRule": ""
|
||||
},
|
||||
"receiver-filter": {
|
||||
"aria-label-contact-points": "按聯絡點篩選",
|
||||
|
||||
Reference in New Issue
Block a user