@@ -632,6 +632,27 @@ describe('Test colorscale:', function() {
632
632
expect ( trace . autocolorscale ) . toBe ( true ) ;
633
633
expect ( trace . colorscale ) . toEqual ( colorscale ) ;
634
634
} ) ;
635
+
636
+ it ( 'should compute min/max across trace linked to same color axis' , function ( ) {
637
+ gd = _supply ( [
638
+ { type : 'heatmap' , z : [ [ 1 , 3 , 4 ] , [ 2 , 3 , 1 ] ] , coloraxis : 'coloraxis' } ,
639
+ { y : [ 1 , 3 , 1 ] , marker : { color : [ 3 , 4 , - 2 ] , coloraxis : 'coloraxis' } } ,
640
+ ] ) ;
641
+
642
+ Plots . doCalcdata ( gd ) ;
643
+
644
+ var fullData = gd . _fullData ;
645
+ expect ( fullData [ 0 ] . zmin ) . toBe ( undefined ) ;
646
+ expect ( fullData [ 0 ] . zmax ) . toBe ( undefined ) ;
647
+ expect ( fullData [ 1 ] . marker . cmin ) . toBe ( undefined ) ;
648
+ expect ( fullData [ 1 ] . marker . cmax ) . toBe ( undefined ) ;
649
+
650
+ var fullLayout = gd . _fullLayout ;
651
+ expect ( fullLayout . coloraxis . cmin ) . toBe ( - 2 ) ;
652
+ expect ( fullLayout . coloraxis . _cmin ) . toBe ( - 2 ) ;
653
+ expect ( fullLayout . coloraxis . cmax ) . toBe ( 4 ) ;
654
+ expect ( fullLayout . coloraxis . _cmax ) . toBe ( 4 ) ;
655
+ } ) ;
635
656
} ) ;
636
657
637
658
describe ( 'extractScale + makeColorScaleFunc' , function ( ) {
@@ -686,6 +707,29 @@ describe('Test colorscale:', function() {
686
707
expect ( color3 ) . toEqual ( color4 ) ;
687
708
expect ( color4 ) . toEqual ( 'rgb(5, 10, 172)' ) ;
688
709
} ) ;
710
+
711
+ it ( 'should extract coloraxis options, if present' , function ( ) {
712
+ var trace = {
713
+ _colorAx : {
714
+ colorscale : scale ,
715
+ cmin : 2 ,
716
+ cmax : 3
717
+ }
718
+ } ;
719
+
720
+ var specs = Colorscale . extractScale ( trace ) ;
721
+ var sclFunc = Colorscale . makeColorScaleFunc ( specs ) ;
722
+
723
+ var color1 = sclFunc ( 1 ) ;
724
+ var color2 = sclFunc ( 2 ) ;
725
+ var color3 = sclFunc ( 3 ) ;
726
+ var color4 = sclFunc ( 4 ) ;
727
+
728
+ expect ( color1 ) . toEqual ( color2 ) ;
729
+ expect ( color1 ) . toEqual ( 'rgb(5, 10, 172)' ) ;
730
+ expect ( color3 ) . toEqual ( color4 ) ;
731
+ expect ( color4 ) . toEqual ( 'rgb(178, 10, 28)' ) ;
732
+ } ) ;
689
733
} ) ;
690
734
} ) ;
691
735
@@ -977,6 +1021,86 @@ describe('Test colorscale restyle calls:', function() {
977
1021
. then ( done ) ;
978
1022
} ) ;
979
1023
1024
+ it ( 'should be able to toggle between autocolorscale true/false and set colorscales (coloraxis case)' , function ( done ) {
1025
+ function _assert ( msg , exp ) {
1026
+ var mcc = [ ] ;
1027
+ d3 . selectAll ( 'path.point' ) . each ( function ( ) { mcc . push ( getFill ( this ) ) ; } ) ;
1028
+ expect ( mcc ) . toEqual ( exp . mcc ) ;
1029
+
1030
+ expect ( gd . _fullLayout . coloraxis . colorscale ) . toEqual ( exp . colorscale ) ;
1031
+ expect ( gd . _fullLayout . coloraxis . autocolorscale ) . toBe ( exp . autocolorscale , msg ) ;
1032
+ expect ( ( gd . layout . coloraxis || { } ) . colorscale ) . toEqual ( exp . colorscaleIn ) ;
1033
+ expect ( ( gd . layout . coloraxis || { } ) . autocolorscale ) . toBe ( exp . autocolorscaleIn , msg ) ;
1034
+ }
1035
+
1036
+ // update via, assert then assert again (and again ;) after non-calc edits
1037
+ function _run ( msg , updateObj , exp ) {
1038
+ return Plotly . relayout ( gd , updateObj )
1039
+ . then ( function ( ) { _assert ( msg , exp ) ; } )
1040
+ . then ( function ( ) { return Plotly . relayout ( gd , 'xaxis.range' , [ - 1 , 5 ] ) ; } )
1041
+ . then ( function ( ) { _assert ( msg + ' after axrange relayout' , exp ) ; } )
1042
+ . then ( function ( ) { return Plotly . relayout ( gd , 'xaxis.autorange' , true ) ; } )
1043
+ . then ( function ( ) { _assert ( msg + ' after autorange' , exp ) ; } )
1044
+ . then ( function ( ) { return Plotly . restyle ( gd , 'marker.symbol' , 'square' ) ; } )
1045
+ . then ( function ( ) { _assert ( msg + ' after marker.symbol restyle' , exp ) ; } )
1046
+ . then ( function ( ) { return Plotly . restyle ( gd , 'marker.symbol' , null ) ; } )
1047
+ . then ( function ( ) { _assert ( msg + ' back to original marker.symbol' , exp ) ; } ) ;
1048
+ }
1049
+
1050
+ var rdbu = [ 'rgb(5, 10, 172)' , 'rgb(53, 70, 208)' , 'rgb(227, 153, 104)' ,
1051
+ 'rgb(53, 70, 208)' , 'rgb(53, 70, 208)' , 'rgb(178, 10, 28)' ] ;
1052
+ var grns = [ 'rgb(0, 68, 27)' , 'rgb(12, 119, 52)' , 'rgb(174, 222, 167)' ,
1053
+ 'rgb(12, 119, 52)' , 'rgb(12, 119, 52)' , 'rgb(247, 252, 245)' ] ;
1054
+
1055
+ Plotly . plot ( gd , [ {
1056
+ mode : 'markers' ,
1057
+ y : [ 1 , 2 , 3 ] ,
1058
+ marker : { color : [ - 1 , 0 , 3 ] , coloraxis : 'coloraxis' }
1059
+ } , {
1060
+ mode : 'markers' ,
1061
+ y : [ 2 , 3 , 4 ] ,
1062
+ marker : { color : [ 0 , 0 , 5 ] , coloraxis : 'coloraxis' }
1063
+ } ] )
1064
+ . then ( function ( ) {
1065
+ _assert ( 'base (autocolorscale:true by dflt)' , {
1066
+ mcc : rdbu ,
1067
+ autocolorscale : true ,
1068
+ autocolorscaleIn : undefined ,
1069
+ colorscale : Colorscale . scales . RdBu ,
1070
+ colorscaleIn : undefined
1071
+ } ) ;
1072
+ } )
1073
+ . then ( function ( ) {
1074
+ return _run ( 'set *Greens* colorscale' , { 'coloraxis.colorscale' : 'Greens' } , {
1075
+ mcc : grns ,
1076
+ autocolorscale : false ,
1077
+ autocolorscaleIn : false ,
1078
+ colorscale : Colorscale . scales . Greens ,
1079
+ colorscaleIn : 'Greens'
1080
+ } ) ;
1081
+ } )
1082
+ . then ( function ( ) {
1083
+ return _run ( 'back to autocolorscale:true' , { 'coloraxis.autocolorscale' : true } , {
1084
+ mcc : rdbu ,
1085
+ autocolorscale : true ,
1086
+ autocolorscaleIn : true ,
1087
+ colorscale : Colorscale . scales . RdBu ,
1088
+ colorscaleIn : 'Greens'
1089
+ } ) ;
1090
+ } )
1091
+ . then ( function ( ) {
1092
+ return _run ( 'back to autocolorscale:false w/ colorscale set' , { 'coloraxis.autocolorscale' : false } , {
1093
+ mcc : grns ,
1094
+ autocolorscale : false ,
1095
+ autocolorscaleIn : false ,
1096
+ colorscale : Colorscale . scales . Greens ,
1097
+ colorscaleIn : 'Greens'
1098
+ } ) ;
1099
+ } )
1100
+ . catch ( failTest )
1101
+ . then ( done ) ;
1102
+ } ) ;
1103
+
980
1104
it ( 'should work with templates' , function ( done ) {
981
1105
function _assert ( msg , exp ) {
982
1106
var mcc = [ ] ;
0 commit comments