@@ -16,8 +16,25 @@ function update_knob(element, data) {
1616 }
1717}
1818
19+ function addCheckIcon ( $element ) {
20+ var icon = '<i class="fa fa-check-circle"></i>' ;
21+ $element . empty ( )
22+ . append ( icon ) ;
23+ }
24+
25+
1926function DoneXBlock ( runtime , element , data ) {
20- $ ( '.done_onoffswitch-checkbox' , element ) . prop ( "checked" , data . state ) ;
27+ // Updating the xblock state every time it's initialized.
28+ $ . ajax ( {
29+ url : runtime . handlerUrl ( element , 'get_state' ) ,
30+ method : 'GET' ,
31+ success : function ( data ) {
32+ $ ( '.done_onoffswitch-checkbox' , element ) . prop ( "checked" , data . state ) ;
33+ if ( data . helpful != null ) {
34+ $ ( '.done-radio input[value="' + data . helpful + '"]' , element ) . prop ( 'checked' , true ) ;
35+ }
36+ }
37+ } ) ;
2138
2239 if ( data . align != "right" ) {
2340 $ ( '.done_right_spacer' , element ) . addClass ( "done_grow" ) ;
@@ -32,22 +49,30 @@ function DoneXBlock(runtime, element, data) {
3249 $ ( function ( $ ) {
3350 $ ( '.done_onoffswitch' , element ) . addClass ( "done_animated" ) ;
3451 $ ( '.done_onoffswitch-checkbox' , element ) . change ( function ( ) {
35- var checked = $ ( '.done_onoffswitch-checkbox' , element ) . prop ( "checked" ) ;
52+ var isChecked = $ ( '.done_onoffswitch-checkbox' , element ) . prop ( "checked" ) ;
3653 $ . ajax ( {
37- type : "POST" ,
38- url : handlerUrl ,
39- data : JSON . stringify ( { 'done' :checked } )
54+ type : "POST" ,
55+ url : handlerUrl ,
56+ data : JSON . stringify ( { 'done' :isChecked } ) ,
57+ success : function ( ) {
58+ var $element = $ ( '.menu-item.active .accordion-nav .icon-container' ) ;
59+ isChecked ? addCheckIcon ( $element ) : $element . empty ( ) ;
60+ }
4061 } ) ;
41- Logger . log ( "edx.done.toggled" , { 'done' : checked } ) ;
62+ Logger . log ( "edx.done.toggled" , { 'done' : isChecked } ) ;
4263 update_knob ( element , data ) ;
4364 } ) ;
4465 $ ( '.done-radio input[type=radio]' ) . on ( 'change' , function ( event ) {
45- var checked = event . target . checked ;
46- if ( checked ) {
66+ var isChecked = event . target . checked ;
67+ if ( isChecked ) {
4768 $ . ajax ( {
4869 type : "POST" ,
4970 url : handlerUrl ,
50- data : JSON . stringify ( { 'helpful' : event . target . value } )
71+ data : JSON . stringify ( { 'helpful' : event . target . value } ) ,
72+ success : function ( ) {
73+ var $element = $ ( '.accordion-unit.active .icon-container' ) ;
74+ addCheckIcon ( $element ) ;
75+ }
5176 } ) ;
5277 }
5378 } ) ;
0 commit comments