@@ -35,7 +35,7 @@ var AskLogic = angular.module('ask-logic', [])
3535} )
3636
3737
38- . factory ( 'AnswerStates' , function ( ) {
38+ . factory ( 'AnswerStates' , [ '$log' , function ( $log ) {
3939
4040
4141 function isSinglechoiceAnswered ( answer ) {
@@ -85,32 +85,54 @@ var AskLogic = angular.module('ask-logic', [])
8585
8686 isAnswered : function ( field , answer ) {
8787
88- if ( ! answer )
88+ if ( ! field ) {
89+ console . warn ( "tried to check answer to nonexistent field" ) ;
8990 return false ;
91+ }
92+
93+ if ( ! answer ) {
94+ $log . warn ( "tried to check undefined answer to field " + field . id )
95+ return false ;
96+ }
97+
98+ var answered = false ;
9099
91100 switch ( field . type ) {
92101
93102 case 'singlechoice' :
94- return isSinglechoiceAnswered ( answer ) ;
103+ answered = isSinglechoiceAnswered ( answer ) ;
104+ break ;
95105 case 'multichoice' :
96- return isMultichoiceAnswered ( answer ) ;
106+ answered = isMultichoiceAnswered ( answer ) ;
107+ break ;
97108 case 'numeric' :
98- return isNumericAnswered ( answer ) ;
109+ answered = isNumericAnswered ( answer ) ;
110+ break ;
99111 case 'freetext' :
100- return isFreetextAnswered ( answer ) ;
112+ answered = isFreetextAnswered ( answer ) ;
113+ break ;
101114 case 'mood' :
102- return isMoodAnswered ( answer ) ;
115+ answered = isMoodAnswered ( answer ) ;
116+ break ;
117+ default :
118+ $log . warn ( "cannot check answer of unknown field type " + field . type + " (" + field . id + ")" ) ;
119+
103120 }
104121
105- return false ;
122+ if ( answered )
123+ $log . debug ( field . id + " IS answered" ) ;
124+ else
125+ $log . debug ( field . id + " IS NOT answered" ) ;
126+
127+ return answered ;
106128 }
107129 }
108- } )
130+ } ] )
109131
110132
111133
112134
113- . factory ( 'TriggerStates' , [ 'Normalizer' , function ( Normalizer ) {
135+ . factory ( 'TriggerStates' , [ '$log' , ' Normalizer', function ( $log , Normalizer ) {
114136
115137 function isSinglechoiceTriggerFired ( trigger , answer ) {
116138
@@ -255,21 +277,36 @@ var AskLogic = angular.module('ask-logic', [])
255277
256278 isFired : function ( trigger , field , answer ) {
257279
280+ var fired = false ;
281+
258282 switch ( field . type ) {
259283
260284 case 'singlechoice' :
261- return isSinglechoiceTriggerFired ( trigger , answer ) ;
285+ fired = isSinglechoiceTriggerFired ( trigger , answer ) ;
286+ break ;
262287 case 'multichoice' :
263- return isMultichoiceTriggerFired ( trigger , answer ) ;
288+ fired = isMultichoiceTriggerFired ( trigger , answer ) ;
289+ break ;
264290 case 'numeric' :
265- return isNumericTriggerFired ( trigger , answer ) ;
291+ fired = isNumericTriggerFired ( trigger , answer ) ;
292+ break ;
266293 case 'freetext' :
267- return isFreetextTriggerFired ( trigger , answer ) ;
294+ fired = isFreetextTriggerFired ( trigger , answer ) ;
295+ break ;
268296 case 'mood' :
269- return isMoodTriggerFired ( trigger , answer ) ;
297+ fired = isMoodTriggerFired ( trigger , answer ) ;
298+ break ;
299+ default :
300+ $log . warn ( "could not identify fire state of trigger for field type " + field . type ) ;
301+ break ;
270302 }
271303
272- return false ;
304+ if ( fired )
305+ $log . debug ( "trigger " + JSON . stringify ( trigger ) + " IS fired" ) ;
306+ else
307+ $log . debug ( "trigger " + JSON . stringify ( trigger ) + " IS NOT fired" ) ;
308+
309+ return fired ;
273310 }
274311 }
275312} ] )
@@ -281,7 +318,7 @@ var AskLogic = angular.module('ask-logic', [])
281318 Each SurveyState obj is instantiated with a schema and a response object, and provides methods to track what happens to the survey state
282319 (e.g current page, visible fields, etc).
283320*/
284- . factory ( 'SurveyStates' , [ 'TriggerStates' , 'AnswerStates' , function ( TriggerStates , AnswerStates ) {
321+ . factory ( 'SurveyStates' , [ '$log' , ' TriggerStates', 'AnswerStates' , function ( $log , TriggerStates , AnswerStates ) {
285322
286323
287324 function SurveyState ( schema , response ) {
@@ -574,12 +611,17 @@ var AskLogic = angular.module('ask-logic', [])
574611
575612 SurveyState . prototype . handleAnswerChanged = function ( fieldId ) {
576613
577- //console. log("Answer changed: " + fieldId) ;
614+ $ log. debug ( "answer changed for " + fieldId ) ;
578615
579616 var field = this . fieldsById [ fieldId ] ;
580617 var answer = this . response . answers [ fieldId ] ;
581618
582- //console.log(this.response) ;
619+
620+ if ( field == undefined ) {
621+ $log . warn ( "Could not find field " + fieldId ) ;
622+ return ;
623+ }
624+
583625
584626 field . answered = AnswerStates . isAnswered ( field , answer ) ;
585627
@@ -588,7 +630,7 @@ var AskLogic = angular.module('ask-logic', [])
588630
589631 _ . each ( field . relevantTriggers , function ( trigger ) {
590632
591- //console. log(" checking trigger: " + trigger.fieldRuleIndex);
633+ $ log. debug ( " checking trigger: " + trigger . fieldRuleIndex ) ;
592634
593635 var triggerFired = TriggerStates . isFired ( trigger , field , answer ) ;
594636
@@ -603,9 +645,8 @@ var AskLogic = angular.module('ask-logic', [])
603645
604646 SurveyState . prototype . handleTriggerStateChanged = function ( trigger ) {
605647
606- //console.log("trigger state changed") ;
607- //console.log(trigger);
608-
648+ $log . debug ( "state changed for trigger: " + JSON . stringify ( trigger ) ) ;
649+
609650 var ruleType , rule ;
610651
611652 if ( trigger . fieldRuleIndex != null ) {
@@ -655,13 +696,15 @@ var AskLogic = angular.module('ask-logic', [])
655696
656697 SurveyState . prototype . handleFieldRuleStateChanged = function ( rule ) {
657698
658- //console.log("fieldRule state changed to " + rule.fired) ;
699+
700+
701+ $log . debug ( "field rule state changed to " + rule . fired ) ;
659702
660703 _ . each ( rule . actions , function ( action ) {
661704
662705 var field = this . fieldsById [ action . fieldId ] ;
663706
664- //console. log(" - handling action to " + action.action + " " + action.fieldId) ;
707+ $ log. debug ( " - handling action to " + action . action + " " + action . fieldId ) ;
665708
666709 if ( action . action == 'show' ) {
667710 if ( rule . fired )
@@ -678,23 +721,23 @@ var AskLogic = angular.module('ask-logic', [])
678721 //if a field gets hidden, wipe any answers to it
679722 if ( field . fieldRuleState == "hide" ) {
680723 if ( AnswerStates . isAnswered ( field , this . response . answers [ field . id ] ) ) {
681- //console.log("Recursively clearing answer to " + field.id) ;
724+
725+ $log . debug ( "Recursively clearing answer to " + field . id ) ;
726+
682727 this . response . answers [ field . id ] = { } ;
683728 this . handleAnswerChanged ( field . id ) ;
684729 }
685730 }
686731
687732 this . updateVisibility ( field ) ;
688733
689- //console.log(" - " + field.fieldRuleState) ;
690-
691734 } , this ) ;
692735 }
693736
694737 SurveyState . prototype . handlePageRuleStateChanged = function ( rule ) {
695738
696- //console. log(" rule state changed")
697- //console. log(rule) ;
739+ $ log. debug ( "page rule state changed to " + rule . fired ) ;
740+ $ log. debug ( rule ) ;
698741
699742 //identify earliest effected page, which is the next page after the last trigger
700743 var earliestEffectedPageIndex ;
@@ -707,8 +750,6 @@ var AskLogic = angular.module('ask-logic', [])
707750 } , this ) ;
708751 earliestEffectedPageIndex ++ ;
709752
710- //console.log("earliestEffectedPageIndex=" + earliestEffectedPageIndex) ;
711-
712753 _ . each ( rule . actions , function ( action ) {
713754
714755 switch ( action . action ) {
0 commit comments