Skip to content

Commit

Permalink
SHIBUI-1437 Integrated config component to replace summary
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Sep 26, 2019
1 parent 0d48b13 commit 1166ba4
Show file tree
Hide file tree
Showing 13 changed files with 112 additions and 310 deletions.
7 changes: 5 additions & 2 deletions ui/src/app/metadata/configuration/configuration.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,9 @@ import { FilterCompareVersionEffects } from './effect/filter.effect';
WizardModule,
FormModule
],
exports: [],
exports: [
MetadataConfigurationComponent
],
providers: [
DatePipe,
IndexResolver
Expand Down Expand Up @@ -114,7 +116,8 @@ export class MetadataConfigurationModule {
RestoreEffects,
FilterCompareVersionEffects,
VersionEffects
])
]
)
],
providers: []
})
Expand Down
83 changes: 1 addition & 82 deletions ui/src/app/metadata/configuration/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import * as fromFilter from './filter.reducer';
import { WizardStep } from '../../../wizard/model';

import * as utils from '../../domain/utility/configuration';
import { getConfigurationSectionsFn, assignValueToProperties } from './utilities';
import { getSplitSchema, getModel } from '../../../wizard/reducer';
import { getInCollectionFn } from '../../domain/domain.util';
import { MetadataConfiguration } from '../model/metadata-configuration';
Expand Down Expand Up @@ -58,88 +59,6 @@ export const getConfigurationDefinition = createSelector(getConfigurationState,
export const getConfigurationSchema = createSelector(getConfigurationState, fromConfiguration.getSchema);
export const getConfigurationXml = createSelector(getConfigurationState, fromConfiguration.getXml);

export const assignValueToProperties = (models, properties, definition: any): any[] => {
return properties.map(prop => {
const differences = models.some((model, index, array) => {
if (!array) {
return false;
}
return JSON.stringify(model[prop.id]) !== JSON.stringify(array[0][prop.id]);
});

const widget = prop.type === 'array' && prop.widget && prop.widget.data ? ({
...prop.widget,
data: prop.widget.data.map(item => ({
...item,
differences: models
.map((model) => {
const value = model[prop.id];
return value ? value.indexOf(item.key) > -1 : false;
})
.reduce((current, val) => current !== val ? true : false, false)
}))
}) : null;

switch (prop.type) {
case 'object':
return {
...prop,
differences,
properties: assignValueToProperties(
models.map(model => definition.formatter(model)[prop.id] || {}),
prop.properties,
definition
)
};
default:
return {
...prop,
differences,
value: models.map(model => {
return model[prop.id];
}),
widget
};
}
});
};

export const getConfigurationSectionsFn = (models, definition, schema): MetadataConfiguration => {
return !definition || !schema || !models ? null :
({
dates: models.map(m => m ? m.modifiedDate : null),
sections: definition.steps
.filter(step => step.id !== 'summary')
.map(
(step: WizardStep, num: number) => {
return ({
id: step.id,
pageNumber: num + 1,
index: step.index,
label: step.label,
properties: utils.getStepProperties(
getSplitSchema(schema, step),
definition.formatter({}),
schema.definitions || {}
)
});
}
)
.map((section: any) => {
return {
...section,
properties: assignValueToProperties(models, section.properties, definition)
};
})
.map((section: any) => ({
...section,
differences: section.properties.some(prop => prop.differences)
}))
});
};



export const getConfigurationModelEnabledFn =
(config: Metadata) => config ? ('serviceEnabled' in config) ? config.serviceEnabled : config.enabled : false;

Expand Down
84 changes: 84 additions & 0 deletions ui/src/app/metadata/configuration/reducer/utilities.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { MetadataConfiguration } from '../model/metadata-configuration';
import { WizardStep } from '../../../wizard/model';
import * as utils from '../../domain/utility/configuration';
import { getSplitSchema } from '../../../wizard/reducer';

export const getConfigurationSectionsFn = (models, definition, schema): MetadataConfiguration => {
return !definition || !schema || !models ? null :
({
dates: models.map(m => m ? m.modifiedDate : null),
sections: definition.steps
.filter(step => step.id !== 'summary')
.map(
(step: WizardStep, num: number) => {
return ({
id: step.id,
pageNumber: num + 1,
index: step.index,
label: step.label,
properties: utils.getStepProperties(
getSplitSchema(schema, step),
definition.formatter({}),
schema.definitions || {}
)
});
}
)
.map((section: any) => {
return {
...section,
properties: assignValueToProperties(models, section.properties, definition)
};
})
.map((section: any) => ({
...section,
differences: section.properties.some(prop => prop.differences)
}))
});
};

export const assignValueToProperties = (models, properties, definition: any): any[] => {
return properties.map(prop => {
const differences = models.some((model, index, array) => {
if (!array) {
return false;
}
return JSON.stringify(model[prop.id]) !== JSON.stringify(array[0][prop.id]);
});

const widget = prop.type === 'array' && prop.widget && prop.widget.data ? ({
...prop.widget,
data: prop.widget.data.map(item => ({
...item,
differences: models
.map((model) => {
const value = model[prop.id];
return value ? value.indexOf(item.key) > -1 : false;
})
.reduce((current, val) => current !== val ? true : false, false)
}))
}) : null;

switch (prop.type) {
case 'object':
return {
...prop,
differences,
properties: assignValueToProperties(
models.map(model => definition.formatter(model)[prop.id] || {}),
prop.properties,
definition
)
};
default:
return {
...prop,
differences,
value: models.map(model => {
return model[prop.id];
}),
widget
};
}
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { TYPES } from '../configuration.values';
import { ResolverService } from '../../domain/service/resolver.service';
import { MetadataProviderService } from '../../domain/service/provider.service';
import { MetadataFilterEditorTypes } from '../../filter/model';
import { getConfigurationSectionsFn } from '../reducer';
import { getConfigurationSectionsFn } from '../reducer/utilities';

@Injectable()
export class MetadataConfigurationService {
Expand Down
13 changes: 0 additions & 13 deletions ui/src/app/metadata/domain/component/wizard-summary.component.html

This file was deleted.

103 changes: 0 additions & 103 deletions ui/src/app/metadata/domain/component/wizard-summary.component.spec.ts

This file was deleted.

Loading

0 comments on commit 1166ba4

Please sign in to comment.