Skip to content

Commit 1f42d23

Browse files
Cyrille Bourgoisjleveugle
authored andcommitted
feat(pci.project.storages.cloudarchive): add empty page
ref: MANAGER-2280
1 parent 801e556 commit 1f42d23

File tree

10 files changed

+142
-0
lines changed

10 files changed

+142
-0
lines changed

packages/manager/modules/pci/src/projects/project/storages/cloud-archives/cloud-archives.routing.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ export default /* @ngInject */ ($stateProvider) => {
33
.state('pci.projects.project.storages.archives', {
44
url: '/cloud-archives',
55
component: 'pciProjectStorageContainers',
6+
redirectTo: transition => transition
7+
.injector()
8+
.getAsync('containers')
9+
.then(containers => (containers.length === 0 ? { state: 'pci.projects.project.storages.archives.onboarding' } : false)),
610
resolve: {
711
archive: () => true,
812
containers: /* @ngInject */ (

packages/manager/modules/pci/src/projects/project/storages/cloud-archives/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import containers from '../containers';
1111

1212
import addObject from './add';
1313
import cloudArchive from './cloud-archive';
14+
import onboarding from './onboarding';
1415

1516
import routing from './cloud-archives.routing';
1617

@@ -20,6 +21,7 @@ angular
2021
.module(moduleName, [
2122
addObject,
2223
containers,
24+
onboarding,
2325
cloudArchive,
2426
'ngTranslateAsyncLoader',
2527
'oui',
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import angular from 'angular';
2+
import '@uirouter/angularjs';
3+
import 'oclazyload';
4+
5+
const moduleName = 'ovhManagerPciStoragesCloudArchivesOnboardingLazyLoading';
6+
7+
angular
8+
.module(moduleName, [
9+
'ui.router',
10+
'oc.lazyLoad',
11+
])
12+
.config(/* @ngInject */ ($stateProvider) => {
13+
$stateProvider.state('pci.projects.project.storages.archives.onboarding.**', {
14+
url: '/onboarding',
15+
lazyLoad: ($transition$) => {
16+
const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad');
17+
18+
return import('./onboarding.module')
19+
.then(mod => $ocLazyLoad.inject(mod.default || mod));
20+
},
21+
});
22+
});
23+
24+
export default moduleName;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import controller from './onboarding.controller';
2+
import template from './onboarding.html';
3+
4+
export default {
5+
controller,
6+
template,
7+
bindings: {
8+
addCloudArchive: '<',
9+
},
10+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export const GUIDES = [
2+
{
3+
id: 'retrieve-data-bcp',
4+
link: 'https://docs.ovh.com/gb/en/public-cloud/retrieve-data-bcp/',
5+
},
6+
];
7+
8+
export default { GUIDES };
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import reduce from 'lodash/reduce';
2+
import { GUIDES } from './onboarding.constants';
3+
4+
export default class PciStorageCloudArchivesOnboardingController {
5+
/* @ngInject */
6+
constructor(
7+
$translate,
8+
) {
9+
this.$translate = $translate;
10+
}
11+
12+
$onInit() {
13+
this.guides = reduce(
14+
GUIDES,
15+
(list, guide) => ([
16+
...list,
17+
{
18+
...guide,
19+
title: this.$translate.instant(`pci_projects_project_storages_cloud_archives_onboarding_guides_${guide.id}_title`),
20+
description: this.$translate.instant(`pci_projects_project_storages_cloud_archives_onboarding_guides_${guide.id}_description`),
21+
},
22+
]),
23+
[],
24+
);
25+
}
26+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<pci-project-empty guides="$ctrl.guides">
2+
<h1 data-translate="pci_projects_project_storages_cloud_archives_onboarding_title"></h1>
3+
<p data-translate="pci_projects_project_storages_cloud_archives_onboarding_content1"></p>
4+
<strong data-translate="pci_projects_project_storages_cloud_archives_onboarding_content2"></strong>
5+
<p data-translate="pci_projects_project_storages_cloud_archives_onboarding_content3"></p>
6+
<p data-translate="pci_projects_project_storages_cloud_archives_onboarding_content4"></p>
7+
8+
<oui-button
9+
data-variant="primary"
10+
data-on-click="$ctrl.addCloudArchive()">
11+
<span data-translate="pci_projects_project_storages_cloud_archives_onboarding_action_label"></span>
12+
</oui-button>
13+
14+
</pci-project-empty>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import angular from 'angular';
2+
import '@ovh-ux/ng-translate-async-loader';
3+
import '@uirouter/angularjs';
4+
import 'angular-translate';
5+
import 'ovh-ui-angular';
6+
7+
import component from './onboarding.component';
8+
import routing from './onboarding.routing';
9+
10+
import empty from '../../../../../components/project/empty';
11+
12+
const moduleName = 'ovhManagerPciStoragesCloudArchivesOnboarding';
13+
14+
angular
15+
.module(moduleName, [
16+
empty,
17+
'ui.router',
18+
'oui',
19+
'ngTranslateAsyncLoader',
20+
'pascalprecht.translate',
21+
])
22+
.config(routing)
23+
.component('pciProjectStorageCloudArchivesOnboarding', component)
24+
.run(/* @ngTranslationsInject:json ./translations */);
25+
26+
export default moduleName;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export default /* @ngInject */ ($stateProvider) => {
2+
$stateProvider
3+
.state('pci.projects.project.storages.archives.onboarding', {
4+
url: '/onboarding',
5+
component: 'pciProjectStorageCloudArchivesOnboarding',
6+
resolve: {
7+
breadcrumb: () => null, // Hide breadcrumb
8+
addCloudArchive: /* @ngInject */ ($state, projectId) => () => $state.go('pci.projects.project.storages.archives.add', {
9+
projectId,
10+
}),
11+
},
12+
translations: {
13+
value: ['.'],
14+
format: 'json',
15+
},
16+
});
17+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"pci_projects_project_storages_cloud_archives_onboarding_title": "Cloud Archive",
3+
"pci_projects_project_storages_cloud_archives_onboarding_content1": "Vous n'avez pas encore créé de service Cloud Archive.",
4+
"pci_projects_project_storages_cloud_archives_onboarding_content2": "Archivez vos données sur le long terme et accédez-y par des protocoles standards.",
5+
"pci_projects_project_storages_cloud_archives_onboarding_content3": "Cloud Archive permet de conserver vos données dites « froides » sur de longues périodes. Il s’agit d’informations qui n'ont pas besoin d'être consultées régulièrement et qui doivent être gardées pour des raisons métier ou légales. Vous pouvez gérer vos données dans Cloud Archive via les protocoles standards SCP, SFTP et HTTPS, ainsi qu’en utilisant des outils tels que rsync ou le client OpenStack Swift. Pour récupérer vos informations, il suffit de les « réveiller » par une simple requête. Après un délai de quelques minutes à quelques heures, vous pourrez les télécharger.",
6+
"pci_projects_project_storages_cloud_archives_onboarding_content4": "Vos données sont sécurisées par l'algorithme Erasure Code, afin de garantir leur pérennité, et vous profitez d'une facturation à l'usage dès le premier Go.",
7+
"pci_projects_project_storages_cloud_archives_onboarding_action_label": "Créer un conteneur d'archive",
8+
9+
"pci_projects_project_storages_cloud_archives_onboarding_guides_retrieve-data-bcp_title": "Récupérer les données provenant de PCA",
10+
"pci_projects_project_storages_cloud_archives_onboarding_guides_retrieve-data-bcp_description": ""
11+
}

0 commit comments

Comments
 (0)