Skip to content

Commit e7c63bf

Browse files
committed
Refractoring
Signed-off-by: Hamza Hamidi <[email protected]>
1 parent 5b592bb commit e7c63bf

File tree

3 files changed

+36
-53
lines changed

3 files changed

+36
-53
lines changed

src/frontend/app/features/service-catalog/services-helper.ts

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { createEntityRelationPaginationKey } from '../../store/helpers/entity-re
1919
import { getPaginationObservables } from '../../store/reducers/pagination-reducer/pagination-reducer.helper';
2020
import { APIResource } from '../../store/types/api.types';
2121
import { getIdFromRoute } from '../cloud-foundry/cf.helpers';
22+
import { JsonPointer } from 'angular2-json-schema-form';
2223

2324

2425
export const getSvcAvailability = (servicePlan: APIResource<IServicePlan>,
@@ -90,23 +91,40 @@ export const getServicePlans = (
9091
cfGuid: string,
9192
store: Store<AppState>,
9293
paginationMonitorFactory: PaginationMonitorFactory
93-
): Observable<APIResource<IServicePlan>[]> => {
94+
): Observable<APIResource<IServicePlan>[]> => {
9495
return service$.pipe(
9596
filter(p => !!p),
9697
switchMap(service => {
97-
if (service.entity.service_plans && service.entity.service_plans.length > 0) {
98-
return observableOf(service.entity.service_plans);
98+
if (service.entity.service_plans && service.entity.service_plans.length > 0) {
99+
return observableOf(service.entity.service_plans);
100+
} else {
101+
const guid = service.metadata.guid;
102+
const paginationKey = createEntityRelationPaginationKey(servicePlanSchemaKey, guid);
103+
const getServicePlansAction = new GetServicePlansForService(guid, cfGuid, paginationKey);
104+
// Could be a space-scoped service, make a request to fetch the plan
105+
return getPaginationObservables<APIResource<IServicePlan>>({
106+
store: store,
107+
action: getServicePlansAction,
108+
paginationMonitor: paginationMonitorFactory.create(getServicePlansAction.paginationKey, entityFactory(servicePlanSchemaKey))
109+
}, true)
110+
.entities$.pipe(share(), first());
111+
}
112+
}));
113+
};
114+
115+
export const prettyValidationErrors = (formValidationErrors) => {
116+
if (!formValidationErrors) { return null; }
117+
const errorArray = [];
118+
for (const error of formValidationErrors) {
119+
const message = error.message;
120+
const dataPathArray = JsonPointer.parse(error.dataPath);
121+
if (dataPathArray.length) {
122+
let field: any;
123+
dataPathArray.forEach(elm => field += /^\d+$/.test(elm) ? `[${elm}]` : `.${elm}`);
124+
errorArray.push(`${field}: ${message}`);
99125
} else {
100-
const guid = service.metadata.guid;
101-
const paginationKey = createEntityRelationPaginationKey(servicePlanSchemaKey, guid);
102-
const getServicePlansAction = new GetServicePlansForService(guid, cfGuid, paginationKey);
103-
// Could be a space-scoped service, make a request to fetch the plan
104-
return getPaginationObservables<APIResource<IServicePlan>>({
105-
store: store,
106-
action: getServicePlansAction,
107-
paginationMonitor: paginationMonitorFactory.create(getServicePlansAction.paginationKey, entityFactory(servicePlanSchemaKey))
108-
}, true)
109-
.entities$.pipe(share(), first());
126+
errorArray.push(message);
110127
}
111-
}));
128+
}
129+
return errorArray.join('<br>');
112130
};

src/frontend/app/shared/components/add-service-instance/bind-apps-step/bind-apps-step.component.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { PaginationMonitorFactory } from '../../../monitors/pagination-monitor.f
1818
import { StepOnNextResult } from '../../stepper/step/step.component';
1919
import { CsiGuidsService } from '../csi-guids.service';
2020
import { SpecifyDetailsStepComponent } from '../specify-details-step/specify-details-step.component';
21-
import { safeUnsubscribe } from '../../../../features/service-catalog/services-helper';
21+
import { safeUnsubscribe, prettyValidationErrors } from '../../../../features/service-catalog/services-helper';
2222
import { JsonPointer } from 'angular2-json-schema-form';
2323

2424
@Component({
@@ -75,23 +75,7 @@ export class BindAppsStepComponent implements OnDestroy, AfterContentInit {
7575
}
7676

7777
get prettyValidationErrors() {
78-
if (!this.formValidationErrors) { return null; }
79-
const errorArray = [];
80-
for (const error of this.formValidationErrors) {
81-
const message = error.message;
82-
const dataPathArray = JsonPointer.parse(error.dataPath);
83-
if (dataPathArray.length) {
84-
let field = dataPathArray[0];
85-
for (let i = 1; i < dataPathArray.length; i++) {
86-
const key = dataPathArray[i];
87-
field += /^\d+$/.test(key) ? `[${key}]` : `.${key}`;
88-
}
89-
errorArray.push(`${field}: ${message}`);
90-
} else {
91-
errorArray.push(message);
92-
}
93-
}
94-
return errorArray.join('<br>');
78+
return prettyValidationErrors(this.formValidationErrors);
9579
}
9680

9781
ngAfterContentInit() {

src/frontend/app/shared/components/add-service-instance/specify-details-step/specify-details-step.component.ts

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
tap
2020
} from 'rxjs/operators';
2121
import { IServiceInstance } from '../../../../core/cf-api-svc.types';
22-
import { getServiceJsonParams, safeUnsubscribe } from '../../../../features/service-catalog/services-helper';
22+
import { getServiceJsonParams, safeUnsubscribe, prettyValidationErrors } from '../../../../features/service-catalog/services-helper';
2323
import { GetAppEnvVarsAction } from '../../../../store/actions/app-metadata.actions';
2424
import { SetCreateServiceInstanceOrg, SetServiceInstanceGuid } from '../../../../store/actions/create-service-instance.actions';
2525
import { RouterNav } from '../../../../store/actions/router.actions';
@@ -40,9 +40,6 @@ import { CreateServiceInstanceHelperServiceFactory } from '../create-service-ins
4040
import { CreateServiceInstanceHelper } from '../create-service-instance-helper.service';
4141
import { CsiGuidsService } from '../csi-guids.service';
4242
import { CsiModeService } from '../csi-mode.service';
43-
import { constants } from 'os';
44-
import { JsonPointer } from 'angular2-json-schema-form';
45-
4643

4744
const enum FormMode {
4845
CreateServiceInstance = 'create-service-instance',
@@ -288,23 +285,7 @@ export class SpecifyDetailsStepComponent implements OnDestroy, AfterContentInit
288285
}
289286

290287
get prettyValidationErrors() {
291-
if (!this.formValidationErrors) { return null; }
292-
const errorArray = [];
293-
for (const error of this.formValidationErrors) {
294-
const message = error.message;
295-
const dataPathArray = JsonPointer.parse(error.dataPath);
296-
if (dataPathArray.length) {
297-
let field = dataPathArray[0];
298-
for (let i = 1; i < dataPathArray.length; i++) {
299-
const key = dataPathArray[i];
300-
field += /^\d+$/.test(key) ? `[${key}]` : `.${key}`;
301-
}
302-
errorArray.push(`${field}: ${message}`);
303-
} else {
304-
errorArray.push(message);
305-
}
306-
}
307-
return errorArray.join('<br>');
288+
return prettyValidationErrors(this.formValidationErrors);
308289
}
309290

310291
onNext = (): Observable<StepOnNextResult> => {

0 commit comments

Comments
 (0)