Skip to content

Commit 7ee1f78

Browse files
authored
Merge pull request #20 from cloudblue/feature/add-external-links
Add errors handling and Workload explanation
2 parents 61fb9f0 + 04c4d2c commit 7ee1f78

File tree

10 files changed

+78
-25
lines changed

10 files changed

+78
-25
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@
1616
* Table columns now may be styled directly with a column descriptor `style` property
1717
* 0.2.3: Better handling of DB and Client Server errors
1818
* 0.3.0: Administrative UI
19-
* 0.3.1: Helpdesk Cases are automatically resolved in administrative actions
19+
* 0.3.1: Helpdesk Cases are automatically resolved in administrative actions, Frontend changes:
20+
* Add server errors handling
21+
* Add workload description and external link to docs

dbaas/static/b7d579a519616740b116.js renamed to dbaas/static/e362c49b3047272f792b.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dbaas/static/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<html><head><title>Lorem ipsum</title><link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Mono:400,500|Material+Icons" rel="stylesheet"><link id="mock-favicon" rel="shortcut icon" href="#"><script defer="defer" src="b7d579a519616740b116.js"></script><link href="main.css" rel="stylesheet"></head><body><div id="app"></div></body></html>
1+
<html><head><title>Lorem ipsum</title><link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Mono:400,500|Material+Icons" rel="stylesheet"><link id="mock-favicon" rel="shortcut icon" href="#"><script defer="defer" src="e362c49b3047272f792b.js"></script><link href="main.css" rel="stylesheet"></head><body><div id="app"></div></body></html>

dbaas/static/main.css

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudblueconnect/eaas-database-extension",
3-
"version": "0.2.1",
3+
"version": "0.3.1",
44
"description": "On-demand provisioning of cloud-based database storages as a service.",
55
"author": "Ingram Micro",
66
"license": "Apache Software License 2.0",

