UNPKG

ca-mfe-page-scoring-ui

Version:

This is a react shell for the SPGI Platform MFE implementation

246 lines (243 loc) 8.86 kB
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; };