Skip to content

New release - release/hosting-collaboration-w26 #17741

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/manager/apps/web-ongoing-operations/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
"author": "OVH SAS",
"scripts": {
"build": "tsc && vite build",
"coverage": "TZ=UTC vitest run --coverage",
"coverage": "vitest run --coverage",
"start": "vite",
"test": "TZ=UTC vitest run"
"test": "vitest run"
},
"dependencies": {
"@ovh-ux/manager-common-translations": "^0.9.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_upload_error_wrong-format": "UngΓΌltiges Dateiformat",
"domain_operations_update_key_validationToken": "Validierungstoken",
"domain_operations_update_key_document": "Dokument",
"domain_operations_update_title": "Aktualisierung des Vorgangs fΓΌr die Domain {{t0}}"
"domain_operations_update_title": "Aktualisierung des Vorgangs fΓΌr die Domain {{t0}}",
"domain_operations_nicOperation_ContactControlNotify": "KontaktΓΌberprΓΌfungsbenachrichtigung",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Versand der RDRP-Benachrichtigung",
"domain_operations_guides": "Allgemeine Informationen"
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_upload_error_wrong-format": "Unsupported file format",
"domain_operations_update_key_validationToken": "Validation token",
"domain_operations_update_key_document": "Document",
"domain_operations_update_title": "Operation update for the {{t0}} domain"
"domain_operations_update_title": "Operation update for the {{t0}} domain",
"domain_operations_nicOperation_ContactControlNotify": "Contact verification notification",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Sending the RDRP instruction manual",
"domain_operations_guides": "General information"
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_upload_error_wrong-format": "Formato de archivo no permitido",
"domain_operations_update_key_validationToken": "Token de validaciΓ³n",
"domain_operations_update_key_document": "Documento",
"domain_operations_update_title": "ActualizaciΓ³n de la operaciΓ³n para el dominio {{t0}}"
"domain_operations_update_title": "ActualizaciΓ³n de la operaciΓ³n para el dominio {{t0}}",
"domain_operations_nicOperation_ContactControlNotify": "NotificaciΓ³n de verificaciΓ³n del contacto",
"domain_operations_nicOperation_DomainSendRDRPNotice": "EnvΓ­o del aviso RDRP",
"domain_operations_guides": "InformaciΓ³n general"
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
"domain_operations_nicOperation_ContactControl": "VΓ©rification du contact",
"domain_operations_nicOperation_ContactControlAcknowledge": "Confirmation du contact",
"domain_operations_nicOperation_ContactControlCorrect": "Correction du contact",
"domain_operations_nicOperation_ContactControlNotify": "Notification de vΓ©rification du contact",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Envoi de la notice RDRP",
"domain_operations_statusOperation_cancelled": "AnnulΓ©e",
"domain_operations_statusOperation_doing": "En cours",
"domain_operations_statusOperation_done": "TerminΓ©e",
Expand Down Expand Up @@ -122,5 +124,6 @@
"domain_operations_cancel_success": "L'opération a été annulée avec succès.",
"domain_operations_relaunch_success": "L'opération a été relancée avec succès.",
"wizard_confirm": "Confirmer",
"wizard_cancel": "Annuler"
"wizard_cancel": "Annuler",
"domain_operations_guides": "Informations gΓ©nΓ©rales"
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
"domain_operations_nicOperation_ContactControl": "VΓ©rification du contact",
"domain_operations_nicOperation_ContactControlAcknowledge": "Confirmation du contact",
"domain_operations_nicOperation_ContactControlCorrect": "Correction du contact",
"domain_operations_nicOperation_ContactControlNotify": "Notification de vΓ©rification du contact",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Envoi de la notice RDRP",
"domain_operations_statusOperation_cancelled": "AnnulΓ©e",
"domain_operations_statusOperation_doing": "En cours",
"domain_operations_statusOperation_done": "TerminΓ©e",
Expand Down Expand Up @@ -122,5 +124,6 @@
"domain_operations_cancel_success": "L'opération a été annulée avec succès.",
"domain_operations_relaunch_success": "L'opération a été relancée avec succès.",
"wizard_confirm": "Confirmer",
"wizard_cancel": "Annuler"
"wizard_cancel": "Annuler",
"domain_operations_guides": "Informations gΓ©nΓ©rales"
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_upload_error_wrong-format": "Formato del file non autorizzato.",
"domain_operations_update_key_validationToken": "Token di conferma",
"domain_operations_update_key_document": "Documento",
"domain_operations_update_title": "Aggiornamento dell'operazione per il dominio {{t0}}"
"domain_operations_update_title": "Aggiornamento dell'operazione per il dominio {{t0}}",
"domain_operations_nicOperation_ContactControlNotify": "Notifica di verifica del contatto",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Invio della notifica RDRP",
"domain_operations_guides": "Informazioni generali"
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_upload_error_wrong-format": "Niedozwolony format pliku",
"domain_operations_update_key_validationToken": "Token weryfikacyjny",
"domain_operations_update_key_document": "Dokument",
"domain_operations_update_title": "Aktualizacja operacji dla domeny {{t0}}"
"domain_operations_update_title": "Aktualizacja operacji dla domeny {{t0}}",
"domain_operations_nicOperation_ContactControlNotify": "Powiadomienie o weryfikacji kontaktu",
"domain_operations_nicOperation_DomainSendRDRPNotice": "WysΕ‚anie powiadomienia RDRP",
"domain_operations_guides": "Informacje ogΓ³lne"
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,8 @@
"domain_operations_update_title": "AtualizaΓ§Γ£o da operaΓ§Γ£o para o domΓ­nio {{t0}}",
"domain_operations_update_error": "Ocorreu uma falha ao atualizar a operaΓ§Γ£o",
"domain_operations_update_key_validationToken": "Token de validaΓ§Γ£o",
"domain_operations_update_key_document": "Documento"
"domain_operations_update_key_document": "Documento",
"domain_operations_nicOperation_ContactControlNotify": "NotificaΓ§Γ£o de verificaΓ§Γ£o do contacto",
"domain_operations_nicOperation_DomainSendRDRPNotice": "Envio da notificaΓ§Γ£o RDRP",
"domain_operations_guides": "InformaΓ§Γ΅es gerais"
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import React from 'react';
import { useFormatDate } from '@ovh-ux/manager-react-components';
import { ODS_BADGE_COLOR } from '@ovhcloud/ods-components/src/components/badge/src/constants/badge-color';
import { OdsBadge, OdsText, OdsTooltip } from '@ovhcloud/ods-components/react';
import { ODS_ICON_NAME, ODS_TEXT_PRESET } from '@ovhcloud/ods-components';
import { useTranslation } from 'react-i18next';
import { formatDatagridDate } from '@/utils/utils';
import { TOngoingOperations } from '@/types';
import { StatusEnum } from '@/enum/status.enum';

interface OngoingOperationDatagridBadgeProps {
readonly props: TOngoingOperations;
readonly locale: string;
}

export default function OngoingOperationDatagridBadge({
props,
locale,
}: OngoingOperationDatagridBadgeProps) {
const { t } = useTranslation('dashboard');
const formatDate = useFormatDate();

const badgeColor = (status: string) => {
switch (status) {
case StatusEnum.TODO:
Expand Down Expand Up @@ -64,7 +64,7 @@ export default function OngoingOperationDatagridBadge({
props.status === StatusEnum.TODO
? 'domain_operations_statusOperation_todo_next_execution'
: 'domain_operations_statusOperation_done_end_execution',
)} ${formatDatagridDate(props.todoDate, locale)}`}
)} ${formatDate({ date: props.todoDate, format: 'P p' })}`}
</OdsText>
</OdsTooltip>
</div>
Expand Down
46 changes: 46 additions & 0 deletions packages/manager/apps/web-ongoing-operations/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,49 @@ export const taskMeDns = ['me', 'task', 'dns'];
export const domainCreate = 'DomainCreate';
export const domainIncomingTransfer = 'DomainIncomingTransfer';
export const domainResourceDelete = 'DomainResourceDelete';

export const DOMAIN_OPERATIONS = [
'ContactControlAcknowledge',
'ContactControlCorrect',
'ContactControlNotify',
'ContactControl',
'DomainContactControl',
'DomainContactUpdate',
'DomainTrade',
'DomainEmailRedirectionsCreate',
'DomainEmailRedirectionsDelete',
'DomainSendRDRPNotice',
'DomainDnsUpdate',
'DomainDsUpdate',
'DomainHostCreate',
'DomainHostDelete',
'DomainHostUpdate',
'DomainAfterMarket',
'DomainCreate',
'DomainHold',
'DomainUnhold',
'DomainIncomingTransfer',
'DomainOutgoingTransfer',
'DomainLock',
'DomainUnlock',
'DomainRenew',
'DomainRestore',
'DomainDelete',
'DomainResourceDelete',
'DomainRegistryDelete',
];

export const DNS_OPERATIONS = [
'DnsAnycastActivate',
'DnsAnycastDeactivate',
'DnssecDisable',
'DnssecEnable',
'DnssecResigning',
'DnssecRollKsk',
'DnssecRollZsk',
'ZoneCreate',
'ZoneCut',
'ZoneDelete',
'ZoneImport',
'ZoneRestore',
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
export type LangCode =
| 'FR'
| 'EN'
| 'DE'
| 'ES'
| 'IT'
| 'PL'
| 'PT'
| 'DEFAULT';

export type GuideLinks = Record<LangCode, string>;
export interface Guide {
key: string;
url: GuideLinks;
}

const helpRoot = 'https://help.ovhcloud.com/csm/';

const baseGuideUrl = `${helpRoot}{{lang}}-documentation-web-cloud-domains-domain-names?id=kb_browse_cat&kb_id=e17b4f25551974502d4c6e78b7421955&kb_category=50441955f49801102d4ca4d466a7fdc2&spa=1`;

export const WEB_ONGOING_OPERATIONS_DOMAINS: GuideLinks = {
FR: baseGuideUrl.replace('{{lang}}', 'fr'),
EN: baseGuideUrl.replace('{{lang}}', 'en-gb'),
DE: baseGuideUrl.replace('{{lang}}', 'de'),
ES: baseGuideUrl.replace('{{lang}}', 'es-es'),
IT: baseGuideUrl.replace('{{lang}}', 'it'),
PL: baseGuideUrl.replace('{{lang}}', 'pl'),
PT: baseGuideUrl.replace('{{lang}}', 'pt'),
DEFAULT: baseGuideUrl.replace('{{lang}}', 'fr'),
};

export const GUIDES_LIST = {
domains: {
key: 'web_ongoing_operations_domains',
url: WEB_ONGOING_OPERATIONS_DOMAINS,
},
};
Original file line number Diff line number Diff line change
@@ -1,28 +1,31 @@
import React from 'react';
import { useTranslation, getI18n } from 'react-i18next';
import { useTranslation } from 'react-i18next';
import {
ActionMenu,
DataGridTextCell,
useNotifications,
useFormatDate,
} from '@ovh-ux/manager-react-components';
import { useLocation, useNavigate } from 'react-router-dom';
import { TOngoingOperations } from 'src/types';
import { FilterCategories } from '@ovh-ux/manager-core-api';
import { ODS_BUTTON_VARIANT } from '@ovhcloud/ods-components';
import { ParentEnum } from '@/enum/parent.enum';
import { formatDatagridDate, removeQuotes } from '@/utils/utils';
import { removeQuotes } from '@/utils/utils';
import OngoingOperationDatagridDomain from '@/components/OngoingOperationDatagrid/OngoingOperationDatagridDomain';
import OngoingOperationDatagridBadge from '@/components/OngoingOperationDatagrid/OngoingOperationDatagridBadge';
import { DNS_OPERATIONS_TABLE_HEADER_DOMAIN } from '@/pages/dashboard/Dashboard';
import { StatusEnum } from '@/enum/status.enum';
import { DOMAIN_OPERATIONS, DNS_OPERATIONS } from '@/constants';

export const useOngoingOperationDatagridColumns = (
parent: ParentEnum.DOMAIN | ParentEnum.ZONE,
) => {
const { t } = useTranslation('dashboard');
const { clearNotifications } = useNotifications();
const l = getI18n();
const navigate = useNavigate();
const location = useLocation();
const formatDate = useFormatDate();

const columns = [
{
Expand All @@ -46,6 +49,15 @@ export const useOngoingOperationDatagridColumns = (
</DataGridTextCell>
),
label: t('domain_operations'),
comparator: FilterCategories.Options,
isFilterable: true,
filterOptions: (parent === ParentEnum.DOMAIN
? DOMAIN_OPERATIONS
: DNS_OPERATIONS
).map((op) => ({
label: t(`domain_operations_nicOperation_${op}`),
value: op,
})),
},
{
id: 'comment',
Expand All @@ -60,7 +72,7 @@ export const useOngoingOperationDatagridColumns = (
id: 'created_on',
cell: (props: TOngoingOperations) => (
<DataGridTextCell>
{formatDatagridDate(props.creationDate, l.language)}
{formatDate({ date: props.creationDate, format: 'P p' })}
</DataGridTextCell>
),
label: t('domain_operations_table_header_creationDate'),
Expand All @@ -69,17 +81,23 @@ export const useOngoingOperationDatagridColumns = (
id: 'last_updated',
cell: (props: TOngoingOperations) => (
<DataGridTextCell>
{formatDatagridDate(props.lastUpdate, l.language)}
{formatDate({ date: props.lastUpdate, format: 'P p' })}
</DataGridTextCell>
),
label: t('domain_operations_table_header_lastUpdate'),
},
{
id: 'status',
cell: (props: TOngoingOperations) => (
<OngoingOperationDatagridBadge props={props} locale={l.language} />
<OngoingOperationDatagridBadge props={props} />
),
label: t('domain_operations_table_header_status'),
comparator: FilterCategories.Options,
isFilterable: true,
filterOptions: Object.values(StatusEnum).map((status) => ({
label: t(`domain_operations_statusOperation_${status}`),
value: status,
})),
},
{
cell: (props: TOngoingOperations) => (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ import {
import { OdsTabs, OdsTab } from '@ovhcloud/ods-components/react';
import {
BaseLayout,
GuideButton,
GuideItem,
Notifications,
useNotifications,
} from '@ovh-ux/manager-react-components';
import { GUIDES_LIST } from '@/guides.constants';
import { getLanguageKey } from '@/utils/utils';

export const DNS_OPERATIONS_TABLE_HEADER_DOMAIN = 'DNS';

Expand All @@ -30,8 +34,18 @@ export default function DashboardPage() {
const [activePanel, setActivePanel] = useState<string>('');
const location = useLocation();
const navigate = useNavigate();
const { t } = useTranslation('dashboard');
const { t, i18n } = useTranslation('dashboard');
const { notifications } = useNotifications();
const langCode = getLanguageKey(i18n.language);

const guideItems: GuideItem[] = [
{
id: 1,
href: GUIDES_LIST.domains.url[langCode],
target: '_blank',
label: t('domain_operations_guides'),
},
];

const tabsList: DashboardTabItemProps[] = [
{
Expand Down Expand Up @@ -60,6 +74,7 @@ export default function DashboardPage() {
<BaseLayout
header={{
title: t('domain_operations_dashboard_title'),
headerButton: <GuideButton items={guideItems} />,
}}
description={t('domain_operations_dashboard_info')}
tabs={
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ vi.mock(import('@ovh-ux/manager-react-components'), async (importOriginal) => {
});

vi.mock('@/utils/utils', () => ({
formatDatagridDate: vi.fn(),
removeQuotes: vi.fn(),
getLanguageKey: vi.fn(),
}));

const mocks = vi.hoisted(() => ({
Expand Down
Loading
Loading