ui/app/views/ActivateDialog.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ describe('ActivateDialog', () => {
2020
expect(cmp.data()).toEqual({
2121
dialogOpened: false,
2222
saving: false,
23+
errorText: null,
2324
form: {
2425
credentials: {
2526
name: '',

ui/app/views/ActivateDialog.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ez-dialog(
33
v-model="dialogOpened",
44
width="800",
55
title="Activate database",
6+
:error-text="errorText",
67
)
78
ui-card(title="Access")
89
.detail-item._mt_0
@@ -107,6 +108,7 @@ export default {
107108
},
108109
109110
data: () => ({
111+
errorText: null,
110112
dialogOpened: false,
111113
saving: false,
112114
form: initialForm(),
@@ -130,6 +132,7 @@ export default {
130132
},
131133
132134
async save() {
135+
this.errorText = null;
133136
this.saving = true;
134137
135138
try {
@@ -138,6 +141,12 @@ export default {
138141
this.$emit('saved');
139142
this.close();
140143
} catch (e) {
144+
if (e.status === 422) {
145+
this.errorText = 'An input error occurred. Please fill all required fields';
146+
} else {
147+
this.errorText = `#${e.status} ${e.message}`;
148+
}
149+
141150
this.emit({ name: 'snackbar:error', value: e });
142151
}
143152
@@ -158,6 +167,11 @@ export default {
158167
},
159168
160169
dialogOpened(v) {
170+
if (!v) {
171+
this.errorText = null;
172+
this.form = initialForm();
173+
}
174+
161175
if (this.value !== v) this.$emit('input', v);
162176
},
163177
},

ui/app/views/CreateEditDialog.spec.js

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ describe('CreateEditDialog', () => {
3535
describe('#data', () => {
3636
it('should provide initial data', () => {
3737
expect(cmp.data()).toEqual({
38+
errorText: null,
3839
dialogOpened: false,
3940
acceptTermsAndConds: false,
4041
saving: false,
@@ -76,14 +77,23 @@ describe('CreateEditDialog', () => {
7677
let setContext;
7778

7879
beforeEach(() => {
79-
setContext = (isEdit, acceptTermsAndConds, name, description, contact, region) => {
80+
setContext = (
81+
isEdit,
82+
acceptTermsAndConds,
83+
name,
84+
description,
85+
workload,
86+
contact,
87+
region,
88+
) => {
8089
context = {
8190
isEdit,
8291
acceptTermsAndConds,
8392

8493
form: {
8594
name,
8695
description,
96+
workload,
8797

8898
tech_contact: {
8999
id: contact,
@@ -98,26 +108,28 @@ describe('CreateEditDialog', () => {
98108
});
99109

100110
it.each([
101-
[false, true, 'name', 'description', 'contact', 'region', ['toBe', true]],
102-
[false, false, null, null, null, null, ['toBe', false]],
103-
[false, true, null, null, null, null, ['toBe', false]],
104-
[false, true, 'name', null, null, null, ['toBe', false]],
105-
[false, true, null, 'description', null, null, ['toBe', false]],
106-
[false, true, 'name', 'description', 'contact', null, ['toBe', false]],
107-
[false, false, 'name', 'description', 'contact', 'region', ['toBe', false]],
108-
[false, false, null, 'description', 'contact', 'region', ['toBe', false]],
109-
[false, false, null, null, null, 'region', ['toBe', false]],
110-
111-
[true, false, 'name', 'description', 'contact', null, ['toBe', true]],
112-
[true, false, null, null, 'contact', null, ['toBe', false]],
113-
[true, false, null, null, null, null, ['toBe', false]],
114-
[true, false, 'name', null, null, null, ['toBe', false]],
111+
[false, true, 'name', 'description', 'workload', 'contact', 'region', ['toBe', true]],
112+
[false, false, null, null, null, null, null, ['toBe', false]],
113+
[false, true, null, null, null, null, null, ['toBe', false]],
114+
[false, true, 'name', null, null, null, null, ['toBe', false]],
115+
[false, true, null, 'description', null, null, null, ['toBe', false]],
116+
[false, true, null, null, 'workload', null, null, ['toBe', false]],
117+
[false, true, 'name', 'description', 'workload', 'contact', null, ['toBe', false]],
118+
[false, false, 'name', 'description', 'workload', 'contact', 'region', ['toBe', false]],
119+
[false, false, null, 'description', 'workload', 'contact', 'region', ['toBe', false]],
120+
[false, false, null, null, null, null, 'region', ['toBe', false]],
121+
122+
[true, false, 'name', 'description', 'workload', 'contact', null, ['toBe', true]],
123+
[true, false, null, null, 'workload', 'contact', null, ['toBe', false]],
124+
[true, false, null, null, null, 'contact', null, ['toBe', false]],
125+
[true, false, null, null, null, null, null, ['toBe', false]],
126+
[true, false, 'name', null, null, null, null, ['toBe', false]],
115127
])(
116-
'When isEdit=%j, acceptTermsAndConds=%j, name=%j, contact=%j, region=%j should "%j"',
117-
(isEdit, acceptTermsAndConds, name, description, contact, region, spec) => {
128+
'When isEdit=%j, acceptTermsAndConds=%j, name=%j, description=%j, workload=%j, contact=%j, region=%j should "%j"',
129+
(isEdit, acceptTermsAndConds, name, description, workload, contact, region, spec) => {
118130
const [satisfies, condition] = spec;
119131

120-
setContext(isEdit, acceptTermsAndConds, name, description, contact, region);
132+
setContext(isEdit, acceptTermsAndConds, name, description, workload, contact, region);
121133

122134
expect(cmp.computed.allowSaving(context))[satisfies](condition);
123135
},

ui/app/views/CreateEditDialog.vue

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ez-dialog(
33
v-model="dialogOpened",
44
width="800",
55
title="Request database",
6+
:error-text="errorText",
67
)
78
ui-card(title="General")
89
// CREATE MODE
@@ -38,6 +39,12 @@ ez-dialog(
3839
input#large._ml_24(type="radio" v-model="form.workload" value="large", materialize)
3940
label._ml_8(for="large", materialize) Large
4041

42+
p._mt_16._mb_0.assistive-text {{ workloadDescriptions[form.workload] }}
43+
a._ml_4(
44+
href="https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-limits#maximum-connections",
45+
target="_blank",
46+
) Read more
47+
4148
// EDIT MODE
4249
.detail-item._mt_0(v-if="isEdit")
4350
.detail-item-head.item-label._mb_8 Name
@@ -154,6 +161,7 @@ export default {
154161
},
155162
156163
data: () => ({
164+
errorText: null,
157165
dialogOpened: false,
158166
acceptTermsAndConds: false,
159167
saving: false,
@@ -168,15 +176,23 @@ export default {
168176
isEdit
169177
&& form.name
170178
&& form.description
179+
&& form.workload
171180
&& form.tech_contact.id
172181
) || (
173182
!isEdit
174183
&& acceptTermsAndConds
175184
&& form.name
176185
&& form.description
177186
&& form.region.id
187+
&& form.workload
178188
&& form.tech_contact.id
179189
)),
190+
191+
workloadDescriptions: () => ({
192+
small: 'Plan "B2s". vCores: 2; Memory Size: 4Gb; Max Connections: 100; Max User Connections: 97',
193+
medium: 'Plan "D2s_v3". vCores: 2; Memory Size: 8Gb; Max Connections: 859; Max User Connections: 856',
194+
large: 'Plan "D8s_v3". vCores: 8; Memory Size: 32Gb; Max Connections: 3438; Max User Connections: 3435',
195+
}),
180196
},
181197
182198
methods: {
@@ -191,6 +207,7 @@ export default {
191207
},
192208
193209
async save() {
210+
this.errorText = null;
194211
this.saving = true;
195212
196213
try {
@@ -200,6 +217,12 @@ export default {
200217
this.$emit('saved');
201218
this.close();
202219
} catch (e) {
220+
if (e.status === 422) {
221+
this.errorText = 'An input error occurred. Please fill all required fields';
222+
} else {
223+
this.errorText = `#${e.status} ${e.message}`;
224+
}
225+
203226
this.emit({ name: 'snackbar:error', value: e });
204227
}
205228
@@ -229,6 +252,7 @@ export default {
229252
},
230253
231254
dialogOpened(v) {
255+
if (!v) this.form = initialForm();
232256
if (this.value !== v) this.$emit('input', v);
233257
},
234258
},

0 commit comments

Comments
 (0)