@@ -69,20 +69,20 @@ jQuery(document).ready(
69
69
}
70
70
71
71
// Model for knockout(KO) binding
72
- function AppViewModel ( rulesList ) {
73
- var self = this ;
74
- self . rulesBindingList = ko . observableArray ( rulesList ) ;
75
- self . eventsBindingList = ko . observableArray ( [ ] ) ;
76
- self . parsedToString = function ( item ) {
77
- return JSON . stringify ( item , null , 2 ) ;
78
- } ;
72
+ function AppViewModel ( ) {
73
+ var self = this ;
74
+ self . rulesBindingList = ko . observableArray ( [ ] ) ;
75
+ self . eventsBindingList = ko . observableArray ( [ ] ) ;
76
+ self . parsedToString = function ( item ) {
77
+ return JSON . stringify ( item , null , 2 ) ;
78
+ } ;
79
79
// Removing the rule
80
- self . removeRule = function ( data , event ) {
80
+ self . removeRule = function ( data , event ) {
81
81
var context = ko . contextFor ( event . target ) ;
82
82
self . rulesBindingList . splice ( context . $index ( ) , 1 ) ;
83
83
if ( self . rulesBindingList ( ) . length == 0 ) {
84
84
window . logMessages ( "Deleted all rule types, but we need atleast one Rule type, Here add default rule type" ) ;
85
- self . rulesBindingList . push ( JSON . parse ( JSON . stringify ( ruleTemplate ) ) ) ;
85
+ self . addRule ( ruleTemplate ) ;
86
86
}
87
87
} ;
88
88
@@ -91,33 +91,28 @@ jQuery(document).ready(
91
91
var context = ko . contextFor ( event . target ) ;
92
92
self . eventsBindingList . splice ( context . $index ( ) , 1 ) ;
93
93
if ( self . eventsBindingList ( ) . length == 0 ) {
94
- self . eventsBindingList . push ( { } ) ;
95
94
window . logMessages ( "Deleted all events, but we need atleast one event." ) ;
95
+ self . addEvent ( { } ) ;
96
96
}
97
97
} ;
98
98
99
+ self . validateJSON = function ( observableArray ) {
100
+ var array = [ ] ;
101
+ ko . utils . arrayForEach ( observableArray , function ( element ) {
102
+ try {
103
+ array . push ( JSON . parse ( element . data ( ) ) ) ;
104
+ } catch ( e ) {
105
+ window . logMessages ( "Invalid json rule format :\n" + element . data ( ) ) ;
106
+ return false ;
107
+ }
108
+ } ) ;
109
+ return array ;
110
+ } ;
111
+
99
112
//This submit function for finding the aggregated object from the rules and events, This function internally call the ajax call
100
113
self . submit = function ( ) {
101
- var events = $ ( "#eventsListID" ) . val ( ) ;
102
- var formRules = [ ] ;
103
- $ ( '.formRules' ) . each ( function ( ) {
104
- try {
105
- formRules . push ( JSON . parse ( $ ( this ) . val ( ) ) ) ;
106
- } catch ( e ) {
107
- window . logMessages ( "Invalid json rule format :\n" + $ ( this ) . val ( ) ) ;
108
- return false ;
109
- }
110
- } ) ;
111
-
112
- var formEvents = [ ] ;
113
- $ ( '.formEvents' ) . each ( function ( ) {
114
- try {
115
- formEvents . push ( JSON . parse ( $ ( this ) . val ( ) ) ) ;
116
- } catch ( e ) {
117
- window . logMessages ( "Invalid json event format :\n" + $ ( this ) . val ( ) ) ;
118
- return false ;
119
- }
120
- } ) ;
114
+ var rules = self . validateJSON ( self . rulesBindingList ( ) ) ;
115
+ var events = self . validateJSON ( self . eventsBindingList ( ) ) ;
121
116
122
117
var callback = {
123
118
beforeSend : function ( ) {
@@ -153,27 +148,26 @@ jQuery(document).ready(
153
148
154
149
var ajaxHttpSender = new AjaxHttpSender ( ) ;
155
150
ajaxHttpSender . sendAjax ( frontendServiceUrl + "/rules/rule-check/aggregation" , "POST" , JSON . stringify ( JSON . parse ( '{"listRulesJson":'
156
- + JSON . stringify ( formRules ) + ',"listEventsJson":' + JSON . stringify ( formEvents ) + '}' ) ) , callback ) ;
151
+ + JSON . stringify ( rules ) + ',"listEventsJson":' + JSON . stringify ( events ) + '}' ) ) , callback ) ;
157
152
} ;
158
153
159
154
// This function for adding rule
160
- self . addRule = function ( ) {
161
- self . rulesBindingList . push ( JSON . parse ( JSON . stringify ( ruleTemplate ) ) ) ;
155
+ self . addRule = function ( data ) {
156
+ self . rulesBindingList . push ( { 'data' : ko . observable ( self . parsedToString ( data ) ) } ) ;
162
157
} ;
163
158
// This function for adding rule
164
- self . addEvent = function ( ) {
165
- self . eventsBindingList . push ( { } ) ;
159
+ self . addEvent = function ( data ) {
160
+ self . eventsBindingList . push ( { 'data' : ko . observable ( self . parsedToString ( data ) ) } ) ;
166
161
} ;
167
162
return self ;
168
163
}
169
164
170
- var vm = new AppViewModel ( [ ] ) ;
165
+ var vm = new AppViewModel ( ) ;
171
166
ko . applyBindings ( vm , $ ( "#submitButton" ) [ 0 ] ) ;
172
- vm . rulesBindingList . push ( JSON . parse ( JSON . stringify ( ruleTemplate ) ) ) ;
173
- vm . eventsBindingList . push ( { } ) ;
174
-
175
167
ko . applyBindings ( vm , $ ( "#testRulesDOMObject" ) [ 0 ] ) ;
176
168
ko . applyBindings ( vm , $ ( "#testEventsDOMObject" ) [ 0 ] ) ;
169
+ vm . addRule ( ruleTemplate ) ;
170
+ vm . addEvent ( { } ) ;
177
171
178
172
function validateJSONAndUpload ( subscriptionFile , isRules ) {
179
173
var reader = new FileReader ( ) ;
@@ -190,17 +184,19 @@ jQuery(document).ready(
190
184
sticky : false ,
191
185
theme : 'Notify'
192
186
} ) ;
193
-
187
+
194
188
var list = JSON . parse ( fileContent ) ;
195
-
196
189
if ( isRules == true ) {
197
190
vm . rulesBindingList ( [ ] ) ;
198
- vm . rulesBindingList ( list ) ;
191
+ list . forEach ( function ( element ) {
192
+ vm . addRule ( element ) ;
193
+ } ) ;
199
194
} else {
200
195
vm . eventsBindingList ( [ ] ) ;
201
- vm . eventsBindingList ( list ) ;
196
+ list . forEach ( function ( element ) {
197
+ vm . addEvent ( element ) ;
198
+ } ) ;
202
199
}
203
-
204
200
} ;
205
201
206
202
if ( subscriptionFile != null ) {
0 commit comments