User:Locke/common.js

From Zelda Dungeon Wiki
< User:Locke
Revision as of 04:28, November 13, 2014 by Locke (talk | contribs) (yeah, no way to guarantee order in associative array. so much for nice selector names. back to indices.)
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl+F5 or Ctrl+R (Command+R on a Mac)
  • Google Chrome: press Ctrl+Shift+R (Command+Shift+R on a Mac)
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl+F5
  • Konqueror: click Reload or press F5
  • Opera: clear the cache in Tools → Preferences
/*
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 ) {

  // set the data
  tabstate[target][selector] = selection;

  // construct the tabContent string
  var content = tabstate[target].join( ' ' );
  console.log( content );
  // show the tabContent div
  $('#'+target+' div[data-tab-content="'+content+'"]').show();
}

// look at each tabset's target and selector
$('.tabset').each( function() {
  var target = $(this).data( 'tabTarget' );
  if( !tabstate[target] ) {
    tabstate[target] = [];
  }
  var selector = $(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' );