1function ProfileVm() { 2 var self = this; 3 4 self.PhysicalAddressVm = ko.observable(); 5 self.MailingAddressVm = ko.observable(); 6 self.PhysicalStreetAddress1 = ko.observable(); 7 self.MailingStreetAddress1 = ko.observable(); 8 self.UsePhysicalAddress = ko.observable(false); 9 self.EnableSubmit = ko.observable(true); 10 11 self.IsEditingEmail = ko.observable(false); 12 self.OriginalEmail = ko.observable(); 13 14 self.TabSelected = ko.observable('customer'); 15 16 self.EnableSubmitButton = ko.computed(function () { 17 if (self.PhysicalAddressVm() && self.MailingAddressVm()) { 18 return $('.profile-form').validate().checkForm() && self.EnableSubmit() && self.PhysicalAddressVm().LocalityId() && self.PhysicalStreetAddress1() != '' && (self.UsePhysicalAddress() == true || self.MailingStreetAddress1() != ''); 19 } 20 else { 21 return false; 22 } 23 }); 24 25 self.SelectTab = function (tab, vm, e) { 26 if ($(e.target).hasClass('inactive') == false) { 27 self.TabSelected(tab); 28 } 29 }; 30 self.SubmitForm = function () { 31 $(".profile-form").submit(); 32 self.EnableSubmit(false); 33 } 34 35 36 self.IsPasswordAtLeast8CharactersLong = ko.observable(false); 37 self.IsPasswordUppercaseLetter = ko.observable(false); 38 self.IsPasswordOneSpecialCharacter = ko.observable(false); 39 self.CurrentPassword = ko.observable(); 40 self.NewPassword = ko.observable(); 41 self.VerifyPassword = ko.observable(); 42 self.ChangePasswordSuccess = ko.observable(); 43 self.ChangePasswordFailure = ko.observable(); 44 self.DeleteUserFailure = ko.observable(); 45 46 self.NewPassword.subscribe(function (value) { 47 ValidatePasswordFormat(value); 48 }); 49 50 function ValidatePasswordFormat(value) { 51 if (value.length >= 8) { 52 self.IsPasswordAtLeast8CharactersLong(true); 53 } 54 else { 55 self.IsPasswordAtLeast8CharactersLong(false); 56 } 57 58 var hasUppercaseLetter = false; 59 for (var i = 0; i < value.length; i++) { 60 var character = value.charAt(i); 61 if (character == character.toUpperCase()) { 62 hasUppercaseLetter = true; 63 } 64 } 65 self.IsPasswordUppercaseLetter(hasUppercaseLetter); 66 67 var hasSpecialCharacter = false; 68 var pattern = new RegExp(/[~`!@#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/); 69 if (pattern.test(value)) { 70 hasSpecialCharacter = true; 71 } 72 self.IsPasswordOneSpecialCharacter(hasSpecialCharacter); 73 } 74 75 self.UpdatePassword = function () { 76 ajaxHelper({ 77 url: '/Account/ChangePassword', 78 type: 'POST', 79 dataType: 'json', 80 contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 81 spinner: true, 82 spinnerSelector: '#pills-change-password', 83 data: { 84 currentPassword: self.CurrentPassword(), 85 newPassword: self.NewPassword(), 86 verifyPassword: self.VerifyPassword() 87 }, 88 success: function (result) { 89 if (result.shouldDisplayErrorMessage === false && result.shouldDisplaySuccessMessage === false) { 90 self.ChangePasswordSuccess(false); 91 self.ChangePasswordFailure(result.resetPasswordText); 92 } else if (result.shouldDisplaySuccessMessage === true) { 93 self.ChangePasswordFailure(false); 94 self.ChangePasswordSuccess(result.successMessage); 95 } else { 96 self.ChangePasswordSuccess(false); 97 self.ChangePasswordFailure(result.errorMessage); 98 } 99 }, 100 error: function (xhr, ajaxOptions, thrownError) { 101 self.ChangePasswordSuccess(false); 102 self.ChangePasswordFailure(thrownError || xhr.responseJSON || localizationHelper.error.genericError); 103 } 104 }); 105 } 106 107 self.EditEmail = function () { 108 self.IsEditingEmail(true); 109 110 self.OriginalEmail(document.getElementById("email").value); 111 document.getElementById("email").value = ""; 112 document.getElementById("verifyEmail").value = ""; 113 document.getElementById("email").removeAttribute("disabled"); 114 document.getElementById("email").removeAttribute("disabled"); 115 document.getElementById("verifyEmailContainer").style.display = "block"; 116 document.getElementById("editEmailBtnContainer").style.display = "none"; 117 document.getElementById("cancelEditEmailBtnContainer").style.display = "block"; 118 document.getElementById("email").focus(); 119 $("label[for='Email']").text(localizationHelper.profile.newEmail); 120 }; 121 122 self.CancelEditEmail = function () { 123 self.IsEditingEmail(false); 124 document.getElementById("email").value = self.OriginalEmail(); 125 document.getElementById("verifyEmail").value = ""; 126 document.getElementById("email").setAttribute("disabled", "disabled"); 127 document.getElementById("verifyEmailContainer").style.display = "none"; 128 document.getElementById("editEmailBtnContainer").style.display = "block"; 129 document.getElementById("cancelEditEmailBtnContainer").style.display = "none"; 130 $("label[for='Email']").text(localizationHelper.profile.email); 131 }; 132 133 self.DeleteUser = function () { 134 var options = {}; 135 options.url = '/Account/DeleteUser'; 136 options.type = 'DELETE'; 137 options.spinner = true; 138 options.spinnerSelector = '#pills-customer'; 139 options.success = function (result) { 140 if (result.failureCustomerMessage) { 141 self.DeleteUserFailure(result.failureCustomerMessage); 142 } 143 else { 144 // navigate back to login 145 window.location.href = "/Account/Login?userDeleted=true"; 146 } 147 }; 148 options.error = function (err) { 149 self.DeleteUserFailure(localizationHelper.error.genericError); 150 }; 151 options.complete = function () { 152 $('#deleteUserModal').modal('hide'); 153 }; 154 155 ajaxHelper(options); 156 }; 157 158 self.ShowTab = function (tabName) { 159 var triggerEl = document.querySelector('.nav-pills li a[href="#pills-' + tabName + '"]'); 160 if (triggerEl) { 161 bootstrap.Tab.getInstance(triggerEl).show(); 162 } 163 self.TabSelected(tabName); 164 } 165}
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.