├── index.js ├── images ├── loading.gif ├── sprite.png ├── vert-bg.png ├── horiz-bg.png ├── square_dirty.gif ├── horiz-slider-bg.png ├── square-blue-tr.gif ├── square-red-rb.gif ├── square-red-tr.gif └── vert-slider-bg.png ├── php ├── Content │ └── css │ │ ├── images │ │ ├── tick.png │ │ ├── cross.png │ │ ├── sprite.png │ │ ├── Refresh.gif │ │ ├── horiz-bg.png │ │ ├── loading.gif │ │ ├── sort_asc.gif │ │ ├── sort_desc.gif │ │ ├── vert-bg.png │ │ ├── page-last-gray.gif │ │ ├── page-next-gray.gif │ │ ├── page-prev-gray.gif │ │ ├── vert-slider-bg.png │ │ ├── horiz-slider-bg.png │ │ └── page-first-gray.gif │ │ └── pqgrid.min.css ├── database │ ├── remote.php │ └── index.php ├── sorting │ ├── remote.php │ └── index.php ├── include.php ├── paging │ ├── remote.php │ └── index.php ├── filtering │ ├── remote.php │ └── index.php ├── array │ ├── remote.php │ └── index.php ├── conf.php ├── sort_paging │ ├── remote.php │ └── index.php ├── error_handling │ ├── remote.php │ └── index.php ├── sort_filtering │ ├── remote.php │ └── index.php ├── filter_paging │ ├── remote.php │ └── index.php └── filter_sort_paging │ ├── remote.php │ └── index.php ├── localize ├── pq-localize-pt-br.js └── pq-localize-zh.js ├── bower.json ├── package.json ├── jszip-utils-0.0.2 ├── MIT-License.txt └── jszip-utils.min.js ├── jsZip-2.5.0 └── MIT-License.txt ├── pqgrid.ui.min.css ├── pqgrid.ui.dev.css ├── README.md ├── index.htm ├── array.htm ├── knockout ├── ko.pqgrid.min.js └── ko.pqgrid.dev.js ├── json.htm ├── themes ├── brown │ └── pqgrid.css ├── cocoa │ └── pqgrid.css ├── gray │ └── pqgrid.css ├── red │ └── pqgrid.css ├── tan │ └── pqgrid.css ├── violet │ └── pqgrid.css ├── bootstrap │ └── pqgrid.css ├── chocolate │ └── pqgrid.css ├── crimson │ └── pqgrid.css ├── indigo │ └── pqgrid.css ├── purple │ └── pqgrid.css ├── rosybrown │ └── pqgrid.css ├── sandybrown │ └── pqgrid.css ├── steelblue │ └── pqgrid.css └── Office │ └── pqgrid.css ├── angular ├── ng.pqgrid.min.js └── ng.pqgrid.dev.js └── pqgrid.min.css /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./pqgrid.dev.js'); -------------------------------------------------------------------------------- /images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/loading.gif -------------------------------------------------------------------------------- /images/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/sprite.png -------------------------------------------------------------------------------- /images/vert-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/vert-bg.png -------------------------------------------------------------------------------- /images/horiz-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/horiz-bg.png -------------------------------------------------------------------------------- /images/square_dirty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/square_dirty.gif -------------------------------------------------------------------------------- /images/horiz-slider-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/horiz-slider-bg.png -------------------------------------------------------------------------------- /images/square-blue-tr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/square-blue-tr.gif -------------------------------------------------------------------------------- /images/square-red-rb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/square-red-rb.gif -------------------------------------------------------------------------------- /images/square-red-tr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/square-red-tr.gif -------------------------------------------------------------------------------- /images/vert-slider-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/images/vert-slider-bg.png -------------------------------------------------------------------------------- /php/Content/css/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/tick.png -------------------------------------------------------------------------------- /php/Content/css/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/cross.png -------------------------------------------------------------------------------- /php/Content/css/images/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/sprite.png -------------------------------------------------------------------------------- /php/Content/css/images/Refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/Refresh.gif -------------------------------------------------------------------------------- /php/Content/css/images/horiz-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/horiz-bg.png -------------------------------------------------------------------------------- /php/Content/css/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/loading.gif -------------------------------------------------------------------------------- /php/Content/css/images/sort_asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/sort_asc.gif -------------------------------------------------------------------------------- /php/Content/css/images/sort_desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/sort_desc.gif -------------------------------------------------------------------------------- /php/Content/css/images/vert-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/vert-bg.png -------------------------------------------------------------------------------- /php/Content/css/images/page-last-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/page-last-gray.gif -------------------------------------------------------------------------------- /php/Content/css/images/page-next-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/page-next-gray.gif -------------------------------------------------------------------------------- /php/Content/css/images/page-prev-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/page-prev-gray.gif -------------------------------------------------------------------------------- /php/Content/css/images/vert-slider-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/vert-slider-bg.png -------------------------------------------------------------------------------- /php/Content/css/images/horiz-slider-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/horiz-slider-bg.png -------------------------------------------------------------------------------- /php/Content/css/images/page-first-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paramquery/grid/HEAD/php/Content/css/images/page-first-gray.gif -------------------------------------------------------------------------------- /php/database/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 12 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 13 | 14 | echo json_encode($products); 15 | ?> 16 | -------------------------------------------------------------------------------- /localize/pq-localize-pt-br.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author fhelwanger 3 | */ 4 | $.paramquery.pqGrid.regional["pt-br"] = { 5 | strLoading: "Carregando", 6 | strAdd: "Incluir", 7 | strEdit: "Editar", 8 | strDelete: "Excluir", 9 | strSearch: "Pesquisar", 10 | strNothingFound: "Não encontrado", 11 | strSelectedmatches: "Selecionado {0} de {1} resultados", 12 | strPrevResult: "Resultado Anterior", 13 | strNextResult: "Próximo Resultado" 14 | } 15 | 16 | $.paramquery.pqPager.regional['pt-br']={ 17 | strPage: "Página {0} de {1}", 18 | strFirstPage: "Primera Página", 19 | strPrevPage: "Página Anterior", 20 | strNextPage: "Próxima Página", 21 | strLastPage: "Última Página", 22 | strRefresh: "Atualizar", 23 | strRpp: "Registros por página: {0}", 24 | strDisplay: "Mostrando {0} a {1} de {2} itens." 25 | } 26 | -------------------------------------------------------------------------------- /php/sorting/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 22 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 23 | 24 | echo json_encode($products); 25 | } 26 | ?> 27 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pqGrid", 3 | "description": "Data grid with spreadsheet features, row grouping, sorting, filtering, etc", 4 | "version": "3.5.1", 5 | "author": { 6 | "name": "Paramvir Singh Dhindsa", 7 | "email": "pdhindsa@paramquery.com", 8 | "url": "http://www.paramquery.com/" 9 | }, 10 | "main": [ 11 | "pqgrid.dev.js", 12 | "pqgrid.dev.css", 13 | "pqgrid.ui.dev.css" 14 | ], 15 | "keywords": [ 16 | "grid", 17 | "excel", 18 | "datagrid", 19 | "table", 20 | "ajax", 21 | "ui", 22 | "sort", 23 | "i18n", 24 | "summary", 25 | "themeRoller", 26 | "freeze", 27 | "group", 28 | "search", 29 | "crud", 30 | "paging" 31 | ], 32 | "bugs": "https://github.com/paramquery/grid/issues", 33 | "dependencies": { 34 | "jquery": ">=1.7.0", 35 | "jqueryui": ">=1.11.4" 36 | } 37 | } -------------------------------------------------------------------------------- /php/include.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PQGrid with PHP 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /php/paging/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 15 | $total_Records = $stmt->fetchColumn(); 16 | 17 | $skip = pageHelper($pq_curPage, $pq_rPP, $total_Records); 18 | 19 | $sql = "Select OrderID,CustomerName,ProductName,UnitPrice,Quantity, 20 | OrderDate,RequiredDate,ShippedDate,ShipCountry,Freight,ShipName, 21 | ShipAddress,ShipCity,ShipRegion,ShipPostalCode from invoices order by orderID limit ".$skip." , ".$pq_rPP; 22 | $stmt = $dbh->query($sql); 23 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 24 | 25 | $sb = "{\"totalRecords\":" . $total_Records . ",\"curPage\":" . $pq_curPage . ",\"data\":".json_encode($products)."}"; 26 | echo $sb; 27 | } 28 | ?> -------------------------------------------------------------------------------- /php/filtering/remote.php: -------------------------------------------------------------------------------- 1 | prepare($sql); 26 | $stmt->execute(array($filterValue)); 27 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 28 | echo json_encode($products); 29 | ?> 30 | -------------------------------------------------------------------------------- /php/array/remote.php: -------------------------------------------------------------------------------- 1 | "10248","CustomerName"=>"Vins et alcools Chevalier", 6 | "ProductName"=>"Mozzarella di Giovanni","UnitPrice"=>"34.8000","Quantity"=>"5", 7 | "OrderDate"=>"1996-07-04 00:00:00","RequiredDate"=>"1996-08-01 00:00:00","ShippedDate"=>"1996-07-16 00:00:00", 8 | "ShipCountry"=>"France","Freight"=>"32.3800","ShipName"=>"Vins et alcools Chevalier", 9 | "ShipAddress"=>"59 rue de l-Abbaye","ShipCity"=>"Reims","ShipRegion"=>"null","ShipPostalCode"=>"51100"); 10 | 11 | $products[1] = array("OrderID"=>"10248","CustomerName"=>"Vins et alcools Chevalier", 12 | "ProductName"=>"Singaporean Hokkien Fried Mee","UnitPrice"=>"9.8000","Quantity"=>"10", 13 | "OrderDate"=>"1996-07-04 00:00:00","RequiredDate"=>"1996-08-01 00:00:00","ShippedDate"=>"1996-07-16 00:00:00", 14 | "ShipCountry"=>"France","Freight"=>"32.3800","ShipName"=>"Vins et alcools Chevalier", 15 | "ShipAddress"=>"59 rue de l-Abbaye","ShipCity"=>"Reims","ShipRegion"=>"null","ShipPostalCode"=>"51100"); 16 | 17 | echo json_encode($products); 18 | 19 | ?> 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pqgridf", 3 | "version": "3.5.1", 4 | "main": "index.js", 5 | "author": { 6 | "name": "Paramvir Dhindsa", 7 | "url": "http://www.paramquery.com/" 8 | }, 9 | "license": "GNU GPL v3", 10 | "peerDependencies": { 11 | "jquery": ">=2.2.1", 12 | "@types/jquery": ">=2.2.1", 13 | "jquery-ui-pack": "^1.12.3", 14 | "@types/jqueryui": ">=1.12.1", 15 | "jszip": "2.5.0" 16 | }, 17 | "keywords": [ 18 | "datagrid", 19 | "grid", 20 | "angular grid", 21 | "jquery grid", 22 | "react grid", 23 | "vue grid" 24 | ], 25 | "files": [ 26 | "/images", 27 | "/localize", 28 | "/themes", 29 | "GPL-LICENSE.txt", 30 | "changelog.txt", 31 | "index.js", 32 | "pqgrid.dev.js", 33 | "pqgrid.min.js", 34 | "pqgrid.dev.css", 35 | "pqgrid.min.css", 36 | "pqgrid.ui.dev.css", 37 | "pqgrid.ui.min.css", 38 | "readme.md" 39 | ], 40 | "devDependencies": {}, 41 | "types": "pqgrid.d.ts", 42 | "dependencies": {} 43 | } 44 | -------------------------------------------------------------------------------- /php/conf.php: -------------------------------------------------------------------------------- 1 | 'SET NAMES utf8', 13 | ); 14 | $dbh = new PDO($dsn, DB_USERNAME, DB_PASSWORD, $options); 15 | return $dbh; 16 | } 17 | //check every column name 18 | function isValidColumn($dataIndx){ 19 | if (preg_match('/^[a-z,A-Z]*$/', $dataIndx)) 20 | { 21 | return true; 22 | } 23 | else 24 | { 25 | return false; 26 | } 27 | } 28 | function pageHelper(&$pq_curPage, $pq_rPP, $total_Records){ 29 | $skip = ($pq_rPP * ($pq_curPage - 1)); 30 | 31 | if ($skip >= $total_Records) 32 | { 33 | $pq_curPage = ceil($total_Records / $pq_rPP); 34 | $skip = ($pq_rPP * ($pq_curPage - 1)); 35 | } 36 | return $skip; 37 | } 38 | 39 | ?> 40 | -------------------------------------------------------------------------------- /jszip-utils-0.0.2/MIT-License.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | =============== 3 | 4 | Copyright (c) 2014 Stuart Knightley, David Duponchel 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. -------------------------------------------------------------------------------- /jsZip-2.5.0/MIT-License.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | =============== 3 | 4 | Copyright (c) 2009-2014 Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. -------------------------------------------------------------------------------- /pqgrid.ui.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | div.pq-grid *{line-height:normal;font-family:inherit;font-size:inherit}.pq-grid .ui-icon{display:inline-block}.ui-icon.pq-col-sort-icon{vertical-align:bottom}.pq-slider-icon{top:4px}.pq-grid-top.ui-widget-header{font-weight:normal}.pq-grid-header-search-row{font-weight:normal}.pq-ui-button.ui-widget-header{background:transparent;border-width:0;border-radius:4px;margin:1px;padding:0 3px;cursor:pointer;font-size:16px}.pq-ui-button:hover,.pq-ui-button:focus{border-width:1px;margin:0;outline:0}.pq-grid-cell,.pq-grid-number-cell{padding:5px}.pq-grid-cell{border:1px solid transparent}.pq-grid-header-table>tbody>tr>.pq-grid-col:first-child,.pq-grid-table>tbody>tr>.pq-grid-col:first-child{border-left:0}.pq-grid-header-table.pq-no-right-border>tbody>tr>td:last-child,.pq-grid-table.pq-no-right-border>tbody>tr>td:last-child{border-right:0}.pq-grid-col{padding:5px;border-color:#cfcfcf}.pq-loading-bg{background:#ccc}.pq-grid-bottom select{color:initial}.pq-pager-input{color:initial;padding:0 1px;text-align:center;width:35px;margin-right:5px;border-width:1px}.pq-ui-button.disabled{opacity:.3} -------------------------------------------------------------------------------- /php/sort_paging/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 21 | $total_Records = $stmt->fetchColumn(); 22 | 23 | $skip = ($pq_rPP * ($pq_curPage - 1)); 24 | 25 | if ($skip >= $total_Records) 26 | { 27 | $pq_curPage = ceil($total_Records / $pq_rPP); 28 | $skip = ($pq_rPP * ($pq_curPage - 1)); 29 | } 30 | 31 | $sql = "Select OrderID,CustomerName,ProductName,UnitPrice,Quantity, 32 | OrderDate,RequiredDate,ShippedDate,ShipCountry,Freight,ShipName, 33 | ShipAddress,ShipCity,ShipRegion,ShipPostalCode from invoices order by ".$sortIndx." ".$sortDir. 34 | " limit ".$skip." , ".$pq_rPP; 35 | 36 | //echo $sql; 37 | $stmt = $dbh->query($sql); 38 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 39 | 40 | $sb = "{\"totalRecords\":" . $total_Records . ",\"curPage\":" . $pq_curPage . ",\"data\":".json_encode($products)."}"; 41 | echo $sb; 42 | } 43 | ?> 44 | -------------------------------------------------------------------------------- /pqgrid.ui.dev.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | div.pq-grid *{ line-height:normal; font-family: inherit; font-size: inherit; } .pq-grid .ui-icon{ display:inline-block; } .ui-icon.pq-col-sort-icon{ vertical-align: bottom; } .pq-slider-icon{ top:4px; } .pq-grid-top.ui-widget-header{ font-weight:normal; } .pq-grid-header-search-row{ font-weight:normal; } .pq-ui-button.ui-widget-header{ background: transparent; border-width:0; border-radius: 4px; margin:1px; padding:0 3px; cursor:pointer; font-size:16px; } .pq-ui-button > .ui-icon{ } .pq-ui-button:hover, .pq-ui-button:focus{ border-width:1px; margin:0; outline:none; } .pq-grid-table{ } .pq-grid-cell, .pq-grid-number-cell{ padding: 5px; } .pq-grid-cell{ border:1px solid transparent; } .pq-grid-header-table > tbody > tr> .pq-grid-col:first-child, .pq-grid-table > tbody > tr> .pq-grid-col:first-child { border-left:0; } .pq-grid-header-table.pq-no-right-border > tbody > tr> td:last-child, .pq-grid-table.pq-no-right-border > tbody > tr> td:last-child { border-right:0; } .pq-grid-col{ padding: 5px; border-color: #cfcfcf; } .pq-loading-bg{ background:#ccc; } .pq-grid-bottom select{ color: initial; } .pq-pager-input{ color: initial; padding:0 1px; text-align:center; width:35px; margin-right:5px; border-width:1px; } .pq-ui-button.disabled{ opacity: 0.3; } -------------------------------------------------------------------------------- /php/error_handling/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 33 | $stmt = $dbh->prepare($sql); 34 | $stmt->execute(array($filterValue)); 35 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 36 | try{ 37 | throw new Exception("gross error"); 38 | } 39 | catch(Exception $ex){ 40 | $error = array("error" => $ex->getMessage()); 41 | //print_r($error); 42 | echo json_encode($error); 43 | exit; 44 | } 45 | echo json_encode($products); 46 | //} 47 | ?> 48 | -------------------------------------------------------------------------------- /php/sort_filtering/remote.php: -------------------------------------------------------------------------------- 1 | query($sql); 33 | $stmt = $dbh->prepare($sql); 34 | $stmt->execute(array($filterValue)); 35 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 36 | try{ 37 | throw new Exception("gross error"); 38 | } 39 | catch(Exception $ex){ 40 | $error = array("error" => $ex->getMessage()); 41 | //print_r($error); 42 | echo json_encode($error); 43 | exit; 44 | } 45 | echo json_encode($products); 46 | //} 47 | ?> 48 | -------------------------------------------------------------------------------- /php/filter_paging/remote.php: -------------------------------------------------------------------------------- 1 | prepare($sql); 27 | $stmt->execute(array($filterValue)); 28 | 29 | $total_Records = $stmt->fetchColumn(); 30 | 31 | $skip = pageHelper($pq_curPage, $pq_rPP, $total_Records); 32 | 33 | $sql = "Select OrderID,CustomerName,ProductName,UnitPrice,Quantity, 34 | OrderDate,RequiredDate,ShippedDate,ShipCountry,Freight,ShipName, 35 | ShipAddress,ShipCity,ShipRegion,ShipPostalCode from invoices ". 36 | $where. 37 | " order by OrderID limit ".$skip." , ".$pq_rPP; 38 | 39 | //$stmt = $dbh->query($sql); 40 | $stmt = $dbh->prepare($sql); 41 | $stmt->execute(array($filterValue)); 42 | 43 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 44 | 45 | $sb = "{\"totalRecords\":" . $total_Records . ",\"curPage\":" . $pq_curPage . ",\"data\":".json_encode($products)."}"; 46 | echo $sb; 47 | 48 | ?> 49 | -------------------------------------------------------------------------------- /jszip-utils-0.0.2/jszip-utils.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | JSZipUtils - A collection of cross-browser utilities to go along with JSZip. 4 | 5 | 6 | (c) 2014 Stuart Knightley, David Duponchel 7 | Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown. 8 | 9 | */ 10 | !function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gprepare($sql); 34 | $stmt->execute(array($filterValue)); 35 | 36 | $total_Records = $stmt->fetchColumn(); 37 | 38 | $skip = pageHelper($pq_curPage, $pq_rPP, $total_Records); 39 | 40 | $sql = "Select OrderID,CustomerName,ProductName,UnitPrice,Quantity, 41 | OrderDate,RequiredDate,ShippedDate,ShipCountry,Freight,ShipName, 42 | ShipAddress,ShipCity,ShipRegion,ShipPostalCode from invoices ". 43 | $where. 44 | " order by ".$sortIndx. " ".$sortDir." limit ".$skip." , ".$pq_rPP; 45 | 46 | //$stmt = $dbh->query($sql); 47 | $stmt = $dbh->prepare($sql); 48 | $stmt->execute(array($filterValue)); 49 | 50 | $products = $stmt->fetchAll(PDO::FETCH_ASSOC); 51 | 52 | $sb = "{\"totalRecords\":" . $total_Records . ",\"curPage\":" . $pq_curPage . ",\"data\":".json_encode($products)."}"; 53 | echo $sb; 54 | 55 | ?> 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | jQuery grid plugin, also support Angular, Reactjs, Vuejs 2 | ======================================================== 3 | [ParamQuery Grid](http://paramquery.com) 4 | 5 | Copyright (c) 2012-2021 Paramvir Dhindsa 6 | 7 | [Released under GPL v3 license](http://paramquery.com/license) 8 | 9 | ParamQuery grid is a lightweight javascript grid for Angular, jQuery, Reactjs, Vuejs 10 | 11 | 12 | 1. [Tutorial](http://paramquery.com/tutorial) 13 | 14 | 2. [API](http://paramquery.com/api) 15 | 16 | 3. [Demos or Examples](http://paramquery.com/demos) 17 | 18 | 4. [PHP Integration Tutorial](http://paramquery.com/tutorial/php) 19 | 20 | 5. [Angularjs bindings](http://angularjsgrid.com) 21 | 22 | 6. [Angularjs demos](http://angularjsgrid.com/demos) 23 | 24 | 25 | ### Features: 26 | 27 | ``` 28 | 29 | Supports 100,000+ records. 30 | 31 | Support for Angular, Reactjs, Vuejs, Knockout, plain js. 32 | 33 | Copy paste to and from Excel. 34 | 35 | Autofill, drag to fill. 36 | 37 | State management. 38 | 39 | Edit history and tracking: undo and redo. 40 | 41 | Local, remote and custom sorting for common data formats like Integer, real numbers, Strings, dates, etc. 42 | 43 | Local and remote filtering with header filtering row interface. 44 | 45 | Paging with local or remote data. 46 | 47 | Column and row grouping and fixed summary row. 48 | 49 | Frozen rows & columns like Excel. 50 | 51 | Export to Excel(xlsx), HTML, JSON & CSV format. 52 | 53 | Nesting of grids and row details. 54 | 55 | Virtual Scrolling and Rendering with unlimited rows and columns support. 56 | 57 | Inline Editing: Batch editing, row editing, custom editors, multiline editing, validations. 58 | 59 | Hide/ show columns, resizable and reorderable columns through drag and drop. 60 | 61 | Theme support. 62 | 63 | i18n. 64 | 65 | Consistent look and functionality across all major browsers IE(11), Edge, Firefox, Chrome, Opera, etc 66 | 67 | Displays data source formats like HTML, Array, XML, JSON, etc. 68 | 69 | Can be used with any server side framework e.g. ASP.NET, MVC3, JSP, JSF, PHP, etc. 70 | 71 | Many more... 72 | ``` 73 | -------------------------------------------------------------------------------- /php/array/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 45 |
46 | 47 | -------------------------------------------------------------------------------- /php/database/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 45 |
46 | 47 | -------------------------------------------------------------------------------- /index.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 49 | 50 | 51 |
52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /php/sorting/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 53 |
54 | 55 | -------------------------------------------------------------------------------- /php/paging/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 55 |
56 | 57 | -------------------------------------------------------------------------------- /php/sort_paging/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 56 |
57 | 58 | -------------------------------------------------------------------------------- /array.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 29 | 70 | 71 | 72 |
73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /knockout/ko.pqgrid.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | !function(t){function e(t){for(var e,o,n,r=0,i=t.length;i>r;r++)e=t[r],(o=e.template)&&(n=!0,e.render=function(t){return function(e){return t}}(o));return n}function o(t){var e,o=t.pq_ko;if(o)for(e in o)o[e].dispose()}function n(o,n,r){var a,s,u=this,d=n(),f=i.timer(),c=i.timer(),l=d.colModel,p=d.koModel||{},h=e(l||[])||p.bind,g=d.dataModel,m=g.data,w=p.item,k="function"==typeof m?m:null;d.refresh=function(){h&&u.onRefresh(this)},u.element=o,u.timerItem=i.timer(),u.context=r,k&&(a=k(),w||!a[0]||t.isPlainObject(a[0])||(w=a[0].constructor),d.dataModel.data=u.importData(a,w),u.subscribeKoDataChange(k,w,f)),u.koItem=w,s=pq.grid(o,d),u.grid=s,s.on("sort filter load",u.onSortFilterLoad(u,k,w,c)).on("change",u.onChange(u,k,w,c)).on("refreshRow refreshCell",u.onRefreshRowCell(u,h)),ko.utils.domNodeDisposal.addDisposeCallback(o,function(){s.destroy()})}var r=t.paramquery.pqGrid.prototype;r.totalRows=r.totalRows||function(){var t=this.options.dataModel,e=t.data,o=t.dataUF||[];return e.length+o.length};var i={timer:function(){var t;return{setTimeout:function(e){t&&ko.tasks.cancel(t),t=ko.tasks.schedule(e)}}}},a=n.prototype;a.onChange=function(t,e,o,n){return function(r,i){if(e){var a=i.rowList;if(1==a.length&&"update"==a[0].type){var s=a[0],u=s.rowData.pq_ko_item,d=s.newRow;for(var f in d)u[f](d[f])}else t.inChange=!0,n.setTimeout(function(){e(t.exportData(o)),t.inChange=!1})}}},a.onSortFilterLoad=function(t,e,o,n){return function(r){e&&(t.inChange=!0,n.setTimeout(function(){e(t.exportData(o)),t.inChange=!1}))}},a.onRefreshRowCell=function(t,e){return function(o,n){if(e){var r=this.getRow(n);ko.cleanNode(r[0]),t.rowScope(r,n.rowData,n.rowIndx)}}},a.disposeData=function(){for(var t=this.grid.option("dataModel.data"),e=0,n=t.length;n>e;e++)o(t[e])},a.subscribe=function(t,e,o,n){var r=this.timerItem,i=this;n[o]=n[o]||t.subscribe(function(t){e[o]=t,r.setTimeout(function(){i.grid.refresh({header:!1})})})},a.importData=function(t,e){var o=[],n=this;return e?(ko.utils.arrayMap(t,function(t){o.push(n.importRow(t,e))}),o):t},a.importRow=function(t,e){var o,n,r;if(e){r={},o={pq_ko:r};for(var i in t)n=t[i],this.subscribe(n,o,i,r),o[i]=n();return o.pq_ko_item=t,o}return t},a.exportRow=function(t){var e,o,n,r=t.pq_ko_item;if(r)for(n in r)r[n](t[n]);else{r=new koItem(t),t.pq_ko=e=t.pq_ko||{};for(n in r)o=r[n],this.subscribe(o,t,n,e)}return r},a.exportData=function(t){var e,o=this,n=o.grid.options.dataModel.data,r=[];return t?(ko.utils.arrayMap(n,function(t){e=o.exportRow(t),r.push(e)}),r):n},a.importArrayChanges=function(t,e){var n,r,i,a,s=t.length,u=this.grid.option("dataModel.data");if(s>u.length)return!0;for(;s--;)r=t[s],i=r.status,a=r.index,"added"==i?(n=this.importRow(r.value,e),u.splice(a,0,n)):"deleted"==i&&(o(u[a]),u.splice(a,1))},a.rowScope=function(t,e,o){var n=this.context.extend({rd:e.pq_ko_item||e,ri:o});ko.applyBindingsToDescendants(n,t[0])},a.subscribeKoDataChange=function(t,e,o){var n,r,i=this;t&&(t.subscribe(function(t){i.inChange||n||(n=!e||i.importArrayChanges(t,e),o.setTimeout(function(){i.grid.refreshView()}))},null,"arrayChange"),t.subscribe(function(a){if(!i.inChange&&n){if(t()!=a)throw"koData != arr assert failed";r=i.grid,o.setTimeout(function(){e&&i.disposeData(),r.option("dataModel.data",i.importData(t(),e)),r.refreshView()}),n=!1}}))},a.onRefresh=function(e){for(var o,n,r,i=0,a=this.element.querySelectorAll(".pq-grid-row"),s=a.length;s>i;i++)r=t(a[i]),o=e.getRowIndx({$tr:r}),n=e.getRowData(o),this.rowScope(r,n,o.rowIndx)},ko.bindingHandlers.pqGrid={init:function(t,e,o,r,i){return new n(t,e,i),{controlsDescendantBindings:!0}}}}(jQuery); -------------------------------------------------------------------------------- /json.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 28 | 70 | 71 | 72 |
73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /themes/brown/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #eadbcc; 16 | border-color: #b98654; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #eadbcc); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #eadbcc; 24 | border-color: #964B00; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #eadbcc; 28 | border-color: #964B00; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #ceab87; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #964B00; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #b98654; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #b98654; 43 | background: #eadbcc; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #eadbcc; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #ceab87; 54 | } 55 | .pq-group-item { 56 | border-color: #ceab87; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #964B00; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #964B00; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #eadbcc; 67 | color: #333; 68 | border-color: #ceab87; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #eadbcc; 73 | border-color: #ceab87; 74 | } 75 | div.pq-toolbar { 76 | border-color: #ceab87; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #b98654; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #ceab87; 85 | } 86 | .pq-grid-bottom { 87 | background: #eadbcc; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #eadbcc; 92 | border-bottom-color: #b98654; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #eadbcc; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #eadbcc); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #ceab87; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #ceab87; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #eadbcc; 108 | } 109 | .pq-grid-col { 110 | border-color: #ceab87 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #cba580; 115 | border-color: #964B00; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #eadbcc; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #eadbcc; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e4f2ff; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #ffeedc; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e4f2ff; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #e4e1dc; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #eadbcc; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #eadbcc; 155 | border-color: #964B00; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #b98654; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #964B00; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #b98654; 171 | background: #eadbcc; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #964B00; 178 | background: #cba580; 179 | } 180 | -------------------------------------------------------------------------------- /themes/cocoa/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #f6e1d2; 16 | border-color: #e19b68; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #f6e1d2); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #f6e1d2; 24 | border-color: #D2691E; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #f6e1d2; 28 | border-color: #D2691E; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #eab995; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #D2691E; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #e19b68; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #e19b68; 43 | background: #f6e1d2; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #f6e1d2; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #eab995; 54 | } 55 | .pq-group-item { 56 | border-color: #eab995; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #D2691E; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #D2691E; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #f6e1d2; 67 | color: #333; 68 | border-color: #eab995; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #f6e1d2; 73 | border-color: #eab995; 74 | } 75 | div.pq-toolbar { 76 | border-color: #eab995; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #e19b68; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #eab995; 85 | } 86 | .pq-grid-bottom { 87 | background: #f6e1d2; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #f6e1d2; 92 | border-bottom-color: #e19b68; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #f6e1d2; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #f6e1d2); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #eab995; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #eab995; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #f6e1d2; 108 | } 109 | .pq-grid-col { 110 | border-color: #eab995 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #e9b48f; 115 | border-color: #D2691E; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #f6e1d2; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #f6e1d2; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #d9ecfa; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #fff0e5; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #d9ecfa; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d9dee0; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #f6e1d2; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #f6e1d2; 155 | border-color: #D2691E; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #e19b68; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #D2691E; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #e19b68; 171 | background: #f6e1d2; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #D2691E; 178 | background: #e9b48f; 179 | } 180 | -------------------------------------------------------------------------------- /themes/gray/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #e9e9e9; 16 | border-color: #b5b5b5; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #e9e9e9); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #e9e9e9; 24 | border-color: #909090; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #e9e9e9; 28 | border-color: #909090; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #cbcbcb; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #909090; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #b5b5b5; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #b5b5b5; 43 | background: #e9e9e9; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #e9e9e9; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #cbcbcb; 54 | } 55 | .pq-group-item { 56 | border-color: #cbcbcb; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #909090; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #909090; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #e9e9e9; 67 | color: #333; 68 | border-color: #cbcbcb; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #e9e9e9; 73 | border-color: #cbcbcb; 74 | } 75 | div.pq-toolbar { 76 | border-color: #cbcbcb; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #b5b5b5; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #cbcbcb; 85 | } 86 | .pq-grid-bottom { 87 | background: #e9e9e9; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #e9e9e9; 92 | border-bottom-color: #b5b5b5; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #e9e9e9; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #e9e9e9); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #cbcbcb; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #cbcbcb; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #e9e9e9; 108 | } 109 | .pq-grid-col { 110 | border-color: #cbcbcb !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #c8c8c8; 115 | border-color: #909090; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #e9e9e9; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #e9e9e9; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e5e5e5; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #f5f5f5; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e5e5e5; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #dcdcdc; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #e9e9e9; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #e9e9e9; 155 | border-color: #909090; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #b5b5b5; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #909090; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #b5b5b5; 171 | background: #e9e9e9; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #909090; 178 | background: #c8c8c8; 179 | } 180 | -------------------------------------------------------------------------------- /themes/red/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #ffe0e0; 16 | border-color: #ff9898; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #ffe0e0); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #ffe0e0; 24 | border-color: #ff6666; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #ffe0e0; 28 | border-color: #ff6666; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #ffb7b7; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #ff6666; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #ff9898; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #ff9898; 43 | background: #ffe0e0; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #ffe0e0; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #ffb7b7; 54 | } 55 | .pq-group-item { 56 | border-color: #ffb7b7; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #ff6666; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #ff6666; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #ffe0e0; 67 | color: #333; 68 | border-color: #ffb7b7; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #ffe0e0; 73 | border-color: #ffb7b7; 74 | } 75 | div.pq-toolbar { 76 | border-color: #ffb7b7; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #ff9898; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #ffb7b7; 85 | } 86 | .pq-grid-bottom { 87 | background: #ffe0e0; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #ffe0e0; 92 | border-bottom-color: #ff9898; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #ffe0e0; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #ffe0e0); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #ffb7b7; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #ffb7b7; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #ffe0e0; 108 | } 109 | .pq-grid-col { 110 | border-color: #ffb7b7 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #ffb3b3; 115 | border-color: #ff6666; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #ffe0e0; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #ffe0e0; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #d1eded; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #fff0f0; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #d1eded; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d1dfdf; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #ffe0e0; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #ffe0e0; 155 | border-color: #ff6666; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #ff9898; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #ff6666; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #ff9898; 171 | background: #ffe0e0; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #ff6666; 178 | background: #ffb3b3; 179 | } 180 | -------------------------------------------------------------------------------- /themes/tan/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #f6f0e8; 16 | border-color: #e1cdb2; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #f6f0e8); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #f6f0e8; 24 | border-color: #D2B48C; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #f6f0e8; 28 | border-color: #D2B48C; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #eadcc9; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #D2B48C; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #e1cdb2; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #e1cdb2; 43 | background: #f6f0e8; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #f6f0e8; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #eadcc9; 54 | } 55 | .pq-group-item { 56 | border-color: #eadcc9; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #D2B48C; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #D2B48C; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #f6f0e8; 67 | color: #333; 68 | border-color: #eadcc9; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #f6f0e8; 73 | border-color: #eadcc9; 74 | } 75 | div.pq-toolbar { 76 | border-color: #eadcc9; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #e1cdb2; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #eadcc9; 85 | } 86 | .pq-grid-bottom { 87 | background: #f6f0e8; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #f6f0e8; 92 | border-bottom-color: #e1cdb2; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #f6f0e8; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #f6f0e8); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #eadcc9; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #eadcc9; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #f6f0e8; 108 | } 109 | .pq-grid-col { 110 | border-color: #eadcc9 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #e9dac6; 115 | border-color: #D2B48C; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #f6f0e8; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #f6f0e8; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #d9dfe6; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #fff8f0; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #d9dfe6; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d9d9d8; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #f6f0e8; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #f6f0e8; 155 | border-color: #D2B48C; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #e1cdb2; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #D2B48C; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #e1cdb2; 171 | background: #f6f0e8; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #D2B48C; 178 | background: #e9dac6; 179 | } 180 | -------------------------------------------------------------------------------- /themes/violet/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #e9ccff; 16 | border-color: #b454ff; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #e9ccff); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #e9ccff; 24 | border-color: #8f00ff; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #e9ccff; 28 | border-color: #8f00ff; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #ca87ff; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #8f00ff; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #b454ff; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #b454ff; 43 | background: #e9ccff; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #e9ccff; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #ca87ff; 54 | } 55 | .pq-group-item { 56 | border-color: #ca87ff; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #8f00ff; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #8f00ff; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #e9ccff; 67 | color: #333; 68 | border-color: #ca87ff; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #e9ccff; 73 | border-color: #ca87ff; 74 | } 75 | div.pq-toolbar { 76 | border-color: #ca87ff; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #b454ff; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #ca87ff; 85 | } 86 | .pq-grid-bottom { 87 | background: #e9ccff; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #e9ccff; 92 | border-bottom-color: #b454ff; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #e9ccff; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #e9ccff); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #ca87ff; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #ca87ff; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #e9ccff; 108 | } 109 | .pq-grid-col { 110 | border-color: #ca87ff !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #c780ff; 115 | border-color: #8f00ff; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #e9ccff; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #e9ccff; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e5ffd1; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #f4e7ff; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e5ffd1; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #dce7d1; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #e9ccff; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #e9ccff; 155 | border-color: #8f00ff; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #b454ff; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #8f00ff; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #b454ff; 171 | background: #e9ccff; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #8f00ff; 178 | background: #c780ff; 179 | } 180 | -------------------------------------------------------------------------------- /themes/bootstrap/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #ffffff; 16 | border-color: #c6c6c6; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #ffffff); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #ffffff; 24 | border-color: #aaaaaa; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #ffffff; 28 | border-color: #aaaaaa; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #d7d7d7; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #aaaaaa; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #c6c6c6; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #c6c6c6; 43 | background: #ffffff; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #ffffff; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #d7d7d7; 54 | } 55 | .pq-group-item { 56 | border-color: #d7d7d7; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #aaaaaa; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #aaaaaa; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #ffffff; 67 | color: #333; 68 | border-color: #d7d7d7; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #ffffff; 73 | border-color: #d7d7d7; 74 | } 75 | div.pq-toolbar { 76 | border-color: #d7d7d7; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #c6c6c6; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #d7d7d7; 85 | } 86 | .pq-grid-bottom { 87 | background: #ffffff; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #ffffff; 92 | border-bottom-color: #c6c6c6; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #ffffff; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #ffffff); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #d7d7d7; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #d7d7d7; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #ffffff; 108 | } 109 | .pq-grid-col { 110 | border-color: #d7d7d7 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #d5d5d5; 115 | border-color: #aaaaaa; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #ffffff; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #ffffff; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #deeefa; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #f9f9f9; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #deeefa; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d9e8f4; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #ffffff; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #ffffff; 155 | border-color: #aaaaaa; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #c6c6c6; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #aaaaaa; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #c6c6c6; 171 | background: #ffffff; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #aaaaaa; 178 | background: #d5d5d5; 179 | } 180 | -------------------------------------------------------------------------------- /themes/chocolate/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #e5d9cc; 16 | border-color: #a77e54; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #e5d9cc); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #e5d9cc; 24 | border-color: #7B3F00; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #e5d9cc; 28 | border-color: #7B3F00; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #c1a587; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #7B3F00; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #a77e54; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #a77e54; 43 | background: #e5d9cc; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #e5d9cc; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #c1a587; 54 | } 55 | .pq-group-item { 56 | border-color: #c1a587; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #7B3F00; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #7B3F00; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #e5d9cc; 67 | color: #333; 68 | border-color: #c1a587; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #e5d9cc; 73 | border-color: #c1a587; 74 | } 75 | div.pq-toolbar { 76 | border-color: #c1a587; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #a77e54; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #c1a587; 85 | } 86 | .pq-grid-bottom { 87 | background: #e5d9cc; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #e5d9cc; 92 | border-bottom-color: #a77e54; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #e5d9cc; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #e5d9cc); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #c1a587; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #c1a587; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #e5d9cc; 108 | } 109 | .pq-grid-col { 110 | border-color: #c1a587 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #bd9f80; 115 | border-color: #7B3F00; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #e5d9cc; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #e5d9cc; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e9f4ff; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #ffedda; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e9f4ff; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #e9e2da; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #e5d9cc; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #e5d9cc; 155 | border-color: #7B3F00; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #a77e54; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #7B3F00; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #a77e54; 171 | background: #e5d9cc; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #7B3F00; 178 | background: #bd9f80; 179 | } 180 | -------------------------------------------------------------------------------- /themes/crimson/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #f8d0d8; 16 | border-color: #e8627c; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #f8d0d8); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #f8d0d8; 24 | border-color: #dc143c; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #f8d0d8; 28 | border-color: #dc143c; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #ef91a4; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #dc143c; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #e8627c; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #e8627c; 43 | background: #f8d0d8; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #f8d0d8; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #ef91a4; 54 | } 55 | .pq-group-item { 56 | border-color: #ef91a4; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #dc143c; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #dc143c; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #f8d0d8; 67 | color: #333; 68 | border-color: #ef91a4; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #f8d0d8; 73 | border-color: #ef91a4; 74 | } 75 | div.pq-toolbar { 76 | border-color: #ef91a4; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #e8627c; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #ef91a4; 85 | } 86 | .pq-grid-bottom { 87 | background: #f8d0d8; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #f8d0d8; 92 | border-bottom-color: #e8627c; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #f8d0d8; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #f8d0d8); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #ef91a4; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #ef91a4; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #f8d0d8; 108 | } 109 | .pq-grid-col { 110 | border-color: #ef91a4 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #ee8a9e; 115 | border-color: #dc143c; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #f8d0d8; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #f8d0d8; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #d7fbf4; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #ffe5ea; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #d7fbf4; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d7e2e0; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #f8d0d8; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #f8d0d8; 155 | border-color: #dc143c; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #e8627c; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #dc143c; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #e8627c; 171 | background: #f8d0d8; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #dc143c; 178 | background: #ee8a9e; 179 | } 180 | -------------------------------------------------------------------------------- /themes/indigo/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #dbcce6; 16 | border-color: #8654ab; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #dbcce6); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #dbcce6; 24 | border-color: #4B0082; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #dbcce6; 28 | border-color: #4B0082; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #ab87c4; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #4B0082; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #8654ab; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #8654ab; 43 | background: #dbcce6; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #dbcce6; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #ab87c4; 54 | } 55 | .pq-group-item { 56 | border-color: #ab87c4; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #4B0082; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #4B0082; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #dbcce6; 67 | color: #333; 68 | border-color: #ab87c4; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #dbcce6; 73 | border-color: #ab87c4; 74 | } 75 | div.pq-toolbar { 76 | border-color: #ab87c4; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #8654ab; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #ab87c4; 85 | } 86 | .pq-grid-bottom { 87 | background: #dbcce6; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #dbcce6; 92 | border-bottom-color: #8654ab; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #dbcce6; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #dbcce6); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #ab87c4; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #ab87c4; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #dbcce6; 108 | } 109 | .pq-grid-col { 110 | border-color: #ab87c4 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #a580c1; 115 | border-color: #4B0082; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #dbcce6; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #dbcce6; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #f2ffe8; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #f0dbff; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #f2ffe8; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #e3dbe8; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #dbcce6; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #dbcce6; 155 | border-color: #4B0082; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #8654ab; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #4B0082; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #8654ab; 171 | background: #dbcce6; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #4B0082; 178 | background: #a580c1; 179 | } 180 | -------------------------------------------------------------------------------- /themes/purple/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #e6cce6; 16 | border-color: #aa54aa; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #e6cce6); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #e6cce6; 24 | border-color: #800080; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #e6cce6; 28 | border-color: #800080; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #c387c3; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #800080; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #aa54aa; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #aa54aa; 43 | background: #e6cce6; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #e6cce6; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #c387c3; 54 | } 55 | .pq-group-item { 56 | border-color: #c387c3; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #800080; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #800080; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #e6cce6; 67 | color: #333; 68 | border-color: #c387c3; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #e6cce6; 73 | border-color: #c387c3; 74 | } 75 | div.pq-toolbar { 76 | border-color: #c387c3; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #aa54aa; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #c387c3; 85 | } 86 | .pq-grid-bottom { 87 | background: #e6cce6; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #e6cce6; 92 | border-bottom-color: #aa54aa; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #e6cce6; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #e6cce6); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #c387c3; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #c387c3; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #e6cce6; 108 | } 109 | .pq-grid-col { 110 | border-color: #c387c3 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #c080c0; 115 | border-color: #800080; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #e6cce6; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #e6cce6; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e8ffe8; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #ffdaff; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e8ffe8; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #e8dae8; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #e6cce6; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #e6cce6; 155 | border-color: #800080; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #aa54aa; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #800080; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #aa54aa; 171 | background: #e6cce6; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #800080; 178 | background: #c080c0; 179 | } 180 | -------------------------------------------------------------------------------- /themes/rosybrown/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #f2e9e9; 16 | border-color: #d2b4b4; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #f2e9e9); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #f2e9e9; 24 | border-color: #BC8F8F; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #f2e9e9; 28 | border-color: #BC8F8F; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #e0caca; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #BC8F8F; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #d2b4b4; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #d2b4b4; 43 | background: #f2e9e9; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #f2e9e9; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #e0caca; 54 | } 55 | .pq-group-item { 56 | border-color: #e0caca; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #BC8F8F; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #BC8F8F; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #f2e9e9; 67 | color: #333; 68 | border-color: #e0caca; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #f2e9e9; 73 | border-color: #e0caca; 74 | } 75 | div.pq-toolbar { 76 | border-color: #e0caca; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #d2b4b4; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #e0caca; 85 | } 86 | .pq-grid-bottom { 87 | background: #f2e9e9; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #f2e9e9; 92 | border-bottom-color: #d2b4b4; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #f2e9e9; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #f2e9e9); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #e0caca; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #e0caca; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #f2e9e9; 108 | } 109 | .pq-grid-col { 110 | border-color: #e0caca !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #dec7c7; 115 | border-color: #BC8F8F; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #f2e9e9; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #f2e9e9; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #dde5e5; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #ffeeee; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #dde5e5; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #ddd6d6; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #f2e9e9; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #f2e9e9; 155 | border-color: #BC8F8F; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #d2b4b4; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #BC8F8F; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #d2b4b4; 171 | background: #f2e9e9; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #BC8F8F; 178 | background: #dec7c7; 179 | } 180 | -------------------------------------------------------------------------------- /themes/sandybrown/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #fdeddf; 16 | border-color: #f8c294; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient(#fefefe,#fdeddf); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #fdeddf; 24 | border-color: #F4A460; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #fdeddf; 28 | border-color: #F4A460; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #fad4b4; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #F4A460; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #f8c294; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #f8c294; 43 | background: #fdeddf; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #fdeddf; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #fad4b4; 54 | } 55 | .pq-group-item { 56 | border-color: #fad4b4; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #F4A460; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #F4A460; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #fdeddf; 67 | color: #333; 68 | border-color: #fad4b4; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #fdeddf; 73 | border-color: #fad4b4; 74 | } 75 | div.pq-toolbar { 76 | border-color: #fad4b4; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #f8c294; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #fad4b4; 85 | } 86 | .pq-grid-bottom { 87 | background: #fdeddf; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #fdeddf; 92 | border-bottom-color: #f8c294; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #fdeddf; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #fdeddf); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #fad4b4; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #fad4b4; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #fdeddf; 108 | } 109 | .pq-grid-col { 110 | border-color: #fad4b4 !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #fad2b0; 115 | border-color: #F4A460; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #fdeddf; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #fdeddf; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #d3e1ee; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #fff6ef; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #d3e1ee; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #d3dadf; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #fdeddf; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #fdeddf; 155 | border-color: #F4A460; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #f8c294; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #F4A460; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #f8c294; 171 | background: #fdeddf; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #F4A460; 178 | background: #fad2b0; 179 | } 180 | -------------------------------------------------------------------------------- /themes/steelblue/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #dae6f0; 16 | border-color: #83abcd; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #dae6f0); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #dae6f0; 24 | border-color: #4682b4; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #dae6f0; 28 | border-color: #4682b4; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #a8c4dc; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #4682b4; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #83abcd; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #83abcd; 43 | background: #dae6f0; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #dae6f0; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #a8c4dc; 54 | } 55 | .pq-group-item { 56 | border-color: #a8c4dc; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #4682b4; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #4682b4; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #dae6f0; 67 | color: #333; 68 | border-color: #a8c4dc; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #dae6f0; 73 | border-color: #a8c4dc; 74 | } 75 | div.pq-toolbar { 76 | border-color: #a8c4dc; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #83abcd; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #a8c4dc; 85 | } 86 | .pq-grid-bottom { 87 | background: #dae6f0; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #dae6f0; 92 | border-bottom-color: #83abcd; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #dae6f0; 96 | background-color: #fefefe; 97 | background-image: linear-gradient( #fefefe, #dae6f0); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #a8c4dc; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #a8c4dc; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #dae6f0; 108 | } 109 | .pq-grid-col { 110 | border-color: #a8c4dc !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #a3c1da; 115 | border-color: #4682b4; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #dae6f0; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #dae6f0; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #f2e8df; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #e6f4ff; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #f2e8df; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #dbdddf; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #dae6f0; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #dae6f0; 155 | border-color: #4682b4; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #83abcd; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #4682b4; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #83abcd; 171 | background: #dae6f0; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #4682b4; 178 | background: #a3c1da; 179 | } 180 | -------------------------------------------------------------------------------- /themes/Office/pqgrid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid .ui-button .ui-button-text { 11 | padding-top: 4px; 12 | padding-bottom: 4px; 13 | } 14 | .pq-grid .ui-widget-header { 15 | background: #ebebff; 16 | border-color: #bbbbff; 17 | } 18 | .pq-grid .ui-state-default { 19 | background-color: #fefefe; 20 | background-image: linear-gradient( #fefefe, #ebebff); 21 | } 22 | .pq-grid .ui-state-focus { 23 | background: #ebebff; 24 | border-color: #9999ff; 25 | } 26 | .pq-grid .ui-state-hover { 27 | background: #ebebff; 28 | border-color: #9999ff; 29 | } 30 | .pq-grid .ui-widget-header .ui-state-default:not(.ui-state-hover) { 31 | border-color: #cfcfff; 32 | } 33 | .pq-grid .ui-state-active { 34 | background: #fff; 35 | border-color: #9999ff; 36 | } 37 | .pq-grid .ui-widget-content { 38 | border-color: #bbbbff; 39 | } 40 | div.pq-grid { 41 | color: #333; 42 | border-color: #bbbbff; 43 | background: #ebebff; 44 | } 45 | .pq-grid *:focus { 46 | outline: 1px dotted #ebebff; 47 | } 48 | .pq-grid select, 49 | .pq-grid input[type="text"], 50 | .pq-grid input, 51 | .pq-grid textarea, 52 | .pq-grid button.ui-state-default:not(.ui-state-hover) { 53 | border-color: #cfcfff; 54 | } 55 | .pq-group-item { 56 | border-color: #cfcfff; 57 | } 58 | .pq-group-item:hover { 59 | border-color: #9999ff; 60 | } 61 | .pq-group-remove:hover, 62 | .pq-group-icon:hover { 63 | border-color: #9999ff; 64 | } 65 | .pq-grid > .pq-grid-top { 66 | background: #ebebff; 67 | color: #333; 68 | border-color: #cfcfff; 69 | } 70 | .pq-grid-title, 71 | .pq-group-header { 72 | background: #ebebff; 73 | border-color: #cfcfff; 74 | } 75 | div.pq-toolbar { 76 | border-color: #cfcfff; 77 | } 78 | .pq-grid span.pq-separator { 79 | border-right-color: #fff; 80 | border-left-color: #bbbbff; 81 | } 82 | div.pq-pager, 83 | div.pq-grid-summary { 84 | border-top-color: #cfcfff; 85 | } 86 | .pq-grid-bottom { 87 | background: #ebebff; 88 | color: #333; 89 | } 90 | .pq-header-outer { 91 | background: #ebebff; 92 | border-bottom-color: #bbbbff; 93 | } 94 | .pq-header-outer > .pq-grid-header { 95 | background: #ebebff; 96 | background-color: #fefefe; 97 | background-image: linear-gradient(#fefefe, #ebebff); 98 | } 99 | .pq-grid-table > tbody > tr > .pq-grid-cell { 100 | border-color: #cfcfff; 101 | } 102 | .pq-grid-row > td.pq-grid-number-cell, 103 | .pq-grid-number-col { 104 | border-color: #cfcfff; 105 | } 106 | .pq-grid-row > .pq-grid-number-cell { 107 | background: #ebebff; 108 | } 109 | .pq-grid-col { 110 | border-color: #cfcfff !important; 111 | } 112 | .pq-col-sort-asc, 113 | .pq-col-sort-desc { 114 | background: #ccccff; 115 | border-color: #9999ff; 116 | } 117 | .pq-grid-col, 118 | .pq-grid-number-col { 119 | color: #333; 120 | } 121 | .pq-grid-col:hover { 122 | background: #ebebff; 123 | } 124 | .pq-grid-row { 125 | background: #fff; 126 | color: #333; 127 | } 128 | .pq-hvscroll-square { 129 | background: #ebebff; 130 | } 131 | .pq-state-select.ui-state-highlight { 132 | background: #e3e3d1; 133 | } 134 | tr.pq-grid-oddRow { 135 | background: #f5f5ff; 136 | } 137 | .pq-grid-cell-hover.ui-state-hover, 138 | .pq-grid-row-hover.ui-state-hover { 139 | background: #e3e3d1; 140 | } 141 | tr.pq-grid-oddRow > td.pq-state-select, 142 | tr.pq-grid-oddRow.pq-state-select, 143 | tr.pq-grid-oddRow > .pq-grid-cell-hover, 144 | tr.pq-grid-oddRow.pq-grid-row-hover { 145 | background: #dbdbd1; 146 | } 147 | .pq-grid-cell:focus { 148 | outline: 2px solid #777; 149 | } 150 | .pq-loading-bg { 151 | background: #ebebff; 152 | } 153 | .pq-loading > .pq-loading-mask { 154 | background: #ebebff; 155 | border-color: #9999ff; 156 | color: #333; 157 | } 158 | div.pq-loading-mask > div { 159 | border-color: #bbbbff; 160 | background-color: #fff; 161 | } 162 | .pqg-vert-frozen-line, 163 | .pqg-horiz-frozen-line { 164 | border-color: #9999ff; 165 | } 166 | .pq-sb-horiz-t .pq-sb-slider, 167 | .pq-sb-vert-t .pq-sb-slider, 168 | .pq-sb-horiz-t .pq-sb-btn, 169 | .pq-sb-vert-t .pq-sb-btn { 170 | border-color: #bbbbff; 171 | background: #ebebff; 172 | } 173 | .pq-sb-horiz-t > .pq-sb-slider:hover, 174 | .pq-sb-vert-t > .pq-sb-slider:hover, 175 | .pq-sb-horiz-t > .pq-sb-btn:hover, 176 | .pq-sb-vert-t > .pq-sb-btn:hover { 177 | border-color: #9999ff; 178 | background: #ccccff; 179 | } 180 | -------------------------------------------------------------------------------- /php/filtering/index.php: -------------------------------------------------------------------------------- 1 | 4 | 31 | 120 |
121 | 122 | -------------------------------------------------------------------------------- /php/filter_paging/index.php: -------------------------------------------------------------------------------- 1 | 4 | 31 | 125 |
126 | 127 | -------------------------------------------------------------------------------- /php/sort_filtering/index.php: -------------------------------------------------------------------------------- 1 | 4 | 31 | 132 |
133 | 134 | -------------------------------------------------------------------------------- /php/filter_sort_paging/index.php: -------------------------------------------------------------------------------- 1 | 4 | 31 | 131 |
132 | 133 | -------------------------------------------------------------------------------- /php/error_handling/index.php: -------------------------------------------------------------------------------- 1 | 4 | 31 | 139 |
140 | 141 | -------------------------------------------------------------------------------- /angular/ng.pqgrid.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | !function(e){"use strict";function t(e,t){return e.arr==t.arr&&e.len==t.len&&e.first==t.first&&e.last==t.last}function n(e){var t=e.length;return{arr:e,len:t,first:t?e[0]:null,last:t?e[t-1]:null}}function r(t,n,r,i,a,c){var s=this;s.$scope=t,s.$compile=i,s.$timeout=a,s.$parse=c,s.rowScopes=[],s.$ele=n;var l=r.cloneOptions,d=r.options,u=t.$eval(d),p=r.rebind,f=l?e.extend(!0,{},u):u,h=f.ngModel||{},$=s.readCellTemplates(f.colModel||[])||h.compileRows,g=f.dataModel,v="string"==typeof g.data?g.data:null,m=h.watch||1,w=s.detailTmpl=f.detailTemplate;s.timerDigest=o.timer(),p&&("all"==p?s.rebindAll(u,d):s.rebind(p,d)),w&&s.templateDetail(w,f),s.unregWatch=m&&v?function(){return m===!0?t.$watchCollection(v,s.watchCollListener(s)):t.$watch(s.watch(s,v))}():null,v&&(g.data=t.$eval(v)),f.render=s.onRender(s,f,f.render,function(e){h.compileHeader&&e.on("refreshHeader",s.onRefreshHeader(s)),h.compileToolbar&&e.one("dataReady",s.oneDataReady(s)),e.on("dataReady",s.onDataReady(s,v)),$&&e.on("refresh",s.onRefresh(s))}),s.grid=pq.grid(n,f).on("refreshRow refreshCell",s.onRefreshRowCell(s,$)).on("destroy",s.onDestroy(s)),s.bindEvents(r),m===!0&&v&&s.digest(t)}if(!pq.ng){pq.ng={};var o={timer:function(){var e;return{setTimeout:function(t){e&&clearTimeout(e),e=setTimeout(t)}}}};pq.ng.cGrid=r;var i=r.prototype;i.onEvent=function(e,t){return function(n,r){var o=e.$scope.$new();o.evt=n,o.ui=r,o.$eval(t),o.$destroy(),e.digestAsync()}},i.bindEvents=function(e){var t,n,r=e.$attr,o=this;for(n in r)0===n.indexOf("on")&&(t=n.substring(2,3).toLowerCase()+n.substr(3),o.grid.on(t,o.onEvent(o,e[n])))},i.rebindWListen=function(e,t){return function(n,r){n!==r&&(e.grid.option(t,n),e.grid.refreshView())}},i.compareObj=function(t,n,r,o){var i,a,c,s;for(i in n)a=t[i],c=n[i],s=(o?o+".":"")+i,e.isPlainObject(a)?this.compareObj(a,c,r,s):a===c||e.isArray(a)||r(s,a)},i.copy=function(t,n){var r,o,i=this;for(var r in t)o=t[r],e.isPlainObject(o)?(n[r]={},i.copy(o,n[r])):n[r]=o;return n},i.rebindAll=function(e,t){var n=this,r=n.$scope,o=n.copy(e,{});r.$watch(function(){var e=!1,i=r.$eval(t);n.compareObj(i,o,function(t,r){e=!0,n.grid.option(t,r)}),e&&(o=n.copy(i,{}),n.grid.refreshView())})},i.rebind=function(e,t){for(var n=e.split(" "),r=this,o=r.$scope,i=0;ir;r++)t=n[r],(e=t.pq_scope_detail)&&e.$destroy()},i.onDataReady=function(e,t){return function(n){if(t){var r=this.options.dataModel.data;e.updateObjInt(r),e.$parse(t).assign(e.$scope,r)}e.digestAsync()}},i.watchCollListener=function(e){return function(t,n){t!==n&&e.refreshGrid(t)}},i.watch=function(e,r){return function(){var o,i,a=e.$scope.$eval(r);i=n(a),o=e.objInt,o&&!t(o,i)&&e.refreshGrid(a)}},i.updateObjInt=function(e){this.objInt=n(e)},i.cleanRowScopes=function(){for(var e=0,t=this.rowScopes,n=t.length;n>e;e++)t[e].$destroy();t.length=0},i.onRefreshRowCell=function(e,t){return function(n,r){if(t){var o=this.getRow(r);e.rowScope(o,r.rowData,r.rowIndx)}}},i.onRefresh=function(t){return function(){var n,r,o,i,a,c=this,s=0;for(t.cleanRowScopes(),n=c.$cont.children().children().children().children(".pq-grid-row:not('.pq-detail-child')"),o=n.length;o>s;s++)r=e(n[s]),i=c.getRowIndx({$tr:r}),a=c.getRowData(i),t.rowScope(r,a,i.rowIndx)}},i.onRefreshHeader=function(e){return function(){var t=this,n=e.$scope;e.$compile(t.$header)(n),e.digest(n)}},i.oneDataReady=function(e){return function(){var t=this,n=e.$scope;e.$compile(t.toolbar())(n),e.digest(n)}},i.onRender=function(e,t,n,r){return function(o,i){var a=this,c=e.$scope;c.grid=a,a.$scope=c,t.grid=a,n&&n.call(a,o,i),r(a)}},i.onDestroy=function(e){return function(){e.$scope.$destroy(),e.cleanRowScopes(),e.detailDestroyScopes(),e.unregWatch&&e.unregWatch()}},i.digestAsync=function(){var e=this,t=e.timerDigest,n=e.$scope.$root,r=n.$$phase;"$apply"!=r&&"$digest"!=r&&t.setTimeout(function(){r=n.$$phase,"$apply"!=r&&"$digest"!=r&&n.$digest()})},i.digest=function(e){var t=e.$root.$$phase;"$apply"!=t&&"$digest"!=t&&e.$digest()},i.rowScope=function(e,t,n){var r=this,o=r.$scope.$new(!1);r.rowScopes.push(o),o.rd=t,o.ri=n,r.$compile(e)(o),r.digest(o)},i.readCellTemplates=function(e){for(var t,n,r,o,i=0,a=e.length,c=this,s=c.$scope,l=c.$compile;a>i;i++)if(t=e[i],(n=t.template)&&(r=!0,t.render=c.templateCell(n)),(n=t.editorTemplate)&&(t.editor=c.templateEditor(c,t.editor,n,l,s)),o=t.validations)for(var d=0;d"}}])}}(jQuery); -------------------------------------------------------------------------------- /php/Content/css/pqgrid.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * ParamQuery Grid a.k.a. pqGrid v1.1.4 3 | * 4 | * Copyright (c) 2012-2014 Paramvir Dhindsa 5 | * Released under GPL v3 license 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | div.pq-grid{overflow:hidden;position:relative}div.pq-grid *{font-family:Arial;font-size:12px;margin:0;padding:0;line-height:normal}div.pq-grid *:focus{outline:1px dotted gray}div.pq-grid-top{border-width:0}div.pq-grid-title{border-bottom:1px solid #c5c5c5;zoom:1;padding:5px;overflow:hidden}div.pq-grid-toolbar{border-top:1px solid #fff;border-bottom:1px solid #c5c5c5;padding:3px 5px 4px;zoom:1;overflow:hidden}div.pq-grid-toolbar .ui-button{margin:0 4px}div.pq-grid div.draggable{cursor:move}div.pq-grid-bottom{border-top:1px solid #c5c5c5;border-top-width:0;position:relative}div.pq-grid-footer{border-top:1px solid #fff;padding:2px 5px 2px;overflow:hidden;position:relative}div.pq-grid-inner{position:relative;width:100%;overflow-x:hidden;overflow-y:hidden}div.pq-grid-right{position:relative;overflow:hidden;display:block}div.pq-header-outer{position:relative;border-width:0;overflow:hidden;width:100%;z-index:1}.pq-grid span.pq-grid-header{position:absolute;top:-2px;cursor:default;display:inline-block;overflow:hidden;border-width:0}.pq-grid-header .pq-col-sort-asc .pq-col-sort-icon{padding-right:16px;height:16px;width:16px;BACKGROUND:url(images/sort_asc.gif) no-repeat right 6px}.pq-grid-header .pq-col-sort-desc .pq-col-sort-icon{padding-right:16px;BACKGROUND:url(images/sort_desc.gif) no-repeat right 6px}.pq-grid-col-resize-handle{cursor:w-resize;display:block;width:20px;height:22px;background:;z-index:2;position:absolute;top:0}.pq-grid-drag-bar{position:absolute;width:1px;z-index:100;top:0;background-color:#000}div.pq-grid .pq-align-right{text-align:right}div.pq-grid .pq-align-right *{text-align:right}div.pq-grid .pq-align-center{text-align:center}div.pq-grid .pq-align-center *{text-align:center}div.pq-cont-right{position:relative;overflow:hidden;border-width:0}div.pq-cont{overflow:hidden;border-top:0;width:100%;position:relative}.pq-grid .pq-cont .ui-state-hover{font-weight:normal}table.pq-grid-table{border-spacing:0;table-layout:fixed;width:0;position:relative;top:0;margin-top:-1px}table.pq-grid-header-table{table-layout:fixed;width:0;border-spacing:0}table.pq-grid-header-table div.pq-grid-header-table-div{padding:5px}div.pq-grid-header_ddn_icon{position:absolute;top:0;width:16px;height:100%;border-left:1px solid #fff;background:url('images/ddn.png') no-repeat 40% 45%}div.pq-grid-header_ddn_icon_bg{display:none;position:absolute;top:0;width:17px;height:100%;border-left:1px solid #ccc;background:url('images/column-header-bg.png');text-align:left!important}div.ui-resizable-handle{z-index:1}.pq-grid td.pq-grid-col{overflow:hidden;border-width:0;border-right:1px solid #cfcfcf;border-top:1px solid #cfcfcf}td.pq-grid-number-col{border-right:1px solid #cfcfcf}.pq-grid .pq-col-drag-helper{border:1px solid steelblue;background:#fff;padding:3px}.pq-grid .pq-col-drag-helper .pq-drag-icon{background:url("images/cross.png");height:16px;width:16px;margin-right:5px;margin-bottom:-3px;display:inline-block}.pq-grid .pq-drag-accept .pq-drag-icon{background:url("images/tick.png")}.pq-grid td.pq-drop-hover{background:#fff;background-image:url("")}tr.pq-row-hidden{visibility:hidden;height:1px}td.pq-grid-cell{overflow:hidden;padding:0;vertical-align:top}td div.pq-td-div{padding:4px 5px}.pq-wrap-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.pq-grid-td-border-right td.pq-grid-cell{border-right:1px solid #d0d0d0}table.pq-grid-td-border-bottom td.pq-grid-cell{border-bottom:1px solid #ededed}div.pq-cell-selected-border{border:2px solid #666;position:absolute;padding:0}div.pq-cell-selected-border-edit{background:#fff;color:#333}div.pq-grid-editor-default{background:#fff;padding:2px}tr td.pq-grid-number-cell{border-right:1px solid #9eb6ce;cursor:pointer}.pq-grid td.pq-grid-number-cell{border-top:0;border-left:0}tr td.pq-last-freeze-col{border-right:1px solid steelblue}div.pq-grid-disable{height:100%;width:100%;position:absolute;left:0;top:0;background:#ccc;z-index:3}div.pq-loading{height:100%;width:100%;position:absolute;left:0;top:0;display:none}div.pq-loading div.pq-loading-bg{background:#ccc;height:100%;width:100%;position:absolute;left:0;top:0}div.pq-loading-mask{width:100px;height:25px;padding:5px;position:absolute;left:50%;top:50%;margin-left:-50px;margin-top:-13px}.pq-grid div.pq-loading-mask div{padding-top:0;padding-right:6px;padding-left:29px;line-height:23px;background-image:url("images/loading.gif");background-position:6px center;background-repeat:no-repeat}div.pq-vscroll{height:150px;width:17px;border:0 solid blue;position:absolute;right:0;bottom:17px}div.pq-hscroll{height:17px;border:0 solid blue;position:absolute;right:17px;bottom:0}div.pq-hvscroll-square{height:17px;width:17px;border:0 solid blue;position:absolute;right:0;bottom:0}.pq-tree-icon-container{position:relative;float:left;height:16px}.pq-tree-icon{cursor:pointer;position:absolute;width:18px;height:16px;right:0;top:-2px}div.pq-grid tr td.pq-grid-cell-hover{border-width:0}div.pq-grid tr td.pq-cell-select{border-top-width:0;border-left-width:0}.pq-pager{padding:2px 5px 13px;overflow:hidden;vertical-align:middle}.pq-pager *{vertical-align:middle}.pq-grid span.pq-separator{height:18px;border-left:1px solid #ccc;border-right:1px solid #fff;display:inline-block;margin-right:5px}.pq-pager input{padding:0 1px;text-align:center;width:35px;margin-right:5px;height:16px}div.pq-pager span,div.pq-pager select{margin-right:5px}.pq-pager .pq-pageholder{vertical-align:top}.pq-grid button.ui-button-icon-only{height:22px;width:22px;margin-right:5px;padding:.2em .2em}.pq-grid .ui-state-default .pq-page-first{background:url('images/page-first-gray.gif')}.pq-grid .ui-state-default .pq-page-prev{background:url('images/page-prev-gray.gif')}.pq-grid .ui-state-default .pq-page-next{background:url('images/page-next-gray.gif')}.pq-grid .ui-state-default .pq-page-last{background:url('images/page-last-gray.gif')}.pq-grid .ui-state-default .pq-refresh{background:url('images/refresh.gif')}.pq-scrollbar-vert{display:block;width:17px;background:#efefef url(images/vert-bg.png)}.pq-scrollbar-horiz{display:block;height:17px;background:#efefef url(images/horiz-bg.png)}.pq-scrollbar-vert *{padding:0;margin:0}.pq-scrollbar-horiz *{padding:0;margin:0}.pq-sb-btn{width:17px;height:17px;position:absolute;background-color:steelblue}.pq-scrollbar-vert div.top-btn{left:0;top:0;background:url(images/sprite.png)}.pq-scrollbar-horiz div.left-btn{left:0;top:0;background:url(images/sprite.png) -34px}.pq-scrollbar-vert div.bottom-btn{left:0;bottom:0;background:url(images/sprite.png) -17px}.pq-scrollbar-horiz div.right-btn{top:0;right:0;background:url(images/sprite.png) -51px}.pq-sb-slider{position:absolute}.pq-sb-slider *{background:url(images/sprite.png)}.pq-sb-slider-h{position:absolute}.pq-sb-slider-h *{display:inline-block;background:url(images/sprite.png)}.pq-sb-slider .vert-slider-top{width:17px;height:3px;overflow:hidden;background-position:17px -8px}.pq-sb-slider-h .horiz-slider-left{height:17px;width:3px;overflow:hidden;background-position:-68px 0}.pq-sb-slider .vert-slider-bg{width:17px;overflow:hidden;background:#b6cefb url(images/vert-slider-bg.png)}.pq-sb-slider-h .horiz-slider-bg{height:17px;overflow:hidden;background:#b6cefb url(images/horiz-slider-bg.png)}.pq-sb-slider .vert-slider-center{width:17px;height:8px;overflow:hidden;background-position:17px 0}.pq-sb-slider-h .horiz-slider-center{height:17px;width:8px;overflow:hidden;background-position:-74px 0}.pq-sb-slider .vert-slider-bottom{width:17px;height:3px;overflow:hidden;background-position:17px -11px}.pq-sb-slider-h .horiz-slider-right{height:17px;width:3px;overflow:hidden;background-position:-71px 0} -------------------------------------------------------------------------------- /knockout/ko.pqgrid.dev.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | (function($) { 11 | var fn = $.paramquery.pqGrid.prototype; 12 | fn.totalRows = fn.totalRows || function() { 13 | var DM = this.options.dataModel, 14 | data = DM.data, 15 | dataUf = DM.dataUF || []; 16 | return data.length + dataUf.length; 17 | }; 18 | var timeFactory = { 19 | timer: function() { 20 | var id; 21 | return { 22 | setTimeout: function(fn) { 23 | id && ko.tasks.cancel(id); 24 | id = ko.tasks.schedule(fn); 25 | } 26 | }; 27 | } 28 | }; 29 | 30 | function readCellTemplates(CM) { 31 | var i = 0, 32 | len = CM.length, 33 | column, template, present; 34 | for (; i < len; i++) { 35 | column = CM[i]; 36 | if (template = column.template) { 37 | present = true; 38 | column.render = (function(tmpl) { 39 | return function(ui) { 40 | return tmpl; 41 | } 42 | })(template); 43 | } 44 | } 45 | return present; 46 | }; 47 | 48 | function disposeRow(rd) { 49 | var pq_ko = rd.pq_ko, 50 | key; 51 | if (pq_ko) { 52 | for (key in pq_ko) { 53 | pq_ko[key].dispose(); 54 | } 55 | } 56 | }; 57 | 58 | function cBind(element, value, context) { 59 | var self = this, 60 | options = value(), 61 | data, 62 | grid, 63 | timerKoData = timeFactory.timer(), 64 | timerExport = timeFactory.timer(), 65 | CM = options.colModel, 66 | koM = options.koModel || {}, 67 | bind = readCellTemplates(CM || []) || koM.bind, 68 | DM = options.dataModel, 69 | items = DM.data, 70 | koItem = koM.item, 71 | koData = typeof items === "function" ? items : null; 72 | options.refresh = function() { 73 | bind && self.onRefresh(this); 74 | }; 75 | self.element = element; 76 | self.timerItem = timeFactory.timer(); 77 | self.context = context; 78 | if (koData) { 79 | data = koData(); 80 | if (!koItem && data[0] && !$.isPlainObject(data[0])) { 81 | koItem = data[0].constructor; 82 | } 83 | options.dataModel.data = self.importData(data, koItem); 84 | self.subscribeKoDataChange(koData, koItem, timerKoData); 85 | } 86 | self.koItem = koItem; 87 | grid = pq.grid(element, options); 88 | self.grid = grid; 89 | grid.on("sort filter load", self.onSortFilterLoad(self, koData, koItem, timerExport)).on("change", self.onChange(self, koData, koItem, timerExport)).on("refreshRow refreshCell", self.onRefreshRowCell(self, bind)); 90 | ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 91 | grid.destroy(); 92 | }); 93 | } 94 | var _p = cBind.prototype; 95 | _p.onChange = function(self, koData, koItem, timerEx) { 96 | return function(evt, ui) { 97 | if (koData) { 98 | var rl = ui.rowList; 99 | if (rl.length == 1 && rl[0].type == "update") { 100 | var ro = rl[0], 101 | item = ro.rowData.pq_ko_item, 102 | newRow = ro.newRow; 103 | for (var key in newRow) { 104 | item[key](newRow[key]); 105 | } 106 | } else { 107 | self.inChange = true; 108 | timerEx.setTimeout(function() { 109 | koData(self.exportData(koItem)); 110 | self.inChange = false; 111 | }); 112 | } 113 | } 114 | }; 115 | }; 116 | _p.onSortFilterLoad = function(self, koData, koItem, timerEx) { 117 | return function(evt) { 118 | if (koData) { 119 | self.inChange = true; 120 | timerEx.setTimeout(function() { 121 | koData(self.exportData(koItem)); 122 | self.inChange = false; 123 | }); 124 | } 125 | }; 126 | }; 127 | _p.onRefreshRowCell = function(self, bind) { 128 | return function(evt, ui) { 129 | if (bind) { 130 | var $tr = this.getRow(ui); 131 | ko.cleanNode($tr[0]); 132 | self.rowScope($tr, ui.rowData, ui.rowIndx); 133 | } 134 | } 135 | }; 136 | _p.disposeData = function() { 137 | var data = this.grid.option('dataModel.data'), 138 | i = 0, 139 | len = data.length; 140 | for (; i < len; i++) { 141 | disposeRow(data[i]); 142 | } 143 | }; 144 | _p.subscribe = function(obs, rd, key, pq_ko) { 145 | var timerItem = this.timerItem, 146 | self = this; 147 | pq_ko[key] = pq_ko[key] || obs.subscribe(function(change) { 148 | rd; 149 | key; 150 | rd[key] = change; 151 | timerItem.setTimeout(function() { 152 | self.grid.refresh({ 153 | header: false 154 | }); 155 | }); 156 | }); 157 | }; 158 | _p.importData = function(data, koItem) { 159 | var newData = [], 160 | self = this; 161 | if (koItem) { 162 | ko.utils.arrayMap(data, function(item) { 163 | newData.push(self.importRow(item, koItem)); 164 | }); 165 | return newData; 166 | } else { 167 | return data; 168 | } 169 | } 170 | _p.importRow = function(item, koItem) { 171 | var rd, obs, pq_ko; 172 | if (koItem) { 173 | pq_ko = {}; 174 | rd = { 175 | pq_ko: pq_ko 176 | }; 177 | for (var key in item) { 178 | obs = item[key]; 179 | this.subscribe(obs, rd, key, pq_ko); 180 | rd[key] = obs(); 181 | } 182 | rd.pq_ko_item = item; 183 | return rd; 184 | } else { 185 | return item; 186 | } 187 | }; 188 | _p.exportRow = function(rd) { 189 | var item = rd.pq_ko_item, 190 | pq_ko, obs, key; 191 | if (item) { 192 | for (key in item) { 193 | item[key](rd[key]); 194 | } 195 | } else { 196 | item = new koItem(rd); 197 | rd.pq_ko = pq_ko = rd.pq_ko || {}; 198 | for (key in item) { 199 | obs = item[key]; 200 | this.subscribe(obs, rd, key, pq_ko); 201 | } 202 | } 203 | return item; 204 | }; 205 | _p.exportData = function(koItem) { 206 | var self = this, 207 | data = self.grid.options.dataModel.data, 208 | newData = [], 209 | item; 210 | if (koItem) { 211 | ko.utils.arrayMap(data, function(rd) { 212 | item = self.exportRow(rd); 213 | newData.push(item); 214 | }); 215 | return newData; 216 | } else { 217 | return data; 218 | } 219 | }; 220 | _p.importArrayChanges = function(changes, koItem) { 221 | var rd, 222 | change, status, indx, 223 | len = changes.length, 224 | data = this.grid.option('dataModel.data'); 225 | if (len > data.length) { 226 | return true; 227 | } 228 | while (len--) { 229 | change = changes[len]; 230 | status = change.status; 231 | indx = change.index; 232 | if (status == "added") { 233 | rd = this.importRow(change.value, koItem); 234 | data.splice(indx, 0, rd); 235 | } else if (status == "deleted") { 236 | disposeRow(data[indx]); 237 | data.splice(indx, 1); 238 | } 239 | } 240 | }; 241 | _p.rowScope = function($tr, rd, ri) { 242 | var binding = this.context.extend({ 243 | rd: (rd.pq_ko_item || rd), 244 | ri: ri 245 | }); 246 | ko.applyBindingsToDescendants(binding, $tr[0]); 247 | }; 248 | _p.subscribeKoDataChange = function(koData, koItem, timer) { 249 | var self = this, 250 | fullImport, 251 | grid; 252 | if (!koData) return; 253 | koData.subscribe(function(changes) { 254 | if (!self.inChange) { 255 | if (!fullImport) { 256 | fullImport = !koItem || self.importArrayChanges(changes, koItem); 257 | timer.setTimeout(function() { 258 | self.grid.refreshView(); 259 | }); 260 | } 261 | } 262 | }, null, 'arrayChange'); 263 | koData.subscribe(function(arr) { 264 | if (!self.inChange && fullImport) { 265 | if (koData() != arr) { 266 | throw ("koData != arr assert failed"); 267 | } 268 | grid = self.grid; 269 | timer.setTimeout(function() { 270 | koItem && self.disposeData(); 271 | grid.option('dataModel.data', self.importData(koData(), koItem)); 272 | grid.refreshView(); 273 | }); 274 | fullImport = false; 275 | } 276 | }); 277 | }; 278 | _p.onRefresh = function(grid) { 279 | var i = 0, 280 | ui, rd, $tr, 281 | trs = this.element.querySelectorAll(".pq-grid-row"), 282 | len = trs.length; 283 | for (; i < len; i++) { 284 | $tr = $(trs[i]); 285 | ui = grid.getRowIndx({ 286 | $tr: $tr 287 | }); 288 | rd = grid.getRowData(ui); 289 | this.rowScope($tr, rd, ui.rowIndx); 290 | } 291 | }; 292 | ko.bindingHandlers.pqGrid = { 293 | init: function(element, value, allBindings, vm, context) { 294 | new cBind(element, value, context); 295 | return { 296 | controlsDescendantBindings: true 297 | }; 298 | } 299 | }; 300 | })(jQuery); -------------------------------------------------------------------------------- /pqgrid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | .pq-grid label,.pq-grid input,.pq-grid select,.pq-grid textarea,.pq-grid input[type]{font-weight:normal;margin-bottom:0}.pq-grid{overflow:hidden;position:relative;z-index:0;box-sizing:border-box}div.pq-grid *{box-sizing:inherit}div.pq-grid select{width:auto;height:auto}.pq-grid *:focus{outline:1px dotted gray}.pq-grid-cell:focus{outline:2px solid #666}.pq-grid-cont:focus{outline:0}.pq-focus{outline:1px dotted gray}.pq-disable-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.pq-native-select{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text}.pq-grid>.pq-grid-top{border-width:0 0 1px 0;border-style:solid;margin-top:-1px;position:relative}.pq-slider-icon{position:absolute;z-index:4;right:0;top:0}.pq-grid-title{padding:4.5px 5px}.pq-group-header{border-top:1px solid transparent;zoom:1;padding:3px 5px;position:relative}.pq-group-menu{position:relative;float:right;border-radius:3px;white-space:nowrap}.pq-group-header.pq-drop-hover{cursor:copy}.pq-group-placeholder{padding:4px;color:#777}.pq-group-item{display:inline-block;float:left;white-space:nowrap;border:1px solid #bfbfbf;padding:4px 5px;border-radius:4px;margin-right:10px;position:relative;cursor:pointer}.pq-group-item>.ui-icon{margin:-3px}.pq-group-item>.pq-group-remove,.pq-group-item>.pq-group-toggle{display:inline-block;border-radius:5px;margin-left:3px;border:1px solid transparent;width:18px;height:17px;font-weight:bold}.pq-group-item>.pq-group-toggle{margin-left:0;margin-right:3px}.pq-group-remove:hover{border:1px solid #cfcfcf}.pq-group-title-cell .pq-group-icon{cursor:pointer;position:relative;top:1px;margin:-2px 3px -2px 0;border:1px solid transparent;border-radius:4px;height:18px;width:18px;font-size:10px}.pq-group-icon:hover{border-color:#aaa}.pq-toolbar{border-top:1px solid transparent;padding:4px 5px;zoom:1;overflow:hidden;text-align:left}.pq-toolbar>.pq-separator,.pq-toolbar>span,.pq-toolbar>div,.pq-toolbar>p,.pq-toolbar>label,.pq-toolbar>input,.pq-toolbar>textarea,.pq-toolbar>select,.pq-toolbar>button{margin-left:5px;margin-right:5px;vertical-align:middle}.pq-toolbar textarea{resize:none}.pq-toolbar>label>textarea{vertical-align:middle}.pq-grid .pq-search-txt{overflow:visible;padding:1px 4px}.pq-grid input[type='text'],.pq-grid textarea,.pq-grid select{border-width:1px;border-style:solid;border-color:#ccc;padding:1px 4px;border-radius:4px}.pq-draggable{cursor:move}.pq-grid>.pq-grid-bottom{border-width:1px 0 0 0;top:1px;overflow:hidden;border-style:solid;border-color:transparent;font-weight:normal!important;position:relative}.pq-pager>span{vertical-align:middle;position:relative}.pq-page-placeholder>span,.pq-page-placeholder>input,.pq-page-placeholder>select{vertical-align:middle}.pq-pager>.pq-page-placeholder{vertical-align:baseline;margin-right:0}.pq-page-placeholder>span{margin:0 4px}.pq-grid-center{position:relative;width:100%;overflow-x:hidden;overflow-y:hidden;margin-bottom:-1px}.pq-header-outer{position:relative;border-top-width:0!important;border-left-width:0!important;text-align:left}.pq-grid-header{position:absolute;top:-2px;cursor:default;display:inline-block;overflow:hidden;border-width:0!important}.pq-grid-header-inner{position:relative}.pq-grid-header-left{overflow:hidden}.pq-grid-cont-inner{position:absolute;left:0;top:0;cursor:default;overflow:hidden;width:100%}.pq-grid-norows{text-align:center;padding:3px;position:relative}.pq-col-sort-icon{margin-right:-3px;min-width:3px;display:inline-block}.pq-space.pq-col-sort-icon{width:16px}.pq-space.pq-col-sort-count{display:inline-block}.pq-col-sort-count{font-weight:normal;width:6px;font-size:.8em}.pq-grid-col-resize-handle{cursor:col-resize;display:block;background:url(about:blank);width:10px;height:100%;position:absolute;top:0}.pq-grid-drag-bar{position:absolute;width:1px;z-index:100;top:0;background-color:#000}.pq-align-right{text-align:right}.pq-grid .pq-align-right *{text-align:right}.pq-grid .pq-align-center{text-align:center}.pq-grid .pq-align-center *{text-align:center}.pq-grid-cell.pq-group-title-cell *{text-align:left}div.pq-grid-cont-outer{position:relative}div.pq-grid-cont{overflow:hidden;border-top:0;width:100%;position:relative}.pq-grid .pq-grid-cont .ui-state-hover{font-weight:normal}table.pq-grid-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:0;position:relative;top:0;left:0;margin-top:-1px}table.pq-grid-header-table{table-layout:fixed;width:0;border-spacing:0;border-collapse:separate;margin-bottom:-1px}.pq-grid-header-table input,.pq-grid-header-table select,.pq-grid-header-table textarea{color:initial}table.pq-grid-header-table div.pq-td-div{position:relative}.pq-grid-title-row .pq-td-div:hover{text-decoration:underline;cursor:pointer}.pq-grid-header-search-row>.pq-grid-col>.pq-td-div{display:block}.pq-grid-col{overflow:hidden;font-weight:normal}.pq-grid-header-table>tbody>tr>.pq-grid-col{border-width:0 1px 1px 0;border-style:solid}.pq-grid-number-col{border-right:1px solid #cfcfcf;padding:4px 5px;text-align:right}.pq-grid .pq-col-drag-helper{padding:1px 5px 4px 3px;-moz-box-shadow:0 4px 8px rgba(0,0,0,0.5);-webkit-box-shadow:0 4px 8px rgba(0,0,0,0.5);box-shadow:0 4px 8px rgba(0,0,0,0.5)}.pq-grid .pq-col-drag-helper .pq-drag-icon{height:16px;width:16px;margin-right:5px;margin-top:1px;float:left}.pq-grid td.pq-drop-hover,.pq-grid .pq-drop-hover{background-image:url("")}tr.pq-row-hidden{visibility:hidden;height:1px}.pq-row-hidden>td{padding:0!important;border:0!important}.pq-grid-cell,pq-grid-number-cell{overflow:hidden;vertical-align:middle}.pq-grid-table>tbody>.pq-grid-row{border-width:0}.pq-grid-table>tbody>tr>.pq-grid-cell{border-width:0}.pq-td-border-right>tbody>tr>.pq-grid-cell{border-right:1px solid #d0d0d0}.pq-td-border-top>tbody>tr>.pq-grid-cell{border-bottom:1px solid #d0d0d0}.pq-td-border-top>tbody>tr:first-child+tr>.pq-grid-cell{border-top-width:0}.pq-grid-row>.pq-grid-cell:first-child{border-left-width:0}div.pq-grid td.pq-cell-dirty{background-image:url("images/square_dirty.gif")!important;background-repeat:no-repeat!important;background-position:left top!important}div.pq-grid td.pq-cell-red-tr{background-image:url("images/square-red-tr.gif")!important;background-repeat:no-repeat!important;background-position:right top!important}div.pq-grid td.pq-cell-blue-tr{background-image:url("images/square-blue-tr.gif")!important;background-repeat:no-repeat!important;background-position:right top!important}table.pq-wrap>tbody>tr>.pq-grid-cell,table.pq-wrap>tbody>tr>.pq-grid-col{word-wrap:break-word;white-space:normal}table.pq-no-wrap>tbody>tr>.pq-grid-cell,table.pq-no-wrap>tbody>tr>.pq-grid-col>.pq-td-div{word-wrap:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pq-merge-cell-div{width:1px;height:1px;padding:0}.pq-merge-cell-div>div{display:table;table-layout:fixed;width:100%;height:100%}.pq-merge-cell-div>div>div{display:table-cell;vertical-align:middle}.pq-grid-header-search-row .pq-grid-hd-search-field{width:100%;box-sizing:border-box}.pq-grid-header-search-row .pq-from-div{float:left;padding-right:3px;width:50%;box-sizing:border-box}.pq-grid-header-search-row .pq-to-div{float:right;padding-left:3px;width:50%;box-sizing:border-box}span.pq-from-to-center{width:6px;position:absolute;left:50%;line-height:20px;margin-left:-3px;text-align:center}div.pq-editor-outer{border:2px solid #666;position:absolute;left:0;top:0;padding:0;z-index:5;display:table;color:#333}div.pq-editor-inner{display:table-cell;vertical-align:middle;width:100%;height:100%}div.pq-editor-inner>div[contenteditable='true']{overflow:auto}.pq-grid textarea{overflow:auto}div.pq-editor-inner>.pq-cell-editor{padding:2px 3px;width:100%}div.pq-tooltip{padding:3px 10px}span.pq-tooltip-icon{display:inline-block;position:relative;top:3px;margin-right:4px}.pq-grid-row>.pq-grid-number-cell{border-top-width:0}.pq-grid-number-cell{overflow:hidden;border-right:1px solid #d0d0d0;border-bottom:1px solid #d0d0d0;text-align:right}.pqg-vert-frozen-line{position:absolute;width:0;border-left:1px solid #999;top:0;height:100%}.pqg-horiz-frozen-line{position:absolute;height:0;border-top:1px solid #999;left:0;width:100%}.pq-grid tr.pq-detail-master>td{border-bottom-width:0}.pq-grid td.pq-detail-child{padding:3px 30px}div.pq-grid-disable{height:100%;width:100%;position:absolute;left:0;top:0;background:#ccc;z-index:3}.pq-loading{height:100%;width:100%;position:absolute;left:0;top:0;display:none}.pq-loading-bg{height:100%;width:100%;position:absolute;left:0;top:0;z-index:10}div.pq-loading-mask{width:100px;height:25px;z-index:6;padding:5px;position:absolute;left:50%;top:50%;margin-left:-50px;margin-top:-13px;box-sizing:content-box}div.pq-loading-mask>div{border:1px solid transparent;padding-top:0;padding-right:6px;padding-left:29px;line-height:23px;background-image:url("images/loading.gif");background-position:6px center;background-repeat:no-repeat;white-space:nowrap;word-wrap:normal}div.pq-vscroll{height:150px;position:absolute;right:0;bottom:17px}div.pq-hscroll{height:17px;border:0 solid blue;position:absolute;right:17px;bottom:0}div.pq-hvscroll-square{height:17px;width:17px;border:0 solid blue;position:absolute;right:0;bottom:0;z-index:1}.pq-pager{padding:4px 5px;overflow:hidden}.pq-pager,.pq-grid-summary{position:relative;overflow:hidden;border-top:1px solid transparent;margin-top:-1px}.pq-grid span.pq-separator{height:18px;border-left:1px solid #ccc;display:inline-block;position:relative;margin:0 6px}.pq-pager-input{height:20px;width:35px}.pq-grid button.ui-button-icon-only{width:22px;margin-right:5px;padding:.4em 0}.pq-sb-vert-wt{display:block;width:17px;background:#efefef url(images/vert-bg.png)}.pq-sb-horiz-wt{display:block;height:17px;background:#efefef url(images/horiz-bg.png)}.pq-sb-btn{width:17px;height:17px;position:absolute}.pq-sb-vert-wt>.top-btn{left:0;top:0;background:url(images/sprite.png)}.pq-sb-horiz-wt>.left-btn{left:0;top:0;background:url(images/sprite.png) -34px}.pq-sb-vert-wt>.bottom-btn{left:0;bottom:0;background:url(images/sprite.png) -17px}.pq-sb-horiz-wt>.right-btn{top:0;right:0;background:url(images/sprite.png) -51px}.pq-sb-slider{position:absolute}.pq-sb-vert-wt>.pq-sb-slider>div{background:url(images/sprite.png)}.pq-sb-slider-h{position:absolute}.pq-sb-horiz-wt>.pq-sb-slider-h>span{display:inline-block;background:url(images/sprite.png)}.pq-sb-slider>.vert-slider-top{width:17px;height:3px;overflow:hidden;background-position:17px -8px}.pq-sb-horiz-wt>.pq-sb-slider-h>.horiz-slider-left{height:17px;width:3px;overflow:hidden;background-position:-68px 0}.pq-sb-vert-wt>.pq-sb-slider>.vert-slider-bg{width:17px;overflow:hidden;background:#b6cefb url(images/vert-slider-bg.png)}.pq-sb-horiz-wt>.pq-sb-slider-h .horiz-slider-bg{height:17px;overflow:hidden;background:#b6cefb url(images/horiz-slider-bg.png)}.pq-sb-vert-wt>.pq-sb-slider>.vert-slider-center{width:17px;height:8px;overflow:hidden;background-position:17px 0}.pq-sb-horiz-wt>.pq-sb-slider-h>.horiz-slider-center{height:17px;width:8px;overflow:hidden;background-position:-74px 0}.pq-sb-vert-wt>.pq-sb-slider>.vert-slider-bottom{width:17px;height:3px;overflow:hidden;background-position:17px -11px}.pq-sb-horiz-wt>.pq-sb-slider-h>.horiz-slider-right{height:17px;width:3px;overflow:hidden;background-position:-71px 0}.pq-sb-vert-t{display:block;width:17px;background:#efefef url(images/vert-bg.png)}.pq-sb-horiz-t{display:block;height:17px;background:#efefef url(images/horiz-bg.png)}.pq-sb-vert-t>.pq-sb-btn{width:17px;height:17px;position:absolute}.pq-sb-horiz-t>.pq-sb-btn{width:17px;height:17px}.pq-sb-vert-t>.top-btn{left:0;top:0}.pq-sb-horiz-t>.left-btn{left:0;top:0}.pq-sb-horiz-t>.left-btn>.ui-icon{margin-top:-1px}.pq-sb-vert-t>.bottom-btn{left:0;bottom:0}.pq-sb-vert-t>.bottom-btn>.ui-icon{margin-left:-1px}.pq-sb-horiz-t>.right-btn{top:0;right:0}.pq-sb-horiz-t>.right-btn>.ui-icon{margin-top:-1px;margin-left:-1px}.pq-sb-vert-t>.pq-sb-slider{position:absolute;width:15px;left:1px}.pq-sb-horiz-t>.pq-sb-slider-h{position:absolute;top:1px;height:15px}.pq-arrow-up,.pq-arrow-down{position:absolute!important;z-index:200}.pq-grid label{display:inline-block}.pq-grid input[type='checkbox']{width:14px;height:14px;padding:0;margin-top:0;margin-bottom:0;vertical-align:middle;position:relative;top:-1px}.pq-grid label input[type='checkbox']{margin-right:5px}.ui-menu .pq-menu-item.ui-menu-item{padding:0}.ui-state-active.ui-menu-item,.ui-state-focus.ui-menu-item{border:1px solid transparent}.pq-menu-item>label{padding:3px 5px;text-indent:0;width:100%} -------------------------------------------------------------------------------- /angular/ng.pqgrid.dev.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ParamQuery Pro v3.5.0 3 | * 4 | * Copyright (c) 2012-2021 Paramvir Dhindsa (http://paramquery.com) 5 | * Released under GNU General Public License v3 6 | * http://paramquery.com/license 7 | * 8 | */ 9 | 10 | (function($) { 11 | "use strict"; 12 | if (pq.ng) { 13 | return; 14 | } 15 | pq.ng = {}; 16 | var timeFactory = { 17 | timer: function() { 18 | var id; 19 | return { 20 | setTimeout: function(fn) { 21 | id && clearTimeout(id); 22 | id = setTimeout(fn); 23 | } 24 | }; 25 | } 26 | }; 27 | 28 | function equals(obj1, obj2) { 29 | return (obj1.arr == obj2.arr && obj1.len == obj2.len && obj1.first == obj2.first && obj1.last == obj2.last); 30 | }; 31 | 32 | function getObj(arr) { 33 | var len = arr.length; 34 | return { 35 | arr: arr, 36 | len: len, 37 | first: len ? arr[0] : null, 38 | last: len ? arr[len - 1] : null 39 | }; 40 | }; 41 | 42 | function cGrid($scope, $ele, $attr, $compile, $timeout, $parse) { 43 | var self = this; 44 | self.$scope = $scope; 45 | self.$compile = $compile; 46 | self.$timeout = $timeout; 47 | self.$parse = $parse; 48 | self.rowScopes = []; 49 | self.$ele = $ele; 50 | var cloneOptions = $attr.cloneOptions, 51 | _optionsStr = $attr.options, 52 | _options = $scope.$eval(_optionsStr), 53 | rebind = $attr.rebind, 54 | options = cloneOptions ? $.extend(true, {}, _options) : _options, 55 | ngM = options.ngModel || {}, 56 | compileRows = self.readCellTemplates(options.colModel || []) || ngM.compileRows, 57 | DM = options.dataModel, 58 | dataStr = (typeof DM.data == "string") ? DM.data : null, 59 | watch = ngM.watch || 1, 60 | detailTmpl = self.detailTmpl = options.detailTemplate; 61 | self.timerDigest = timeFactory.timer(); 62 | rebind && (rebind == "all" ? self.rebindAll(_options, _optionsStr) : self.rebind(rebind, _optionsStr)); 63 | detailTmpl && self.templateDetail(detailTmpl, options); 64 | self.unregWatch = (watch && dataStr) ? (function() { 65 | if (watch === true) { 66 | return $scope.$watchCollection(dataStr, self.watchCollListener(self)); 67 | } else { 68 | return $scope.$watch(self.watch(self, dataStr)); 69 | } 70 | })() : null; 71 | dataStr && (DM.data = $scope.$eval(dataStr)); 72 | options.render = self.onRender(self, options, options.render, function(grid) { 73 | ngM.compileHeader && grid.on('refreshHeader', self.onRefreshHeader(self)); 74 | ngM.compileToolbar && grid.one('dataReady', self.oneDataReady(self)); 75 | grid.on('dataReady', self.onDataReady(self, dataStr)); 76 | compileRows && grid.on('refresh', self.onRefresh(self)); 77 | }); 78 | self.grid = pq.grid($ele, options).on("refreshRow refreshCell", self.onRefreshRowCell(self, compileRows)).on("destroy", self.onDestroy(self)); 79 | self.bindEvents($attr); 80 | watch === true && dataStr && self.digest($scope); 81 | }; 82 | pq.ng.cGrid = cGrid; 83 | var _p = cGrid.prototype; 84 | _p.onEvent = function(self, expr) { 85 | return function(evt, ui) { 86 | var $scope = self.$scope.$new(); 87 | $scope.evt = evt; 88 | $scope.ui = ui; 89 | $scope.$eval(expr); 90 | $scope.$destroy(); 91 | self.digestAsync(); 92 | }; 93 | }; 94 | _p.bindEvents = function($attr) { 95 | var keys = $attr.$attr, 96 | self = this, 97 | eventName, key; 98 | for (key in keys) { 99 | if (key.indexOf("on") === 0) { 100 | eventName = key.substring(2, 3).toLowerCase() + key.substr(3); 101 | self.grid.on(eventName, self.onEvent(self, $attr[key])); 102 | } 103 | } 104 | }; 105 | _p.rebindWListen = function(self, rebind) { 106 | return function rebindWListen(n, o) { 107 | if (n !== o) { 108 | self.grid.option(rebind, n); 109 | self.grid.refreshView(); 110 | } 111 | }; 112 | }; 113 | _p.compareObj = function(newobj, oldobj, fn, _rebind) { 114 | var key, newopt, oldopt, rebind; 115 | for (key in oldobj) { 116 | newopt = newobj[key]; 117 | oldopt = oldobj[key]; 118 | rebind = (_rebind ? _rebind + "." : "") + key; 119 | if ($.isPlainObject(newopt)) { 120 | this.compareObj(newopt, oldopt, fn, rebind); 121 | } else if (newopt !== oldopt && !$.isArray(newopt)) { 122 | fn(rebind, newopt); 123 | } 124 | } 125 | }; 126 | _p.copy = function(src, dest) { 127 | var self = this, 128 | key, val; 129 | for (var key in src) { 130 | val = src[key]; 131 | if ($.isPlainObject(val)) { 132 | dest[key] = {}; 133 | self.copy(val, dest[key]); 134 | } else { 135 | dest[key] = val; 136 | } 137 | } 138 | return dest; 139 | }; 140 | _p.rebindAll = function(options, _optionsStr) { 141 | var self = this, 142 | scope = self.$scope, 143 | oldopts = self.copy(options, {}); 144 | scope.$watch(function rebindAllWatch() { 145 | var changed = false, 146 | newopts = scope.$eval(_optionsStr); 147 | self.compareObj(newopts, oldopts, function(rebind, n) { 148 | changed = true; 149 | self.grid.option(rebind, n); 150 | }); 151 | if (changed) { 152 | oldopts = self.copy(newopts, {}); 153 | self.grid.refreshView(); 154 | } 155 | }); 156 | }; 157 | _p.rebind = function(rebinds, _optionsStr) { 158 | var arr = rebinds.split(" "), 159 | self = this, 160 | $scope = self.$scope, 161 | i = 0; 162 | for (; i < arr.length; i++) { 163 | var rebind = arr[i], 164 | str = _optionsStr + "." + rebind; 165 | $scope.$watch(str, self.rebindWListen(self, rebind)); 166 | } 167 | }; 168 | _p.templateDetail = function(detailTmpl, options) { 169 | var self = this; 170 | options.detailModel = options.detailModel || {}; 171 | options.detailModel.init = function(ui) { 172 | var newScope = self.$scope.$new(false), 173 | $detail; 174 | newScope.ui = ui; 175 | ui.rowData.pq_scope_detail = newScope; 176 | detailTmpl = typeof detailTmpl == "function" ? detailTmpl.call(this, ui) : detailTmpl; 177 | $detail = self.$compile(detailTmpl)(newScope); 178 | self.digest(newScope); 179 | return $detail; 180 | } 181 | }; 182 | _p.detailDestroyScopes = function() { 183 | if (this.detailTmpl) { 184 | var data = this.grid.option('dataModel.data'), 185 | i = 0, 186 | len = data.length, 187 | scope, 188 | rd; 189 | for (; i < len; i++) { 190 | rd = data[i]; 191 | if (scope = rd.pq_scope_detail) { 192 | scope.$destroy(); 193 | } 194 | } 195 | } 196 | }; 197 | _p.onDataReady = function(self, dataStr) { 198 | return function onDataReady(evt) { 199 | if (dataStr) { 200 | var data = this.options.dataModel.data; 201 | self.updateObjInt(data); 202 | self.$parse(dataStr).assign(self.$scope, data); 203 | }; 204 | self.digestAsync(); 205 | }; 206 | }; 207 | _p.watchCollListener = function(self) { 208 | return function(newVal, oldVal) { 209 | if (newVal !== oldVal) { 210 | self.refreshGrid(newVal); 211 | } 212 | }; 213 | }; 214 | _p.watch = function(self, dataStr) { 215 | return function watch() { 216 | var dataExt = self.$scope.$eval(dataStr), 217 | objInt, objExt; 218 | objExt = getObj(dataExt); 219 | objInt = self.objInt; 220 | if (objInt && !equals(objInt, objExt)) { 221 | self.refreshGrid(dataExt); 222 | } 223 | }; 224 | }; 225 | _p.updateObjInt = function(data) { 226 | this.objInt = getObj(data); 227 | }; 228 | _p.cleanRowScopes = function() { 229 | var i = 0, 230 | rowScopes = this.rowScopes, 231 | len = rowScopes.length; 232 | for (; i < len; i++) { 233 | rowScopes[i].$destroy(); 234 | } 235 | rowScopes.length = 0; 236 | }; 237 | _p.onRefreshRowCell = function(self, bind) { 238 | return function(evt, ui) { 239 | if (bind) { 240 | var $tr = this.getRow(ui); 241 | self.rowScope($tr, ui.rowData, ui.rowIndx); 242 | } 243 | }; 244 | }; 245 | _p.onRefresh = function(self) { 246 | return function() { 247 | var grid = this, 248 | $trs, $tr, i = 0, 249 | len, ui, rd; 250 | self.cleanRowScopes(); 251 | $trs = grid.$cont.children().children().children().children(".pq-grid-row:not('.pq-detail-child')"); 252 | len = $trs.length; 253 | for (; i < len; i++) { 254 | $tr = $($trs[i]); 255 | ui = grid.getRowIndx({ 256 | $tr: $tr 257 | }); 258 | rd = grid.getRowData(ui); 259 | self.rowScope($tr, rd, ui.rowIndx); 260 | } 261 | }; 262 | }; 263 | _p.onRefreshHeader = function(self) { 264 | return function() { 265 | var grid = this, 266 | $scope = self.$scope; 267 | self.$compile(grid.$header)($scope); 268 | self.digest($scope); 269 | }; 270 | }; 271 | _p.oneDataReady = function(self) { 272 | return function() { 273 | var grid = this, 274 | $scope = self.$scope; 275 | self.$compile(grid.toolbar())($scope); 276 | self.digest($scope); 277 | }; 278 | }; 279 | _p.onRender = function(self, options, optionsRender, cb) { 280 | return function(evt, ui) { 281 | var grid = this, 282 | $scope = self.$scope; 283 | $scope.grid = grid; 284 | grid.$scope = $scope; 285 | options.grid = grid; 286 | optionsRender && optionsRender.call(grid, evt, ui); 287 | cb(grid); 288 | }; 289 | }; 290 | _p.onDestroy = function(self) { 291 | return function() { 292 | self.$scope.$destroy(); 293 | self.cleanRowScopes(); 294 | self.detailDestroyScopes(); 295 | self.unregWatch && self.unregWatch(); 296 | }; 297 | }; 298 | _p.digestAsync = function() { 299 | var self = this, 300 | timerD = self.timerDigest, 301 | $root = self.$scope.$root, 302 | phase = $root.$$phase; 303 | if (phase != '$apply' && phase != '$digest') { 304 | timerD.setTimeout(function() { 305 | phase = $root.$$phase; 306 | if (phase != '$apply' && phase != '$digest') { 307 | $root.$digest(); 308 | } 309 | }); 310 | } 311 | }; 312 | _p.digest = function($scope) { 313 | var phase = $scope.$root.$$phase; 314 | if (phase != '$apply' && phase != '$digest') { 315 | $scope.$digest(); 316 | } 317 | }; 318 | _p.rowScope = function($tr, rd, ri) { 319 | var self = this, 320 | $rowScope = self.$scope.$new(false); 321 | self.rowScopes.push($rowScope); 322 | $rowScope.rd = rd; 323 | $rowScope.ri = ri; 324 | self.$compile($tr)($rowScope); 325 | self.digest($rowScope); 326 | }; 327 | _p.readCellTemplates = function(CM) { 328 | var i = 0, 329 | len = CM.length, 330 | column, template, present, 331 | self = this, 332 | $scope = self.$scope, 333 | valids, 334 | $compile = self.$compile; 335 | for (; i < len; i++) { 336 | column = CM[i]; 337 | if (template = column.template) { 338 | present = true; 339 | column.render = self.templateCell(template); 340 | } 341 | if (template = column.editorTemplate) { 342 | column.editor = self.templateEditor(self, column.editor, template, $compile, $scope); 343 | } 344 | if (valids = column.validations) { 345 | for (var j = 0; j < valids.length; j++) { 346 | if (template = valids[j].template) { 347 | valids[i].type = self.templateValid(template, $compile, $scope); 348 | } 349 | } 350 | } 351 | } 352 | return present; 353 | }; 354 | _p.templateValid = function(tmpl, $compile, $scope) { 355 | return function(ui) { 356 | var edScope = $scope.$new(false), 357 | ret; 358 | edScope.ui = ui; 359 | $compile(tmpl)(edScope); 360 | ret = edScope.return; 361 | edScope.$destroy(); 362 | return ret; 363 | }; 364 | }; 365 | _p.templateEditor = function(self, editor, tmpl, $compile, $scope) { 366 | return function(ui) { 367 | var edScope = $scope.$new(false), 368 | scope_editor; 369 | edScope.ui = ui; 370 | $compile(tmpl)(edScope); 371 | scope_editor = edScope.editor; 372 | edScope.$destroy(); 373 | return $.extend(editor, scope_editor); 374 | }; 375 | }; 376 | _p.templateCell = function(tmpl) { 377 | return function() { 378 | return tmpl; 379 | }; 380 | }; 381 | _p.refreshGrid = function(pSdata) { 382 | var grid = this.grid; 383 | grid.option('dataModel.data', pSdata); 384 | grid.refreshView(); 385 | }; 386 | angular.module('pq.grid', []).directive('pqGrid', ["$compile", "$timeout", "$parse", function($compile, $timeout, $parse) { 387 | return { 388 | restrict: 'AE', 389 | scope: true, 390 | replace: true, 391 | link: function($scope, $ele, $attr) { 392 | new cGrid($scope, $ele, $attr, $compile, $timeout, $parse); 393 | }, 394 | template: '
' 395 | }; 396 | }]); 397 | })(jQuery); -------------------------------------------------------------------------------- /localize/pq-localize-zh.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author pdhindsa 3 | */ 4 | if("function"==typeof require) 5 | var jQuery = jQuery || require("jquery"); 6 | 7 | (function( $ ){ 8 | 9 | var pq = $.paramquery, 10 | local='zh', 11 | grid = pq.pqGrid.regional[local] = { 12 | strLocal: local, 13 | strAdd: "加", 14 | strBlanks: "(Blanks)", 15 | strDelete: "删除", 16 | strEdit: "编辑", 17 | strCondition: "Condition:", 18 | strConditions: { 19 | "": "--None--", 20 | begin: "Begins with", 21 | between: "In between", 22 | contain: "Contains", 23 | equal: "Equals", 24 | empty: "Empty", 25 | end: "Ends With", 26 | great: "Greater than", 27 | gte: "Greater than or equal", 28 | less: "Less than", 29 | lte: "Less than or equal", 30 | notbegin: "Not begins with", 31 | notcontain: "Not contains", 32 | notequal: "Not equals", 33 | notempty: "Not empty", 34 | notend: "Not ends with", 35 | range: "[ Range ]", 36 | regexp: "Regular expression" 37 | }, 38 | strOk: 'Ok', 39 | strClear: 'Clear', 40 | strTabRemove: "{0} would be deleted permanently.\r\n Are you sure?", 41 | strTabName: "sheet{0}", 42 | strTabAdd: "New sheet", 43 | strTabClose: "Remove sheet", 44 | strGroup_header: "Drag a column here to group by that column", 45 | strGroup_merge: 'Merge cells', 46 | strGroup_fixCols: 'Fix columns', 47 | strGroup_grandSummary: 'Grand summary', 48 | strTP_aggPane: "Aggregates", 49 | strTP_colPane: 'Group columns', 50 | strTP_pivot: "Pivot mode", 51 | strTP_rowPane: "Group rows", 52 | strTP_aggPH: "Drop columns for computing aggregate values", 53 | strTP_colPH: "Drop columns here for grouping along column or x axis", 54 | strTP_rowPH: "Drop columns here for grouping along row or y axis", 55 | strLoading: "加载", 56 | strNextResult: "", 57 | strNoRows: "没有行显示", 58 | strNothingFound: "", 59 | strPrevResult: "上一结果", 60 | strSearch: "搜索", 61 | strSelectAll: "Select All", 62 | strSelectedmatches: "选择{0}{1}匹配", 63 | strFormulas:{ 64 | ABS: ["ABS(number)","Returns the absolute value of a number. The absolute value of a number is the number without its sign."], 65 | ACOS: ["ACOS(number)","Returns the arccosine, or inverse cosine, of a number. The arccosine is the angle whose cosine is number. The returned angle is given in radians in the range 0 (zero) to pi."], 66 | AND: ["AND(logical1, [logical2], ...)","Returns TRUE if all its arguments evaluate to TRUE, and returns FALSE if one or more arguments evaluate to FALSE."], 67 | ASIN: ["ASIN(number)","Returns the arcsine, or inverse sine, of a number. The arcsine is the angle whose sine is number. The returned angle is given in radians in the range -pi/2 to pi/2."], 68 | ATAN: ["ATAN(number)","Returns the arctangent, or inverse tangent, of a number. The arctangent is the angle whose tangent is number. The returned angle is given in radians in the range -pi/2 to pi/2."], 69 | AVERAGE: ["AVERAGE(number1, [number2], ...)","Returns the average (arithmetic mean) of the arguments. For example, if the range A1:A20 contains numbers, the formula =AVERAGE(A1:A20) returns the average of those numbers."], 70 | AVERAGEIF: ["AVERAGEIF(range, criteria, [average_range])","Returns the average (arithmetic mean) of all the cells in a range that meet a given criteria."], 71 | AVERAGEIFS: ["AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)","Returns the average (arithmetic mean) of all cells that meet multiple criteria."], 72 | CEILING: ["CEILING(number, significance)","Returns number rounded up, away from zero, to the nearest multiple of significance. For example, if you want to avoid using pennies in your prices and your product is priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the nearest nickel."], 73 | CHAR: ["CHAR(number)","Returns the character specified by a number."], 74 | CHOOSE: ["CHOOSE(index_num, value1, [value2], ...)","If index_num is 1, CHOOSE returns value1; if it is 2, CHOOSE returns value2; and so on."], 75 | CODE: ["CODE(text)","Returns a numeric code for the first character in a text string."], 76 | COLUMN: ["COLUMN()","Returns reference of the cell in which the COLUMN function appears."], 77 | COLUMNS: ["COLUMNS(array)","Returns the number of columns in an array or reference."], 78 | CONCATENATE: ["CONCATENATE(text1, [text2], ...)","join two or more text strings into one string."], 79 | COS: ["COS(number)","Returns the cosine of the given angle(in radians)."], 80 | COUNT: ["COUNT(value1, [value2], ...)","Counts the number of cells that contain numbers, and counts numbers within the list of arguments."], 81 | COUNTA: ["COUNTA(value1, [value2], ...)","The COUNTA function counts the number of cells that are not empty in a range."], 82 | COUNTBLANK: ["COUNTBLANK(range)","Counts empty cells in a specified range of cells."], 83 | COUNTIF: ["COUNTIF(range, criteria)","counts the number of cells that meet a criterion; for example, to count the number of times a particular city appears in a customer list."], 84 | COUNTIFS: ["COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2]…)","Applies criteria to cells across multiple ranges and counts the number of times all criteria are met."], 85 | DATE: ["DATE(year,month,day)","returns the sequential serial number that represents a particular date."], 86 | DATEDIF: ["DATEDIF(start_date,end_date,unit)","Calculates the number of days, months, or years between two dates. Unit can be 'Y', 'M' or 'D'."], 87 | DATEVALUE: ["DATEVALUE(date_text)", "converts a date that is stored as text to a serial number that Excel recognizes as a date. For example, the formula =DATEVALUE(\"1/1/2008\") returns 39448."], 88 | DAY: ["DAY(serial_number)","Returns the day of a date, represented by a serial number."], 89 | DAYS: ["DAYS(end_date, start_date)","Returns the number of days between two dates."], 90 | DEGREES: ["DEGREES(angle)","Converts radians into degrees."], 91 | EOMONTH: ["EOMONTH(start_date, months)","Returns the serial number for the last day of the month that is the indicated number of months before or after start_date."], 92 | EXP: ["EXP(number)","Returns e raised to the power of number. "], 93 | FIND: ["FIND(find_text, within_text, [start_num])","Locates one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string."], 94 | FLOOR: ["FLOOR(number, significance)","Rounds number down, toward zero, to the nearest multiple of significance."], 95 | HLOOKUP: ["HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])","Searches for a value in the top row of a table or an array of values, and then returns a value in the same column from a row you specify in the table or array."], 96 | HOUR: ["HOUR(serial_number)","Returns the hour of a time value. The hour is given as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.)."], 97 | IF: ["IF(logical_test, value_if_true, [value_if_false])","returns one value if a condition is true and another value if it's false."], 98 | //IFERROR: ["IFERROR(value, value_if_error)","Returns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula. Use the IFERROR function to trap and handle errors in a formula."], 99 | INDEX: ["INDEX(array, row_num, [column_num])","Returns the value of an element in a table or an array, selected by the row and column number indexes."], 100 | INDIRECT: ["INDIRECT(ref_text, [a1])","Returns the reference specified by a text string. References are immediately evaluated to display their contents."], 101 | ISBLANK: ["ISBLANK(value)","Returns TRUE if the value is blank"], 102 | LARGE: ["LARGE(array, k)","Returns the k-th largest value in a data set."], 103 | LEFT: ["LEFT(text, [num_chars])","returns the first character or characters in a text string, based on the number of characters you specify."], 104 | LEN: ["LEN(text)","returns the number of characters in a text string."], 105 | LOOKUP:["LOOKUP(lookup_value, lookup_vector, [result_vector])","Looks in a one-row or one-column range (known as a vector) for a value and returns a value from the same position in a second one-row or one-column range."], 106 | LOWER: ["LOWER(text)","Converts all uppercase letters in a text string to lowercase."], 107 | MATCH: ["MATCH(lookup_value, lookup_array, [match_type])","Searches for a specified item in a range of cells, and then returns the relative position of that item in the range. match_type can be: 0 for exact match with option to use wildcards; 1 ( default ) for less than, The values in the lookup_array argument must be placed in ascending order; -1 for greater than, values in the lookup_array argument must be placed in descending order."], 108 | MAX: ["MAX(number1, [number2], ...)","Returns the largest value in a set of values."], 109 | MEDIAN: ["MEDIAN(number1, [number2], ...)","Returns the median of the given numbers. The median is the number in the middle of a set of numbers."], 110 | MID: ["MID(text, start_num, num_chars)","returns a specific number of characters from a text string, starting at the position you specify, based on the number of characters you specify."], 111 | MIN: ["MIN(number1, [number2], ...)","Returns the smallest number in a set of values."], 112 | MODE: ["MODE(number1,[number2],...)","Returns the most frequently occurring, or repetitive, value in an array or range of data."], 113 | MONTH: ["MONTH(serial_number)","Returns the month of a date represented by a serial number. The month is given as an integer, ranging from 1 (January) to 12 (December)."], 114 | OR: ["OR(logical1, [logical2], ...)","returns TRUE if any of its arguments evaluate to TRUE, and returns FALSE if all of its arguments evaluate to FALSE."], 115 | PI: ["PI()","Returns the number 3.14159265358979, the mathematical constant pi."], 116 | POWER: ["POWER(number, power)","Returns the result of a number raised to a power."], 117 | PRODUCT: ["PRODUCT(number1, [number2], ...)","multiplies all the numbers given as arguments and returns the product. PRODUCT(A1:A3, C1:C3) is equivalent to =A1 * A2 * A3 * C1 * C2 * C3."], 118 | PROPER: ["PROPER(text)","Capitalizes the first letter in each word of a text value."], 119 | RADIANS: ["RADIANS(angle)","Converts degrees into radians."], 120 | RAND: ["RAND()","Returns an evenly distributed random real number greater than or equal to 0 and less than 1."], 121 | RANK: ["RANK(number,ref,[order])","Returns the rank of a number in a list of numbers."], 122 | RATE: ["",""], 123 | REPLACE:["REPLACE(old_text, start_num, num_chars, new_text)","replaces part of a text string, based on the number of characters you specify, with a different text string."], 124 | REPT:["REPT(text, number_times)","Repeats text a given number of times."], 125 | RIGHT: ["RIGHT(text,[num_chars])","returns the last character or characters in a text string, based on the number of characters you specify."], 126 | ROUND: ["ROUND(number, num_digits)","rounds a number to a specified number of digits."], 127 | ROUNDDOWN: ["ROUNDDOWN(number, num_digits)","Rounds a number down, toward zero."], 128 | ROUNDUP: ["ROUNDUP(number, num_digits)","Rounds a number up, away from 0 (zero)."], 129 | ROW: ["ROW()","Returns the reference of the cell in which the ROW function appears."], 130 | ROWS: ["ROWS(array)","Returns the number of rows in a reference or array."], 131 | SEARCH: ["SEARCH(find_text,within_text,[start_num])","locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string."], 132 | SIN: ["SIN(number)","Returns the sine of the given angle(in radians)."], 133 | SMALL: ["SMALL(array, k)","Returns the k-th smallest value in a data set."], 134 | SQRT: ["SQRT(number)","Returns a positive square root."], 135 | STDEV: ["STDEV(number1,[number2],...)","Estimates standard deviation based on a sample. The standard deviation is a measure of how widely values are dispersed from the average value (the mean)."], 136 | STDEVP: ["STDEVP(number1,[number2],...)","Calculates standard deviation based on the entire population given as arguments."], 137 | SUBSTITUTE:["SUBSTITUTE(text, old_text, new_text, [instance_num])","Substitutes new_text for old_text in a text string."], 138 | SUM: ["SUM(number1,[number2],...)","Adds its arguments. You can add individual values, cell references or ranges or a mix of all three."], //different from actual specs, 139 | SUMIF: ["SUMIF(range, criteria, [sum_range])","adds the values in a range that meet criteria that you specify"], 140 | SUMIFS: ["SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)","adds all of its arguments that meet multiple criteria."], 141 | SUMPRODUCT: ["SUMPRODUCT(array1, [array2], [array3], ...)","Multiplies corresponding components in the given arrays, and returns the sum of those products."], 142 | TAN:["TAN(number)","Returns the tangent of the given angle(in radians)."], 143 | TEXT:["TEXT(Value you want to format, \"Format code you want to apply\")","The TEXT function lets you change the way a number appears by applying formatting to it with format codes."], 144 | TIME: ["TIME(hour, minute, second)","Returns the decimal number for a particular time."], 145 | TIMEVALUE: ["TIMEVALUE(time_text)", "Returns the decimal number of the time represented by a text string. The decimal number is a value ranging from 0 (zero) to 0.99988426, representing the times from 0:00:00 (12:00:00 AM) to 23:59:59 (11:59:59 P.M.)."], 146 | TODAY: ["TODAY()","Returns the serial number of the current date."], 147 | TRIM: ["TRIM(text)","Removes all spaces from text except for single spaces between words."], 148 | TRUNC: ["TRUNC(number, [num_digits])","Truncates a number to an integer by removing the fractional part of the number."], 149 | UPPER: ["UPPER(text)","Converts text to uppercase."], 150 | VALUE: ["VALUE(text)","Converts a text string that represents a number to a number."], 151 | VAR: ["VAR(number1,[number2],...)","Estimates variance based on a sample."], 152 | VARP: ["VARP(number1,[number2],...)","Calculates variance based on the entire population."], 153 | VLOOKUP: ["VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])","look up a value in a table or a range by row. For example, look up a price of an automotive part by the part number."], 154 | YEAR: ["YEAR(serial_number)","Returns the year corresponding to a date. The year is returned as an integer in the range 1900-9999."] 155 | } 156 | }, 157 | pager = pq.pqPager.regional[local] = { 158 | strDisplay: "显示 {0} 到 {1} {2} 个项目", 159 | strFirstPage: "第一页", 160 | strLastPage: "尾页", 161 | strNextPage: "下一页", 162 | strPage: "第 {0} 页(共 {1} 页)", 163 | strPrevPage: "上一页", 164 | strRefresh: "刷新", 165 | strRpp: "每页记录: {0}" 166 | }; 167 | 168 | $.extend( pq.pqGrid.defaults, grid ); 169 | $.extend( pq.pqPager.defaults, pager ); 170 | 171 | })(jQuery) 172 | --------------------------------------------------------------------------------