diff --git a/package-lock.json b/package-lock.json index 2c433ae3..474c181c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3841,14 +3841,24 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001302", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001302.tgz", - "integrity": "sha512-YYTMO+tfwvgUN+1ZnRViE53Ma1S/oETg+J2lISsqi/ZTNThj3ZYBOKP2rHwJc37oCsPqAzJ3w2puZHn0xlLPPw==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -15935,9 +15945,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001302", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001302.tgz", - "integrity": "sha512-YYTMO+tfwvgUN+1ZnRViE53Ma1S/oETg+J2lISsqi/ZTNThj3ZYBOKP2rHwJc37oCsPqAzJ3w2puZHn0xlLPPw==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "dev": true }, "chalk": { diff --git a/src/components/project/UploadDialog.vue b/src/components/project/UploadDialog.vue index cfd926c1..fd1bae2f 100644 --- a/src/components/project/UploadDialog.vue +++ b/src/components/project/UploadDialog.vue @@ -225,8 +225,9 @@ export default defineComponent({ checkSentIdsErrors(fileContent: string, sampleName: string) { const sentIds: any[] = []; this.formatError = false; - const sentences = fileContent.split(/\n\n/).filter((sentence) => sentence); + const sentences = fileContent.replace(/[\r]/g, "").split(/\n\n/).filter((sentence) => sentence); for (const sentence of sentences) { + this.checkSentFormatError(sentence, sampleName) if (this.formatError) return; if (sentenceConllToJson(sentence)['metaJson']['sent_id']) { const sentId = sentenceConllToJson(sentence)['metaJson']['sent_id']; @@ -235,7 +236,16 @@ export default defineComponent({ } if (sentences.length !== sentIds.length) this.samplesWithoutSentIds.push(sampleName); }, - + checkSentFormatError(sentence: string, sampleName: string) { + if (/\n\s*\n\S/.test(sentence)) { + notifyError({ error: `${sampleName} contains empty line that doesn't start with a digit or # ` }); + this.formatError = true; + } + if (Object.values(sentenceConllToJson(sentence)['metaJson']).some((metaVal) => metaVal == undefined)) { + notifyError({ error: `${sampleName} contains sentence with empty metadata value` }); + this.formatError = true; + } + }, triggerFormatErrors() { this.samplesWithoutSentIds.forEach((sampleName) => { this.warningMessage += `"${sampleName}" has sentences without sent_id.\n`;