@@ -192,6 +192,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
192
192
that . hide ( ) ;
193
193
that . options . onSkipClick ( ) ;
194
194
} ) ;
195
+
195
196
that . $next_btn = $ ( "<div>" , { class : that . cl . next_btn } )
196
197
. appendTo ( that . enjoyhint )
197
198
. html ( "Next" )
@@ -243,7 +244,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
243
244
this . attrs . height ,
244
245
this . attrs . radius
245
246
) ;
246
- ctx . fillStyle = "red" ;
247
+
247
248
ctx . fill ( ) ;
248
249
249
250
ctx . globalCompositeOperation = def_comp ;
@@ -624,7 +625,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
624
625
var label_left = label . offset ( ) . left ;
625
626
var label_right = label . offset ( ) . left + label_w ;
626
627
var label_top = label . offset ( ) . top - $ ( document ) . scrollTop ( ) ;
627
- var label_bottom = label . offset ( ) . top + label_h ;
628
+ var label_bottom = label . offset ( ) . top - $ ( document ) . scrollTop ( ) + label_h ;
628
629
629
630
var margin = 10 ;
630
631
@@ -908,9 +909,28 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
908
909
var bottom_offset = body_size . h - ( data . center_y + half_h ) ;
909
910
var left_offset = data . center_x - half_w ;
910
911
var right_offset = body_size . w - ( data . center_x + half_w ) ;
912
+
913
+ var label_hor_side ;
914
+ // find out the biggest side for showing hint
915
+ var offsetsObj = {
916
+ 'top_offset' : top_offset ,
917
+ 'bottom_offset' : bottom_offset ,
918
+ 'right_offset' : right_offset ,
919
+ 'left_offset' : left_offset
920
+ } ;
921
+ var sortedOffsets = [ ] ;
922
+
923
+ for ( var offset in offsetsObj ) {
924
+ sortedOffsets . push ( [ offset , offsetsObj [ offset ] ] )
925
+ }
926
+ sortedOffsets . sort ( function ( a , b ) {
927
+ return a [ 1 ] - b [ 1 ]
928
+ } ) ;
929
+
930
+ ( sortedOffsets [ 3 ] [ 0 ] === 'bottom_offset' || sortedOffsets [ 3 ] [ 0 ] === 'top_offset' ) ?
931
+ label_hor_side = 'center' : ( sortedOffsets [ 3 ] [ 0 ] === 'right_offset' ) ?
932
+ label_hor_side = 'right' : label_hor_side = 'left' ;
911
933
912
- var label_hor_side =
913
- body_size . w - data . center_x < data . center_x ? "left" : "right" ;
914
934
var label_ver_side =
915
935
body_size . h - data . center_y < data . center_y ? "top" : "bottom" ;
916
936
var label_shift = 150 ;
@@ -922,12 +942,57 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
922
942
var label_hor_offset = half_w + label_shift ;
923
943
var label_ver_offset = half_h + label_shift ;
924
944
925
- //original: var label_x = (label_hor_side == 'left') ? data.center_x - label_hor_offset - label_width : data.center_x + label_hor_offset;
926
945
var label_y =
927
946
label_ver_side == "top"
928
947
? data . center_y - label_ver_offset - label_height
929
948
: data . center_y + label_ver_offset ;
930
- var label_x = window . innerWidth / 2 - label_width / 2 ;
949
+
950
+ var label_x ;
951
+ // if hint body bigger than available space change hint styles and label position
952
+ function changeHintStyles ( ) {
953
+ setTimeout ( function ( ) {
954
+ $ ( '.enjoy_hint_label' ) . css ( {
955
+ 'border-radius' : '40px' ,
956
+ '-webkit-border-radius' : '40px' ,
957
+ '-moz-border-radius' : '40px' ,
958
+ 'background-color' : '#272A26' ,
959
+ '-webkit-transition' : 'background-color ease-out 0.5s' ,
960
+ '-moz-transition' : 'background-color ease-out 0.5s' ,
961
+ '-o-transition' : 'background-color ease-out 0.5s' ,
962
+ 'transition' : 'background-color ease-out 0.5s'
963
+ } )
964
+ } , 500 )
965
+ label_x = window . innerWidth / 2 - label_width / 2
966
+ }
967
+
968
+ if ( label_hor_side === 'center' ) {
969
+ if ( sortedOffsets [ 3 ] [ 1 ] <= label_shift_with_label_height ) {
970
+ changeHintStyles ( ) ;
971
+ }
972
+ else {
973
+ label_x = window . innerWidth / 2 - label_width / 2
974
+ }
975
+ }
976
+ else if ( label_hor_side === 'left' ) {
977
+ if ( sortedOffsets [ 3 ] [ 1 ] <= label_width + label_margin ) {
978
+ changeHintStyles ( ) ;
979
+ }
980
+ else {
981
+ data . width ?
982
+ label_x = data . center_x - label_width - data . width / 2 - 20 :
983
+ label_x = data . center_x - label_width - data . radius / 2 - 20 ;
984
+ }
985
+ }
986
+ else {
987
+ if ( sortedOffsets [ 3 ] [ 1 ] <= label_width + label_margin ) {
988
+ changeHintStyles ( ) ;
989
+ }
990
+ else {
991
+ data . width ?
992
+ label_x = data . center_x + data . width / 2 + 20 :
993
+ label_x = data . center_x + data . radius / 2 + 20 ;
994
+ }
995
+ }
931
996
932
997
if (
933
998
top_offset < label_shift_with_label_height &&
@@ -946,7 +1011,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
946
1011
} ) ;
947
1012
948
1013
setTimeout ( function ( ) {
949
- var summoryButtonWidth = that . $next_btn . width ( ) + that . $skip_btn . width ( ) + 10 ;
1014
+ var summoryButtonWidth = that . $next_btn . width ( ) + that . $skip_btn . width ( ) + 20 ;
950
1015
var distance = label_x ;
951
1016
952
1017
if ( summoryButtonWidth + label_x > arrowFinishX ) {
@@ -955,7 +1020,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
955
1020
956
1021
that . $next_btn . css ( {
957
1022
left : distance ,
958
- top : label_y + label_height + 20
1023
+ top : label_y + label_height + 40
959
1024
} ) ;
960
1025
961
1026
var left_skip = distance + that . $next_btn . width ( ) + 10 ;
@@ -966,7 +1031,7 @@ CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) {
966
1031
967
1032
that . $skip_btn . css ( {
968
1033
left : left_skip ,
969
- top : label_y + label_height + 20
1034
+ top : label_y + label_height + 40
970
1035
} ) ;
971
1036
} , 0 )
972
1037
0 commit comments