User:Locke/common.js: Difference between revisions
Jump to navigation
Jump to search
Want an adless experience? Log in or Create an account.
(yeah, no way to guarantee order in associative array. so much for nice selector names. back to indices.) |
No edit summary |
||
Line 20: | Line 20: | ||
// select a tab | // select a tab | ||
var tabselect = function( target, selector, selection ) { | var tabselect = function( target, selector, selection ) { | ||
tabstate[target][selector] = selection; | tabstate[target][selector] = selection; | ||
var content = tabstate[target].join( ' ' ); | var content = tabstate[target].join( ' ' ); | ||
$('#'+target+' div[data-tab-content="'+content+'"]').show(); | $('#'+target+' div[data-tab-content="'+content+'"]').show(); | ||
} | } | ||
Line 34: | Line 28: | ||
$('.tabset').each( function() { | $('.tabset').each( function() { | ||
var target = $(this).data( 'tabTarget' ); | var target = $(this).data( 'tabTarget' ); | ||
tabstate[target] = tabstate[target] || []; | |||
var selector = parseInt( $(this).data( 'tabSelector' ) ) || tabstate[target].length; | |||
var selector = $(this).data( 'tabSelector' ) || tabstate[target].length; | |||
// look at each tab's selection | // look at each tab's selection |
Revision as of 04:33, November 13, 2014
/* Three different behaviors desired: 1. all content on one page -all content is initially visible for no-js. js hides all except "default" 2. content is on subpages, transcluded -"no-js" content is initially visible, the rest hidden. js hides "no-js" and shows "default" 3. ajax -"no-js" content is initially visible. js removes "no-js" and calls for "default" */ $(function() { var tabstate = {}; // hide the content $('.tabtarget div').hide(); // select a tab var tabselect = function( target, selector, selection ) { tabstate[target][selector] = selection; var content = tabstate[target].join( ' ' ); $('#'+target+' div[data-tab-content="'+content+'"]').show(); } // look at each tabset's target and selector $('.tabset').each( function() { var target = $(this).data( 'tabTarget' ); tabstate[target] = tabstate[target] || []; var selector = parseInt( $(this).data( 'tabSelector' ) ) || tabstate[target].length; // look at each tab's selection $(this).find( '.tab' ).each( function() { var selection = $(this).data( 'tabSelection' ); // check default if( $(this).data( 'tabDefault' ) ) { tabselect( target, selector, selection ); } // onclick event $(this).on( 'click', function() { $('#'+target+' div').hide(); tabselect( target, selector, selection ); }); }); }); }); function DataLoader( basepage, target ) { this.loadData = function( subpage ) { mw.loader.using( 'mediawiki.api', function () { (new mw.Api()).ajax( { action: 'parse', format: 'json', prop: 'text', page: basepage + '/' + subpage } ).done ( function ( data ) { $('#' + target).empty(); $('#' + target).append( data['parse']['text']['*'] ); } ); } ); }; } var loader = new DataLoader( 'User:Locke/Sandbox', 'dl-target' ); loader.loadData( 'Template' );