Show error message when future data edit
This commit is contained in:
+2
-1
@@ -47,7 +47,8 @@ export default {
|
|||||||
deleteOption: 'Import and delete existing',
|
deleteOption: 'Import and delete existing',
|
||||||
errors: {
|
errors: {
|
||||||
couldNotOpenFile: 'Could not open file',
|
couldNotOpenFile: 'Could not open file',
|
||||||
postFix: 'No data was imported or changed'
|
postFix: 'No data was imported or changed',
|
||||||
|
futureEdit: 'Future dates may only contain a note, no other symptoms'
|
||||||
},
|
},
|
||||||
success: {
|
success: {
|
||||||
message: 'Data successfully imported'
|
message: 'Data successfully imported'
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import {
|
|||||||
updateCycleStartsForAllCycleDays
|
updateCycleStartsForAllCycleDays
|
||||||
} from '../../db'
|
} from '../../db'
|
||||||
import getColumnNamesForCsv from './get-csv-column-names'
|
import getColumnNamesForCsv from './get-csv-column-names'
|
||||||
|
import { LocalDate } from 'js-joda'
|
||||||
|
import labels from '../../i18n/en/settings'
|
||||||
|
|
||||||
export default async function importCsv(csv, deleteFirst) {
|
export default async function importCsv(csv, deleteFirst) {
|
||||||
const parseFuncs = {
|
const parseFuncs = {
|
||||||
@@ -48,6 +50,7 @@ export default async function importCsv(csv, deleteFirst) {
|
|||||||
|
|
||||||
//remove symptoms where all fields are null
|
//remove symptoms where all fields are null
|
||||||
putNullForEmptySymptoms(cycleDays)
|
putNullForEmptySymptoms(cycleDays)
|
||||||
|
throwIfFutureData(cycleDays)
|
||||||
|
|
||||||
if (deleteFirst) {
|
if (deleteFirst) {
|
||||||
tryToImportWithDelete(cycleDays)
|
tryToImportWithDelete(cycleDays)
|
||||||
@@ -87,4 +90,15 @@ function getDbType(modelProperties, path) {
|
|||||||
if (path.length === 1) return modelProperties[path[0]].type
|
if (path.length === 1) return modelProperties[path[0]].type
|
||||||
const modelName = modelProperties[path[0]].objectType
|
const modelName = modelProperties[path[0]].objectType
|
||||||
return getDbType(schema[modelName], path.slice(1))
|
return getDbType(schema[modelName], path.slice(1))
|
||||||
|
}
|
||||||
|
|
||||||
|
function throwIfFutureData(cycleDays) {
|
||||||
|
const today = LocalDate.now().toString()
|
||||||
|
for (const i in cycleDays) {
|
||||||
|
const day = cycleDays[i]
|
||||||
|
// notes are allowed for future dates but everything else isn't
|
||||||
|
if (day.date > today && Object.keys(day).some(symptom => symptom != 'date' && symptom != 'note')) {
|
||||||
|
throw new Error(labels.import.errors.futureEdit)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user