ca-mfe-page-scoring-ui
Version:
This is a react shell for the SPGI Platform MFE implementation
246 lines (243 loc) • 8.86 kB
text/typescript
import { trackerStatus, stepIds, stepValidationStatus, rgScoreIds } from '@root/constants';
import {
scoringSelectionValidation,
dataInputValidation,
scoringInputValidation,
otherValidation
} from '@root/utils/validations';
export const getStepperOptions = (t,currencyCode = '') => [
{
stepId: stepIds.SCORING_SELECTION,
label: t('scoringui:stepTracker:scoringSelection'),
section: '',
isSubSection: false,
showStep: true,
status: trackerStatus.COMPLETED,
validationStatus: stepValidationStatus.VALID,
pageTitle: t('scoringui:pageTitles:selection'),
showBackButton: false,
showRequiredInfo: false,
validationFn : scoringSelectionValidation,
isRemovable: false,
footerText: t('scoringui:footerText')
},
{
stepId: stepIds.COMPANY_DATA_INPUTS,
rgScoreId: rgScoreIds.BENCHMARK,
label: t('scoringui:stepTracker:companyAndDataInputs'),
section: '',
isSubSection: false,
showStep: true,
status: trackerStatus.ACTIVE,
validationStatus: stepValidationStatus.NOT_VALIDATED,
pageTitle: t('scoringui:pageTitles:dataInputs'),
showBackButton: true,
showRequiredInfo: false,
validationFn : dataInputValidation,
isRemovable: false,
footerText: t('scoringui:footerText')
},
{
stepId: stepIds.SCORING_INPUTS,
rgScoreId: rgScoreIds.STANDALONE,
label: t('scoringui:stepTracker:scoringInputs'),
section: '',
isSubSection: false,
showStep: true,
status: trackerStatus.SELECTED,
validationStatus: stepValidationStatus.NOT_VALIDATED,
pageTitle: t('scoringui:pageTitles:scoringInputs'),
showBackButton: true,
showRequiredInfo: true,
validationFn : scoringInputValidation,
isRemovable: false,
footerText: t('scoringui:footerText')
},
{
stepId: stepIds.ADJUSTMENTS,
label: t('scoringui:stepTracker:adjustments'),
section: t('scoringui:scoringTiles:scoringSectionAddOns'),
showStep: true,
isSubSection: true,
status: trackerStatus.NOT_SELECTED,
pageTitle: t('scoringui:pageTitles:adjustments'),
showBackButton: true,
showRequiredInfo: false,
validationFn : otherValidation,
isRemovable: false,
footerText: '',
nestedSteps: [
{
stepId: stepIds.SIZE_ADJUSTMENTS,
rgScoreId: rgScoreIds.SIZE_ADJ,
parentStepId: stepIds.ADJUSTMENTS,
isTileDisplay: false,
label: t('scoringui:stepTracker:sizeAdjustments'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
isDisabled: true,
validationStatus: stepValidationStatus.NOT_VALIDATED
},
{
stepId: stepIds.QUALITATIVE_ADJUSTMENTS,
rgScoreId: rgScoreIds.Q_ADJ,
parentStepId: stepIds.ADJUSTMENTS,
isTileDisplay: true,
label: t('scoringui:stepTracker:qualitativeAdjustments'),
header: t('scoringui:scoringTiles:addQualitativeAdjustments'),
description: t('scoringui:scoringTiles:addQualitativeAdjustmentsDesc'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
isDisabled: false,
validationStatus: stepValidationStatus.VALID,
footerText: t('scoringui:footerText')
},
{
stepId: stepIds.PARENT_ADJUSTMENTS,
rgScoreId: rgScoreIds.Parent_ADJ,
parentStepId: stepIds.ADJUSTMENTS,
isTileDisplay: true,
label: t('scoringui:stepTracker:parentCompanyAdjustments'),
header: t('scoringui:scoringTiles:addParentCompanyAdjustments'),
description: t('scoringui:scoringTiles:addParentCompanyAdjustmentsDesc'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
isDisabled: false,
validationStatus: stepValidationStatus.NOT_VALIDATED,
footerText: t('scoringui:footerText')
},
{
stepId: stepIds.GOVERNMENT_SUPPORT,
rgScoreId: rgScoreIds.GOV_ADJ,
parentStepId: stepIds.ADJUSTMENTS,
isTileDisplay: true,
label: t('scoringui:stepTracker:governmentSupport'),
header: t('scoringui:scoringTiles:addGovernmentSupport'),
description: t('scoringui:scoringTiles:addGovernmentSupportDesc'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
isDisabled: false,
validationStatus: stepValidationStatus.NOT_VALIDATED
},
{
stepId: stepIds.Pd_ADJUSTMENTS,
rgScoreId: rgScoreIds.PD_ADJ,
parentStepId: stepIds.ADJUSTMENTS,
isTileDisplay: true,
label: t('scoringui:stepTracker:pdAdjustments'),
header: t('scoringui:scoringTiles:addPDAdjustments'),
description: t('scoringui:scoringTiles:addPDAdjustmentsDesc'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
validationStatus: stepValidationStatus.VALID
}
]
},
{
stepId: stepIds.ADDITIONAL_ADJUSTMENTS,
label: 'Additional Adjustments',
section: 'ADDITIONAL ADD-ONS',
showStep: true,
isSubSection: true,
status: trackerStatus.NOT_SELECTED,
pageTitle: t('scoringui:pageTitles:adjustments'),
showBackButton: true,
showRequiredInfo: false,
validationFn : otherValidation,
isRemovable: false,
footerText: '',
nestedSteps: [
{
stepId: stepIds.MAX_LIMIT,
rgScoreId: '',
parentStepId: stepIds.ADDITIONAL_ADJUSTMENTS,
isTileDisplay: true,
label: 'Max Limit',
header: 'Add Max Limit',
description: t('scoringui:scoringTiles:addPDAdjustmentsDesc'),
showStep: false,
status: trackerStatus.NOT_SELECTED,
validationStatus: stepValidationStatus.VALID
}
]
},
{
stepId: stepIds.RG_SCORE,
label: t('scoringui:stepTracker:rgScore'),
section: '',
isSubSection: false,
showStep: true,
status: trackerStatus.SELECTED,
validationStatus: stepValidationStatus.NOT_VALIDATED,
pageTitle: t('scoringui:pageTitles:rgScore'),
validationFn : otherValidation,
showBackButton: true,
showRequiredInfo: true,
isRemovable: false,
footerText: t('scoringui:scoringResultsPage:currencyReportedText',{currency:currencyCode})
}
// {
// stepId: stepIds.ADDITIONAL_ANALYSIS,
// label: '',
// section: t('scoringui:scoringTiles:scoringSectionAdditionalAnalysis'),
// showStep: true,
// isSubSection: false,
// status: trackerStatus.NOT_SELECTED,
// validationStatus: stepValidationStatus.NOT_VALIDATED,
// pageTitle: t('scoringui:pageTitles:additionalAnalysis'),
// showBackButton: true,
// showRequiredInfo: true,
// footerText: t('scoringui:footerText'),
// nestedSteps: [
// {
// stepId: stepIds.MACRO_SCENARIOS,
// isTileDisplay: true,
// label: t('scoringui:stepTracker:macroScenarios'),
// header: t('scoringui:scoringTiles:runMacroScenarios'),
// description: t('scoringui:scoringTiles:runMacroScenariosDesc'),
// validationFn : otherValidation,
// showStep: false,
// status: trackerStatus.NOT_SELECTED,
// validationStatus: stepValidationStatus.NOT_VALIDATED,
// isRemovable : true
// },
// {
// stepId: stepIds.LOSS_STATS,
// isTileDisplay: true,
// label: t('scoringui:stepTracker:lossStats'),
// header: t('scoringui:scoringTiles:runLossStats'),
// description: t('scoringui:scoringTiles:addQualitativeAdjustmentsDesc'),
// validationFn : otherValidation,
// showStep: false,
// status: trackerStatus.NOT_SELECTED,
// validationStatus: stepValidationStatus.NOT_VALIDATED,
// isRemovable : true
// }
// ]
// }
];
export const getIndexOfVisibleSteps = resp => {
const newResp = [];
let index = 0;
resp.forEach(step => {
const findIndex = newResp.findIndex(i => i.stepId === step.stepId);
if (step?.nestedSteps?.length) {
if (!step.isSubSection) {
const visibleSteps = step.nestedSteps.filter(({ showStep }) => showStep);
if (visibleSteps.length) {
const stepsWithindex = [];
visibleSteps.forEach((obj, i) => stepsWithindex.push({...obj, index: index + i + 1 }));
index = stepsWithindex[stepsWithindex.length - 1].index;
newResp.push({ ...step, nestedSteps: stepsWithindex });
}
} else {
findIndex === -1 && newResp.push({ ...step, index: index + 1 });
index++;
}
} else if (step.showStep) {
findIndex === -1 && newResp.push({ ...step, index: index + 1 });
index++;
}
});
return newResp;
};