1
0
Fork 0
easejs/scripts/ui.js

165 lines
4.4 KiB
JavaScript
Raw Normal View History

2011-03-24 00:01:26 -04:00
/**
* Page enhancements for ease.js website
*
* Copyright (C) 2010 Mike Gerwitz
2011-03-24 22:42:29 -04:00
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2011-03-24 00:01:26 -04:00
*/
( function()
{
2011-04-04 22:37:13 -04:00
var $trybox = null,
$trybtn = null
;
2011-03-24 00:01:26 -04:00
$( document ).ready( function()
{
appendTry();
2011-04-04 22:37:13 -04:00
if ( document.location.href.substr( -6 ) === '#tryit' )
{
console.log( 'ok' );
toggleTry();
}
2011-03-24 00:01:26 -04:00
} );
function appendTry()
{
2011-04-04 22:37:13 -04:00
$trybtn = $( '<div>' )
2011-03-24 00:01:26 -04:00
.attr( 'id', 'try' )
2011-11-06 00:27:17 -04:00
.text( 'Try It' )
.addClass( 'btn large glow' )
2011-03-24 00:01:26 -04:00
.mousedown( function( event )
{
// prevent dragging from highlighting the text (so it looks more
// like an image)
event.preventDefault();
} )
.click( function( event )
{
2011-04-04 22:37:13 -04:00
toggleTry();
2011-03-24 00:01:26 -04:00
} )
.appendTo( '#header-content' );
2011-03-24 00:01:26 -04:00
}
2011-04-04 22:37:13 -04:00
function toggleTry()
{
var $try = getTry();
$trybtn.text(
( $try.is( ':visible' ) )
2011-11-06 00:27:17 -04:00
? 'Try It'
2011-04-04 22:37:13 -04:00
: 'Hide It'
);
$try.slideToggle();
}
2011-03-24 00:01:26 -04:00
function getTry()
{
2011-03-24 22:22:31 -04:00
var $txt;
2011-03-24 00:01:26 -04:00
return $trybox || ( function createTryBox()
{
2011-03-25 00:08:23 -04:00
$txt = $( '<textarea>' );
$.get( 'scripts/ex/class.js', {}, function( data )
2011-03-25 00:08:23 -04:00
{
$txt.text( data );
}, 'html' );
2011-03-25 00:08:23 -04:00
2011-03-24 00:01:26 -04:00
return $trybox = $( '<div>' )
.attr( 'id', 'trybox' )
.hide()
2011-03-24 22:22:31 -04:00
.append( $( '<h2>' ).text( 'Try ease.js' ) )
2011-03-24 23:54:08 -04:00
.append( $( '<p>' ).html(
"Enter or modify a test script below. The common " +
"ease.js modules, such as <tt>Class</tt>, have " +
2011-04-12 23:50:33 -04:00
"already been imported for you. When you are ready, " +
"click <strong>Run</strong> to run the script."
2011-03-24 23:54:08 -04:00
) )
2011-03-25 00:08:23 -04:00
.append( $txt )
2011-03-24 22:22:31 -04:00
.append( $( '<div>' )
.attr( 'id', 'trybtns' )
.append( $( '<div>' )
.attr( 'id', 'run' )
.text( 'Run' )
.addClass( 'btn med green' )
2011-03-24 22:22:31 -04:00
.click( function()
{
runScript( $txt.val() );
2011-03-24 22:22:31 -04:00
} )
)
)
2011-03-24 00:01:26 -04:00
.prependTo( '#content' );
} )();
}
function runScript( script )
{
var Class = easejs.Class,
FinalClass = easejs.FinalClass,
AbstractClass = easejs.AbstractClass,
Interface = easejs.Interface,
$console = $( '<textarea>' )
.attr( {
id: 'try-console',
readonly: 'readonly'
} ),
$dialog = $( '<div>' )
.append( $console )
.dialog( {
title: 'Console',
modal: true,
width: '800px',
height: 'auto'
} ),
console = {
log: function( text )
{
$console.text(
$console.text() + text + "\n"
);
},
warn: function( text )
{
$console.text(
$console.text() + "[Warning] " + text + "\n"
);
},
};
( function( console )
{
try
{
eval( script );
}
catch ( e )
{
console.log( e );
}
} )( console );
}
2011-03-24 00:01:26 -04:00
} )();