Skip to content

Commit

Permalink
Update messaging
Browse files Browse the repository at this point in the history
  • Loading branch information
qn895 committed Apr 19, 2023
1 parent 22b5f9d commit c7ad1c7
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ import type { FunctionComponent } from 'react';

import { EuiSpacer, EuiCallOut, EuiTitle } from '@elastic/eui';

import { i18n } from '@kbn/i18n';

import { FormattedMessage } from '@kbn/i18n-react';

import { useAuthz } from '../../../../../../../hooks';

import type { EsAssetReference } from '../../../../../../../../common';

import type { PackageInfo } from '../../../../../types';
import { ElasticsearchAssetType } from '../../../../../types';

import { getDeferredInstallationMsg } from './deferred_assets_warning';

import { DeferredTransformAccordion } from './deferred_transforms_accordion';

interface Props {
Expand All @@ -30,6 +32,8 @@ export const DeferredAssetsSection: FunctionComponent<Props> = ({
deferredInstallations,
packageInfo,
}) => {
const authz = useAuthz();

const deferredTransforms = deferredInstallations.filter(
(asset) => asset.type === ElasticsearchAssetType.transform
);
Expand All @@ -48,14 +52,7 @@ export const DeferredAssetsSection: FunctionComponent<Props> = ({
size="m"
color="warning"
iconType="alert"
title={i18n.translate(
'xpack.fleet.epm.packageDetails.assets.deferredInstallationsCallout',
{
defaultMessage:
'This package has {numOfDeferredInstallations, plural, one {one deferred installation which requires} other {# deferred installations which require}} additional permissions to install and operate correctly.',
values: { numOfDeferredInstallations: deferredInstallations.length },
}
)}
title={getDeferredInstallationMsg(deferredInstallations.length, { authz })}
/>
<EuiSpacer size="l" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React from 'react';
import React, { useMemo } from 'react';
import { i18n } from '@kbn/i18n';
import { EuiIcon, EuiToolTip } from '@elastic/eui';

import type { FleetAuthz } from '../../../../../../../../common';

import { useAuthz } from '../../../../../../../hooks';

export const DEFERRED_ASSETS_WARNING_LABEL = i18n.translate(
'xpack.fleet.packageCard.reauthorizationRequiredLabel',
{
Expand All @@ -23,19 +27,46 @@ export const DEFERRED_ASSETS_WARNING_MSG = i18n.translate(
}
);

export const getDeferredInstallationMsg = (
numOfDeferredInstallations: number | undefined | null,
{ authz }: { authz: FleetAuthz }
) => {
const canReauthorizeTransforms =
authz?.packagePrivileges?.transform?.actions?.canStartStopTransform?.executePackageAction ??
false;

if (!numOfDeferredInstallations) return DEFERRED_ASSETS_WARNING_MSG;

if (canReauthorizeTransforms) {
return i18n.translate(
'xpack.fleet.epm.packageDetails.assets.reauthorizeDeferredInstallationsMsg',
{
defaultMessage:
'This package has {numOfDeferredInstallations, plural, one {one deferred installation} other {# deferred installations}}. Complete the installation to operate the package correctly.',
values: { numOfDeferredInstallations },
}
);
}

return i18n.translate('xpack.fleet.epm.packageDetails.assets.deferredInstallationsWarning', {
defaultMessage:
'This package has {numOfDeferredInstallations, plural, one {one deferred installation which requires} other {# deferred installations which require}} additional permissions to install and operate correctly.',
values: { numOfDeferredInstallations },
});
};

export const DeferredAssetsWarning = ({
numOfDeferredInstallations,
}: {
numOfDeferredInstallations?: number;
}) => {
const tooltipContent =
numOfDeferredInstallations !== undefined
? i18n.translate('xpack.fleet.epm.packageDetails.assets.deferredInstallationsWarning', {
defaultMessage:
'This package has {numOfDeferredInstallations, plural, one {one deferred installation which requires} other {# deferred installations which require}} additional permissions to install and operate correctly.',
values: { numOfDeferredInstallations },
})
: DEFERRED_ASSETS_WARNING_MSG;
const authz = useAuthz();

const tooltipContent = useMemo(
() => getDeferredInstallationMsg(numOfDeferredInstallations, { authz }),
[numOfDeferredInstallations, authz]
);

return (
<EuiToolTip
display="inlineBlock"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,25 @@ interface Props {
deferredInstallations: EsAssetReference[];
}

export const getDeferredAssetDescription = (assetType: string, assetCount: number) => {
export const getDeferredAssetDescription = (
assetType: string,
assetCount: number,
permissions: { canReauthorizeTransforms: boolean }
) => {
switch (assetType) {
case ElasticsearchAssetType.transform:
if (permissions.canReauthorizeTransforms) {
return i18n.translate(
'xpack.fleet.epm.packageDetails.assets.deferredTransformReauthorizeDescription',
{
defaultMessage:
'{assetCount, plural, one {Transform was installed but requires} other {# transforms were installed but require}} additional permissions to run. Reauthorize the {assetCount, plural, one {transform} other {transforms}} to start operations.',
values: { assetCount: assetCount ?? 1 },
}
);
}
return i18n.translate(
'xpack.fleet.epm.packageDetails.assets.deferredTransformInstallationsDescription',
'xpack.fleet.epm.packageDetails.assets.deferredTransformRequestPermissionDescription',
{
defaultMessage:
'{assetCount, plural, one {Transform was installed but requires} other {# transforms were installed but require}} additional permissions to run. Contact your administrator to request the required privileges.',
Expand Down Expand Up @@ -186,7 +200,11 @@ export const DeferredTransformAccordion: FunctionComponent<Props> = ({
<>
<EuiSpacer size="m" />

<EuiText>{getDeferredAssetDescription(type, deferredInstallations.length)} </EuiText>
<EuiText>
{getDeferredAssetDescription(type, deferredInstallations.length, {
canReauthorizeTransforms,
})}{' '}
</EuiText>
<EuiSpacer size="m" />

<EuiButton
Expand All @@ -198,7 +216,9 @@ export const DeferredTransformAccordion: FunctionComponent<Props> = ({
e.preventDefault();
authorizeTransforms(deferredTransforms.map((t) => ({ transformId: t.id })));
}}
aria-label={getDeferredAssetDescription(type, deferredInstallations.length)}
aria-label={getDeferredAssetDescription(type, deferredInstallations.length, {
canReauthorizeTransforms,
})}
>
{i18n.translate('xpack.fleet.epm.packageDetails.assets.reauthorizeAllButton', {
defaultMessage: 'Reauthorize all',
Expand All @@ -223,7 +243,7 @@ export const DeferredTransformAccordion: FunctionComponent<Props> = ({
content={
canReauthorizeTransforms
? undefined
: getDeferredAssetDescription(type, 1)
: getDeferredAssetDescription(type, 1, { canReauthorizeTransforms })
}
data-test-subject={`fleetAssetsReauthorizeTooltip-${transformId}-${isLoading}`}
>
Expand Down
14 changes: 7 additions & 7 deletions x-pack/plugins/translations/translations/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -26583,9 +26583,6 @@
"xpack.reporting.diagnostic.browserMissingFonts": "Le navigateur n'a pas réussi à localiser de police par défaut. Consultez {url} pour corriger ce problème.",
"xpack.reporting.diagnostic.noUsableSandbox": "Impossible d'utiliser la sandbox Chromium. Vous pouvez la désactiver à vos risques et périls avec \"xpack.screenshotting.browser.chromium.disableSandbox\". Veuillez consulter {url}",
"xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "Impossible de déchiffrer les données de la tâche de reporting. Veuillez vous assurer que {encryptionKey} est défini et générez à nouveau ce rapport. {err}",
"generateCsv.esErrorMessage": "Réponse {statusCode} reçue d'Elasticsearch : {message}",
"generateCsv.incorrectRowCount": "Une erreur a été rencontrée avec le nombre de lignes CSV générées à partir de la recherche : {expected} prévues, {received} reçues.",
"generateCsv.unknownErrorMessage": "Une erreur inconnue est survenue : {message}",
"xpack.reporting.jobResponse.errorHandler.notAuthorized": "Désolé, vous n'êtes pas autorisé à afficher ou supprimer les rapports {jobtype}",
"xpack.reporting.jobsQuery.deleteError": "Impossible de supprimer le rapport : {error}",
"xpack.reporting.jobStatusDetail.attemptXofY": "Tentative {attempts} sur {max_attempts}.",
Expand Down Expand Up @@ -26642,9 +26639,6 @@
"xpack.reporting.diagnostic.screenshotFailureMessage": "Impossible d'effectuer une capture d'écran de votre installation Kibana.",
"xpack.reporting.errorHandler.unknownError": "Erreur inconnue",
"xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "Les en-têtes de tâche sont manquants",
"generateCsv.authenticationExpired.partialResultsMessage": "Ce rapport contient des résultats CSV partiels, car le token d'authentification a expiré. Exportez une quantité moindre de données ou augmentez le délai d'expiration du token d'authentification.",
"generateCsv.csvUnableToClosePit": "Impossible de fermer le point temporel utilisé pour la recherche. Vérifiez les logs de serveur Kibana.",
"generateCsv.escapedFormulaValues": "Le CSV peut contenir des formules dont les valeurs sont précédées d'un caractère d'échappement",
"xpack.reporting.jobCreatedBy.unknownUserPlaceholderText": "Inconnu",
"xpack.reporting.jobResponse.errorHandler.unknownError": "Erreur inconnue",
"xpack.reporting.jobStatusDetail.deprecatedText": "Il s'agit d'un type d'exportation déclassé. L'automatisation de ce rapport devra être à nouveau créée pour une question de compatibilité avec les futures versions de Kibana.",
Expand Down Expand Up @@ -26781,6 +26775,12 @@
"xpack.reporting.uiSettings.validate.customLogo.badFile": "Désolé, ce fichier ne convient pas. Veuillez essayer un autre fichier image.",
"xpack.reporting.uiSettings.validate.customLogo.tooLarge": "Désolé, ce fichier est trop volumineux. Le fichier image doit être inférieur à 200 kilo-octets.",
"xpack.reporting.userAccessError.learnMoreLink": "En savoir plus",
"generateCsv.esErrorMessage": "Réponse {statusCode} reçue d'Elasticsearch : {message}",
"generateCsv.incorrectRowCount": "Une erreur a été rencontrée avec le nombre de lignes CSV générées à partir de la recherche : {expected} prévues, {received} reçues.",
"generateCsv.unknownErrorMessage": "Une erreur inconnue est survenue : {message}",
"generateCsv.authenticationExpired.partialResultsMessage": "Ce rapport contient des résultats CSV partiels, car le token d'authentification a expiré. Exportez une quantité moindre de données ou augmentez le délai d'expiration du token d'authentification.",
"generateCsv.csvUnableToClosePit": "Impossible de fermer le point temporel utilisé pour la recherche. Vérifiez les logs de serveur Kibana.",
"generateCsv.escapedFormulaValues": "Le CSV peut contenir des formules dont les valeurs sont précédées d'un caractère d'échappement",
"xpack.rollupJobs.create.errors.dateHistogramIntervalInvalidCalendarIntervalSuggestion": "1{unit}",
"xpack.rollupJobs.create.errors.idSameAsCloned": "Le nom doit être différent du nom cloné : \"{clonedId}\".",
"xpack.rollupJobs.create.errors.indexPatternIllegalCharacters": "Supprimez les caractères {characterList} de votre modèle d'indexation.",
Expand Down Expand Up @@ -38101,4 +38101,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "Présentation"
}
}
}
14 changes: 7 additions & 7 deletions x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -26564,9 +26564,6 @@
"xpack.reporting.diagnostic.browserMissingFonts": "ブラウザーはデフォルトフォントを検索できませんでした。この問題を修正するには、{url}を参照してください。",
"xpack.reporting.diagnostic.noUsableSandbox": "Chromiumサンドボックスを使用できません。これは「xpack.screenshotting.browser.chromium.disableSandbox」で無効にすることができます。この作業はご自身の責任で行ってください。{url}を参照してください",
"xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "レポートジョブデータの解読に失敗しました。{encryptionKey} が設定されていることを確認してこのレポートを再生成してください。{err}",
"generateCsv.esErrorMessage": "Elasticsearchから{statusCode}応答を受け取りました:{message}",
"generateCsv.incorrectRowCount": "検索から生成されたCSVの行数でエラーが発生しました。正しい行数:{expected}、実際の行数:{received}。",
"generateCsv.unknownErrorMessage": "不明なエラーが発生しました:{message}",
"xpack.reporting.jobResponse.errorHandler.notAuthorized": "{jobtype}レポートを表示または削除する権限がありません",
"xpack.reporting.jobsQuery.deleteError": "レポートを削除できません:{error}",
"xpack.reporting.jobStatusDetail.attemptXofY": "{max_attempts}回中{attempts}回試行します。",
Expand Down Expand Up @@ -26623,9 +26620,6 @@
"xpack.reporting.diagnostic.screenshotFailureMessage": "Kibanaインストールのスクリーンショットを作成できませんでした。",
"xpack.reporting.errorHandler.unknownError": "不明なエラー",
"xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "ジョブヘッダーがありません",
"generateCsv.authenticationExpired.partialResultsMessage": "認証トークが有効期限切れのため、このレポートには一部のCSVの結果が含まれています。少ない量のデータをエクスポートするか、認証トークンのタイムアウトを大きくします。",
"generateCsv.csvUnableToClosePit": "検索に使用したPoint-In-Timeを閉じることができません。Kibanaサーバーログを確認してください。",
"generateCsv.escapedFormulaValues": "CSVには、値がエスケープされた式が含まれる場合があります",
"xpack.reporting.jobCreatedBy.unknownUserPlaceholderText": "不明",
"xpack.reporting.jobResponse.errorHandler.unknownError": "不明なエラー",
"xpack.reporting.jobStatusDetail.deprecatedText": "これは廃止予定のエクスポートタイプです。将来のバージョンのKibanaとの互換性のためには、このレポートの自動化を再作成する必要があります。",
Expand Down Expand Up @@ -26762,6 +26756,12 @@
"xpack.reporting.uiSettings.validate.customLogo.badFile": "このファイルは動作しません。別の画像ファイルを試してください。",
"xpack.reporting.uiSettings.validate.customLogo.tooLarge": "このファイルは大きすぎます。画像ファイルは200キロバイト未満でなければなりません。",
"xpack.reporting.userAccessError.learnMoreLink": "詳細",
"generateCsv.esErrorMessage": "Elasticsearchから{statusCode}応答を受け取りました:{message}",
"generateCsv.incorrectRowCount": "検索から生成されたCSVの行数でエラーが発生しました。正しい行数:{expected}、実際の行数:{received}。",
"generateCsv.unknownErrorMessage": "不明なエラーが発生しました:{message}",
"generateCsv.authenticationExpired.partialResultsMessage": "認証トークが有効期限切れのため、このレポートには一部のCSVの結果が含まれています。少ない量のデータをエクスポートするか、認証トークンのタイムアウトを大きくします。",
"generateCsv.csvUnableToClosePit": "検索に使用したPoint-In-Timeを閉じることができません。Kibanaサーバーログを確認してください。",
"generateCsv.escapedFormulaValues": "CSVには、値がエスケープされた式が含まれる場合があります",
"xpack.rollupJobs.create.errors.dateHistogramIntervalInvalidCalendarIntervalSuggestion": "1{unit}",
"xpack.rollupJobs.create.errors.idSameAsCloned": "名前はクローン名「{clonedId}」と同じにできません。",
"xpack.rollupJobs.create.errors.indexPatternIllegalCharacters": "インデックスパターンから {characterList} を削除してください。",
Expand Down Expand Up @@ -38069,4 +38069,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "実地検証"
}
}
}
Loading

0 comments on commit c7ad1c7

Please sign in to comment.