8
8
'jquery' ,
9
9
'Magento_Customer/js/customer-data' ,
10
10
'mage/url' ,
11
+ 'mage/template' ,
12
+ 'underscore' ,
11
13
'jquery/ui' ,
12
14
'mage/translate'
13
15
] , function (
@@ -16,12 +18,16 @@ define(
16
18
confirm ,
17
19
$ ,
18
20
customerData ,
19
- urlBuilder
21
+ urlBuilder ,
22
+ mageTemplate ,
23
+ _
20
24
) {
21
25
'use strict' ;
22
26
23
27
return Component . extend ( {
24
28
showButton : ko . observable ( false ) ,
29
+ currentCard : ko . observable ( null ) ,
30
+ currentShipping : ko . observable ( null ) ,
25
31
defaults : {
26
32
template : 'Magento_OneTouchOrdering/one-touch-order' ,
27
33
buttonText : $ . mage . __ ( 'One Touch Ordering' )
@@ -31,7 +37,16 @@ define(
31
37
formSelector : '#product_addtocart_form' ,
32
38
addresses : ko . observable ( [ ] ) ,
33
39
cards : ko . observable ( [ ] ) ,
34
- defaultAddress : ko . observable ( 0 )
40
+ selectAddressAvailable : ko . observable ( false ) ,
41
+ defaultBilling : ko . observable ( 0 ) ,
42
+ defaultShipping : ko . observable ( 0 ) ,
43
+ confirmTemplate : '<p class="message"><%- data.message %></p>' +
44
+ '<strong>' + $ . mage . __ ( 'Shipping Address' ) + ':</strong>' +
45
+ '<p><%- data.shippingAddress %></p>' +
46
+ '<strong>' + $ . mage . __ ( 'Billing Address' ) + ':</strong>' +
47
+ '<p><%- data.billingAddress %></p>' +
48
+ '<strong>' + $ . mage . __ ( 'Credit Card' ) + ':</strong>\n' +
49
+ '<p><%- data.creditCard %></p>'
35
50
} ,
36
51
37
52
/** @inheritdoc */
@@ -42,32 +57,61 @@ define(
42
57
$ . get ( urlBuilder . build ( 'onetouchorder/button/available' ) ) . done ( function ( data ) {
43
58
if ( typeof data . available !== 'undefined' ) {
44
59
self . showButton ( data . available ) ;
45
- }
46
-
47
- if ( typeof data . addresses !== 'undefined' && typeof data . defaultAddress !== 'undefined' ) {
48
- self . options . addresses ( data . addresses ) ;
49
- self . options . defaultAddress ( data . defaultAddress ) ;
50
- }
51
-
52
- if ( typeof data . cards !== 'undefined' ) {
53
60
self . options . cards ( data . cards ) ;
61
+ self . currentCard ( _ . first ( data . cards ) [ 'card' ] ) ;
62
+ self . options . addresses ( data . addresses ) ;
63
+ self . options . defaultShipping ( data . defaultShipping ) ;
64
+ self . options . selectAddressAvailable ( data . selectAddressAvailable ) ;
65
+ self . options . defaultBilling (
66
+ _ . find ( data . addresses , function ( obj ) { return obj . id === data . defaultBilling } ) [ 'address' ]
67
+ ) ;
68
+ self . currentShipping (
69
+ _ . find ( data . addresses , function ( obj ) { return obj . id === data . defaultShipping } ) [ 'address' ]
70
+ ) ;
54
71
}
55
72
} ) ;
56
73
} ,
57
74
75
+ /**
76
+ * Change shipping method
77
+ */
78
+ changeShipping : function ( object , event ) {
79
+ this . currentShipping (
80
+ _ . find ( this . options . addresses ( ) , function ( obj ) { return obj . id === event . target . value } ) [ 'address' ]
81
+ ) ;
82
+ } ,
83
+
84
+ /**
85
+ * Change credit card method
86
+ */
87
+ changeCc : function ( object , event ) {
88
+ this . currentCard (
89
+ _ . find ( this . options . cards ( ) , function ( obj ) { return obj . id === event . target . value } ) [ 'card' ]
90
+ ) ;
91
+ } ,
92
+
58
93
/**
59
94
* Confirmation method
60
95
*/
61
96
oneTouchOrder : function ( ) {
62
97
var self = this ,
63
- form = $ ( self . options . formSelector ) ;
98
+ form = $ ( self . options . formSelector ) ,
99
+ confirmTemplate = mageTemplate ( this . options . confirmTemplate ) ;
64
100
65
101
if ( ! ( form . validation ( ) && form . validation ( 'isValid' ) ) ) {
66
102
return ;
67
103
}
68
-
69
104
confirm ( {
70
- content : self . options . message ,
105
+ content : confirmTemplate (
106
+ {
107
+ data : {
108
+ message : self . options . message ,
109
+ shippingAddress : self . currentShipping ( ) ,
110
+ billingAddress : self . options . defaultBilling ( ) ,
111
+ creditCard : self . currentCard ( )
112
+ }
113
+ }
114
+ ) ,
71
115
actions : {
72
116
/** @inheritdoc */
73
117
confirm : function ( ) {
0 commit comments