diff --git a/FILUPLOAD_DIFF b/FILUPLOAD_DIFF new file mode 100644 index 0000000..060edf6 --- /dev/null +++ b/FILUPLOAD_DIFF @@ -0,0 +1,230 @@ + + + \ No newline at end of file diff --git a/backend/appsettings.json b/backend/appsettings.json index 5361ca8..7ef9741 100644 --- a/backend/appsettings.json +++ b/backend/appsettings.json @@ -19,7 +19,7 @@ {"Header": "Customer Physical City", "HeaderRegex": "(cust(omers?)?\\s?\\w*\\s?city)" ,"ValueRegex": "(\\w+\\s?)+", "Nullable": true}, {"Header": "Customer Physical State", "HeaderRegex": "(cust(omers?)?\\s?\\w*\\s?state)" ,"ValueRegex": "\\w+", "Nullable": true}, {"Header": "Customer Physical Zip", "HeaderRegex": "(cust(omers?)?\\s?\\w*\\s?zip\\s?(code)?)" ,"ValueRegex": "\\d{5}-?(\\d{4})?", "Nullable": true}, - {"Header": "Date Booked", "HeaderRegex": "(date\\s?booked)" ,"ValueRegex": "[1-2]?\\d\\/\\d{1,2}\\/(20)?\\d{2}", "Nullable": true}, + {"Header": "Date Booked", "HeaderRegex": "DATEVALUE" ,"ValueRegex": "[1-2]?\\d\\/\\d{1,2}\\/(20)?\\d{2}", "Nullable": true}, {"Header": "Term (Months)", "HeaderRegex": "(term\\s?(\\(?months\\)?)?)" ,"ValueRegex": "\\d{1,3}", "Nullable": true}, {"Header": "Payment Amount", "HeaderRegex": "(pa?yme?n?t\\s?am(oun)?t)" ,"ValueRegex": "(\\d{1,2},?)*\\d+(.\\d{2})?", "Nullable": true}, {"Header": "Financed Amount", "HeaderRegex": "(financed\\s?am(oun)?t)" ,"ValueRegex": "(\\d{1,2},?)*\\d+(.\\d{2})?", "Nullable": true}, @@ -34,7 +34,7 @@ {"Header": "PG State", "HeaderRegex": "((pg|guarantor)\\s?state)" ,"ValueRegex": "\\d{5}-?(\\d{4})?", "Nullable": true}, {"Header": "PG Zip", "HeaderRegex": "((pg|guarantor)\\s?zip)" ,"ValueRegex": "\\d{3}-?\\d{2}-?\\d{3}", "Nullable": true}, {"Header": "PG SSN", "HeaderRegex": "((pg|guarantor)\\s?ssn)" ,"ValueRegex": "[0-2]?\\d\\/\\d{1,2}\\/(19|20)?\\d{2}", "Nullable": true}, - {"Header": "DOB", "HeaderRegex": "(dob|date of birth)" ,"ValueRegex": "\\d{3}", "Nullable": true}, + {"Header": "DOB", "HeaderRegex": "DATEVALUE" ,"ValueRegex": "\\d{3}", "Nullable": true}, {"Header": "PG1 FICO", "HeaderRegex": "(pg\\d?\\s?FICO)" ,"ValueRegex": "(\\d{1,2},?)*\\d+(.\\d{2})?", "Nullable": true} ] } \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 6590e8d..85ca6c8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,9 @@ @@ -22,51 +22,52 @@ export default { type: String, required: true }, + headerTemplateIndex: Number, }, data() { return { - selectedDocHeaderIndex: null, + selectedHeader: "", + confirmedHeader: null, isConfirmed: false, store } }, methods: { - updateSelectedDocHeader(event) { - // If a correction was previously made, update the parent a correction was unmade - if (this.isConfirmed) { this.$emit('header-change', -1); } - this.isConfirmed = false; - // If the old index is not null, we need to update it's docHeader to be null - if (this.selectedDocHeaderIndex !== null) { - this.store.documentHeaders[this.selectedDocHeaderIndex].swapTemplateHeader(null); - } - // Set the new index of the doc header - this.selectedDocHeaderIndex = event.target.value; - console.log(this.selectedDocHeaderIndex); - + changeSelectedHeader(event) { + this.selectedHeader = event.target.value; }, changeA() { - // Change the templateHeader in the docHeader at selectedDocHeader + console.warn("BEFORE ",store.documentHeaders); + this.confirmedHeader = this.selectedHeader !== "" ? store.documentHeaders.splice(this.selectedHeader,1)[0] : null; + console.info("confirmedHeader ",this.confirmedHeader); + let oldHeader = store.missingHeaders[this.headerTemplateIndex] + .swapUserHeader(this.confirmedHeader); this.isConfirmed = true; - this.store.documentHeaders[this.selectedDocHeaderIndex].templateHeader = this.itemText; + console.warn("AFTER ",store.documentHeaders); + + if (oldHeader) { + store.documentHeaders.push(oldHeader); + store.documentHeaders.sort((a,b) => { + const ha = a.label.toLowerCase(); + const hb = b.label.toLowerCase(); + if (ha < hb) return -1; + if (ha > hb) return 1; + return 0; + }); + } + console.warn("AFTER 2",store.documentHeaders); + document.getElementById('sel').value = this.itemText; this.$emit('header-change', 1); } }, computed: { - filteredHeaders() { - // Get the index of headers that are invalid - return store.documentHeaders.reduce((acc, header, index) => { - if (!header.isSet()) { - acc.push(index); - } - return acc; - }, []); - }, firstValue() { - // When a doc header is confirmed it is removed from the list, we need to set it here - // If no doc header is confirmed, allow the user to select a null - return this.isConfirmed ? this.store.documentHeaders[this.selectedDocHeaderIndex].documentHeader : null + return this.isConfirmed ? store.missingHeaders[this.headerTemplateIndex].userHeader.label : null; } + } + + } diff --git a/src/components/MissingHeaderBox.vue b/src/components/MissingHeaderBox.vue index 34b0a9d..c69142e 100644 --- a/src/components/MissingHeaderBox.vue +++ b/src/components/MissingHeaderBox.vue @@ -2,7 +2,7 @@

Missing Headers:

- +
diff --git a/src/headerTemplate.js b/src/headerTemplate.js index cb7b66a..8426a59 100644 --- a/src/headerTemplate.js +++ b/src/headerTemplate.js @@ -2,6 +2,8 @@ * Represents a HeaderTemplate for associating UserHeaders in an uploaded Excel file. */ export class HeaderTemplate { + + userHeader = null; /** * Creates a new HeaderTemplate. * @param {string} header - The label for this HeaderTemplate. @@ -97,7 +99,7 @@ export class HeaderTemplate { * Checks if this HeaderTemplate is associated with a UserHeader. * @returns {boolean} - Returns true if associated, false otherwise. */ - isAssociated() { typeof this.userHeaders!== 'undefined' && this.userHeaders!== null; } + isAssociated() { return this.userHeader !== null } swapUserHeader(newUserHeader = null) { let oldUserHeader = this.userHeader; diff --git a/src/helpers.js b/src/helpers.js index 45c8450..634ea41 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -38,12 +38,12 @@ export class HeaderAssociator { this.docHeaderAddress = address } - set isValidData(newValidData) { + set validAssociatedData(newValidData) { if (typeof newValidData !== 'boolean') { console.error(`${this.documentHeader} | HeaderAssociator.validData must be a boolean: ${newValidData}`); - this.isValidData = false; + this.validAssociatedData = false; } - else this.isValidData = newValidData; + else this.validAssociatedData = newValidData; } swapTemplateHeader(newTemplateHeader) { @@ -58,7 +58,7 @@ export class HeaderAssociator { invalidData(dataSample) { // If data is found to be invalid, set isValidData to false and record the data this.docData = dataSample - this.isValidData = false + this.validAssociatedData = false } isSet() {