11const tour = {
2- firstAnswer : function ( ) {
3- $ ( ".js-good-answer" ) . removeClass ( "hide" ) ;
4- $ ( ".js-answer-counter" ) . text ( "1 answer" ) ;
5- $ ( ".step-1" ) . addClass ( "hide" ) ;
6- $ ( ".step-2" ) . removeClass ( "hide" ) ;
7- } ,
8- firstAnswerUpvote : function ( self ) {
9- $ ( self ) . addClass ( "is-active" ) ;
10- $ ( ".step-3" ) . addClass ( "hide" ) ;
11- $ ( ".step-4" ) . removeClass ( "hide" ) ;
12- $ ( ".js-good-answer .js-upvote-count" ) . text ( "+1" ) ;
13- $ ( ".js-good-answer .js-upvote-count" ) . text ( "+1" ) ;
14- window . setTimeout ( ( ) => {
15- tour . secondAnswer ( ) ;
16- } , 4000 ) ;
17- } ,
18- secondAnswer : function ( ) {
19- $ ( ".js-bad-answer" ) . removeClass ( "hide" ) ;
20- $ ( ".js-answer-counter" ) . text ( "2 answers" ) ;
21- $ ( ".step-4" ) . addClass ( "hide" ) ;
22- $ ( ".step-5" ) . removeClass ( "hide" ) ;
23- } ,
24- secondAnswerFlag : function ( ) {
25- $ ( ".step-5" ) . addClass ( "hide" ) ;
26- $ ( ".step-6" ) . removeClass ( "hide" ) ;
27- $ ( ".tour-flag-success" ) . removeClass ( "hide" ) ;
28- $ ( ".js-flag-box" ) . addClass ( "hide" ) ;
29-
30- window . setTimeout ( ( ) => {
31- $ ( ".js-answer-counter" ) . text ( "1 answer" ) ;
32- $ ( ".js-bad-answer" ) . addClass ( "deleted-content" ) ;
33- } , 4000 ) ;
34- window . setTimeout ( ( ) => {
35- $ ( ".js-bad-answer" ) . addClass ( "hide" ) ;
36- } , 6000 ) ;
2+ badAnswerTimeout : null ,
3+ firstAnswerTimeout : null ,
4+
5+ firstAnswer : function ( ) {
6+ $ ( '.js-good-answer' ) . removeClass ( 'hide' ) ;
7+ $ ( '.js-answer-counter' ) . text ( '1 answer' ) ;
8+ $ ( '.step-1' ) . addClass ( 'hide' ) ;
9+ $ ( '.step-2' ) . removeClass ( 'hide' ) ;
10+ } ,
11+ firstAnswerUpvote : function ( self ) {
12+ $ ( self ) . addClass ( 'is-active' ) ;
13+ $ ( '.step-3' ) . addClass ( 'hide' ) ;
14+ $ ( '.step-4' ) . removeClass ( 'hide' ) ;
15+ $ ( '.js-good-answer .js-upvote-count' ) . text ( '+1' ) ;
16+ $ ( '.js-good-answer .js-upvote-count' ) . text ( '+1' ) ;
17+
18+ tour . badAnswerTimeout = window . setTimeout ( ( ) => {
19+ tour . secondAnswer ( ) ;
20+ tour . badAnswerTimeout = null ;
21+ } , 4000 ) ;
22+ } ,
23+ secondAnswer : function ( scrollIntoView = false ) {
24+ $ ( '.js-bad-answer' ) . removeClass ( 'hide' ) ;
25+ $ ( '.js-answer-counter' ) . text ( '2 answers' ) ;
26+ $ ( '.step-4' ) . addClass ( 'hide' ) ;
27+ $ ( '.step-5' ) . removeClass ( 'hide' ) ;
28+
29+ if ( scrollIntoView ) {
30+ $ ( '.js-bad-answer' ) . get ( 0 ) ?. scrollIntoView ( { behavior : 'smooth' } ) ;
3731 }
38- }
32+ } ,
33+ secondAnswerFlag : function ( ) {
34+ $ ( '.step-5' ) . addClass ( 'hide' ) ;
35+ $ ( '.step-6' ) . removeClass ( 'hide' ) ;
36+ $ ( '.js-flag-box' ) . addClass ( 'hide' ) ;
37+
38+ QPixel . createNotification ( 'success' , "Thanks for your report. We'll look into it." ) ;
39+
40+ window . setTimeout ( ( ) => {
41+ $ ( '.js-answer-counter' ) . text ( '1 answer' ) ;
42+ $ ( '.js-bad-answer > .post--container' ) . addClass ( 'deleted-content' ) ;
43+ } , 4000 ) ;
44+
45+ window . setTimeout ( ( ) => {
46+ $ ( '.js-bad-answer > .post--container' ) . addClass ( 'hide' ) ;
47+ } , 6000 ) ;
48+ }
49+ } ;
50+
51+ document . addEventListener ( 'DOMContentLoaded' , ( ) => {
52+ if ( $ ( '.js-tour-trigger-qa-page' ) . length ) {
53+ tour . firstAnswerTimeout = window . setTimeout ( ( ) => {
54+ tour . firstAnswer ( ) ;
55+ tour . firstAnswerTimeout = null ;
56+ } , 8000 ) ;
57+ }
58+
59+ $ ( document ) . on ( 'click' , '.js-tour-scroll-to-post' , ( ev ) => {
60+ const post = $ ( ev . target ) . data ( 'post' ) ;
61+
62+ switch ( post ) {
63+ case 'bad-answer' :
64+ $ ( '.js-bad-answer' ) . get ( 0 ) ?. scrollIntoView ( { behavior : 'smooth' } ) ;
65+ break ;
66+ case 'first-answer' :
67+ $ ( '.step-3' ) . removeClass ( 'hide' ) ;
68+ $ ( '.step-2' ) . addClass ( 'hide' ) ;
69+ $ ( '.js-good-answer' ) . get ( 0 ) ?. scrollIntoView ( { behavior : 'smooth' } ) ;
70+ break ;
71+ }
72+ } ) ;
73+
74+ $ ( document ) . on ( 'click' , '.js-tour-skip-wait' , ( ev ) => {
75+ const timeout = $ ( ev . target ) . data ( 'timeout' ) ;
3976
40- $ ( ( ) => {
41- if ( $ ( ".js-tour-trigger-qa-page" ) . length ) {
42- window . setTimeout ( ( ) => {
43- tour . firstAnswer ( ) ;
44- } , 8000 ) ;
77+ switch ( timeout ) {
78+ case 'bad-answer' :
79+ clearTimeout ( tour . badAnswerTimeout ) ;
80+ tour . badAnswerTimeout = null ;
81+ tour . secondAnswer ( true ) ;
82+ break ;
83+ case 'first-answer' :
84+ clearTimeout ( tour . firstAnswerTimeout ) ;
85+ tour . firstAnswerTimeout = null ;
86+ tour . firstAnswer ( ) ;
87+ break ;
4588 }
89+ } ) ;
4690
47- $ ( "[data-step-from][data-step-to]" ) . click ( ( e ) => {
48- const $this = $ ( e . target ) ;
49- $ ( $this . attr ( "data-step-from" ) ) . toggleClass ( "hide" ) ;
50- $ ( $this . attr ( "data-step-to" ) ) . toggleClass ( "hide" ) ;
51- } ) ;
52- } ) ;
91+ $ ( '[data-step-from][data-step-to]' ) . on ( 'click' , ( e ) => {
92+ const $tgt = $ ( e . target ) ;
93+ const $from = $ ( $tgt . data ( 'step-from' ) ) ;
94+ const $to = $ ( $tgt . data ( 'step-to' ) ) ;
95+ $from . toggleClass ( 'hide' ) ;
96+ $to . toggleClass ( 'hide' ) ;
97+ $to . get ( 0 ) ?. scrollIntoView ( { behavior : 'smooth' } ) ;
98+ } ) ;
99+ } ) ;
0 commit comments