From ac0ab9fb0128e518c254a35cd1f330305e16b77f Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 30 Aug 2011 18:32:25 +0000 Subject: [PATCH] Add extras plugin for dataTables --- .../datatables/extras/ColVis/css/ColVis.css | 76 + .../extras/ColVis/css/ColVisAlt.css | 104 + .../extras/ColVis/images/button.png | Bin 0 -> 1161 bytes .../datatables/extras/ColVis/js/ColVis.js | 865 ++++++ .../datatables/extras/ColVis/js/ColVis.min.js | 30 + .../extras/ColVis/js/ColVis.min.js.gz | Bin 0 -> 2795 bytes .../extras/TableTools/css/TableTools.css | 264 ++ .../extras/TableTools/css/TableTools_JUI.css | 182 ++ .../extras/TableTools/images/background.png | Bin 0 -> 944 bytes .../extras/TableTools/images/collection.png | Bin 0 -> 1166 bytes .../TableTools/images/collection_hover.png | Bin 0 -> 1194 bytes .../extras/TableTools/images/copy.png | Bin 0 -> 2184 bytes .../extras/TableTools/images/copy_hover.png | Bin 0 -> 2797 bytes .../extras/TableTools/images/csv.png | Bin 0 -> 1607 bytes .../extras/TableTools/images/csv_hover.png | Bin 0 -> 1854 bytes .../extras/TableTools/images/pdf.png | Bin 0 -> 4325 bytes .../extras/TableTools/images/pdf_hover.png | Bin 0 -> 2786 bytes .../extras/TableTools/images/print.png | Bin 0 -> 2123 bytes .../extras/TableTools/images/print_hover.png | Bin 0 -> 2230 bytes .../extras/TableTools/images/xls.png | Bin 0 -> 1641 bytes .../extras/TableTools/images/xls_hover.png | Bin 0 -> 2061 bytes .../extras/TableTools/js/TableTools.js | 2410 +++++++++++++++++ .../extras/TableTools/js/TableTools.min.js | 78 + .../extras/TableTools/js/TableTools.min.js.gz | Bin 0 -> 8394 bytes .../extras/TableTools/js/ZeroClipboard.js | 365 +++ .../extras/TableTools/swf/copy_cvs_xls.swf | Bin 0 -> 2135 bytes .../TableTools/swf/copy_cvs_xls_pdf.swf | Bin 0 -> 58820 bytes htdocs/main.inc.php | 13 +- 28 files changed, 4384 insertions(+), 3 deletions(-) create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVis.css create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVisAlt.css create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/images/button.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.js create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.min.js create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.min.js.gz create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/css/TableTools.css create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/css/TableTools_JUI.css create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/background.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/collection.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/collection_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/copy.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/copy_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/csv.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/csv_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/pdf.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/pdf_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/print.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/print_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/xls.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/images/xls_hover.png create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/js/TableTools.js create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/js/TableTools.min.js create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/js/TableTools.min.js.gz create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/js/ZeroClipboard.js create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/swf/copy_cvs_xls.swf create mode 100644 htdocs/includes/jquery/plugins/datatables/extras/TableTools/swf/copy_cvs_xls_pdf.swf diff --git a/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVis.css b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVis.css new file mode 100644 index 00000000000..a3bf8e20958 --- /dev/null +++ b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVis.css @@ -0,0 +1,76 @@ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * ColVis styles + */ +.ColVis { + float: right; + margin-bottom: 1em; +} + +.ColVis_Button { + position: relative; + float: left; + margin-right: 3px; + padding: 3px 5px; + height: 30px; + background-color: #fff; + border: 1px solid #d0d0d0; + cursor: pointer; + *cursor: hand; +} + +button.ColVis_Button::-moz-focus-inner { + border: none !important; + padding: 0; +} + +.ColVis_text_hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +div.ColVis_collectionBackground { + background-color: black; + z-index: 1100; +} + +div.ColVis_collection { + position: relative; + width: 150px; + background-color: #f3f3f3; + padding: 3px; + border: 1px solid #ccc; + z-index: 1102; +} + +div.ColVis_collection button.ColVis_Button { + background-color: white; + width: 100%; + float: none; + margin-bottom: 2px; +} + +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} + +.disabled { + color: #999; +} + + + +button.ColVis_Button { + text-align: left; +} + +div.ColVis_collection button.ColVis_Button:hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +span.ColVis_radio { + display: inline-block; + width: 20px; +} diff --git a/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVisAlt.css b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVisAlt.css new file mode 100644 index 00000000000..93f35b61d7d --- /dev/null +++ b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/css/ColVisAlt.css @@ -0,0 +1,104 @@ +/* + * An alternative styling for ColVis + * Note you will likely have to change the path for the background image used by jQuery UI theming: + * ../../../../examples/examples_support/themes/smoothness + */ + +.ColVis { + position: absolute; + right: 0; + top: 0; + width: 15px; + height: 30px; +} + +.ColVis_MasterButton { + height: 100%; + width: 100%; + border-left-width: 0; + cursor: pointer; + *cursor: hand; + background: url('../images/button.png') no-repeat top left; +} + +button.ColVis_Button::-moz-focus-inner { + border: none !important; + padding: 0; +} + +.ColVis_text_hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +div.ColVis_collectionBackground { + background-color: black; + z-index: 1100; +} + +div.ColVis_collection { + position: relative; + width: 150px; + background-color: #f9f9f9; + padding: 3px; + border: 1px solid #ccc; + z-index: 1102; +} + +div.ColVis_collection button.ColVis_Button { + height: 30px; + width: 100%; + margin-right: 3px; + margin-bottom: 2px; + padding: 3px 5px; + cursor: pointer; + *cursor: hand; + text-align: left; +} + +div.ColVis_collection button.ColVis_Button:hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} + +span.ColVis_radio { + display: inline-block; + width: 20px; +} + +button.ColVis_Restore { + margin-top: 15px; +} + +button.ColVis_Restore span { + display: inline-block; + padding-left: 10px; + text-align: left; +} + +.disabled { + color: #999; +} + + + +/* + * Styles needed for DataTables scrolling + */ +div.dataTables_scrollHead { + position: relative; + overflow: hidden; +} + +div.dataTables_scrollBody { + overflow-y: scroll; +} + +div.dataTables_scrollFoot { + overflow: hidden; +} diff --git a/htdocs/includes/jquery/plugins/datatables/extras/ColVis/images/button.png b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/images/button.png new file mode 100644 index 0000000000000000000000000000000000000000..38f032004fc6ccd992278581b9e5a1e6b367acd5 GIT binary patch literal 1161 zcmaJ>U1$?o6rS|Y7_7GS!CJ(O?LQ$o(no8re*ul$&=93(ZFQ=J=O;IhaIa8AR5e6C5tLh>8-M#xXP?Zq9 z-!DSZjG#Vs_mG9Uh7u`xs9z2$bn8yglH-YhhOh*3+F{-1b0K;`mnUmyo1wu11owyN zMN?_96GRLP0lyD=Wf*`U!1~yx?aj^2jevtJWFW_|oR@9pn>Zdqu=LO*o2B&dNg=kB zi$o#14`Y*Om~1xd%QpE8tCwMe!JwnTabAM(+Jicla$eo8FDMAemMzu9s-Xi%QOXzt zI7AbtizR60vaD_|wTU#0$w?-|`k+%%0Vs;!hicj~+Qv!r&F}vT+o?elF-c?_1C~q< zuBYBfW%3aVN!YMbhH<#i#m+th8+M;zf=HJih?1=8PP~8@MLw?ESkh$_7eX{q@Tsc8 zhodkI{X!%P*#OH5v9MoYV=-1}inNDg+ap|oD;V;ChICxuD&M$5QLZxznn^MX$Wo6Y zC1x2KSSXoSi+drKig{V&D#g9D7v(a<4C5T^e-65^MW)ADE{`noqDxtuWf7f50+cEbzcHxuj;j^}vRF>mLN{&1oUIS*_4L{ua zZHzh;{&=_a=4gH*l&`6qstHUyOr(adUb?(e{c<+?)_ZgGwN(A{$?Dnkt*!1~hMx!8 z-j<;G(nrq}@Ok6DMvj|}RQ^*bj{h`1dcWiY1AeT?FksAczJY%C>(gNO=Dif$bNt5d Sk7~|2KZkfUAxyL%8vY7$^n2L= literal 0 HcmV?d00001 diff --git a/htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.js b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.js new file mode 100644 index 00000000000..b0d4d7835b3 --- /dev/null +++ b/htdocs/includes/jquery/plugins/datatables/extras/ColVis/js/ColVis.js @@ -0,0 +1,865 @@ +/* + * File: ColVis.js + * Version: 1.0.5 + * CVS: $Id: ColVis.js,v 1.1 2011/08/30 18:32:25 hregis Exp $ + * Description: Controls for column visiblity in DataTables + * Author: Allan Jardine (www.sprymedia.co.uk) + * Created: Wed Sep 15 18:23:29 BST 2010 + * Modified: $Date: 2011/08/30 18:32:25 $ by $Author: hregis $ + * Language: Javascript + * License: GPL v2 or BSD 3 point style + * Project: Just a little bit of fun :-) + * Contact: www.sprymedia.co.uk/contact + * + * Copyright 2010-2011 Allan Jardine, all rights reserved. + * + * This source file is free software, under either the GPL v2 license or a + * BSD style license, available at: + * http://datatables.net/license_gpl2 + * http://datatables.net/license_bsd + */ + +(function($) { + +/** + * ColVis provides column visiblity control for DataTables + * @class ColVis + * @constructor + * @param {object} DataTables settings object + */ +ColVis = function( oDTSettings, oInit ) +{ + /* Santiy check that we are a new instance */ + if ( !this.CLASS || this.CLASS != "ColVis" ) + { + alert( "Warning: ColVis must be initialised with the keyword 'new'" ); + } + + if ( typeof oInit == 'undefined' ) + { + oInit = {}; + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public class variables + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * @namespace Settings object which contains customisable information for ColVis instance + */ + this.s = { + /** + * DataTables settings object + * @property dt + * @type Object + * @default null + */ + "dt": null, + + /** + * Customisation object + * @property oInit + * @type Object + * @default passed in + */ + "oInit": oInit, + + /** + * Callback function to tell the user when the state has changed + * @property fnStateChange + * @type function + * @default null + */ + "fnStateChange": null, + + /** + * Mode of activation. Can be 'click' or 'mouseover' + * @property activate + * @type String + * @default click + */ + "activate": "click", + + /** + * Position of the collection menu when shown - align "left" or "right" + * @property sAlign + * @type String + * @default right + */ + "sAlign": "left", + + /** + * Text used for the button + * @property buttonText + * @type String + * @default Show / hide columns + */ + "buttonText": "Show / hide columns", + + /** + * Flag to say if the collection is hidden + * @property hidden + * @type boolean + * @default true + */ + "hidden": true, + + /** + * List of columns (integers) which should be excluded from the list + * @property aiExclude + * @type Array + * @default [] + */ + "aiExclude": [], + + /** + * Store the original viisbility settings so they could be restored + * @property abOriginal + * @type Array + * @default [] + */ + "abOriginal": [], + + /** + * Show restore button + * @property bRestore + * @type Array + * @default [] + */ + "bRestore": false, + + /** + * Restore button text + * @property sRestore + * @type String + * @default Restore original + */ + "sRestore": "Restore original", + + /** + * Overlay animation duration in mS + * @property iOverlayFade + * @type Integer + * @default 500 + */ + "iOverlayFade": 500, + + /** + * Label callback for column names. Takes three parameters: 1. the column index, 2. the column + * title detected by DataTables and 3. the TH node for the column + * @property fnLabel + * @type Function + * @default null + */ + "fnLabel": null, + + /** + * Indicate if ColVis should automatically calculate the size of buttons or not. The default + * is for it to do so. Set to "css" to disable the automatic sizing + * @property sSize + * @type String + * @default auto + */ + "sSize": "auto" + }; + + + /** + * @namespace Common and useful DOM elements for the class instance + */ + this.dom = { + /** + * Wrapper for the button - given back to DataTables as the node to insert + * @property wrapper + * @type Node + * @default null + */ + "wrapper": null, + + /** + * Activation button + * @property button + * @type Node + * @default null + */ + "button": null, + + /** + * Collection list node + * @property collection + * @type Node + * @default null + */ + "collection": null, + + /** + * Background node used for shading the display and event capturing + * @property background + * @type Node + * @default null + */ + "background": null, + + /** + * Element to position over the activation button to catch mouse events when using mouseover + * @property catcher + * @type Node + * @default null + */ + "catcher": null, + + /** + * List of button elements + * @property buttons + * @type Array + * @default [] + */ + "buttons": [], + + /** + * Restore button + * @property restore + * @type Node + * @default null + */ + "restore": null + }; + + /* Store global reference */ + ColVis.aInstances.push( this ); + + /* Constructor logic */ + this.s.dt = oDTSettings; + this._fnConstruct(); + return this; +}; + + + +ColVis.prototype = { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Rebuild the list of buttons for this instance (i.e. if there is a column header update) + * @method fnRebuild + * @returns void + */ + "fnRebuild": function () + { + /* Remove the old buttons */ + for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) + { + if ( this.dom.buttons[i] !== null ) + { + this.dom.collection.removeChild( this.dom.buttons[i] ); + } + } + this.dom.buttons.splice( 0, this.dom.buttons.length ); + + if ( this.dom.restore ) + { + this.dom.restore.parentNode( this.dom.restore ); + } + + /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */ + this._fnAddButtons(); + + /* Update the checkboxes */ + this._fnDrawCallback(); + }, + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods (they are of course public in JS, but recommended as private) + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Constructor logic + * @method _fnConstruct + * @returns void + * @private + */ + "_fnConstruct": function () + { + this._fnApplyCustomisation(); + + var that = this; + this.dom.wrapper = document.createElement('div'); + this.dom.wrapper.className = "ColVis TableTools"; + + this.dom.button = this._fnDomBaseButton( this.s.buttonText ); + this.dom.button.className += " ColVis_MasterButton"; + this.dom.wrapper.appendChild( this.dom.button ); + + this.dom.catcher = this._fnDomCatcher(); + this.dom.collection = this._fnDomCollection(); + this.dom.background = this._fnDomBackground(); + + this._fnAddButtons(); + + /* Store the original visbility information */ + for ( var i=0, iLen=this.s.dt.aoColumns.length ; i'+this.s.sRestore+'' ); + + $(nButton).click( function (e) { + for ( var i=0, iLen=that.s.abOriginal.length ; i'+ + ''+sTitle+'' ); + + $(nButton).click( function (e) { + var showHide = !$('input', this).is(":checked"); + if ( e.target.nodeName.toLowerCase() == "input" ) + { + showHide = $('input', this).is(":checked"); + } + + /* Need to consider the case where the initialiser created more than one table - change the + * API index that DataTables is using + */ + var oldIndex = $.fn.dataTableExt.iApiIndex; + $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that); + that.s.dt.oInstance.fnSetColumnVis( i, showHide ); + $.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */ + + if ( that.s.fnStateChange !== null ) + { + that.s.fnStateChange.call( that, i, showHide ); + } + } ); + + return nButton; + }, + + + /** + * Get the position in the DataTables instance array of the table for this instance of ColVis + * @method _fnDataTablesApiIndex + * @returns {int} Index + * @private + */ + "_fnDataTablesApiIndex": function () + { + for ( var i=0, iLen=this.s.dt.oInstance.length ; i