MediaWiki:Gadget-dialogue-options.js: Difference between revisions

MediaWiki interface page
Content added Content deleted
mNo edit summary
mNo edit summary
Line 108: Line 108:
fieldset.addItems( [
fieldset.addItems( [
new OO.ui.FieldLayout( langToggle, { label: 'Display language', align: 'inline' } ),
new OO.ui.FieldLayout( langToggle, { label: 'Display language', align: 'inline' } ),
new OO.ui.FieldLayout ( layoutToggle, { label: 'Display layout' , align: 'inline' } ),
new OO.ui.FieldLayout( layoutToggle, { label: 'Display layout' , align: 'inline' } ),
new OO.ui.FieldLayout( colorToggle, { label: 'Show character colors', align: 'inline' } ),
new OO.ui.FieldLayout( colorToggle, { label: 'Show character colors', align: 'inline' } ),
] );
] );

Revision as of 23:43, 11 December 2021

mw.loader.using( ['oojs-ui-core', 'oojs-ui-widgets'] ).done( function() {
	
	function makeLangToggle() {
		var langToggle = new OO.ui.ButtonSelectWidget( {
			items: [
				new OO.ui.ButtonOptionWidget({ data: 'en', label: 'English' }),
				new OO.ui.ButtonOptionWidget({ data: 'jp', label: 'Japanese' }),
				new OO.ui.ButtonOptionWidget({ data: 'both', label: 'Both' })
			],
			align: 'left'
		} );
		langToggle.selectItemByData('en');
		langToggle.on( 'choose' , function( item, selected ) {
			$( '.dialogue' ).each( function() {
				var $dt_en = $( this ).find( '.dt-en' );
				var $dt_jp = $( this ).find( '.dt-jp' );
				
				if ( item.getData() === 'en' ) {
					$dt_jp.hide();
					$dt_en.show();
				} else if ( item.getData() === 'jp' ) {
					$dt_en.hide();
					$dt_jp.show();
				} else if ( item.getData() === 'both' ) {
					$dt_en.show();
					$dt_jp.show();
				}
			} );
		} );
		
		$( '.dialogue' ).each( function() {
			var $dt_jp = $( this ).find( '.dt-jp' );
			$dt_jp.hide();
		} );
		
		return langToggle;
	}
	
	function makeLayoutToggle() {
		var layoutToggle = new OO.ui.ButtonSelectWidget( {
			items: [
				new OO.ui.ButtonOptionWidget({ data: 'cozy', label: 'Cozy' }),
				new OO.ui.ButtonOptionWidget({ data: 'compact', label: 'Compact' }),
			],
			align: 'left'
		} );
		layoutToggle.selectItemByData('cozy');
		layoutToggle.on( 'choose', function ( item, selected ) {
			$( '.dialogue' ).each( function() {
				if ( item.getData() === 'cozy' ) {
					$( this ).removeClass( 'compact' );
					$( this ).addClass( 'cozy' );
				} else if ( item.getData() === 'compact' ) {
					$( this ).removeClass( 'cozy' );
					$( this ).addClass( 'compact' );
				}
			} );
		} );
		
		return layoutToggle;
	}
	
	function makeColorToggle() {
		var colorToggle = new OO.ui.CheckboxInputWidget( {
			value: 'colorized',
			selected: false
		} );
		colorToggle.on( 'change', function ( selected ) {
			console.log(selected);
			$( '.dialogue-text' ).each( function() {
				if ( selected ) {
					var color = $( this ).attr('data-character-color');
					$( this ).css( 'border-color', color );
				} else {
					$( this ).css( 'border-color', '' );
				}
			} );
		} );
		
		return colorToggle;
	}
	
	function initMarking() {
		$( '.dialogue-text' ).each( function() {
			$( this ).css( 'cursor' , 'pointer' );
			$( this ).attr( 'title', 'Mark' );
			$( this ).click( function () {
				if ( $( this ).hasClass( 'marked' ) ) {
					$( this ).removeClass( 'marked' );
					$( this ).attr( 'title', 'Mark' );
				} else {
					$( this ).addClass( 'marked' );
					$( this ).attr( 'title', 'Unmark' );
				}
			} );
		} );
	}
	
	$( function() {
		var langToggle = makeLangToggle();
		var layoutToggle = makeLayoutToggle();
		var colorToggle = makeColorToggle();
		
		var fieldset = new OO.ui.FieldsetLayout( {
			label: 'Dialogue options'
		} );
		
		fieldset.addItems( [
			new OO.ui.FieldLayout( langToggle, { label: 'Display language', align: 'inline' } ),
			new OO.ui.FieldLayout( layoutToggle, { label: 'Display layout' , align: 'inline' } ),
			new OO.ui.FieldLayout( colorToggle, { label: 'Show character colors', align: 'inline' } ),
		] );
		
		$( '.dialogue-toggle' ).append( fieldset.$element );
		
		initMarking();
	} );
});
Cookies help us deliver our services. By using our services, you agree to our use of cookies.