in src/Feature/Cart/code/Scripts/ViewModels/addresses_VM.js [54:165]
function AddressListViewModel(data) {
var self = this;
self.addresses = ko.observableArray();
$.each(data.Addresses, function () {
self.addresses.push(new AddressViewModel(this));
});
self.isNotEmpty = ko.observable(self.addresses().length !== 0);
self.isEmpty = ko.observable(self.addresses().length === 0);
self.enableDelete = ko.observable(false);
self.enableSave = ko.observable(true);
self.countries = ko.observableArray();
if (data.Countries != null) {
$.each(data.Countries, function (code, name) {
self.countries.push(new CountryStateViewModel(name, code));
});
}
self.address = ko.validatedObservable(new AddressViewModel());
self.selectedAddress = ko.observable();
self.selectedAddress.subscribe(function (externalId) {
var address = ko.utils.arrayFirst(this.addresses(), function (a) {
if (a.externalId() === externalId) {
return a;
}
return null;
});
ClearGlobalMessages();
if (address != null) {
self.address(address);
self.enableDelete(true);
} else {
self.address(new AddressViewModel());
self.enableDelete(false);
}
}.bind(this));
var addressId = getUrlParameter(document.URL, 'id');
if (addressId != null) {
self.selectedAddress(addressId);
}
self.reload = function (data) {
if (data.Addresses != null) {
self.addresses.removeAll();
$.each(data.Addresses, function () {
self.addresses.push(new AddressViewModel(this));
});
}
if (data.Countries != null && data.Countries.length > 0) {
self.countries.removeAll();
$.each(data.Countries, function (code, name) {
self.countries.push(new CountryStateViewModel(name, code));
});
}
self.selectedAddress("");
self.address(new AddressViewModel());
self.isNotEmpty(self.addresses().length !== 0);
self.isEmpty(self.addresses().length === 0);
self.enableDelete(false);
self.enableSave(true);
$("#cancelChanges").removeAttr("disabled");
}
self.saveAddress = function () {
ClearGlobalMessages();
if (self.address.errors().length === 0) {
states('saveAddress', 'loading');
$("#cancelChanges").attr("disabled", "disabled");
self.enableDelete(false);
var address = ko.toJSON(self.address);
AJAXPost(StorefrontUri('api/sitecore/account/addressmodify'), address, function (data, success, sender) {
if (success && data.Success) {
self.reload(data);
}
ShowGlobalMessages(data);
$('#saveAddress').button('reset');
}, this);
} else {
$('#addressBook-Name').focus();
self.address.errors.showAllMessages();
}
}
self.deleteAddress = function () {
ClearGlobalMessages();
$("#deleteAddress").prop("disabled", true);
$("#deleteAddress").html($("#deleteAddress").attr("data-loading-text"));
self.enableSave(false);
$("#cancelChanges").attr("disabled", "disabled");
AJAXPost(StorefrontUri('api/sitecore/account/addressdelete'), '{ "ExternalId": "' + self.address().externalId() + '"}', function (data, success, sender) {
if (success && data.Success) {
self.reload(data);
}
ShowGlobalMessages(data);
$("#deleteAddress").prop("disabled", true);
$("#deleteAddress").html($("#deleteAddress").attr("data-text"));
}, this);
}
self.showLoader = ko.observable(true);
}