Skip to content

Commit 870366d

Browse files
Cyrille Bourgoisjleveugle
authored andcommitted
feat(pci.project.storage.volume-snapshots): add empty page
ref: MANAGER-2280
1 parent 313f52b commit 870366d

File tree

10 files changed

+144
-0
lines changed

10 files changed

+144
-0
lines changed
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 = 'ovhManagerPciStoragesSnapshotsOnboardingLazyLoading';
6+
7+
angular
8+
.module(moduleName, [
9+
'ui.router',
10+
'oc.lazyLoad',
11+
])
12+
.config(/* @ngInject */ ($stateProvider) => {
13+
$stateProvider.state('pci.projects.project.storages.snapshots.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+
addSnapshot: '<',
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: 'transfer-volume-backup',
4+
link: 'https://docs.ovh.com/gb/en/public-cloud/transfer_volume_backup_from_one_datacentre_to_another/',
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 PciStorageSnapshotsOnboardingController {
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_snapshots_onboarding_guides_${guide.id}_title`),
20+
description: this.$translate.instant(`pci_projects_project_storages_snapshots_onboarding_guides_${guide.id}_description`),
21+
},
22+
]),
23+
[],
24+
);
25+
}
26+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<pci-project-empty guides="$ctrl.guides">
2+
<h1 data-translate="pci_projects_project_storages_snapshots_title"></h1>
3+
<p data-translate="pci_projects_project_storages_snapshots_onboarding_content1"></p>
4+
<strong data-translate="pci_projects_project_storages_snapshots_onboarding_content2"></strong>
5+
<p data-translate="pci_projects_project_storages_snapshots_onboarding_content3"></p>
6+
<p data-translate="pci_projects_project_storages_snapshots_onboarding_content4"></p>
7+
<p data-translate="pci_projects_project_storages_snapshots_onboarding_content5"></p>
8+
9+
<oui-button
10+
data-variant="primary"
11+
data-on-click="$ctrl.addSnapshot()">
12+
<span data-translate="pci_projects_project_storages_snapshots_onboarding_action_label"></span>
13+
</oui-button>
14+
15+
</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 = 'ovhManagerPciStoragesSnapshotsOnboarding';
13+
14+
angular
15+
.module(moduleName, [
16+
empty,
17+
'ui.router',
18+
'oui',
19+
'ngTranslateAsyncLoader',
20+
'pascalprecht.translate',
21+
])
22+
.config(routing)
23+
.component('pciProjectStorageSnapshotsOnboarding', component)
24+
.run(/* @ngTranslationsInject:json ./translations */);
25+
26+
export default moduleName;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export default /* @ngInject */ ($stateProvider) => {
2+
$stateProvider
3+
.state('pci.projects.project.storages.snapshots.onboarding', {
4+
url: '/onboarding',
5+
component: 'pciProjectStorageSnapshotsOnboarding',
6+
resolve: {
7+
breadcrumb: () => null, // Hide breadcrumb
8+
addSnapshot: /* @ngInject */ ($state, projectId) => () => $state.go('pci.projects.project.storages.blocks', {
9+
projectId,
10+
help: 'snapshot',
11+
}),
12+
},
13+
translations: {
14+
value: ['.'],
15+
format: 'json',
16+
},
17+
});
18+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"pci_projects_project_storages_snapshots_onboarding_content1": "Vous n'avez pas encore créé de snapshot de volumes.",
3+
"pci_projects_project_storages_snapshots_onboarding_content2": "Déclenchez un snapshot sur vos volumes Block Storage.",
4+
"pci_projects_project_storages_snapshots_onboarding_content3": "Les snapshots de volumes sont des photographies de volumes Block Storage à un instant t. Ils vous permettent de revenir en arrière, en créant de nouveaux volumes basés sur cet état figé. Vous retrouvez ainsi des données ou une situation souhaitée dans le passé.",
5+
"pci_projects_project_storages_snapshots_onboarding_content4": "Un snapshot de volumes est stocké au même endroit que le volume dont il est issu et bénéficie également de la triple réplication.",
6+
"pci_projects_project_storages_snapshots_onboarding_content5": "Pour créer un snapshot de volume vous avez forcément besoin d'avoir créer au moins un volume.",
7+
"pci_projects_project_storages_snapshots_onboarding_action_label": "Créer un snapshot de volume",
8+
9+
"pci_projects_project_storages_snapshots_onboarding_guides_transfer-volume-backup_title": "Transférer la sauvegarde d’un volume d’un datacenter à l’autre",
10+
"pci_projects_project_storages_snapshots_onboarding_guides_transfer-volume-backup_description": "Apprenez à déplacer une sauvegarde de volume entre différents centres de données"
11+
}

packages/manager/modules/pci/src/projects/project/storages/snapshots/snapshots.module.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'ovh-api-services';
77

88
import snapshot from './snapshot';
99
import snapshotDelete from './snapshot/delete';
10+
import onboarding from './onboarding';
1011

1112
import component from './snapshots.component';
1213
import service from './snapshots.service';
@@ -24,6 +25,7 @@ angular
2425
'ui.router',
2526
snapshot,
2627
snapshotDelete,
28+
onboarding,
2729
])
2830
.config(routing)
2931
.component('pciProjectStoragesSnapshots', component)

packages/manager/modules/pci/src/projects/project/storages/snapshots/snapshots.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.snapshots', {
44
url: '/volume-snapshots',
55
component: 'pciProjectStoragesSnapshots',
6+
redirectTo: transition => transition
7+
.injector()
8+
.getAsync('snapshots')
9+
.then(snapshots => (snapshots.length === 0 ? { state: 'pci.projects.project.storages.snapshots.onboarding' } : false)),
610
resolve: {
711
snapshots: /* @ngInject */ (
812
PciProjectStorageSnapshotsService,

0 commit comments

Comments
 (0)