Skip to content
Permalink
Browse files

Tabs: Reduce cyclomatic complexity.

  • Loading branch information...
scottgonzalez committed Dec 6, 2012
1 parent 9deb71b commit ebf8a601871c70ed4a7fdf28505fee6781d21504
Showing with 36 additions and 29 deletions.
  1. +36 −29 ui/jquery.ui.tabs.js
@@ -47,9 +47,7 @@ $.widget( "ui.tabs", {

_create: function() {
var that = this,
options = this.options,
active = options.active,
locationHash = location.hash.substring( 1 );
options = this.options;

this.running = false;

@@ -75,6 +73,36 @@ $.widget( "ui.tabs", {
});

this._processTabs();
options.active = this._initialActive();

// Take disabling tabs via class attribute from HTML
// into account and update option properly.
if ( $.isArray( options.disabled ) ) {
options.disabled = $.unique( options.disabled.concat(
$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
return that.tabs.index( li );
})
) ).sort();
}

// check for length avoids error when initializing empty list
if ( this.options.active !== false && this.anchors.length ) {
this.active = this._findActive( options.active );
} else {
this.active = $();
}

this._refresh();

if ( this.active.length ) {
this.load( options.active );
}
},

_initialActive: function() {
var active = this.options.active,
collapsible = this.options.collapsible,
locationHash = location.hash.substring( 1 );

if ( active === null ) {
// check the fragment identifier in the URL
@@ -102,38 +130,16 @@ $.widget( "ui.tabs", {
if ( active !== false ) {
active = this.tabs.index( this.tabs.eq( active ) );
if ( active === -1 ) {
active = options.collapsible ? false : 0;
active = collapsible ? false : 0;
}
}
options.active = active;

// don't allow collapsible: false and active: false
if ( !options.collapsible && options.active === false && this.anchors.length ) {
options.active = 0;
}

// Take disabling tabs via class attribute from HTML
// into account and update option properly.
if ( $.isArray( options.disabled ) ) {
options.disabled = $.unique( options.disabled.concat(
$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
return that.tabs.index( li );
})
) ).sort();
if ( !collapsible && active === false && this.anchors.length ) {
active = 0;
}

// check for length avoids error when initializing empty list
if ( this.options.active !== false && this.anchors.length ) {
this.active = this._findActive( this.options.active );
} else {
this.active = $();
}

this._refresh();

if ( this.active.length ) {
this.load( options.active );
}
return active;
},

_getCreateEventData: function() {
@@ -144,6 +150,7 @@ $.widget( "ui.tabs", {
},

_tabKeydown: function( event ) {
/*jshint maxcomplexity:15*/
var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
selectedIndex = this.tabs.index( focusedTab ),
goingForward = true;

0 comments on commit ebf8a60

Please sign in to comment.
You can’t perform that action at this time.