Removing TableTools
|
@ -7,46 +7,10 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
mod = AIRTIME.history;
|
mod = AIRTIME.history;
|
||||||
|
|
||||||
var $historyContentDiv;
|
var $historyContentDiv;
|
||||||
|
|
||||||
var oTableTools = {
|
|
||||||
"sSwfPath": baseUrl+"js/datatables/plugin/TableTools-2.1.5/swf/copy_csv_xls_pdf.swf",
|
|
||||||
"aButtons": [
|
|
||||||
{
|
|
||||||
"sExtends": "copy",
|
|
||||||
"fnComplete": function(nButton, oConfig, oFlash, text) {
|
|
||||||
var lines = text.split('\n').length,
|
|
||||||
len = this.s.dt.nTFoot === null ? lines-1 : lines-2,
|
|
||||||
plural = (len==1) ? "" : "s";
|
|
||||||
alert(sprintf($.i18n._('Copied %s row%s to the clipboard'), len, plural));
|
|
||||||
},
|
|
||||||
//set because only the checkbox row is not sortable.
|
|
||||||
"mColumns": "sortable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sExtends": "csv",
|
|
||||||
"fnClick": setFlashFileName,
|
|
||||||
//set because only the checkbox row is not sortable.
|
|
||||||
"mColumns": "sortable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sExtends": "pdf",
|
|
||||||
"fnClick": setFlashFileName,
|
|
||||||
"sPdfOrientation": "landscape",
|
|
||||||
//set because only the checkbox row is not sortable.
|
|
||||||
"mColumns": "sortable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sExtends": "print",
|
|
||||||
"sInfo" : sprintf($.i18n._("%sPrint view%sPlease use your browser's print function to print this table. Press escape when finished."), "<h6>", "</h6><p>"),
|
|
||||||
//set because only the checkbox row is not sortable.
|
|
||||||
"mColumns": "sortable"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
var lengthMenu = [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, $.i18n._("All")]];
|
var lengthMenu = [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, $.i18n._("All")]];
|
||||||
|
|
||||||
var sDom = 'l<"dt-process-rel"r><"H"T><"dataTables_scrolling"t><"F"ip>';
|
var sDom = 'l<"dt-process-rel"r><"H"><"dataTables_scrolling"t><"F"ip>';
|
||||||
|
|
||||||
var selectedLogItems = {};
|
var selectedLogItems = {};
|
||||||
|
|
||||||
|
@ -155,25 +119,6 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
}
|
}
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setFlashFileName( nButton, oConfig, oFlash ) {
|
|
||||||
var filename = getFileName(oConfig.sExtends);
|
|
||||||
oFlash.setFileName( filename );
|
|
||||||
|
|
||||||
if (oConfig.sExtends == "pdf") {
|
|
||||||
this.fnSetText( oFlash,
|
|
||||||
"title:"+ this.fnGetTitle(oConfig) +"\n"+
|
|
||||||
"message:"+ oConfig.sPdfMessage +"\n"+
|
|
||||||
"colWidth:"+ this.fnCalcColRatios(oConfig) +"\n"+
|
|
||||||
"orientation:"+ oConfig.sPdfOrientation +"\n"+
|
|
||||||
"size:"+ oConfig.sPdfSize +"\n"+
|
|
||||||
"--/TableToolsOpts--\n" +
|
|
||||||
this.fnGetTableData(oConfig));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.fnSetText(oFlash, this.fnGetTableData(oConfig));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This callback can be used for all history tables */
|
/* This callback can be used for all history tables */
|
||||||
function fnServerData( sSource, aoData, fnCallback ) {
|
function fnServerData( sSource, aoData, fnCallback ) {
|
||||||
|
@ -357,7 +302,6 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
"bJQueryUI": true,
|
"bJQueryUI": true,
|
||||||
"bAutoWidth": true,
|
"bAutoWidth": true,
|
||||||
"sDom": sDom,
|
"sDom": sDom,
|
||||||
"oTableTools": oTableTools
|
|
||||||
});
|
});
|
||||||
oTable.fnSetFilteringDelay(350);
|
oTable.fnSetFilteringDelay(350);
|
||||||
|
|
||||||
|
@ -430,7 +374,6 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
"bJQueryUI": true,
|
"bJQueryUI": true,
|
||||||
"bAutoWidth": true,
|
"bAutoWidth": true,
|
||||||
"sDom": sDom,
|
"sDom": sDom,
|
||||||
"oTableTools": oTableTools
|
|
||||||
});
|
});
|
||||||
oTable.fnSetFilteringDelay(350);
|
oTable.fnSetFilteringDelay(350);
|
||||||
|
|
||||||
|
|
|
@ -1,221 +0,0 @@
|
||||||
/* Compile using: mxmlc --target-player=10.0.0 ZeroClipboard.as */
|
|
||||||
package {
|
|
||||||
import flash.display.Stage;
|
|
||||||
import flash.display.Sprite;
|
|
||||||
import flash.display.LoaderInfo;
|
|
||||||
import flash.display.StageScaleMode;
|
|
||||||
import flash.events.*;
|
|
||||||
import flash.display.StageAlign;
|
|
||||||
import flash.display.StageScaleMode;
|
|
||||||
import flash.external.ExternalInterface;
|
|
||||||
import flash.system.Security;
|
|
||||||
import flash.utils.*;
|
|
||||||
import flash.system.System;
|
|
||||||
import flash.net.FileReference;
|
|
||||||
import flash.net.FileFilter;
|
|
||||||
|
|
||||||
public class ZeroClipboard extends Sprite {
|
|
||||||
|
|
||||||
private var domId:String = '';
|
|
||||||
private var button:Sprite;
|
|
||||||
private var clipText:String = 'blank';
|
|
||||||
private var fileName:String = '';
|
|
||||||
private var action:String = 'copy';
|
|
||||||
private var incBom:Boolean = true;
|
|
||||||
private var charSet:String = 'utf8';
|
|
||||||
|
|
||||||
|
|
||||||
public function ZeroClipboard() {
|
|
||||||
// constructor, setup event listeners and external interfaces
|
|
||||||
stage.scaleMode = StageScaleMode.EXACT_FIT;
|
|
||||||
flash.system.Security.allowDomain("*");
|
|
||||||
|
|
||||||
// import flashvars
|
|
||||||
var flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters;
|
|
||||||
domId = flashvars.id.split("\\").join("\\\\");
|
|
||||||
|
|
||||||
// invisible button covers entire stage
|
|
||||||
button = new Sprite();
|
|
||||||
button.buttonMode = true;
|
|
||||||
button.useHandCursor = true;
|
|
||||||
button.graphics.beginFill(0x00FF00);
|
|
||||||
button.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
|
|
||||||
button.alpha = 0.0;
|
|
||||||
addChild(button);
|
|
||||||
|
|
||||||
button.addEventListener(MouseEvent.CLICK, clickHandler);
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOver', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOut', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseDown', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_UP, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseUp', null );
|
|
||||||
} );
|
|
||||||
|
|
||||||
// External functions - readd whenever the stage is made active for IE
|
|
||||||
addCallbacks();
|
|
||||||
stage.addEventListener(Event.ACTIVATE, addCallbacks);
|
|
||||||
|
|
||||||
// signal to the browser that we are ready
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'load', null );
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addCallbacks (evt:Event = null):void {
|
|
||||||
ExternalInterface.addCallback("setHandCursor", setHandCursor);
|
|
||||||
ExternalInterface.addCallback("clearText", clearText);
|
|
||||||
ExternalInterface.addCallback("setText", setText);
|
|
||||||
ExternalInterface.addCallback("appendText", appendText);
|
|
||||||
ExternalInterface.addCallback("setFileName", setFileName);
|
|
||||||
ExternalInterface.addCallback("setAction", setAction);
|
|
||||||
ExternalInterface.addCallback("setCharSet", setCharSet);
|
|
||||||
ExternalInterface.addCallback("setBomInc", setBomInc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function setCharSet(newCharSet:String):void {
|
|
||||||
if ( newCharSet == 'UTF16LE' ) {
|
|
||||||
charSet = newCharSet;
|
|
||||||
} else {
|
|
||||||
charSet = 'UTF8';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setBomInc(newBomInc:Boolean):void {
|
|
||||||
incBom = newBomInc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function clearText():void {
|
|
||||||
clipText = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function appendText(newText:String):void {
|
|
||||||
clipText += newText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setText(newText:String):void {
|
|
||||||
clipText = newText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setFileName(newFileName:String):void {
|
|
||||||
fileName = newFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setAction(newAction:String):void {
|
|
||||||
action = newAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setHandCursor(enabled:Boolean):void {
|
|
||||||
// control whether the hand cursor is shown on rollover (true)
|
|
||||||
// or the default arrow cursor (false)
|
|
||||||
button.useHandCursor = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function clickHandler(event:Event):void {
|
|
||||||
var fileRef:FileReference = new FileReference();
|
|
||||||
fileRef.addEventListener(Event.COMPLETE, saveComplete);
|
|
||||||
|
|
||||||
if ( action == "save" ) {
|
|
||||||
/* Save as a file */
|
|
||||||
if ( charSet == 'UTF16LE' ) {
|
|
||||||
fileRef.save( strToUTF16LE(clipText), fileName );
|
|
||||||
} else {
|
|
||||||
fileRef.save( strToUTF8(clipText), fileName );
|
|
||||||
}
|
|
||||||
} else if ( action == "pdf" ) {
|
|
||||||
fileRef.save( "This instance of ZeroClipboard is not configured for PDF export. "+
|
|
||||||
"Please use the PDF export version.", fileName+".txt" );
|
|
||||||
} else {
|
|
||||||
/* Copy the text to the clipboard. Note charset and BOM have no effect here */
|
|
||||||
System.setClipboard( clipText );
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function saveComplete(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function getProp( prop:String, opts:Array ):String
|
|
||||||
{
|
|
||||||
var i:int, iLen:int;
|
|
||||||
for ( i=0, iLen=opts.length ; i<iLen ; i++ )
|
|
||||||
{
|
|
||||||
if ( opts[i].indexOf( prop+":" ) != -1 )
|
|
||||||
{
|
|
||||||
return opts[i].replace( prop+":", "" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: strToUTF8
|
|
||||||
* Purpose: Convert a string to the output utf-8
|
|
||||||
* Returns: ByteArray
|
|
||||||
* Inputs: String
|
|
||||||
*/
|
|
||||||
private function strToUTF8( str:String ):ByteArray {
|
|
||||||
var utf8:ByteArray = new ByteArray();
|
|
||||||
|
|
||||||
/* BOM first */
|
|
||||||
if ( incBom ) {
|
|
||||||
utf8.writeByte( 0xEF );
|
|
||||||
utf8.writeByte( 0xBB );
|
|
||||||
utf8.writeByte( 0xBF );
|
|
||||||
}
|
|
||||||
utf8.writeUTFBytes( str );
|
|
||||||
|
|
||||||
return utf8;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: strToUTF16LE
|
|
||||||
* Purpose: Convert a string to the output utf-16
|
|
||||||
* Returns: ByteArray
|
|
||||||
* Inputs: String
|
|
||||||
* Notes: The fact that this function is needed is a little annoying. Basically, strings in
|
|
||||||
* AS3 are UTF-16 (with surrogate pairs and everything), but characters which take up less
|
|
||||||
* than 8 bytes appear to be stored as only 8 bytes. This function effective adds the
|
|
||||||
* padding required, and the BOM
|
|
||||||
*/
|
|
||||||
private function strToUTF16LE( str:String ):ByteArray {
|
|
||||||
var utf16:ByteArray = new ByteArray();
|
|
||||||
var iChar:uint;
|
|
||||||
var i:uint=0, iLen:uint = str.length;
|
|
||||||
|
|
||||||
/* BOM first */
|
|
||||||
if ( incBom ) {
|
|
||||||
utf16.writeByte( 0xFF );
|
|
||||||
utf16.writeByte( 0xFE );
|
|
||||||
}
|
|
||||||
|
|
||||||
while ( i < iLen ) {
|
|
||||||
iChar = str.charCodeAt(i);
|
|
||||||
|
|
||||||
if ( iChar < 0xFF ) {
|
|
||||||
/* one byte char */
|
|
||||||
utf16.writeByte( iChar );
|
|
||||||
utf16.writeByte( 0 );
|
|
||||||
} else {
|
|
||||||
/* two byte char */
|
|
||||||
utf16.writeByte( iChar & 0x00FF );
|
|
||||||
utf16.writeByte( iChar >> 8 );
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return utf16;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,310 +0,0 @@
|
||||||
/* Compile using: mxmlc --target-player=10.0.0 -static-link-runtime-shared-libraries=true -library-path+=lib ZeroClipboardPdf.as */
|
|
||||||
package {
|
|
||||||
import flash.display.Stage;
|
|
||||||
import flash.display.Sprite;
|
|
||||||
import flash.display.LoaderInfo;
|
|
||||||
import flash.display.StageScaleMode;
|
|
||||||
import flash.events.*;
|
|
||||||
import flash.display.StageAlign;
|
|
||||||
import flash.display.StageScaleMode;
|
|
||||||
import flash.external.ExternalInterface;
|
|
||||||
import flash.system.Security;
|
|
||||||
import flash.utils.*;
|
|
||||||
import flash.system.System;
|
|
||||||
import flash.net.FileReference;
|
|
||||||
import flash.net.FileFilter;
|
|
||||||
|
|
||||||
/* PDF imports */
|
|
||||||
import org.alivepdf.pdf.PDF;
|
|
||||||
import org.alivepdf.data.Grid;
|
|
||||||
import org.alivepdf.data.GridColumn;
|
|
||||||
import org.alivepdf.layout.Orientation;
|
|
||||||
import org.alivepdf.layout.Size;
|
|
||||||
import org.alivepdf.layout.Unit;
|
|
||||||
import org.alivepdf.display.Display;
|
|
||||||
import org.alivepdf.saving.Method;
|
|
||||||
import org.alivepdf.fonts.FontFamily;
|
|
||||||
import org.alivepdf.fonts.Style;
|
|
||||||
import org.alivepdf.fonts.CoreFont;
|
|
||||||
import org.alivepdf.colors.RGBColor;
|
|
||||||
|
|
||||||
public class ZeroClipboard extends Sprite {
|
|
||||||
|
|
||||||
private var domId:String = '';
|
|
||||||
private var button:Sprite;
|
|
||||||
private var clipText:String = 'blank';
|
|
||||||
private var fileName:String = '';
|
|
||||||
private var action:String = 'copy';
|
|
||||||
private var incBom:Boolean = true;
|
|
||||||
private var charSet:String = 'utf8';
|
|
||||||
|
|
||||||
|
|
||||||
public function ZeroClipboard() {
|
|
||||||
// constructor, setup event listeners and external interfaces
|
|
||||||
stage.scaleMode = StageScaleMode.EXACT_FIT;
|
|
||||||
flash.system.Security.allowDomain("*");
|
|
||||||
|
|
||||||
// import flashvars
|
|
||||||
var flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters;
|
|
||||||
domId = flashvars.id.split("\\").join("\\\\");
|
|
||||||
|
|
||||||
// invisible button covers entire stage
|
|
||||||
button = new Sprite();
|
|
||||||
button.buttonMode = true;
|
|
||||||
button.useHandCursor = true;
|
|
||||||
button.graphics.beginFill(0x00FF00);
|
|
||||||
button.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
|
|
||||||
button.alpha = 0.0;
|
|
||||||
addChild(button);
|
|
||||||
|
|
||||||
button.addEventListener(MouseEvent.CLICK, function(event:Event):void {
|
|
||||||
clickHandler(event);
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOver', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOut', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseDown', null );
|
|
||||||
} );
|
|
||||||
button.addEventListener(MouseEvent.MOUSE_UP, function(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseUp', null );
|
|
||||||
} );
|
|
||||||
|
|
||||||
// External functions - readd whenever the stage is made active for IE
|
|
||||||
addCallbacks();
|
|
||||||
stage.addEventListener(Event.ACTIVATE, addCallbacks);
|
|
||||||
|
|
||||||
// signal to the browser that we are ready
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'load', null );
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addCallbacks (evt:Event = null):void {
|
|
||||||
ExternalInterface.addCallback("setHandCursor", setHandCursor);
|
|
||||||
ExternalInterface.addCallback("clearText", clearText);
|
|
||||||
ExternalInterface.addCallback("setText", setText);
|
|
||||||
ExternalInterface.addCallback("appendText", appendText);
|
|
||||||
ExternalInterface.addCallback("setFileName", setFileName);
|
|
||||||
ExternalInterface.addCallback("setAction", setAction);
|
|
||||||
ExternalInterface.addCallback("setCharSet", setCharSet);
|
|
||||||
ExternalInterface.addCallback("setBomInc", setBomInc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function setCharSet(newCharSet:String):void {
|
|
||||||
if ( newCharSet == 'UTF16LE' ) {
|
|
||||||
charSet = newCharSet;
|
|
||||||
} else {
|
|
||||||
charSet = 'UTF8';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setBomInc(newBomInc:Boolean):void {
|
|
||||||
incBom = newBomInc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function clearText():void {
|
|
||||||
clipText = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function appendText(newText:String):void {
|
|
||||||
clipText += newText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setText(newText:String):void {
|
|
||||||
clipText = newText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setFileName(newFileName:String):void {
|
|
||||||
fileName = newFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setAction(newAction:String):void {
|
|
||||||
action = newAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setHandCursor(enabled:Boolean):void {
|
|
||||||
// control whether the hand cursor is shown on rollover (true)
|
|
||||||
// or the default arrow cursor (false)
|
|
||||||
button.useHandCursor = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function clickHandler(event:Event):void {
|
|
||||||
var fileRef:FileReference = new FileReference();
|
|
||||||
fileRef.addEventListener(Event.COMPLETE, saveComplete);
|
|
||||||
|
|
||||||
if ( action == "save" ) {
|
|
||||||
/* Save as a file */
|
|
||||||
if ( charSet == 'UTF16LE' ) {
|
|
||||||
fileRef.save( strToUTF16LE(clipText), fileName );
|
|
||||||
} else {
|
|
||||||
fileRef.save( strToUTF8(clipText), fileName );
|
|
||||||
}
|
|
||||||
} else if ( action == "pdf" ) {
|
|
||||||
/* Save as a PDF */
|
|
||||||
var pdf:PDF = configPdf();
|
|
||||||
fileRef.save( pdf.save( Method.LOCAL ), fileName );
|
|
||||||
} else {
|
|
||||||
/* Copy the text to the clipboard. Note charset and BOM have no effect here */
|
|
||||||
System.setClipboard( clipText );
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function saveComplete(event:Event):void {
|
|
||||||
ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function getProp( prop:String, opts:Array ):String
|
|
||||||
{
|
|
||||||
var i:int, iLen:int;
|
|
||||||
for ( i=0, iLen=opts.length ; i<iLen ; i++ )
|
|
||||||
{
|
|
||||||
if ( opts[i].indexOf( prop+":" ) != -1 )
|
|
||||||
{
|
|
||||||
return opts[i].replace( prop+":", "" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function configPdf():PDF
|
|
||||||
{
|
|
||||||
var
|
|
||||||
pdf:PDF,
|
|
||||||
i:int, iLen:int,
|
|
||||||
splitText:Array = clipText.split("--/TableToolsOpts--\n"),
|
|
||||||
opts:Array = splitText[0].split("\n"),
|
|
||||||
dataIn:Array = splitText[1].split("\n"),
|
|
||||||
aColRatio:Array = getProp( 'colWidth', opts ).split('\t'),
|
|
||||||
title:String = getProp( 'title', opts ),
|
|
||||||
message:String = getProp( 'message', opts ),
|
|
||||||
orientation:String = getProp( 'orientation', opts ),
|
|
||||||
size:String = getProp( 'size', opts ),
|
|
||||||
iPageWidth:int = 0,
|
|
||||||
dataOut:Array = [],
|
|
||||||
columns:Array = [],
|
|
||||||
headers:Array,
|
|
||||||
y:int = 0;
|
|
||||||
|
|
||||||
/* Create the PDF */
|
|
||||||
pdf = new PDF( Orientation[orientation.toUpperCase()], Unit.MM, Size[size.toUpperCase()] );
|
|
||||||
pdf.setDisplayMode( Display.FULL_WIDTH );
|
|
||||||
pdf.addPage();
|
|
||||||
iPageWidth = pdf.getCurrentPage().w-20;
|
|
||||||
pdf.textStyle( new RGBColor(0), 1 );
|
|
||||||
|
|
||||||
/* Add the title / message if there is one */
|
|
||||||
pdf.setFont( new CoreFont(FontFamily.HELVETICA), 14 );
|
|
||||||
if ( title != "" )
|
|
||||||
{
|
|
||||||
pdf.writeText(11, title+"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
pdf.setFont( new CoreFont(FontFamily.HELVETICA), 11 );
|
|
||||||
if ( message != "" )
|
|
||||||
{
|
|
||||||
pdf.writeText(11, message+"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Data setup. Split up the headers, and then construct the columns */
|
|
||||||
for ( i=0, iLen=dataIn.length ; i<iLen ; i++ )
|
|
||||||
{
|
|
||||||
if ( dataIn[i] != "" )
|
|
||||||
{
|
|
||||||
dataOut.push( dataIn[i].split("\t") );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
headers = dataOut.shift();
|
|
||||||
|
|
||||||
for ( i=0, iLen=headers.length ; i<iLen ; i++ )
|
|
||||||
{
|
|
||||||
columns.push( new GridColumn( " \n"+headers[i]+"\n ", i.toString(), aColRatio[i]*iPageWidth, 'C' ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
var grid:Grid = new Grid(
|
|
||||||
dataOut, /* 1. data */
|
|
||||||
iPageWidth, /* 2. width */
|
|
||||||
100, /* 3. height */
|
|
||||||
new RGBColor (0xE0E0E0), /* 4. headerColor */
|
|
||||||
new RGBColor (0xFFFFFF), /* 5. backgroundColor */
|
|
||||||
true, /* 6. alternateRowColor */
|
|
||||||
new RGBColor ( 0x0 ), /* 7. borderColor */
|
|
||||||
.1, /* 8. border alpha */
|
|
||||||
null, /* 9. joins */
|
|
||||||
columns /* 10. columns */
|
|
||||||
);
|
|
||||||
|
|
||||||
pdf.addGrid( grid, 0, y );
|
|
||||||
return pdf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: strToUTF8
|
|
||||||
* Purpose: Convert a string to the output utf-8
|
|
||||||
* Returns: ByteArray
|
|
||||||
* Inputs: String
|
|
||||||
*/
|
|
||||||
private function strToUTF8( str:String ):ByteArray {
|
|
||||||
var utf8:ByteArray = new ByteArray();
|
|
||||||
|
|
||||||
/* BOM first */
|
|
||||||
if ( incBom ) {
|
|
||||||
utf8.writeByte( 0xEF );
|
|
||||||
utf8.writeByte( 0xBB );
|
|
||||||
utf8.writeByte( 0xBF );
|
|
||||||
}
|
|
||||||
utf8.writeUTFBytes( str );
|
|
||||||
|
|
||||||
return utf8;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function: strToUTF16LE
|
|
||||||
* Purpose: Convert a string to the output utf-16
|
|
||||||
* Returns: ByteArray
|
|
||||||
* Inputs: String
|
|
||||||
* Notes: The fact that this function is needed is a little annoying. Basically, strings in
|
|
||||||
* AS3 are UTF-16 (with surrogate pairs and everything), but characters which take up less
|
|
||||||
* than 8 bytes appear to be stored as only 8 bytes. This function effective adds the
|
|
||||||
* padding required, and the BOM
|
|
||||||
*/
|
|
||||||
private function strToUTF16LE( str:String ):ByteArray {
|
|
||||||
var utf16:ByteArray = new ByteArray();
|
|
||||||
var iChar:uint;
|
|
||||||
var i:uint=0, iLen:uint = str.length;
|
|
||||||
|
|
||||||
/* BOM first */
|
|
||||||
if ( incBom ) {
|
|
||||||
utf16.writeByte( 0xFF );
|
|
||||||
utf16.writeByte( 0xFE );
|
|
||||||
}
|
|
||||||
|
|
||||||
while ( i < iLen ) {
|
|
||||||
iChar = str.charCodeAt(i);
|
|
||||||
|
|
||||||
if ( iChar < 0xFF ) {
|
|
||||||
/* one byte char */
|
|
||||||
utf16.writeByte( iChar );
|
|
||||||
utf16.writeByte( 0 );
|
|
||||||
} else {
|
|
||||||
/* two byte char */
|
|
||||||
utf16.writeByte( iChar & 0x00FF );
|
|
||||||
utf16.writeByte( iChar >> 8 );
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return utf16;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,321 +0,0 @@
|
||||||
/*
|
|
||||||
* File: TableTools.css
|
|
||||||
* Description: Styles for TableTools 2
|
|
||||||
* Author: Allan Jardine (www.sprymedia.co.uk)
|
|
||||||
* Language: Javascript
|
|
||||||
* License: GPL v2 / 3 point BSD
|
|
||||||
* Project: DataTables
|
|
||||||
*
|
|
||||||
* Copyright 2009-2012 Allan Jardine, all rights reserved.
|
|
||||||
*
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
*
|
|
||||||
* CSS name space:
|
|
||||||
* DTTT DataTables TableTools
|
|
||||||
*
|
|
||||||
* Style sheet provides:
|
|
||||||
* CONTAINER TableTools container element and styles applying to all components
|
|
||||||
* BUTTON_STYLES Action specific button styles
|
|
||||||
* SELECTING Row selection styles
|
|
||||||
* COLLECTIONS Drop down list (collection) styles
|
|
||||||
* PRINTING Print display styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* CONTAINER
|
|
||||||
* TableTools container element and styles applying to all components
|
|
||||||
*/
|
|
||||||
div.DTTT_container {
|
|
||||||
position: relative;
|
|
||||||
float: right;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.DTTT_button,
|
|
||||||
div.DTTT_button,
|
|
||||||
a.DTTT_button {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
margin-right: 3px;
|
|
||||||
padding: 5px 8px;
|
|
||||||
border: 1px solid #999;
|
|
||||||
cursor: pointer;
|
|
||||||
*cursor: hand;
|
|
||||||
font-size: 0.88em;
|
|
||||||
color: black !important;
|
|
||||||
|
|
||||||
-webkit-border-radius: 2px;
|
|
||||||
-moz-border-radius: 2px;
|
|
||||||
-ms-border-radius: 2px;
|
|
||||||
-o-border-radius: 2px;
|
|
||||||
border-radius: 2px;
|
|
||||||
|
|
||||||
-webkit-box-shadow: 1px 1px 3px #ccc;
|
|
||||||
-moz-box-shadow: 1px 1px 3px #ccc;
|
|
||||||
-ms-box-shadow: 1px 1px 3px #ccc;
|
|
||||||
-o-box-shadow: 1px 1px 3px #ccc;
|
|
||||||
box-shadow: 1px 1px 3px #ccc;
|
|
||||||
|
|
||||||
/* Generated by http://www.colorzilla.com/gradient-editor/ */
|
|
||||||
background: #ffffff; /* Old browsers */
|
|
||||||
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
|
||||||
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
|
||||||
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
|
||||||
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Buttons are cunning border-box sizing - we can't just use that for A and DIV due to IE6/7 */
|
|
||||||
button.DTTT_button {
|
|
||||||
height: 30px;
|
|
||||||
padding: 3px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_button embed {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.DTTT_button:hover,
|
|
||||||
div.DTTT_button:hover,
|
|
||||||
a.DTTT_button:hover {
|
|
||||||
border: 1px solid #666;
|
|
||||||
text-decoration: none !important;
|
|
||||||
|
|
||||||
-webkit-box-shadow: 1px 1px 3px #999;
|
|
||||||
-moz-box-shadow: 1px 1px 3px #999;
|
|
||||||
-ms-box-shadow: 1px 1px 3px #999;
|
|
||||||
-o-box-shadow: 1px 1px 3px #999;
|
|
||||||
box-shadow: 1px 1px 3px #999;
|
|
||||||
|
|
||||||
background: #f3f3f3; /* Old browsers */
|
|
||||||
background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
|
|
||||||
background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
|
|
||||||
background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
|
|
||||||
background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
|
|
||||||
}
|
|
||||||
|
|
||||||
button.DTTT_disabled,
|
|
||||||
div.DTTT_disabled,
|
|
||||||
a.DTTT_disabled {
|
|
||||||
color: #999;
|
|
||||||
border: 1px solid #d0d0d0;
|
|
||||||
|
|
||||||
background: #ffffff; /* Old browsers */
|
|
||||||
background: -webkit-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -moz-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* FF3.6+ */
|
|
||||||
background: -ms-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* IE10+ */
|
|
||||||
background: -o-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Opera 11.10+ */
|
|
||||||
background: linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 ); /* IE6-9 */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* BUTTON_STYLES
|
|
||||||
* Action specific button styles
|
|
||||||
* If you want images - comment this back in
|
|
||||||
|
|
||||||
a.DTTT_button_csv,
|
|
||||||
a.DTTT_button_xls,
|
|
||||||
a.DTTT_button_copy,
|
|
||||||
a.DTTT_button_pdf,
|
|
||||||
a.DTTT_button_print {
|
|
||||||
padding-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.DTTT_button_csv span,
|
|
||||||
a.DTTT_button_xls span,
|
|
||||||
a.DTTT_button_copy span,
|
|
||||||
a.DTTT_button_pdf span,
|
|
||||||
a.DTTT_button_print span {
|
|
||||||
display: inline-block;
|
|
||||||
height: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
padding-right: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; }
|
|
||||||
a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; }
|
|
||||||
|
|
||||||
a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; }
|
|
||||||
a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; }
|
|
||||||
|
|
||||||
a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; }
|
|
||||||
a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; }
|
|
||||||
|
|
||||||
a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; }
|
|
||||||
a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; }
|
|
||||||
|
|
||||||
a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; }
|
|
||||||
a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; }
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
button.DTTT_button_collection span {
|
|
||||||
padding-right: 17px;
|
|
||||||
background: url(../images/collection.png) no-repeat center right;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.DTTT_button_collection:hover span {
|
|
||||||
padding-right: 17px;
|
|
||||||
background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SELECTING
|
|
||||||
* Row selection styles
|
|
||||||
*/
|
|
||||||
table.DTTT_selectable tbody tr {
|
|
||||||
cursor: pointer;
|
|
||||||
*cursor: hand;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_1 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_2 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_3 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_1 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_2 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_3 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* COLLECTIONS
|
|
||||||
* Drop down list (collection) styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
div.DTTT_collection {
|
|
||||||
width: 150px;
|
|
||||||
padding: 8px 8px 4px 8px;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
border: 1px solid rgba( 0, 0, 0, 0.4 );
|
|
||||||
background-color: #f3f3f3;
|
|
||||||
background-color: rgba( 255, 255, 255, 0.3 );
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 2002;
|
|
||||||
|
|
||||||
-webkit-border-radius: 5px;
|
|
||||||
-moz-border-radius: 5px;
|
|
||||||
-ms-border-radius: 5px;
|
|
||||||
-o-border-radius: 5px;
|
|
||||||
border-radius: 5px;
|
|
||||||
|
|
||||||
-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
|
||||||
-moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
|
||||||
-ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
|
||||||
-o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
|
||||||
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
div.DTTT_collection_background {
|
|
||||||
background: transparent url(../images/background.png) repeat top left;
|
|
||||||
z-index: 2001;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.DTTT_collection button.DTTT_button,
|
|
||||||
div.DTTT_collection div.DTTT_button,
|
|
||||||
div.DTTT_collection a.DTTT_button {
|
|
||||||
position: relative;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
|
|
||||||
display: block;
|
|
||||||
float: none;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
|
|
||||||
-webkit-box-shadow: 1px 1px 3px #999;
|
|
||||||
-moz-box-shadow: 1px 1px 3px #999;
|
|
||||||
-ms-box-shadow: 1px 1px 3px #999;
|
|
||||||
-o-box-shadow: 1px 1px 3px #999;
|
|
||||||
box-shadow: 1px 1px 3px #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* PRINTING
|
|
||||||
* Print display styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
.DTTT_print_info {
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 400px;
|
|
||||||
height: 150px;
|
|
||||||
margin-left: -200px;
|
|
||||||
margin-top: -75px;
|
|
||||||
text-align: center;
|
|
||||||
color: #333;
|
|
||||||
padding: 10px 30px;
|
|
||||||
|
|
||||||
background: #ffffff; /* Old browsers */
|
|
||||||
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
|
||||||
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
|
||||||
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
|
||||||
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
|
||||||
|
|
||||||
opacity: 0.95;
|
|
||||||
|
|
||||||
border: 1px solid black;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.5);
|
|
||||||
|
|
||||||
-webkit-border-radius: 6px;
|
|
||||||
-moz-border-radius: 6px;
|
|
||||||
-ms-border-radius: 6px;
|
|
||||||
-o-border-radius: 6px;
|
|
||||||
border-radius: 6px;
|
|
||||||
|
|
||||||
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
|
||||||
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
|
||||||
-ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
|
||||||
-o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
|
||||||
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_print_info h6 {
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 28px;
|
|
||||||
line-height: 28px;
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_print_info p {
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,185 +0,0 @@
|
||||||
/*
|
|
||||||
* File: TableTools.css
|
|
||||||
* Description: Styles for TableTools 2 with JUI theming
|
|
||||||
* Author: Allan Jardine (www.sprymedia.co.uk)
|
|
||||||
* Language: Javascript
|
|
||||||
* License: LGPL / 3 point BSD
|
|
||||||
* Project: DataTables
|
|
||||||
*
|
|
||||||
* Copyright 2010 Allan Jardine, all rights reserved.
|
|
||||||
*
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
*
|
|
||||||
* Notes:
|
|
||||||
* Generally speaking, please refer to the TableTools.css file - this file contains basic
|
|
||||||
* modifications to that 'master' stylesheet for ThemeRoller.
|
|
||||||
*
|
|
||||||
* CSS name space:
|
|
||||||
* DTTT DataTables TableTools
|
|
||||||
*
|
|
||||||
* Colour dictionary:
|
|
||||||
* Button border #d0d0d0
|
|
||||||
* Button border hover #999999
|
|
||||||
* Hover background #f0f0f0
|
|
||||||
* Action blue #4b66d9
|
|
||||||
*
|
|
||||||
* Style sheet provides:
|
|
||||||
* CONTAINER TableTools container element and styles applying to all components
|
|
||||||
* SELECTING Row selection styles
|
|
||||||
* COLLECTIONS Drop down list (collection) styles
|
|
||||||
* PRINTING Print display styles
|
|
||||||
* MISC Minor misc styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* CONTAINER
|
|
||||||
* TableTools container element and styles applying to all components
|
|
||||||
*/
|
|
||||||
div.DTTT_container {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_button {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
margin-right: 3px;
|
|
||||||
padding: 3px 10px;
|
|
||||||
border: 1px solid #d0d0d0;
|
|
||||||
background-color: #fff;
|
|
||||||
color: #333 !important;
|
|
||||||
cursor: pointer;
|
|
||||||
*cursor: hand;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_button::-moz-focus-inner {
|
|
||||||
border: none !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SELECTING
|
|
||||||
* Row selection styles
|
|
||||||
*/
|
|
||||||
table.DTTT_selectable tbody tr {
|
|
||||||
cursor: pointer;
|
|
||||||
*cursor: hand;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_1 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_2 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.odd td.sorting_3 {
|
|
||||||
background-color: #9FAFD1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_1 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_2 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.dataTable tr.DTTT_selected.even td.sorting_3 {
|
|
||||||
background-color: #B0BED9;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* COLLECTIONS
|
|
||||||
* Drop down list (collection) styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
div.DTTT_collection {
|
|
||||||
width: 150px;
|
|
||||||
background-color: #f3f3f3;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 2002;
|
|
||||||
|
|
||||||
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
-moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
div.DTTT_collection_background {
|
|
||||||
background: url(../images/background.png) repeat top left;
|
|
||||||
z-index: 2001;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.DTTT_collection button.DTTT_button,
|
|
||||||
div.DTTT_collection div.DTTT_button,
|
|
||||||
div.DTTT_collection a.DTTT_button {
|
|
||||||
float: none;
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: -0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* PRINTING
|
|
||||||
* Print display styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
.DTTT_print_info {
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 400px;
|
|
||||||
height: 150px;
|
|
||||||
margin-left: -200px;
|
|
||||||
margin-top: -75px;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #3f3f3f;
|
|
||||||
color: white;
|
|
||||||
padding: 10px 30px;
|
|
||||||
|
|
||||||
opacity: 0.9;
|
|
||||||
|
|
||||||
border-radius: 5px;
|
|
||||||
-moz-border-radius: 5px;
|
|
||||||
-webkit-border-radius: 5px;
|
|
||||||
|
|
||||||
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
-moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_print_info h6 {
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 28px;
|
|
||||||
line-height: 28px;
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DTTT_print_info p {
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MISC
|
|
||||||
* Minor misc styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
.DTTT_disabled {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 944 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.0 KiB |
|
@ -1,77 +0,0 @@
|
||||||
// Simple Set Clipboard System
|
|
||||||
// Author: Joseph Huckaby
|
|
||||||
var ZeroClipboard_TableTools={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=document.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+
|
|
||||||
a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!=a.style.width&&(b.width=a.style.width.replace("px",""));""!=a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},
|
|
||||||
Client:function(a){this.handlers={};this.id=ZeroClipboard_TableTools.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;ZeroClipboard_TableTools.register(this.id,this);a&&this.glue(a)}};
|
|
||||||
ZeroClipboard_TableTools.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=ZeroClipboard_TableTools.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex)+1);var d=ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);this.div=document.createElement("div");var e=this.div.style;e.position="absolute";e.left="0px";e.top="0px";e.width=d.width+
|
|
||||||
"px";e.height=d.height+"px";e.zIndex=c;"undefined"!=typeof b&&""!=b&&(this.div.title=b);0!=d.width&&0!=d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height))},positionElement:function(){var a=ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!=a.width&&0!=a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=
|
|
||||||
a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var e=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+e+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
|
|
||||||
ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
|
|
||||||
d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=document.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=ZeroClipboard_TableTools.$(a))||this.hide());if(this.domElement&&this.div){var a=ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement),
|
|
||||||
b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},
|
|
||||||
setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=document.getElementById(this.movieId);
|
|
||||||
if(!this.movie){var c=this;setTimeout(function(){c.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);
|
|
||||||
break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=
|
|
||||||
0,e=this.handlers[a].length;d<e;d++){var f=this.handlers[a][d];if("function"==typeof f)f(this,b);else if("object"==typeof f&&2==f.length)f[0][f[1]](this,b);else if("string"==typeof f)window[f](this,b)}}};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* File: TableTools.min.js
|
|
||||||
* Version: 2.1.5
|
|
||||||
* Author: Allan Jardine (www.sprymedia.co.uk)
|
|
||||||
*
|
|
||||||
* Copyright 2009-2012 Allan Jardine, all rights reserved.
|
|
||||||
*
|
|
||||||
* This source file is free software, under either the GPL v2 license or a
|
|
||||||
* BSD (3 point) style license, as supplied with this software.
|
|
||||||
*
|
|
||||||
* This source file 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 license files for details.
|
|
||||||
*/
|
|
||||||
var TableTools;
|
|
||||||
(function(e,n,g){TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,
|
|
||||||
background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},
|
|
||||||
fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){var b=this._fnGetMasterSettings();this._fnRowSelect(!0===a?b.dt.aiDisplay:b.dt.aoData)},fnSelectNone:function(a){this._fnGetMasterSettings();this._fnRowDeselect(this.fnGetSelected(a))},fnSelect:function(a){"single"==
|
|
||||||
this.s.select.type?(this.fnSelectNone(),this._fnRowSelect(a)):"multi"==this.s.select.type&&this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=g.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"\u00a1".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,
|
|
||||||
a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,g;e=0;for(g=a.length;e<g;e++)a[e]&&(d=b[e].nTh.offsetWidth,f+=d,c.push(d));e=0;for(g=c.length;e<g;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in ZeroClipboard_TableTools.clients)if(a){var b=ZeroClipboard_TableTools.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},
|
|
||||||
fnResizeRequired:function(){for(var a in ZeroClipboard_TableTools.clients)if(a){var b=ZeroClipboard_TableTools.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&&!1===b.sized)return!0}return!1},fnPrint:function(a,b){void 0===b&&(b={});void 0===a||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=g.createElement("div");c.className=this.classes.print.info;c.innerHTML=a;g.body.appendChild(c);setTimeout(function(){e(c).fadeOut("normal",function(){g.body.removeChild(c)})},
|
|
||||||
b)},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=g.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select","tr");e(b.dom.container).empty()}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&
|
|
||||||
(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof ZeroClipboard_TableTools&&(ZeroClipboard_TableTools.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&
|
|
||||||
(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);
|
|
||||||
continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=e.extend(c,a[d],!0)}b.appendChild(this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);a.sAction.match(/flash/)?this._fnFlashConfig(c,a):"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));return c},_fnButtonBase:function(a,b){var c,d,f;b?(c="default"!==
|
|
||||||
a.sTag?a.sTag:this.s.tags.collection.button,d="default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c="default"!==a.sTag?a.sTag:this.s.tags.button,d="default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=g.createElement(c);d=g.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;
|
|
||||||
e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=g.createElement(this.s.tags.collection.container);c.style.display="none";c.className=this.classes.collection.container;b._collection=c;g.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,
|
|
||||||
j=d.left,d=d.top+e(a).outerHeight(),m=e(n).height(),h=e(g).height(),k=e(n).width(),o=e(g).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=g.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top="0px";l.style.height=(m>h?m:h)+"px";l.style.width=(k>o?k:o)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);g.body.appendChild(l);g.body.appendChild(f);m=e(f).outerWidth();k=e(f).outerHeight();
|
|
||||||
j+m>o&&(f.style.left=o-m+"px");d+k>h&&(f.style.top=d-k-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c,null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display=
|
|
||||||
"none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table);e(b.nTBody).on("click.DTTT_Select","tr",function(c){this.parentNode==b.nTBody&&null!==b.oInstance.fnGetData(this)&&(a.fnIsSelected(this)?a._fnRowDeselect(this,c):"single"==a.s.select.type?(a.fnSelectNone(),
|
|
||||||
a._fnRowSelect(this,c)):"multi"==a.s.select.type&&a._fnRowSelect(this,c))});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);
|
|
||||||
null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,
|
|
||||||
d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==
|
|
||||||
b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnFlashConfig:function(a,b){var c=this,d=new ZeroClipboard_TableTools.Client;
|
|
||||||
null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==
|
|
||||||
null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id");g.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=
|
|
||||||
0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=this.s.dt;if("object"==typeof a){i=0;for(iLen=c.aoColumns.length;i<iLen;i++)b.push(!1);i=0;for(iLen=a.length;i<iLen;i++)b[a[i]]=!0}else if("visible"==a){i=0;for(iLen=c.aoColumns.length;i<iLen;i++)b.push(c.aoColumns[i].bVisible?!0:!1)}else if("hidden"==a){i=0;for(iLen=c.aoColumns.length;i<iLen;i++)b.push(c.aoColumns[i].bVisible?!1:!0)}else if("sortable"==a){i=0;for(iLen=c.aoColumns.length;i<iLen;i++)b.push(c.aoColumns[i].bSortable?
|
|
||||||
!0:!1)}else{i=0;for(iLen=c.aoColumns.length;i<iLen;i++)b.push(!0)}return b},_fnNewline:function(a){return"auto"==a.sNewLine?navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,g=[],h="",k=this.s.dt,o,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=k.aoColumns.length;b<c;b++)n[b]&&(h=k.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,
|
|
||||||
"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));g.push(j.join(a.sFieldSeperator))}var p=k.aiDisplay;f=this.fnGetSelected();if("none"!==this.s.select.type&&d&&0!==f.length){p=[];b=0;for(c=f.length;b<c;b++)p.push(k.oInstance.fnGetPosition(f[b]))}d=0;for(f=p.length;d<f;d++){o=k.aoData[p[d]].nTr;j=[];b=0;for(c=k.aoColumns.length;b<c;b++)n[b]&&(h=k.oApi._fnGetCellData(k,p[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,o,p[d])+"":"string"==typeof h?
|
|
||||||
(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));g.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=e.grep(k.aoOpenRows,function(a){return a.nParent===o}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),g.push(h)))}if(a.bFooter&&null!==k.nTFoot){j=[];b=0;for(c=k.aoColumns.length;b<
|
|
||||||
c;b++)n[b]&&null!==k.aoColumns[b].nTf&&(h=k.aoColumns[b].nTf.innerHTML.replace(/\n/g," ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));g.push(j.join(a.sFieldSeperator))}return _sLastData=g.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;
|
|
||||||
var b=g.createElement("div");return a.replace(/&([^\s]*);/g,function(a,d){if("#"===a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),
|
|
||||||
e(this.s.dt.nTable).bind("draw.DTTT_Print",function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var j=0,m=d[f].length;j<m;j++)this.dom.print.hidden.push({node:d[f][j],display:"block"}),d[f][j].style.display="none";e(g.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&(this.dom.print.message=g.createElement("div"),this.dom.print.message.className=this.classes.print.message,this.dom.print.message.innerHTML=
|
|
||||||
a.sMessage,g.body.insertBefore(this.dom.print.message,g.body.childNodes[0]));this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(g).bind("keydown.DTTT",function(a){if(a.keyCode==27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print,c=this.dom.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);null!==c.message&&(g.body.removeChild(c.message),
|
|
||||||
c.message=null);e(g.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(g).unbind("keydown.DTTT")},_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));
|
|
||||||
c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=
|
|
||||||
a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f<g;f++)if(d[f]!=a&&1==d[f].nodeType){var m=e(d[f]).css("display");"none"!=m&&(b.push({node:d[f],
|
|
||||||
display:m}),d[f].style.display="none")}"BODY"!=c.nodeName&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=g.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==
|
|
||||||
a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",
|
|
||||||
sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,fnMouseover:null,fnMouseout:null,fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,
|
|
||||||
{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;a=null===this.s.dt.nTFoot?a-1:a-2;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+
|
|
||||||
" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,
|
|
||||||
{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.",sMessage:null,bShowAll:!0,sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},
|
|
||||||
fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==
|
|
||||||
this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({},TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",
|
|
||||||
sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",
|
|
||||||
sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller=
|
|
||||||
{container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"media/swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.prototype.CLASS=
|
|
||||||
"TableTools";TableTools.VERSION="2.1.5";TableTools.prototype.VERSION=TableTools.VERSION;"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
|
|
||||||
e.fn.DataTable.TableTools=TableTools})(jQuery,window,document);
|
|
|
@ -1,367 +0,0 @@
|
||||||
// Simple Set Clipboard System
|
|
||||||
// Author: Joseph Huckaby
|
|
||||||
|
|
||||||
var ZeroClipboard_TableTools = {
|
|
||||||
|
|
||||||
version: "1.0.4-TableTools2",
|
|
||||||
clients: {}, // registered upload clients on page, indexed by id
|
|
||||||
moviePath: '', // URL to movie
|
|
||||||
nextId: 1, // ID of next movie
|
|
||||||
|
|
||||||
$: function(thingy) {
|
|
||||||
// simple DOM lookup utility function
|
|
||||||
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
|
|
||||||
if (!thingy.addClass) {
|
|
||||||
// extend element with a few useful methods
|
|
||||||
thingy.hide = function() { this.style.display = 'none'; };
|
|
||||||
thingy.show = function() { this.style.display = ''; };
|
|
||||||
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
|
|
||||||
thingy.removeClass = function(name) {
|
|
||||||
this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
|
|
||||||
};
|
|
||||||
thingy.hasClass = function(name) {
|
|
||||||
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return thingy;
|
|
||||||
},
|
|
||||||
|
|
||||||
setMoviePath: function(path) {
|
|
||||||
// set path to ZeroClipboard.swf
|
|
||||||
this.moviePath = path;
|
|
||||||
},
|
|
||||||
|
|
||||||
dispatch: function(id, eventName, args) {
|
|
||||||
// receive event from flash movie, send to client
|
|
||||||
var client = this.clients[id];
|
|
||||||
if (client) {
|
|
||||||
client.receiveEvent(eventName, args);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
register: function(id, client) {
|
|
||||||
// register new client to receive events
|
|
||||||
this.clients[id] = client;
|
|
||||||
},
|
|
||||||
|
|
||||||
getDOMObjectPosition: function(obj) {
|
|
||||||
// get absolute coordinates for dom element
|
|
||||||
var info = {
|
|
||||||
left: 0,
|
|
||||||
top: 0,
|
|
||||||
width: obj.width ? obj.width : obj.offsetWidth,
|
|
||||||
height: obj.height ? obj.height : obj.offsetHeight
|
|
||||||
};
|
|
||||||
|
|
||||||
if ( obj.style.width != "" )
|
|
||||||
info.width = obj.style.width.replace("px","");
|
|
||||||
|
|
||||||
if ( obj.style.height != "" )
|
|
||||||
info.height = obj.style.height.replace("px","");
|
|
||||||
|
|
||||||
while (obj) {
|
|
||||||
info.left += obj.offsetLeft;
|
|
||||||
info.top += obj.offsetTop;
|
|
||||||
obj = obj.offsetParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
|
|
||||||
Client: function(elem) {
|
|
||||||
// constructor for new simple upload client
|
|
||||||
this.handlers = {};
|
|
||||||
|
|
||||||
// unique ID
|
|
||||||
this.id = ZeroClipboard_TableTools.nextId++;
|
|
||||||
this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
|
|
||||||
|
|
||||||
// register client with singleton to receive flash events
|
|
||||||
ZeroClipboard_TableTools.register(this.id, this);
|
|
||||||
|
|
||||||
// create movie
|
|
||||||
if (elem) this.glue(elem);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ZeroClipboard_TableTools.Client.prototype = {
|
|
||||||
|
|
||||||
id: 0, // unique ID for us
|
|
||||||
ready: false, // whether movie is ready to receive events or not
|
|
||||||
movie: null, // reference to movie object
|
|
||||||
clipText: '', // text to copy to clipboard
|
|
||||||
fileName: '', // default file save name
|
|
||||||
action: 'copy', // action to perform
|
|
||||||
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
|
|
||||||
cssEffects: true, // enable CSS mouse effects on dom container
|
|
||||||
handlers: null, // user event handlers
|
|
||||||
sized: false,
|
|
||||||
|
|
||||||
glue: function(elem, title) {
|
|
||||||
// glue to DOM element
|
|
||||||
// elem can be ID or actual DOM element object
|
|
||||||
this.domElement = ZeroClipboard_TableTools.$(elem);
|
|
||||||
|
|
||||||
// float just above object, or zIndex 99 if dom element isn't set
|
|
||||||
var zIndex = 99;
|
|
||||||
if (this.domElement.style.zIndex) {
|
|
||||||
zIndex = parseInt(this.domElement.style.zIndex) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// find X/Y position of domElement
|
|
||||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
|
||||||
|
|
||||||
// create floating DIV above element
|
|
||||||
this.div = document.createElement('div');
|
|
||||||
var style = this.div.style;
|
|
||||||
style.position = 'absolute';
|
|
||||||
style.left = '0px';
|
|
||||||
style.top = '0px';
|
|
||||||
style.width = (box.width) + 'px';
|
|
||||||
style.height = box.height + 'px';
|
|
||||||
style.zIndex = zIndex;
|
|
||||||
|
|
||||||
if ( typeof title != "undefined" && title != "" ) {
|
|
||||||
this.div.title = title;
|
|
||||||
}
|
|
||||||
if ( box.width != 0 && box.height != 0 ) {
|
|
||||||
this.sized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// style.backgroundColor = '#f00'; // debug
|
|
||||||
if ( this.domElement ) {
|
|
||||||
this.domElement.appendChild(this.div);
|
|
||||||
this.div.innerHTML = this.getHTML( box.width, box.height );
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
positionElement: function() {
|
|
||||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
|
||||||
var style = this.div.style;
|
|
||||||
|
|
||||||
style.position = 'absolute';
|
|
||||||
//style.left = (this.domElement.offsetLeft)+'px';
|
|
||||||
//style.top = this.domElement.offsetTop+'px';
|
|
||||||
style.width = box.width + 'px';
|
|
||||||
style.height = box.height + 'px';
|
|
||||||
|
|
||||||
if ( box.width != 0 && box.height != 0 ) {
|
|
||||||
this.sized = true;
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var flash = this.div.childNodes[0];
|
|
||||||
flash.width = box.width;
|
|
||||||
flash.height = box.height;
|
|
||||||
},
|
|
||||||
|
|
||||||
getHTML: function(width, height) {
|
|
||||||
// return HTML for movie
|
|
||||||
var html = '';
|
|
||||||
var flashvars = 'id=' + this.id +
|
|
||||||
'&width=' + width +
|
|
||||||
'&height=' + height;
|
|
||||||
|
|
||||||
if (navigator.userAgent.match(/MSIE/)) {
|
|
||||||
// IE gets an OBJECT tag
|
|
||||||
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
|
|
||||||
html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// all other browsers get an EMBED tag
|
|
||||||
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
|
|
||||||
}
|
|
||||||
return html;
|
|
||||||
},
|
|
||||||
|
|
||||||
hide: function() {
|
|
||||||
// temporarily hide floater offscreen
|
|
||||||
if (this.div) {
|
|
||||||
this.div.style.left = '-2000px';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show: function() {
|
|
||||||
// show ourselves after a call to hide()
|
|
||||||
this.reposition();
|
|
||||||
},
|
|
||||||
|
|
||||||
destroy: function() {
|
|
||||||
// destroy control and floater
|
|
||||||
if (this.domElement && this.div) {
|
|
||||||
this.hide();
|
|
||||||
this.div.innerHTML = '';
|
|
||||||
|
|
||||||
var body = document.getElementsByTagName('body')[0];
|
|
||||||
try { body.removeChild( this.div ); } catch(e) {;}
|
|
||||||
|
|
||||||
this.domElement = null;
|
|
||||||
this.div = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
reposition: function(elem) {
|
|
||||||
// reposition our floating div, optionally to new container
|
|
||||||
// warning: container CANNOT change size, only position
|
|
||||||
if (elem) {
|
|
||||||
this.domElement = ZeroClipboard_TableTools.$(elem);
|
|
||||||
if (!this.domElement) this.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.domElement && this.div) {
|
|
||||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
|
||||||
var style = this.div.style;
|
|
||||||
style.left = '' + box.left + 'px';
|
|
||||||
style.top = '' + box.top + 'px';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
clearText: function() {
|
|
||||||
// clear the text to be copy / saved
|
|
||||||
this.clipText = '';
|
|
||||||
if (this.ready) this.movie.clearText();
|
|
||||||
},
|
|
||||||
|
|
||||||
appendText: function(newText) {
|
|
||||||
// append text to that which is to be copied / saved
|
|
||||||
this.clipText += newText;
|
|
||||||
if (this.ready) { this.movie.appendText(newText) ;}
|
|
||||||
},
|
|
||||||
|
|
||||||
setText: function(newText) {
|
|
||||||
// set text to be copied to be copied / saved
|
|
||||||
this.clipText = newText;
|
|
||||||
if (this.ready) { this.movie.setText(newText) ;}
|
|
||||||
},
|
|
||||||
|
|
||||||
setCharSet: function(charSet) {
|
|
||||||
// set the character set (UTF16LE or UTF8)
|
|
||||||
this.charSet = charSet;
|
|
||||||
if (this.ready) { this.movie.setCharSet(charSet) ;}
|
|
||||||
},
|
|
||||||
|
|
||||||
setBomInc: function(bomInc) {
|
|
||||||
// set if the BOM should be included or not
|
|
||||||
this.incBom = bomInc;
|
|
||||||
if (this.ready) { this.movie.setBomInc(bomInc) ;}
|
|
||||||
},
|
|
||||||
|
|
||||||
setFileName: function(newText) {
|
|
||||||
// set the file name
|
|
||||||
this.fileName = newText;
|
|
||||||
if (this.ready) this.movie.setFileName(newText);
|
|
||||||
},
|
|
||||||
|
|
||||||
setAction: function(newText) {
|
|
||||||
// set action (save or copy)
|
|
||||||
this.action = newText;
|
|
||||||
if (this.ready) this.movie.setAction(newText);
|
|
||||||
},
|
|
||||||
|
|
||||||
addEventListener: function(eventName, func) {
|
|
||||||
// add user event listener for event
|
|
||||||
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
|
|
||||||
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
|
||||||
if (!this.handlers[eventName]) this.handlers[eventName] = [];
|
|
||||||
this.handlers[eventName].push(func);
|
|
||||||
},
|
|
||||||
|
|
||||||
setHandCursor: function(enabled) {
|
|
||||||
// enable hand cursor (true), or default arrow cursor (false)
|
|
||||||
this.handCursorEnabled = enabled;
|
|
||||||
if (this.ready) this.movie.setHandCursor(enabled);
|
|
||||||
},
|
|
||||||
|
|
||||||
setCSSEffects: function(enabled) {
|
|
||||||
// enable or disable CSS effects on DOM container
|
|
||||||
this.cssEffects = !!enabled;
|
|
||||||
},
|
|
||||||
|
|
||||||
receiveEvent: function(eventName, args) {
|
|
||||||
// receive event from flash
|
|
||||||
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
|
||||||
|
|
||||||
// special behavior for certain events
|
|
||||||
switch (eventName) {
|
|
||||||
case 'load':
|
|
||||||
// movie claims it is ready, but in IE this isn't always the case...
|
|
||||||
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
|
|
||||||
this.movie = document.getElementById(this.movieId);
|
|
||||||
if (!this.movie) {
|
|
||||||
var self = this;
|
|
||||||
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// firefox on pc needs a "kick" in order to set these in certain cases
|
|
||||||
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
|
|
||||||
var self = this;
|
|
||||||
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
|
|
||||||
this.ready = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.ready = true;
|
|
||||||
this.movie.clearText();
|
|
||||||
this.movie.appendText( this.clipText );
|
|
||||||
this.movie.setFileName( this.fileName );
|
|
||||||
this.movie.setAction( this.action );
|
|
||||||
this.movie.setCharSet( this.charSet );
|
|
||||||
this.movie.setBomInc( this.incBom );
|
|
||||||
this.movie.setHandCursor( this.handCursorEnabled );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mouseover':
|
|
||||||
if (this.domElement && this.cssEffects) {
|
|
||||||
//this.domElement.addClass('hover');
|
|
||||||
if (this.recoverActive) this.domElement.addClass('active');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mouseout':
|
|
||||||
if (this.domElement && this.cssEffects) {
|
|
||||||
this.recoverActive = false;
|
|
||||||
if (this.domElement.hasClass('active')) {
|
|
||||||
this.domElement.removeClass('active');
|
|
||||||
this.recoverActive = true;
|
|
||||||
}
|
|
||||||
//this.domElement.removeClass('hover');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mousedown':
|
|
||||||
if (this.domElement && this.cssEffects) {
|
|
||||||
this.domElement.addClass('active');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mouseup':
|
|
||||||
if (this.domElement && this.cssEffects) {
|
|
||||||
this.domElement.removeClass('active');
|
|
||||||
this.recoverActive = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} // switch eventName
|
|
||||||
|
|
||||||
if (this.handlers[eventName]) {
|
|
||||||
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
|
|
||||||
var func = this.handlers[eventName][idx];
|
|
||||||
|
|
||||||
if (typeof(func) == 'function') {
|
|
||||||
// actual function reference
|
|
||||||
func(this, args);
|
|
||||||
}
|
|
||||||
else if ((typeof(func) == 'object') && (func.length == 2)) {
|
|
||||||
// PHP style object + method, i.e. [myObject, 'myMethod']
|
|
||||||
func[0][ func[1] ](this, args);
|
|
||||||
}
|
|
||||||
else if (typeof(func) == 'string') {
|
|
||||||
// name of function
|
|
||||||
window[func](this, args);
|
|
||||||
}
|
|
||||||
} // foreach event handler defined
|
|
||||||
} // user defined handler for event
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|