Skip to content

Commit

Permalink
Merge pull request #108 from bcgov/feature/refactoring-components
Browse files Browse the repository at this point in the history
Feature/refactoring components
  • Loading branch information
vividroyjeong authored Jan 18, 2025
2 parents 7e985db + 9216301 commit 2f9ea5c
Show file tree
Hide file tree
Showing 10 changed files with 342 additions and 423 deletions.
7 changes: 7 additions & 0 deletions frontend/src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ export { default as AppTabs } from './core/AppTabs.vue'
export { default as ReportConfiguration } from './input/ReportConfiguration.vue'

export { default as SpeciesListInput } from './input/species-info/SpeciesListInput.vue'
export { default as SpeciesGroupsDisplay } from './input/species-info/SpeciesGroupsDisplay.vue'
export { default as SpeciesInfoPanel } from './input/species-info/SpeciesInfoPanel.vue'

export { default as SiteInfoPanel } from './input/site-info/SiteInfoPanel.vue'
export { default as StandDensityPanel } from './input/stand-density/StandDensityPanel.vue'
export { default as ReportInfoPanel } from './input/report-info/ReportInfoPanel.vue'

export { default as FileUpload } from './input/file-upload/FileUpload.vue'
export { default as BCLogo } from './layout/BCLogo.vue'
export { default as HeaderTitle } from './layout/HeaderTitle.vue'
export { default as TheHeader } from './layout/TheHeader.vue'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ import {
} from '@/components'
import type { MessageDialog } from '@/interfaces/interfaces'
import { CONSTANTS, MESSAGE, DEFAULTS } from '@/constants'
import { FileUploadValidator } from '@/validation/fileUploadValidator'
import { fileUploadValidation } from '@/validation'
import { Util } from '@/utils/util'
import { logSuccessMessage } from '@/utils/messageHandler'
Expand All @@ -102,8 +102,6 @@ const form = ref<HTMLFormElement>()
const isProgressVisible = ref(false)
const progressMessage = ref('')
const fileUploadValidator = new FileUploadValidator()
const startingAge = ref<number | null>(DEFAULTS.DEFAULT_VALUES.STARTING_AGE)
const finishingAge = ref<number | null>(DEFAULTS.DEFAULT_VALUES.FINISHING_AGE)
const ageIncrement = ref<number | null>(DEFAULTS.DEFAULT_VALUES.AGE_INCREMENT)
Expand Down Expand Up @@ -151,140 +149,105 @@ const handleReportTitleUpdate = (value: string | null) => {
reportTitle.value = value
}
const validateComparison = (): boolean => {
if (
!fileUploadValidator.validateAgeComparison(
finishingAge.value,
const runModelHandler = async () => {
try {
// validation - comparison
const comparisonResult = fileUploadValidation.validateComparison(
startingAge.value,
finishingAge.value,
)
) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_COMP_FNSH_AGE,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
return true
}
const validateRange = (): boolean => {
if (!fileUploadValidator.validateStartingAgeRange(startingAge.value)) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_START_AGE_RNG(
CONSTANTS.NUM_INPUT_LIMITS.STARTING_AGE_MIN,
CONSTANTS.NUM_INPUT_LIMITS.STARTING_AGE_MAX,
),
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
if (!fileUploadValidator.validateFinishingAgeRange(finishingAge.value)) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_START_FNSH_RNG(
CONSTANTS.NUM_INPUT_LIMITS.FINISHING_AGE_MIN,
CONSTANTS.NUM_INPUT_LIMITS.FINISHING_AGE_MAX,
),
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
if (!fileUploadValidator.validateAgeIncrementRange(ageIncrement.value)) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_AGE_INC_RNG(
CONSTANTS.NUM_INPUT_LIMITS.AGE_INC_MIN,
CONSTANTS.NUM_INPUT_LIMITS.AGE_INC_MAX,
),
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
return true
}
const validateFiles = async () => {
if (!layerFile.value) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.MISSING_FILE,
message: MESSAGE.FILE_UPLOAD_ERR.LAYER_FILE_MISSING,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
if (!polygonFile.value) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.MISSING_FILE,
message: MESSAGE.FILE_UPLOAD_ERR.POLYGON_FILE_MISSING,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
if (!comparisonResult.isValid) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_COMP_FNSH_AGE,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return
}
return false
}
if (!(await fileUploadValidator.isCSVFile(layerFile.value))) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_FILE,
message: MESSAGE.FILE_UPLOAD_ERR.LAYER_FILE_NOT_CSV_FORMAT,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return false
}
if (!(await fileUploadValidator.isCSVFile(polygonFile.value))) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_FILE,
message: MESSAGE.FILE_UPLOAD_ERR.POLYGON_FILE_NOT_CSV_FORMAT,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
// validation - required fields
const requiredFieldsResult = fileUploadValidation.validateRequiredFields(
startingAge.value,
finishingAge.value,
ageIncrement.value,
)
if (!requiredFieldsResult.isValid) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.FILE_UPLOAD_ERR.RPT_VLD_REQUIRED_FIELDS,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return
}
return false
}
return true
}
const validateRequiredFields = (): boolean => {
if (
!fileUploadValidator.validateRequiredFields(
// validation - range
const rangeResult = fileUploadValidation.validateRange(
startingAge.value,
finishingAge.value,
ageIncrement.value,
)
) {
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: MESSAGE.FILE_UPLOAD_ERR.RPT_VLD_REQUIRED_FIELDS,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
if (!rangeResult.isValid) {
let message = ''
switch (rangeResult.errorType) {
case 'startingAge':
message = MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_START_AGE_RNG(
CONSTANTS.NUM_INPUT_LIMITS.STARTING_AGE_MIN,
CONSTANTS.NUM_INPUT_LIMITS.STARTING_AGE_MAX,
)
break
case 'finishingAge':
message = MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_START_FNSH_RNG(
CONSTANTS.NUM_INPUT_LIMITS.FINISHING_AGE_MIN,
CONSTANTS.NUM_INPUT_LIMITS.FINISHING_AGE_MAX,
)
break
case 'ageIncrement':
message = MESSAGE.MDL_PRM_INPUT_ERR.RPT_VLD_AGE_INC_RNG(
CONSTANTS.NUM_INPUT_LIMITS.AGE_INC_MIN,
CONSTANTS.NUM_INPUT_LIMITS.AGE_INC_MAX,
)
break
}
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_INPUT,
message: message,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return
}
return false
}
return true
}
const runModelHandler = async () => {
try {
const isValidationSuccessful =
validateRequiredFields() &&
validateComparison() &&
validateRange() &&
(await validateFiles())
if (!isValidationSuccessful) {
// validation - files
const filesResult = await fileUploadValidation.validateFiles(
layerFile.value,
polygonFile.value,
)
if (!filesResult.isValid) {
let message = ''
switch (filesResult.errorType) {
case 'layerFileMissing':
message = MESSAGE.FILE_UPLOAD_ERR.LAYER_FILE_MISSING
break
case 'polygonFileMissing':
message = MESSAGE.FILE_UPLOAD_ERR.POLYGON_FILE_MISSING
break
case 'layerFileNotCSVFormat':
message = MESSAGE.FILE_UPLOAD_ERR.LAYER_FILE_NOT_CSV_FORMAT
break
case 'polygonFileNotCSVFormat':
message = MESSAGE.FILE_UPLOAD_ERR.POLYGON_FILE_NOT_CSV_FORMAT
break
}
messageDialog.value = {
dialog: true,
title: MESSAGE.MSG_DIALOG_TITLE.INVALID_FILE,
message: message,
btnLabel: CONSTANTS.BUTTON_LABEL.CONT_EDIT,
}
return
}
Expand Down
Loading

0 comments on commit 2f9ea5c

Please sign in to comment.