Skip to content

Commit 3f3a5e6

Browse files
committed
merlin transition callback
1 parent cc57725 commit 3f3a5e6

File tree

1 file changed

+61
-53
lines changed

1 file changed

+61
-53
lines changed

lib/tc.merlin.js

Lines changed: 61 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -258,20 +258,75 @@ typecode-js v 0.1
258258
internal.last_step = internal.current_step;
259259
}
260260
internal.current_step = o.steps[step];
261+
262+
function transition_callback() {
263+
if(internal.current_step.n_times_shown === 0 && !internal.current_step.init_forced && $.isFunction(internal.current_step.init)){
264+
internal.current_step.init(me);
265+
}
266+
267+
// begin controls handling
268+
if(o.controls.prev){
269+
if(internal.current_step.prev){
270+
o.controls.prev.removeClass('disabled');
271+
} else {
272+
o.controls.prev.addClass('disabled');
273+
}
274+
}
275+
276+
if(o.controls.next){
277+
if(internal.current_step.next){
278+
o.controls.next.removeClass('disabled');
279+
} else {
280+
o.controls.next.addClass('disabled');
281+
}
282+
}
283+
// end controls handling
284+
285+
286+
//begin progress indicator
287+
if(internal.current_step.progress_selector){
288+
internal.progress_element.find('.progress-unit')
289+
.removeClass('current')
290+
.filter(internal.current_step.progress_selector)
291+
.addClass('current');
292+
}
293+
//end progress indicator
294+
295+
internal.current_step.nav_data = nav_data;
296+
297+
if($.isFunction(internal.current_step.visible)){
298+
internal.counters.n_times_step_rendered++;
299+
internal.current_step.visible(me);
300+
}
301+
302+
if (o.use_hashchange && !internal.current_step.supress_hash && internal.current_step.name) {
303+
set_location(internal.current_step.name);
304+
}
305+
306+
//if(internal.current_step.fields){
307+
// for(i in internal.current_step.fields){
308+
// internal.current_step.fields[i].component.event_receiver.trigger('change');
309+
// }
310+
//}
311+
312+
internal.current_step.n_times_shown++;
313+
}
261314

262315
// begin transition handling
263316
if (o.transition=='fade') {
264317
if (internal.counters.n_times_step_rendered !== 0) {
265-
o.$e.find(internal.current_step.selector).fadeIn(o.transition_speed).siblings('.step').hide();
318+
o.$e.find(internal.current_step.selector).fadeIn(o.transition_speed, transition_callback).siblings('.step').hide();
266319
} else {
267320
o.$e.find(internal.current_step.selector).show().siblings('.step').hide();
321+
transition_callback();
268322
}
269323
} else if (o.transition=='slide') {
270324
if (internal.counters.n_times_step_rendered !== 0) {
271325
o.$e.find(internal.current_step.selector).siblings('.step').slideUp(o.transition_speed/2);
272-
o.$e.find(internal.current_step.selector).delay(o.transition_speed/2).slideDown(o.transition_speed);
326+
o.$e.find(internal.current_step.selector).delay(o.transition_speed/2).slideDown(o.transition_speed, transition_callback);
273327
} else {
274328
o.$e.find(internal.current_step.selector).show().siblings('.step').hide();
329+
transition_callback();
275330
}
276331
} else if (o.transition=='horiz_slide') {
277332

@@ -291,6 +346,7 @@ typecode-js v 0.1
291346
strip.find(internal.last_step.selector).hide();
292347
strip.css({ 'margin-left' : 0, 'width' : '' });
293348
strip.children('.step').css('width', '');
349+
transition_callback();
294350
}
295351
);
296352
} else if ( internal.current_step.step_number < internal.last_step.step_number ) {
@@ -300,71 +356,23 @@ typecode-js v 0.1
300356
strip.find(internal.last_step.selector).hide();
301357
strip.css({ 'width' : '' });
302358
strip.children('.step').css('width', '');
359+
transition_callback();
303360
}
304361
);
305362
}
306363

307364
} else {
308365

309366
o.$e.find(internal.current_step.selector).show().siblings('.step').hide();
310-
367+
transition_callback();
311368
}
312369

313370
} else {
314371
o.$e.find(internal.current_step.selector).show().siblings('.step').hide();
372+
transition_callback();
315373
}
316374
// end transition handling
317375

318-
if(internal.current_step.n_times_shown === 0 && !internal.current_step.init_forced && $.isFunction(internal.current_step.init)){
319-
internal.current_step.init(me);
320-
}
321-
322-
// begin controls handling
323-
if(o.controls.prev){
324-
if(internal.current_step.prev){
325-
o.controls.prev.removeClass('disabled');
326-
} else {
327-
o.controls.prev.addClass('disabled');
328-
}
329-
}
330-
331-
if(o.controls.next){
332-
if(internal.current_step.next){
333-
o.controls.next.removeClass('disabled');
334-
} else {
335-
o.controls.next.addClass('disabled');
336-
}
337-
}
338-
// end controls handling
339-
340-
341-
//begin progress indicator
342-
if(internal.current_step.progress_selector){
343-
internal.progress_element.find('.progress-unit')
344-
.removeClass('current')
345-
.filter(internal.current_step.progress_selector)
346-
.addClass('current');
347-
}
348-
//end progress indicator
349-
350-
internal.current_step.nav_data = nav_data;
351-
352-
if($.isFunction(internal.current_step.visible)){
353-
internal.counters.n_times_step_rendered++;
354-
internal.current_step.visible(me);
355-
}
356-
357-
if (o.use_hashchange && !internal.current_step.supress_hash && internal.current_step.name) {
358-
set_location(internal.current_step.name);
359-
}
360-
361-
//if(internal.current_step.fields){
362-
// for(i in internal.current_step.fields){
363-
// internal.current_step.fields[i].component.event_receiver.trigger('change');
364-
// }
365-
//}
366-
367-
internal.current_step.n_times_shown++;
368376
}
369377

370378
function set_location(step){

0 commit comments

Comments
 (0)