@@ -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 ( 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,28 +148,37 @@ 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 ( 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
172
+ function isContentModified ( observableArray , check ) {
173
+ isModified = false ;
174
+ ko . utils . arrayForEach ( observableArray , function ( element ) {
175
+ if ( element . data ( ) != vm . parsedToString ( check ) ) {
176
+ isModified = true ;
177
+ }
178
+ } ) ;
179
+ return isModified ;
180
+ }
181
+
178
182
function validateRulesJsonAndCreateSubscriptions ( subscriptionFile ) {
179
183
var reader = new FileReader ( ) ;
180
184
reader . onload = function ( ) {
@@ -191,17 +195,14 @@ jQuery(document).ready(
191
195
theme : 'Notify'
192
196
} ) ;
193
197
194
- var rulesList = JSON . parse ( fileContent ) ;
195
- ko . cleanNode ( $ ( "#testRulesDOMObject" ) [ 0 ] ) ;
196
- ko . cleanNode ( $ ( "#submitButton" ) [ 0 ] ) ;
197
- $ ( "#testRulesDOMObject" ) . css ( 'min-height' , $ ( ".navbar-sidenav" ) . height ( ) - 180 ) ;
198
- vm . rulesBindingList . removeAll ( ) ;
199
- $ ( '.rulesListDisplay > div:gt(0)' ) . remove ( ) ;
200
- vm . rulesBindingList = ko . observableArray ( rulesList ) ;
201
- ko . applyBindings ( vm , $ ( "#testRulesDOMObject" ) [ 0 ] ) ;
202
- ko . applyBindings ( vm , $ ( "#submitButton" ) [ 0 ] ) ;
203
- closeTooltip ( ) ;
204
- loadTooltip ( ) ;
198
+ var list = JSON . parse ( fileContent ) ;
199
+ var isModified = isContentModified ( vm . rulesBindingList ( ) , ruleTemplate ) ;
200
+ if ( isModified == false ) {
201
+ vm . rulesBindingList ( [ ] ) ;
202
+ }
203
+ list . forEach ( function ( element ) {
204
+ vm . addRule ( element ) ;
205
+ } ) ;
205
206
} ;
206
207
reader . readAsText ( subscriptionFile ) ;
207
208
}
@@ -221,14 +222,15 @@ jQuery(document).ready(
221
222
sticky : false ,
222
223
theme : 'Notify'
223
224
} ) ;
224
- var eventsList = JSON . parse ( fileContent ) ;
225
- ko . cleanNode ( $ ( "#testEventsDOMObject" ) [ 0 ] ) ;
226
- vm . eventsBindingList . removeAll ( ) ;
227
- $ ( '.eventsListDisplay > div:gt(0)' ) . remove ( ) ;
228
- vm . eventsBindingList = ko . observableArray ( eventsList ) ;
229
- ko . applyBindings ( vm , $ ( "#testEventsDOMObject" ) [ 0 ] ) ;
230
- closeTooltip ( ) ;
231
- loadTooltip ( ) ;
225
+
226
+ var list = JSON . parse ( fileContent ) ;
227
+ var isModified = isContentModified ( vm . eventsBindingList ( ) , { } ) ;
228
+ if ( isModified == false ) {
229
+ vm . eventsBindingList ( [ ] ) ;
230
+ }
231
+ list . forEach ( function ( element ) {
232
+ vm . addEvent ( element ) ;
233
+ } ) ;
232
234
} ;
233
235
reader . readAsText ( subscriptionFile ) ;
234
236
}
0 commit comments