'use strict'; /* eslint-disable no-implicit-globals */ /*! * Display translation stats via a form. * @author Amir E. Aharoni * @author Siebrand Mazeland * @author Niklas Laxström * @copyright Copyright © 2012-2013 Amir E. Aharoni, Siebrand Mazeland * @license GPL-2.0-or-later */ var FormHandler = function () { var $form = $( '#translationStatsConfig' ), onFilter = null; function getHeight() { return parseInt( $form.find( 'input[name="height"]' ).val(), 10 ); } function getWidth() { return parseInt( $form.find( 'input[name="width"]' ).val(), 10 ); } function getLanguages() { var languages = $form.find( 'input[name="language"]' ).val().trim(); if ( languages.length > 0 ) { return getSplitValues( languages ); } return []; } function getGroups() { var groups = $form.find( 'input[name="group"]' ).val().trim(); if ( groups.length > 0 ) { return getSplitValues( groups ); } return []; } function getGranularity() { return $form.find( 'input[name="scale"]:checked' ).val().trim(); } function getMeasure() { return $form.find( 'input[name="count"]:checked' ).val().trim(); } function getDays() { return parseInt( $form.find( 'input[name="days"]' ).val(), 10 ); } function getStart() { return $form.find( '#start' ).val(); } function getAllOptions() { return { measure: getMeasure(), days: getDays(), start: getStart(), granularity: getGranularity(), group: getGroups(), language: getLanguages(), height: getHeight(), width: getWidth() }; } function getSplitValues( values ) { return values.split( ',' ).map( function ( value ) { return value.trim(); } ); } function filter() { if ( !this.onFilter ) { return; } this.onFilter( this.getAllOptions() ); } return { onFilter: onFilter, filter: filter, getAllOptions: getAllOptions }; }; $( function () { var widget, defaultValue, defaultDate, $input = $( '#start' ), formHandler = new FormHandler(), $graphContainer = $( '#translationStatsGraphContainer' ), graphBuilder; defaultDate = new Date(); defaultDate.setDate( 1 ); if ( $input.val() ) { defaultValue = new Date( $input.val() ); } widget = new mw.widgets.datetime.DateTimeInputWidget( { formatter: { format: '${year|0}-${month|0}-${day|0}', defaultDate: defaultDate }, type: 'date', value: defaultValue, max: new Date() } ); $input.after( widget.$element ).addClass( 'mw-translate-translationstats-hide' ); widget.on( 'change', function ( data ) { $input.val( data + 'T00:00:00' ); } ); // Check if the graph container has been loaded if ( $graphContainer.length !== 0 ) { graphBuilder = new mw.translate.TranslationStatsGraphBuilder( $graphContainer ); graphBuilder.display( formHandler.getAllOptions() ); } } );