1function DriverLicenseVm() { 2 var self = this; 3 4 self.initCustomerData = ko.observable(); 5 self.firstName = ko.observable(); 6 self.middleName = ko.observable(); //we do not get it from Anyline 7 self.lastName = ko.observable(); 8 self.dateOfBirth = ko.observable(); 9 self.address = ko.observable(); 10 self.address2 = ko.observable(); 11 self.city = ko.observable(); 12 self.state = ko.observable(); 13 self.dateOfExpiry = ko.observable(); 14 self.idNumber = ko.observable(); 15 self.zipCode = ko.observable(); 16 17 self.AddressVm = new AddressLookupVm(); 18 self.ManualAddressVm = new AddressLookupVm(); 19 self.DriverLicenseScanResult = ko.observable(); 20 21 self.showManualAddressEntry = ko.observable(false); 22 self.scannedDataValid = ko.observable(true); 23 24 //Anyline callback 25 self.showDriverLicenseScanResults = function (data) { 26 if (data) { 27 $('#driver-license-scan').hide(); 28 29 self.DriverLicenseScanResult(data); 30 self.firstName(data.firstName?.trim()); 31 self.middleName(data.middleName?.trim()); 32 self.lastName(data.lastName?.trim()); 33 self.dateOfBirth(data.dateOfBirth); 34 self.address(data.street?.trim()); 35 var street2 = data['street-2'] || ''; 36 self.address2(street2.trim()); 37 self.city(data.city?.trim()); 38 self.state(data.jurisdictionCode?.trim()); 39 self.dateOfExpiry(data.dateOfExpiry); 40 self.idNumber(data.customerIDNumber?.trim()); 41 var postalCode = data.postalCode?.trim() || ''; 42 self.zipCode(postalCode.length > 5 ? postalCode.substring(0, 5) : postalCode); 43 44 self.AddressVm.CountryCode(data.countryID === "USA" ? "US" : data.countryID === "CAN" ? "CA" : data.countryID?.trim()); 45 self.AddressVm.Zipcode(self.zipCode()); 46 self.AddressVm.LookupZipcode(self.filterLocalityByCity); 47 48 $('#driver-license-result').show(); 49 //hide anyline container that SHOULD exist and has HEIGHT, but not be visible 50 $('#driverLicenseScanScreen').css("height", "1px"); 51 $('#driverLicenseScanScreen').css("margin-top", "0"); 52 $('#driverLicenseScanScreen').css("visibility", "hidden"); 53 54 LogDriverLicenseVerificationScan(self.hasCustomerDataDiscrepancy()); 55 56 if (isNaN(Date.parse(data.dateOfBirth)) || (data.dateOfExpiry && isNaN(Date.parse(data.dateOfExpiry)))) { 57 self.scannedDataValid(false); 58 } 59 60 if (self.firstName() == '' || self.firstName() == 'NONE' || 61 self.lastName() == '' || self.lastName() == 'NONE' || 62 self.scannedDataValid() == false) { 63 LogDriverLicenseVerificationScanDataInvalid(); 64 } 65 } 66 }; 67 68 self.stopScanning = function () { 69 if (anyline && anyline.isLoaded) { 70 anyline.stopScanning(); 71 } 72 history.back(); 73 }; 74 75 self.driverLicenseBypass = function (url) { 76 window.location = url; 77 }; 78 self.driverLicenseSkipped = function (url) { 79 LogDriverLicenseSkipped(); 80 window.location = url; 81 }; 82 83 self.SelectLocality = function (locality) { 84 if (locality) { 85 self.AddressVm.SelectedLocality(locality); 86 self.address(self.DriverLicenseScanResult().street); 87 self.address2(self.DriverLicenseScanResult()['street-2']); 88 self.zipCode(self.DriverLicenseScanResult().postalCode); 89 } 90 else if (self.initCustomerData()) { 91 self.AddressVm.SelectedLocality({ 92 id: self.initCustomerData().Address.LocalityId() 93 }); 94 self.address(self.initCustomerData().Address.StreetAddress1()); 95 self.address2(self.initCustomerData().Address.StreetAddress2()); 96 self.zipCode(self.initCustomerData().Address.ZipPostalCode()); 97 } 98 self.showManualAddressEntry(false); 99 self.ManualAddressVm.LocalityId(null); 100 }; 101 102 self.toggleShowManualAddressEntry = function () { 103 self.showManualAddressEntry(!self.showManualAddressEntry()); 104 self.AddressVm.LocalityId(null); 105 self.address(null); 106 self.address2(null); 107 }; 108 109 self.submitDriverLicenseScanResult = function () { 110 if (self.showManualAddressEntry() === true && self.ManualAddressVm.LocalityId()) { 111 self.AddressVm.LocalityId(self.ManualAddressVm.LocalityId()); 112 } 113 LogDriverLicenseVerificationComplete(); 114 $('form').submit(); 115 }; 116 117 self.initCustomerDataAddresses = function () { 118 119 return self.initCustomerData().Address.StreetAddress1() + (self.initCustomerData().Address.StreetAddress2() ? ', ' + self.initCustomerData().Address.StreetAddress2() : ''); 120 }; 121 122 self.driverLicenseScanResultAddress = function () { 123 124 return self.DriverLicenseScanResult().street + (self.DriverLicenseScanResult()['street-2'] ? ', ' + self.DriverLicenseScanResult()['street-2'] : ''); 125 }; 126 127 self.initCustomerDataLabel = function () { 128 if (self.initCustomerData()) { 129 return self.initCustomerData().City() + ' | ' + self.initCustomerData().County() + ' | ' + self.initCustomerData().State() + ' | ' + self.initCustomerData().Address.ZipPostalCode(); 130 } 131 else { 132 return ''; 133 } 134 } 135 136 self.filterLocalityByCity = function (data) { 137 if (data.length == 0) LogDriverLicenseVerificationScanDataInvalid(); 138 var filteredLocalityList = data.filter(function (locality) { return locality.municipality.toLowerCase() == self.city().toLowerCase() }); 139 if (filteredLocalityList.length > 0) { 140 self.AddressVm.LocalityList(filteredLocalityList); 141 } 142 else { 143 self.AddressVm.LocalityList(data); 144 } 145 } 146
147 self.hasCustomerDataDiscrepancy = ko.computed(function () { 148 return self.initCustomerData() && 149 ( 150 (self.initCustomerData().FirstName() && self.firstName() && self.firstName().toLowerCase() !== self.initCustomerData().FirstName().toLowerCase()) || 151 (self.initCustomerData().MiddleName() && self.middleName() && self.middleName().toLowerCase() !== self.initCustomerData().MiddleName().toLowerCase()) || 152 (self.initCustomerData().LastName() && self.lastName() && self.lastName().toLowerCase() !== self.initCustomerData().LastName().toLowerCase()) || 153 (self.initCustomerData().DateOfBirth() && self.dateOfBirth() && self.dateOfBirth().toLowerCase() !== self.initCustomerData().DateOfBirth().toLowerCase()) 154 ); 155 }); 156 157 self.hasAddressDiscrepancy = ko.computed(function () { 158 if (self.initCustomerData() && self.DriverLicenseScanResult()) { 159 return self.address() !== self.initCustomerData().Address.StreetAddress1() 160 || self.address2() !== self.initCustomerData().Address.StreetAddress2() 161 || self.city() !== self.initCustomerData().City() 162 || self.state() !== self.initCustomerData().State() 163 || self.zipCode() !== self.initCustomerData().Address.ZipPostalCode(); 164 } 165 else { 166 return false; 167 } 168 }); 169 170 self.showAddressSelection = ko.computed(function () { 171 if (self.AddressVm.LocalityList().length == 0) { 172 return false; 173 } 174 else if (self.AddressVm.LocalityList().length == 1) { 175 self.SelectLocality(self.AddressVm.LocalityList()[0]); 176 return true; 177 } 178 else { 179 return true; 180 } 181 }); 182 183 self.manualAddressEntryText = ko.computed(function () { 184 if (self.showManualAddressEntry() === true) { 185 return localizationHelper.onboarding.hideManualEntry; 186 } 187 else { 188 if (self.ManualAddressVm.LocalityList().length == 0) { 189 self.ManualAddressVm.Zipcode(self.zipCode()); 190 } 191 return localizationHelper.onboarding.enterMyAddressManually; 192 } 193 }); 194 195 self.enableSubmitDriverLicenseScanResult = ko.computed(function () { 196 return self.scannedDataValid() === true && self.address() && (self.AddressVm.LocalityId() || self.ManualAddressVm.LocalityId()); 197 }); 198}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.