Skip to content

Commit 313f52b

Browse files
Cyrille Bourgoisjleveugle
authored andcommitted
feat(pci.project.failover-ips): add empty page
* add `onboarding`module * update `failoverIps` to use component and resolve * redirect to `onboarding` if no `failoverIps` ref: MANAGER-2280
1 parent 3103953 commit 313f52b

File tree

14 files changed

+177
-36
lines changed

14 files changed

+177
-36
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import controller from './failover-ips.controller';
2+
import template from './failover-ips.html';
3+
4+
export default {
5+
controller,
6+
template,
7+
bindings: {
8+
projectId: '<',
9+
failoverIps: '<',
10+
},
11+
};

packages/manager/modules/pci/src/projects/project/failover-ips/failover-ips.controller.js

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,18 @@ const MESSAGES_CONTAINER_NAME = 'pci.projects.project.failover-ips';
22

33
export default class FailoverIpController {
44
/* @ngInject */
5-
constructor($translate, CucCloudMessage, OvhApiCloudProjectIpFailover, projectId) {
5+
constructor($translate, CucCloudMessage, OvhApiCloudProjectIpFailover) {
66
this.$translate = $translate;
77
this.CucCloudMessage = CucCloudMessage;
88
this.OvhApiCloudProjectIpFailover = OvhApiCloudProjectIpFailover;
9-
this.projectId = projectId;
9+
}
1010

11-
this.messageHandler = CucCloudMessage.subscribe(MESSAGES_CONTAINER_NAME, {
11+
$onInit() {
12+
this.messageHandler = this.CucCloudMessage.subscribe(MESSAGES_CONTAINER_NAME, {
1213
onMessage: () => this.refreshMessage(),
1314
});
1415
}
1516

16-
loadPartialData({ offset, pageSize }) {
17-
return this.OvhApiCloudProjectIpFailover
18-
.v6()
19-
.query({
20-
serviceName: this.projectId,
21-
})
22-
.$promise
23-
.then(data => ({
24-
data: data.slice(offset - 1, offset + pageSize - 1),
25-
meta: {
26-
totalCount: data.length,
27-
currentOffset: offset,
28-
pageCount: Math.ceil(data.length / pageSize),
29-
pageSize,
30-
},
31-
}))
32-
.catch(({ data }) => {
33-
this.CucCloudMessage.error(
34-
this.$translate.instant('pci_projects_project_failoverip_error', { error: data.message }),
35-
MESSAGES_CONTAINER_NAME,
36-
);
37-
});
38-
}
39-
4017
refreshMessage() {
4118
this.messages = this.messageHandler.getMessages();
4219
}

packages/manager/modules/pci/src/projects/project/failover-ips/failover-ips.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<h1 data-translate="pci_projects_project_failoverip_title"></h1>
33
<div>
44
<cui-message-container data-messages="$ctrl.messages"></cui-message-container>
5-
<oui-datagrid data-rows-loader="$ctrl.loadPartialData($config)" data-page-size="5">
5+
<oui-datagrid data-rows="$ctrl.failoverIps" data-page-size="5">
66
<extra-top>
77
<a class="oui-button oui-button_secondary oui-button_icon-left mb-3" data-ui-sref="pci.projects.project.failover-ips.imports">
88
<span class="oui-icon oui-icon-add" aria-hidden="true"></span>

packages/manager/modules/pci/src/projects/project/failover-ips/failover-ips.module.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import '@uirouter/angularjs';
44

55
import failoverIp from './failover-ip';
66
import imports from './imports';
7+
import onboarding from './onboarding';
8+
9+
import component from './failover-ips.component';
710
import routing from './failover-ips.routing';
811

912
const moduleName = 'ovhManagerPciProjectFailoverIps';
@@ -14,7 +17,9 @@ angular
1417
'pascalprecht.translate',
1518
failoverIp,
1619
imports,
20+
onboarding,
1721
])
18-
.config(routing);
22+
.config(routing)
23+
.component('pciProjectFailoverIps', component);
1924

2025
export default moduleName;
Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
1-
import controller from './failover-ips.controller';
2-
import template from './failover-ips.html';
3-
41
export default /* @ngInject */ ($stateProvider) => {
52
$stateProvider
63
.state('pci.projects.project.failover-ips', {
74
url: '/failover-ips',
8-
controller,
9-
controllerAs: '$ctrl',
10-
template,
5+
component: 'pciProjectFailoverIps',
116
translations: {
127
format: 'json',
138
value: ['.'],
149
},
10+
redirectTo: transition => transition
11+
.injector()
12+
.getAsync('failoverIps')
13+
.then(failoverIps => (failoverIps.length === 0 ? { state: 'pci.projects.project.failover-ips.onboarding' } : false)),
1514
resolve: {
1615
breadcrumb: /* @ngInject */ $translate => $translate
1716
.refresh()
1817
.then(() => $translate.instant('pci_projects_project_failoverip_title')),
18+
failoverIps: /* @ngInject */ (
19+
OvhApiCloudProjectIpFailover,
20+
projectId,
21+
) => OvhApiCloudProjectIpFailover
22+
.v6()
23+
.query({
24+
serviceName: projectId,
25+
})
26+
.$promise,
1927
},
2028
});
2129
};
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 = 'ovhManagerPciFailoverIpsOnboardingLazyLoading';
6+
7+
angular
8+
.module(moduleName, [
9+
'ui.router',
10+
'oc.lazyLoad',
11+
])
12+
.config(/* @ngInject */ ($stateProvider) => {
13+
$stateProvider.state('pci.projects.project.failover-ips.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+
addFailoverIp: '<',
9+
},
10+
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export const GUIDES = [
2+
{
3+
id: 'persistent-failover-ip-configuration',
4+
link: 'https://docs.ovh.com/gb/en/public-cloud/make-failover-ip-configuration-persistent/',
5+
},
6+
{
7+
id: 'migrating-failover-ip',
8+
link: 'https://docs.ovh.com/gb/en/public-cloud/migrating_a_failover_ip/',
9+
},
10+
];
11+
12+
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 PciFailoverIpsOnboardingController {
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_failoverip_onboarding_guides_${guide.id}_title`),
20+
description: this.$translate.instant(`pci_projects_project_failoverip_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_failoverip_title"></h1>
3+
<p data-translate="pci_projects_project_failoverip_onboarding_content1"></p>
4+
<strong data-translate="pci_projects_project_failoverip_onboarding_content2"></strong>
5+
<p data-translate="pci_projects_project_failoverip_onboarding_content3"></p>
6+
<p data-translate="pci_projects_project_failoverip_onboarding_content4"></p>
7+
8+
<oui-button
9+
data-variant="primary"
10+
data-on-click="$ctrl.addFailoverIp()">
11+
<span data-translate="pci_projects_project_failoverip_onboarding_action_label"></span>
12+
</oui-button>
13+
14+
</pci-project-empty>

0 commit comments

Comments
 (0)