@@ -20,6 +20,8 @@ define([
20
20
allData : '${ $.provider }:data'
21
21
}
22
22
} ,
23
+ basePrice : ko . observable ( ) ,
24
+ options : ko . observableArray ( ) ,
23
25
calculatedPrice : ko . observable ( ) ,
24
26
calculatedSize : ko . observable ( ) ,
25
27
@@ -35,10 +37,10 @@ define([
35
37
} ,
36
38
37
39
selectedUsageOptionsChanged : function ( changed ) {
38
- var price = this . allData . price ;
40
+ var price = this . basePrice ( ) ;
39
41
var size_id = this . allData . size_id ;
40
- for ( var index in this . allData . usage . options ) {
41
- if ( this . allData . usage . options [ index ] . type !== 'drop_down' ) {
42
+ for ( var index in this . options ( ) ) {
43
+ if ( this . options ( ) [ index ] . type !== 'drop_down' ) {
42
44
continue
43
45
}
44
46
var selectedOption = this . selectedUsageOptions [ index ] ( )
@@ -60,14 +62,26 @@ define([
60
62
} ,
61
63
62
64
dataChanged : function ( data ) {
63
- if ( ! this . selectedUsageOptions || ! data . usage || ! data . usage . options ) {
65
+ if ( ! this . selectedUsageOptions || ! data || ! data . usage || ! data . usage . options ) {
64
66
return ;
65
67
}
66
68
for ( var i = this . selectedUsageOptions . length ; i < data . usage . options . length ; i ++ ) {
67
69
var ob = ko . observable ( ) ;
68
70
ob . subscribe ( this . selectedUsageOptionsChanged . bind ( this ) ) ;
69
71
this . selectedUsageOptions . push ( ob )
70
72
}
73
+ this . basePrice ( data . price ) ;
74
+ var currentOptions = this . options ( ) ;
75
+ for ( var i = 0 ; i < data . usage . options . length ; i ++ ) {
76
+ if ( currentOptions [ i ] ) {
77
+ if ( _ ( currentOptions [ i ] ) . isEqual ( data . usage . options [ i ] ) ) {
78
+ continue ;
79
+ }
80
+ this . options . splice ( i , 1 , data . usage . options [ i ] ) ;
81
+ } else {
82
+ this . options . push ( data . usage . options [ i ] ) ;
83
+ }
84
+ }
71
85
} ,
72
86
73
87
/**
0 commit comments