suppressErrors = true,
updatingBooklet = false,
pages = {},
- moduleInfoCache = {};
+ moduleInfoCache = {},
+ baseRequestParams;
WidgetMethods = {
textInputWidget: {
init: function () {
var $toolbar;
+ ApiSandbox.isFullscreen = false;
+
$content = $( '#mw-apisandbox' );
windowManager = new OO.ui.WindowManager();
fullscreenButton.$element,
new OO.ui.ButtonWidget( {
label: mw.message( 'apisandbox-submit' ).text(),
- flags: [ 'primary', 'constructive' ]
+ flags: [ 'primary', 'progressive' ]
} ).on( 'click', ApiSandbox.sendRequest ).$element,
new OO.ui.ButtonWidget( {
label: mw.message( 'apisandbox-reset' ).text(),
* Toggle "fullscreen" mode
*/
toggleFullscreen: function () {
- var $body = $( document.body );
+ var $body = $( document.body ),
+ $ui = $( '#mw-apisandbox-ui' );
+
+ ApiSandbox.isFullscreen = !ApiSandbox.isFullscreen;
- $body.toggleClass( 'mw-apisandbox-fullscreen' );
- if ( $body.hasClass( 'mw-apisandbox-fullscreen' ) ) {
+ $body.toggleClass( 'mw-apisandbox-fullscreen', ApiSandbox.isFullscreen );
+ $ui.toggleClass( 'mw-body-content', ApiSandbox.isFullscreen );
+ if ( ApiSandbox.isFullscreen ) {
fullscreenButton.setLabel( mw.message( 'apisandbox-unfullscreen' ).text() );
fullscreenButton.setTitle( mw.message( 'apisandbox-unfullscreen-tooltip' ).text() );
- $body.append( $( '#mw-apisandbox-ui' ) );
+ $body.append( $ui );
} else {
fullscreenButton.setLabel( mw.message( 'apisandbox-fullscreen' ).text() );
fullscreenButton.setTitle( mw.message( 'apisandbox-fullscreen-tooltip' ).text() );
- $content.append( $( '#mw-apisandbox-ui' ) );
+ $content.append( $ui );
}
ApiSandbox.resizePanel();
},
var height = $( window ).height(),
contentTop = $content.offset().top;
- if ( $( document.body ).hasClass( 'mw-apisandbox-fullscreen' ) ) {
+ if ( ApiSandbox.isFullscreen ) {
height -= panel.$element.offset().top - $( '#mw-apisandbox-ui' ).offset().top;
panel.$element.height( height - 1 );
} else {
/**
* Submit button handler
+ *
+ * @param {Object} [params] Use this set of params instead of those in the form fields.
+ * The form fields will be updated to match.
*/
- sendRequest: function () {
+ sendRequest: function ( params ) {
var page, subpages, i, query, $result, $focus,
progress, $progressText, progressLoading,
deferreds = [],
- params = {},
+ paramsAreForced = !!params,
displayParams = {},
checkPages = [ pages.main ];
suppressErrors = false;
+ // save widget state in params (or load from it if we are forced)
+ if ( paramsAreForced ) {
+ ApiSandbox.updateUI( params );
+ }
+ params = {};
while ( checkPages.length ) {
page = checkPages.shift();
deferreds.push( page.apiCheckValid() );
}
}
+ if ( !paramsAreForced ) {
+ // forced params means we are continuing a query; the base query should be preserved
+ baseRequestParams = $.extend( {}, params );
+ }
+
$.when.apply( $, deferreds ).done( function () {
if ( $.inArray( false, arguments ) !== -1 ) {
windowManager.openWindow( 'errorAlert', {
);
} )
.done( function ( data, jqXHR ) {
- var m, loadTime, button,
+ var m, loadTime, button, clear,
ct = jqXHR.getResponseHeader( 'Content-Type' );
$result.empty();
.text( data )
.appendTo( $result );
}
+ if ( paramsAreForced || data[ 'continue' ] ) {
+ $result.append(
+ $( '<div>' ).append(
+ new OO.ui.ButtonWidget( {
+ label: mw.message( 'apisandbox-continue' ).text()
+ } ).on( 'click', function () {
+ ApiSandbox.sendRequest( $.extend( {}, baseRequestParams, data[ 'continue' ] ) );
+ } ).setDisabled( !data[ 'continue' ] ).$element,
+ ( clear = new OO.ui.ButtonWidget( {
+ label: mw.message( 'apisandbox-continue-clear' ).text()
+ } ).on( 'click', function () {
+ ApiSandbox.updateUI( baseRequestParams );
+ clear.setDisabled( true );
+ booklet.setPage( '|results|' );
+ } ).setDisabled( !paramsAreForced ) ).$element,
+ new OO.ui.PopupButtonWidget( {
+ framed: false,
+ icon: 'info',
+ popup: {
+ $content: $( '<div>' ).append( mw.message( 'apisandbox-continue-help' ).parse() ),
+ padded: true
+ }
+ } ).$element
+ )
+ );
+ }
if ( typeof loadTime === 'number' ) {
$result.append(
$( '<div>' ).append(
// Don't grey out the label when the field is disabled,
// it makes it too hard to read and our "disabled"
// isn't really disabled.
+ widgetField.onFieldDisable( false );
widgetField.onFieldDisable = doNothing;
if ( Util.apiBool( pi.parameters[ i ].deprecated ) ) {
dynamicParamNameWidget,
new OO.ui.ButtonWidget( {
icon: 'add',
- flags: 'constructive'
+ flags: 'progressive'
} ).on( 'click', addDynamicParamWidget ),
{
label: mw.message( 'apisandbox-dynamic-parameters-add-label' ).text(),