function Price(data){ var self = this; self.data = data; var mapping = { } ko.mapping.fromJS(data, mapping, self); }function Product(data){ var self = this; self.data = data; self.selectedPrice = ko.observable(); var mapping = { 'prices': { create: function(options) { return ko.observable(new Price(options.data)); } } } ko.mapping.fromJS(data, mapping, self); } function User(data, cart){ var self = this; self.data = data; self.hasCode = ko.observable(false); var mapping = { 'promoCode': { create: function(options) { return ko.observable(new PromoCode(options.data)); } }, 'cart': { create: function(options) { return cart } }, 'include':['contactPassword'] } self.preApproved = ko.observable(false); ko.mapping.fromJS(data, mapping, self); // self.checker = ko.computed(function(){ // console.log('Cart Update') // }) // self.check=ko.computed(function(){ // if(self.promoCode().code()){ // self.cart().promoCode(self.promoCode()) // self.hasCode(true); // } // else{ // self.hasCode(false); // } // }).extend({ deferred: true }); self.update = function(data){ ko.mapping.fromJS(JSON.parse(data), self); } self.selectedSubscription = ko.observable(false); }function PromoCode(data){ var self = this; var mapping = { } ko.mapping.fromJS(data, mapping, self); }function Option(data){ var self = this; var mapping = { } ko.mapping.fromJS(data, mapping, self); }function Cart(data) { var self = this; var mapping = { 'promoCode': { create: function(options) { return ko.observable(new PromoCode(options.data)); } }, } ko.mapping.fromJS(data, mapping, self); // self.check = ko.computed(function(){ // console.log(self.totalDiscount()); // }) self.update = function(data){ ko.mapping.fromJS(JSON.parse(data), self); } self.sendIT; self.sendDataCheck = ko.observable(); self.checkPromoCode = ko.computed(function(){ // sendUser = ko.mapping.toJS(user); async function sendData() { const response = await fetch('/_/lgc/check_code', { method: 'POST', body: JSON.stringify(ko.mapping.toJS(self.promoCode().code)) }); const responseData = await response.text(); responseSuccess = JSON.parse(responseData); if(responseSuccess.cart){ ko.mapping.fromJS(responseSuccess.cart, self); } } if(self.promoCodeCode() != self.promoCode().code()) { clearTimeout(self.sendIT); self.sendIT=setTimeout(function (){ console.log('SEND IT') sendData(); }, 1000); } }).extend({ deferred: true }); }