User:Locke/common.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
mNo edit summary
No edit summary
Line 15: Line 15:
var tabstate = {};
var tabstate = {};
$('.tabset').each( function() {
$('.tabset').each( function() {
   var target = $(this).attr( 'tab-target' );
   var target = $(this).data( 'tabTarget' );
   var selector = $(this).attr( 'tab-selector' );
   var selector = $(this).data( 'tabSelector' );
   tabstate[target] = {};
   tabstate[target] = {};
   console.log( this );
   console.log( this );
   console.log( $(this).attr( 'tab-target' ) );
   console.log( $(this).data( 'tabTarget' ) );
   console.log( tabstate );
   console.log( tabstate );
   $(this).find( '.tab' ).each( function() {
   $(this).find( '.tab' ).each( function() {
     var selection = $(this).attr( 'tab-selection' );
     var selection = $(this).data( 'tabSelection' );
     //TODO defaults, no-js, ajax
     //TODO defaults, no-js, ajax
     $(this).on( 'click', function() {
     $(this).on( 'click', function() {
Line 28: Line 28:
       tabstate[target][selector] = selection;
       tabstate[target][selector] = selection;
       var content = tabstate[target].join( ' ' );
       var content = tabstate[target].join( ' ' );
       $('#'+target+' div[tab-content="'+content+'"]').show();
       $('#'+target+' div[data-tab-content="'+content+'"]').show();
     });
     });
   });
   });

Revision as of 03:12, 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 = {};
$('.tabset').each( function() {
  var target = $(this).data( 'tabTarget' );
  var selector = $(this).data( 'tabSelector' );
  tabstate[target] = {};
  console.log( this );
  console.log( $(this).data( 'tabTarget' ) );
  console.log( tabstate );
  $(this).find( '.tab' ).each( function() {
    var selection = $(this).data( 'tabSelection' );
    //TODO defaults, no-js, ajax
    $(this).on( 'click', function() {
      $('#'+target+' div').hide();
      tabstate[target][selector] = selection;
      var content = tabstate[target].join( ' ' );
      $('#'+target+' div[data-tab-content="'+content+'"]').show();
    });
  });
});
});

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' );