File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 870870 var removedTabs = [ ] ;
871871 var tabFilter = options . tabFilter ;
872872 var context = options . context ? options . context : { } ;
873+ var updateContext = $detailView . data ( 'view-args' ) . updateContext ;
874+
875+ if ( updateContext ) {
876+ $ . extend ( $detailView . data ( 'view-args' ) . context , updateContext ( {
877+ context : $detailView . data ( 'view-args' ) . context
878+ } ) ) ;
879+ }
873880
874881 if ( options . newData &&
875882 ( $detailView . data ( 'view-args' ) . section != null && context [ $detailView . data ( 'view-args' ) . section ] != null && context [ $detailView . data ( 'view-args' ) . section ] . length > 0 ) ) {
Original file line number Diff line number Diff line change 743743 } ;
744744 $detailView . find ( '.action.updateDataTestAsync a' ) . click ( ) ;
745745 } ) ;
746+
747+ test ( 'Update context' , function ( ) {
748+ var detailView = {
749+ context : {
750+ listViewItemA : [
751+ { fieldA : 'fieldAContent' }
752+ ]
753+ // listViewItemB [not stored yet]
754+ } ,
755+
756+ tabFilter : function ( args ) {
757+ start ( ) ;
758+ ok ( $ . isArray ( args . context . listViewItemB ) , 'updateContext called before tabFilter' ) ;
759+ stop ( ) ;
760+
761+ return [ ] ;
762+ } ,
763+
764+ // updateContext is executed every time a data provider is called
765+ updateContext : function ( args ) {
766+ start ( ) ;
767+ ok ( true , 'updateContext called' ) ;
768+ equal ( args . context . listViewItemA [ 0 ] . fieldA , 'fieldAContent' , 'updateContext: Item A present in context' ) ;
769+ stop ( ) ;
770+
771+ return {
772+ listViewItemB : [
773+ { fieldB : 'fieldBContent' }
774+ ]
775+ } ;
776+ } ,
777+
778+ tabs : {
779+ test : {
780+ title : 'test' ,
781+ fields : { fieldA : { label : 'fieldA' } , fieldB : { label : 'fieldB' } } ,
782+ dataProvider : function ( args ) {
783+ start ( ) ;
784+ equal ( args . context . listViewItemA [ 0 ] . fieldA , 'fieldAContent' , 'dataProvider: Item A present in context' ) ;
785+ equal ( args . context . listViewItemB [ 0 ] . fieldB , 'fieldBContent' , 'dataProvider: Item B present in context' ) ;
786+ }
787+ }
788+ }
789+ } ;
790+ var $detailView = $ ( '<div></div>' ) ;
791+
792+ stop ( ) ;
793+ $detailView . detailView ( detailView ) ;
794+ } ) ;
746795} ( jQuery ) ) ;
You can’t perform that action at this time.
0 commit comments