1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-04-26 20:16:38 +02:00

Added base class for drop-down filter types

This commit is contained in:
Max Guglielmi 2017-05-07 16:05:36 +10:00
parent cb3a633807
commit 06c3b3f025
19 changed files with 721 additions and 12441 deletions

514
dist/starter.html vendored Normal file
View file

@ -0,0 +1,514 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>tablefilter v0.5.12 - Starter</title>
</head>
<body>
<h1>tablefilter v0.5.12</h1>
<table id="demo">
<thead>
<tr>
<th>country</th>
<th>iso</th>
<th>year</th>
<th>POP</th>
<th>XRAT</th>
<th>PPP</th>
<th>cgdp</th>
<th>cc</th>
<th>ci</th>
</tr>
</thead>
<tbody>
<tr>
<td>Benin</td>
<td>BEN</td>
<td>1998</td>
<td>5950.33</td>
<td>589.9517822</td>
<td>190.95</td>
<td>1178.46</td>
<td>90.98</td>
<td>7.55</td>
</tr>
<tr>
<td>Benin</td>
<td>BEN</td>
<td>1999</td>
<td>6109.53</td>
<td>615.6990967</td>
<td>200.19</td>
<td>1174.90</td>
<td>92.61</td>
<td>7.86</td>
</tr>
<tr>
<td>Benin</td>
<td>BEN</td>
<td>2000</td>
<td>6272.00</td>
<td>711.9763184</td>
<td>200.61</td>
<td>1224.74</td>
<td>92.27</td>
<td>8.25</td>
</tr>
<tr>
<td>Burkina Faso</td>
<td>BFA</td>
<td>1994</td>
<td>9755.03</td>
<td>555.2047119</td>
<td>125.76</td>
<td>838.76</td>
<td>79.81</td>
<td>6.57</td>
</tr>
<tr>
<td>Burkina Faso</td>
<td>BFA</td>
<td>1995</td>
<td>9988.00</td>
<td>499.148407</td>
<td>136.65</td>
<td>860.89</td>
<td>80.41</td>
<td>9.29</td>
</tr>
<tr>
<td>Burkina Faso</td>
<td>BFA</td>
<td>1996</td>
<td>10225.00</td>
<td>511.5523987</td>
<td>144.18</td>
<td>881.11</td>
<td>80.40</td>
<td>12.12</td>
</tr>
<tr>
<td>Burkina Faso</td>
<td>BFA</td>
<td>1997</td>
<td>10473.53</td>
<td>583.6693726</td>
<td>141.78</td>
<td>899.01</td>
<td>76.94</td>
<td>14.94</td>
</tr>
<tr>
<td>Russia</td>
<td>RUS</td>
<td>1998</td>
<td>146899.01</td>
<td>9.705082893</td>
<td>2.64</td>
<td>7086.39</td>
<td>67.73</td>
<td>9.20</td>
</tr>
<tr>
<td>Russia</td>
<td>RUS</td>
<td>1999</td>
<td>146308.99</td>
<td>24.6199398</td>
<td>4.03</td>
<td>8074.70</td>
<td>57.35</td>
<td>8.81</td>
</tr>
<tr>
<td>Russia</td>
<td>RUS</td>
<td>2000</td>
<td>145555.01</td>
<td>28.12916946</td>
<td>4.85</td>
<td>9995.91</td>
<td>54.74</td>
<td>8.79</td>
</tr>
<tr>
<td>Rwanda</td>
<td>RWA</td>
<td>1994</td>
<td>6230.00</td>
<td>194.517</td>
<td>50.39</td>
<td>529.48</td>
<td>132.16</td>
<td>4.48</td>
</tr>
<tr>
<td>Rwanda</td>
<td>RWA</td>
<td>1995</td>
<td>6400.00</td>
<td>262.1975098</td>
<td>70.67</td>
<td>746.34</td>
<td>92.77</td>
<td>3.08</td>
</tr>
<tr>
<td>Rwanda</td>
<td>RWA</td>
<td>1996</td>
<td>6727.00</td>
<td>306.8200073</td>
<td>77.90</td>
<td>823.25</td>
<td>89.71</td>
<td>3.21</td>
</tr>
<tr>
<td>Rwanda</td>
<td>RWA</td>
<td>1997</td>
<td>7895.18</td>
<td>301.5297852</td>
<td>84.13</td>
<td>847.79</td>
<td>91.44</td>
<td>3.72</td>
</tr>
<tr>
<td>Rwanda</td>
<td>RWA</td>
<td>1998</td>
<td>8105.00</td>
<td>312.3140869</td>
<td>85.32</td>
<td>914.22</td>
<td>89.34</td>
<td>4.22</td>
</tr>
<tr>
<td>El Salvador</td>
<td>SLV</td>
<td>1995</td>
<td>5669.00</td>
<td>8.754583359</td>
<td>3.54</td>
<td>4143.59</td>
<td>89.31</td>
<td>10.35</td>
</tr>
<tr>
<td>El Salvador</td>
<td>SLV</td>
<td>1996</td>
<td>5798.00</td>
<td>8.755000114</td>
<td>3.69</td>
<td>4235.79</td>
<td>88.77</td>
<td>7.79</td>
</tr>
<tr>
<td>El Salvador</td>
<td>SLV</td>
<td>1997</td>
<td>5911.00</td>
<td>8.756250381</td>
<td>3.74</td>
<td>4408.41</td>
<td>87.05</td>
<td>7.90</td>
</tr>
<tr>
<td>Slovak Republic</td>
<td>SVK</td>
<td>2000</td>
<td>5401.00</td>
<td>46.0352</td>
<td>13.02</td>
<td>12618.53</td>
<td>52.22</td>
<td>24.78</td>
</tr>
<tr>
<td>Slovenia</td>
<td>SVN</td>
<td>1994</td>
<td>1988.90</td>
<td>128.8085938</td>
<td>79.97</td>
<td>11662.12</td>
<td>53.21</td>
<td>19.87</td>
</tr>
<tr>
<td>Slovenia</td>
<td>SVN</td>
<td>1995</td>
<td>1990.00</td>
<td>118.5185013</td>
<td>89.03</td>
<td>12574.96</td>
<td>54.46</td>
<td>23.11</td>
</tr>
<tr>
<td>Slovenia</td>
<td>SVN</td>
<td>1996</td>
<td>1991.00</td>
<td>135.3643036</td>
<td>97.27</td>
<td>13151.51</td>
<td>54.32</td>
<td>23.23</td>
</tr>
<tr>
<td>Slovenia</td>
<td>SVN</td>
<td>1997</td>
<td>1985.96</td>
<td>159.6882935</td>
<td>103.96</td>
<td>14143.02</td>
<td>53.24</td>
<td>24.14</td>
</tr>
<tr>
<td>Slovenia</td>
<td>SVN</td>
<td>1998</td>
<td>1982.60</td>
<td>166.134201</td>
<td>108.93</td>
<td>15067.34</td>
<td>52.82</td>
<td>25.35</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1994</td>
<td>8740.72</td>
<td>669.3706055</td>
<td>307.48</td>
<td>834.19</td>
<td>75.43</td>
<td>9.86</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1995</td>
<td>8980.00</td>
<td>864.1192017</td>
<td>402.40</td>
<td>829.37</td>
<td>76.55</td>
<td>10.31</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1996</td>
<td>9214.40</td>
<td>1207.900024</td>
<td>515.01</td>
<td>838.05</td>
<td>78.74</td>
<td>10.99</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1997</td>
<td>9443.21</td>
<td>1314.498047</td>
<td>596.97</td>
<td>851.47</td>
<td>77.59</td>
<td>12.15</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1998</td>
<td>9665.71</td>
<td>1862.06897</td>
<td>744.91</td>
<td>800.69</td>
<td>85.12</td>
<td>13.75</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>1999</td>
<td>9881.21</td>
<td>2388.019043</td>
<td>941.87</td>
<td>765.24</td>
<td>91.82</td>
<td>15.30</td>
</tr>
<tr>
<td>Zambia</td>
<td>ZMB</td>
<td>2000</td>
<td>10089.00</td>
<td>3110.843994</td>
<td>1157.63</td>
<td>840.97</td>
<td>86.33</td>
<td>15.38</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1994</td>
<td>10775.35</td>
<td>8.151538849</td>
<td>2.01</td>
<td>2586.84</td>
<td>60.10</td>
<td>18.53</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1995</td>
<td>11011.00</td>
<td>8.66537571</td>
<td>2.15</td>
<td>2603.37</td>
<td>66.89</td>
<td>15.03</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1996</td>
<td>11242.16</td>
<td>10.00234985</td>
<td>2.64</td>
<td>2860.23</td>
<td>72.06</td>
<td>11.32</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1997</td>
<td>11923.52</td>
<td>12.11128998</td>
<td>3.17</td>
<td>2727.06</td>
<td>82.82</td>
<td>11.01</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1998</td>
<td>12153.85</td>
<td>23.67910957</td>
<td>4.06</td>
<td>2799.85</td>
<td>77.66</td>
<td>10.75</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>1999</td>
<td>12388.32</td>
<td>38.30120087</td>
<td>6.12</td>
<td>2770.48</td>
<td>76.89</td>
<td>10.73</td>
</tr>
<tr>
<td>Zimbabwe</td>
<td>ZWE</td>
<td>2000</td>
<td>12627.00</td>
<td>44.41791916</td>
<td>9.48</td>
<td>2607.03</td>
<td>69.23</td>
<td>8.62</td>
</tr>
</tbody>
</table>
<script src="tablefilter/tablefilter.js"></script>
<script data-config>
var filtersConfig = {
base_path: 'tablefilter/',
col_1: 'select',
col_2: 'select',
col_3: 'select',
alternate_rows: true,
rows_counter: true,
btn_reset: true,
loader: true,
status_bar: true,
mark_active_columns: true,
highlight_keywords: true,
col_types: [
'string', 'string', 'number',
'number', 'number', 'number',
'number', 'number', 'number'
],
custom_options: {
cols:[3],
texts: [[
'0 - 25 000',
'100 000 - 1 500 000'
]],
values: [[
'>0 && <=25000',
'>100000 && <=1500000'
]],
sorts: [false]
},
col_widths: [
'150px', '100px', '100px',
'70px', '70px', '70px',
'70px', '60px', '60px'
],
extensions:[{ name: 'sort' }]
};
var tf = new TableFilter('demo', filtersConfig);
tf.init();
</script>
<pre></pre>
<!--
DO NOT COPY: NOT PART OF TABLEFILTER
-->
<script>
var configs = document.querySelectorAll('script[data-config]');
var pre = document.body.getElementsByTagName('pre')[0];
[].forEach.call(configs, function(config) {
if(pre){
pre.innerHTML +=
config.innerHTML.replace('<', '&lt;').replace('>', '&gt;');
}
});
</script>
<!-- -->
</body>
</html>

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
span.colVisSpan{text-align:left;}span.colVisSpan a.colVis{display:inline-block;padding:7px 5px 0;font-size:inherit;font-weight:inherit;vertical-align:top}div.colVisCont{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;position:absolute;display:none;border:1px solid #ccc;height:auto;width:250px;background-color:#fff;margin:35px 0 0 -100px;z-index:10000;padding:10px 10px 10px 10px;text-align:left;font-size:12px;}div.colVisCont:after,div.colVisCont:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.colVisCont:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.colVisCont:before{border-color:rgba(255,255,255,0);border-bottom-color:#ccc;border-width:12px;margin-left:-12px}div.colVisCont p{margin:6px auto 6px auto}div.colVisCont a.colVis{display:initial;font-weight:inherit}ul.cols_checklist{padding:0;margin:0;list-style:none;}ul.cols_checklist label{display:block}ul.cols_checklist input{vertical-align:middle;margin:2px 5px 2px 1px}li.cols_checklist_item{padding:4px;margin:0;}li.cols_checklist_item:hover{background-color:#335ea8;color:#fff}.cols_checklist_slc_item{background-color:#335ea8;color:#fff}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
span.expClpFlt a.btnExpClpFlt{width:35px;height:35px;display:inline-block;}span.expClpFlt a.btnExpClpFlt:hover{background-color:#f4f4f4}span.expClpFlt img{padding:8px 11px 11px 11px}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
.activeHeader{background-color:#66afe9 !important;color:#fff !important}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
table.TF{border-left:1px solid #ccc;border-top:none;border-right:none;border-bottom:none;}table.TF th{background:#ebecee url("images/bg_th.jpg") left top repeat-x;border-bottom:1px solid #d0d0d0;border-right:1px solid #d0d0d0;border-left:1px solid #fff;border-top:1px solid #fff;color:#333}table.TF td{border-bottom:1px dotted #999;padding:5px}.fltrow{background-color:#ebecee !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #666 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #999 !important}input.flt{width:99% !important}.inf{height:$min-height;background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important}input.reset{background:transparent url("images/btn_eraser.gif") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;}.nextPage:hover{background:transparent url("images/btn_over_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important;}.previousPage:hover{background:transparent url("images/btn_over_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;}.firstPage:hover{background:transparent url("images/btn_over_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;}.lastPage:hover{background:transparent url("images/btn_over_last_page.gif") center center no-repeat !important}div.grd_Cont{background-color:#ebecee !important;border:1px solid #ccc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#d5d5d5}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important;}div.grd_headTblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#ebecee url("images/bg_th.jpg") left top repeat-x !important;border-bottom:1px solid #d0d0d0 !important;border-right:1px solid #d0d0d0 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #999 !important}.grd_inf{background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important;border-top:1px solid #d0d0d0 !important}.loader{border:1px solid #999}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#fff}.odd{background-color:#d5d5d5}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#999 !important}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
table.TF{border-left:1px dotted #81963b;border-top:none;border-right:0;border-bottom:none;}table.TF th{background:#39424b url("images/bg_headers.jpg") left top repeat-x;border-bottom:0;border-right:1px dotted #d0d0d0;border-left:0;border-top:0;color:#fff}table.TF td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b;padding:5px}.fltrow{background-color:#81963b !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #687830 !important}input.flt{width:99% !important}.inf{background:#d8d8d8;height:$min-height}input.reset{width:53px;background:transparent url("images/btn_filter.png") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important}div.grd_Cont{background:#81963b url("images/bg_headers.jpg") left top repeat-x !important;border:1px solid #ccc !important;padding:0 1px 1px 1px !important;}div.grd_Cont .even{background-color:#bccd83}div.grd_Cont .odd{background-color:#fff}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important;}div.grd_tblCont table td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b}div.grd_tblCont table th,div.grd_headTblCont table th{background:transparent url("images/bg_headers.jpg") 0 0 repeat-x !important;border-bottom:0 !important;border-right:1px dotted #d0d0d0 !important;border-left:0 !important;border-top:0 !important;padding:0 4px 0 4px !important;color:#fff !important;height:35px !important}div.grd_headTblCont table td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;background-color:#81963b !important;padding:1px 3px 1px 3px !important}.grd_inf{background-color:#d8d8d8;border-top:1px solid #d0d0d0 !important}.loader{border:0 !important;background:#81963b !important}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#bccd83}.odd{background-color:#fff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#81963b !important}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
table.TF{padding:0;color:#000;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;border-left:1px solid #a4bed4;border-bottom:0;}table.TF th{margin:0;color:inherit;background:#d1e5fe url("images/bg_skyblue.gif") 0 0 repeat-x;border-color:#fdfdfd #a4bed4 #a4bed4 #fdfdfd;border-width:1px;border-style:solid}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid #a4bed4;border-left:0;border-top:0;border-right:0}.fltrow{background-color:#d1e5fe !important;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4 !important}input.flt{width:99% !important}.inf{background-color:#e3efff !important;border:1px solid #a4bed4;height:$min-height;color:#004a6f}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#ffe4ab url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#ffe4ab url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#ffe4ab url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#ffe4ab url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.activeHeader{background:#ffe4ab !important;border:1px solid #ffb552 !important;color:inherit !important}div.grd_Cont{background-color:#d9eaed !important;border:1px solid #9cc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#e3efff}div.grd_headTblCont{background-color:#d9eaed !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#d9eaed url("images/bg_skyblue.gif") left top repeat-x;border-bottom:1px solid #a4bed4;border-right:1px solid #a4bed4 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #a4bed4 !important;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:#cce2fe;color:#004a6f;border-top:1px solid #9cc !important;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#2d8eef;border:1px solid #cce2fe;border-radius:5px}.even{background-color:#fff}.odd{background-color:#e3efff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ffdc61 !important;color:inherit}.ezSelectedRow{background-color:#ffe4ab !important;color:inherit}.ezActiveCell{background-color:#fff !important;color:#000 !important;font-weight:bold}.ezETSelectedCell{background-color:#fff !important;font-weight:bold;color:#000 !important}

View file

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.12 by Max Guglielmi
* build date: 2017-05-06T14:29:27.134Z
* build date: 2017-05-07T05:55:30.389Z
* MIT License
*/
table.TF{padding:0;color:inherit;border-right:1px solid transparent;border-top:1px solid transparent;border-left:1px solid transparent;border-bottom:0;}table.TF th{margin:0;color:inherit;background-color:transparent;border-color:transparent;border-width:1px;border-style:solid;}table.TF th:last-child{border-right:1px solid transparent}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid transparent;border-left:0;border-top:0;border-right:0}.fltrow{background-color:transparent;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px;border-bottom:1px solid transparent !important;}.fltrow th:last-child,.fltrow td:last-child{border-right:1px solid transparent}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4}input.flt{width:99% !important}.inf{background-color:transparent;border:1px solid transparent;height:$min-height;color:inherit}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#f7f7f7 url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#f7f7f7 url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#f7f7f7 url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#f7f7f7 url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.activeHeader{background:#f7f7f7 !important;border:1px solid transparent;color:inherit !important}div.grd_Cont{-webkit-box-shadow:0 0 0 0 rgba(50,50,50,0.75);-moz-box-shadow:0 0 0 0 rgba(50,50,50,0.75);box-shadow:0 0 0 0 rgba(50,50,50,0.75);background-color:transparent;border:1px solid transparent;padding:0 !important;}div.grd_Cont .even{background-color:transparent}div.grd_Cont .odd{background-color:#f7f7f7}div.grd_headTblCont{background-color:transparent;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:transparent;border-bottom:1px solid transparent;border-right:1px solid transparent !important;border-left:1px solid transparent;border-top:1px solid transparent}div.grd_tblCont table td{border-bottom:1px solid transparent;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:transparent;color:inherit;border-top:1px solid transparent;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;color:#000;text-shadow:none}.even{background-color:transparent}.odd{background-color:#f7f7f7}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ccc !important;color:inherit}.ezSelectedRow{background-color:#ccc !important;color:inherit}.ezActiveCell{background-color:transparent;color:inherit;font-weight:bold}.ezETSelectedCell{background-color:transparent;font-weight:bold;color:inherit}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

121
src/modules/baseDropdown.js Normal file
View file

@ -0,0 +1,121 @@
import {Feature} from '../feature';
import {
ignoreCase, numSortAsc, numSortDesc,
dateSortAsc, sortNumberStr, sortDateStr
} from '../sort';
import {isArray, isObj} from '../types';
import {NUMBER, FORMATTED_NUMBER, DATE, FORMATTED_DATE} from '../const';
/**
* Base class for Dropdown and CheckList UI components
* @export
* @class BaseDropdown
* @extends {Feature}
*/
export class BaseDropdown extends Feature {
/**
* Creates an instance of BaseDropdown
* @param {TableFilter} tf
*/
constructor(tf) {
super(tf, 'baseDropdown');
let f = this.config;
/**
* Filter options custom sorter on a column basis
* @type {Object}
*/
this.customSorter = isObj(f.filter_options_sorter) &&
isArray(f.filter_options_sorter.col) &&
isArray(f.filter_options_sorter.comparer) ?
f.filter_options_sorter :
null;
// TODO: move here all properties shared by Dropdown CheckList
/**
* Has custom options
* @type {Boolean}
* @private
*/
this.isCustom = false;
/**
* List of options values
* @type {Array}
* @private
*/
this.opts = [];
/**
* List of options texts for custom values
* @type {Array}
* @private
*/
this.optsTxt = [];
/**
* List of options to be excluded from the checklist filter
* @type {Array}
* @private
*/
this.excludedOpts = [];
}
/**
* Sort passed options based on the type of the specified column
* @param {Number} colIndex Column index
* @param {Array} [options=[]] Collection of values
* @return {Array} Sorted values
* @private
*/
sortOptions(colIndex, options = []) {
let tf = this.tf;
if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||
(isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {
return options;
}
let { caseSensitive, sortNumDesc } = tf;
let compareFn;
if (this.customSorter &&
this.customSorter.col.indexOf(colIndex) !== -1) {
var idx = this.customSorter.col.indexOf(colIndex);
compareFn = this.customSorter.comparer[idx];
}
else if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {
let decimal = tf.getDecimal(colIndex);
let comparer = numSortAsc;
if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {
comparer = numSortDesc;
}
compareFn = sortNumberStr(comparer, decimal);
}
else if (tf.hasType(colIndex, [DATE, FORMATTED_DATE])) {
let locale = tf.feature('dateType').getLocale(colIndex);
let comparer = dateSortAsc;
compareFn = sortDateStr(comparer, locale);
} else { // string
compareFn = caseSensitive ? undefined : ignoreCase;
}
return options.sort(compareFn);
}
/**
* Regenerate filters of specified columns and maintain selection if any
* @param {Array} colIndexes Collection of column indexes
* @private
*/
refreshFilters(colIndexes) {
colIndexes.forEach((colIdx) => {
let values = this.getValues(colIdx);
this.build(colIdx, this.tf.linkedFilters);
this.selectOptions(colIdx, values);
});
}
}

View file

@ -1,29 +1,21 @@
import {Feature} from '../feature';
import {BaseDropdown} from './baseDropdown';
import {
addClass, createCheckItem, createText, createElm, elm, getText,
removeClass, tag
} from '../dom';
import {has} from '../array';
import {matchCase, trim, rgxEsc} from '../string';
import {
ignoreCase, numSortAsc, numSortDesc,
dateSortAsc, sortNumberStr, sortDateStr
} from '../sort';
import {addEvt, removeEvt, targetEvt} from '../event';
import {isEmpty} from '../types';
import {
CHECKLIST, NONE, NUMBER,
FORMATTED_NUMBER, DATE, FORMATTED_DATE
} from '../const';
import {isArray} from '../types';
// const SORT_ERROR = 'Filter options for column {0} cannot be sorted in ' +
// '{1} manner.';
import {CHECKLIST, NONE} from '../const';
/**
* Checklist filter UI component
* @export
* @class CheckList
* @extends {BaseDropdown}
*/
export class CheckList extends Feature {
export class CheckList extends BaseDropdown {
/**
* Creates an instance of CheckList
@ -93,34 +85,6 @@ export class CheckList extends Feature {
* @private
*/
this.prfx = 'chkdiv_';
/**
* Has custom options
* @type {Boolean}
* @private
*/
this.isCustom = false;
/**
* List of options values
* @type {Array}
* @private
*/
this.opts = [];
/**
* List of options texts for custom values
* @type {Array}
* @private
*/
this.optsTxt = [];
/**
* List of options to be excluded from the checklist filter
* @type {Array}
* @private
*/
this.excludedOpts = [];
}
/**
@ -156,13 +120,8 @@ export class CheckList extends Feature {
* Refresh all checklist filters
*/
refreshAll() {
let tf = this.tf;
let fltsIdxs = tf.getFiltersByType(CHECKLIST, true);
fltsIdxs.forEach((colIdx) => {
let values = this.getValues(colIdx);
this.build(colIdx, tf.linkedFilters);
this.selectOptions(colIdx, values);
});
let colIdxs = this.tf.getFiltersByType(CHECKLIST, true);
this.refreshFilters(colIdxs);
}
/**
@ -306,60 +265,11 @@ export class CheckList extends Feature {
}
}
// //Retrieves custom values
// if (this.isCustom) {
// let customValues = tf.getCustomOptions(colIndex);
// this.opts = customValues[0];
// this.optsTxt = customValues[1];
// }
//sort options
this.opts = this.sortOptions(colIndex, this.opts);
if (this.excludedOpts) {
this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);
}
// if (tf.sortSlc && !this.isCustom) {
// if (!caseSensitive) {
// this.opts.sort(ignoreCase);
// if (this.excludedOpts) {
// this.excludedOpts.sort(ignoreCase);
// }
// } else {
// this.opts.sort();
// if (this.excludedOpts) {
// this.excludedOpts.sort();
// }
// }
// }
// //asc sort
// if (tf.sortNumAsc.indexOf(colIndex) !== -1) {
// try {
// this.opts.sort(numSortAsc);
// if (this.excludedOpts) {
// this.excludedOpts.sort(numSortAsc);
// }
// if (this.isCustom) {
// this.optsTxt.sort(numSortAsc);
// }
// } catch (e) {
// throw new Error(SORT_ERROR.replace('{0}', colIndex)
// .replace('{1}', 'ascending'));
// }//in case there are alphanumeric values
// }
// //desc sort
// if (tf.sortNumDesc.indexOf(colIndex) !== -1) {
// try {
// this.opts.sort(numSortDesc);
// if (this.excludedOpts) {
// this.excludedOpts.sort(numSortDesc);
// }
// if (this.isCustom) {
// this.optsTxt.sort(numSortDesc);
// }
// } catch (e) {
// throw new Error(SORT_ERROR.replace('{0}', colIndex)
// .replace('{1}', 'descending'));
// }//in case there are alphanumeric values
// }
this.addChecks(colIndex, ul);
@ -407,43 +317,6 @@ export class CheckList extends Feature {
}
}
/**
* Sort passed options based on the type of the specified column
* @param {Number} colIndex Column index
* @param {Array} [options=[]] Collection of values
* @return {Array} Sorted values
* @private
*/
sortOptions(colIndex, options = []) {
let tf = this.tf;
if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||
(isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {
return options;
}
let { caseSensitive, sortNumDesc } = tf;
if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {
let decimal = tf.getDecimal(colIndex);
let compareFn = numSortAsc;
if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {
compareFn = numSortDesc;
}
options.sort(sortNumberStr(compareFn, decimal));
}
else if (tf.hasType(colIndex, [DATE, FORMATTED_DATE])) {
let locale = this.tf.feature('dateType').getLocale(colIndex);
let compareFn = dateSortAsc;
options.sort(sortDateStr(compareFn, locale));
} else {
let compareFn = caseSensitive ? undefined : ignoreCase;
options.sort(compareFn);
}
return options;
}
/**
* Add checklist header option
* @param {Number} colIndex Column index

View file

@ -1,28 +1,17 @@
import {Feature} from '../feature';
import {BaseDropdown} from './baseDropdown';
import {createElm, createOpt, elm} from '../dom';
import {has} from '../array';
import {matchCase} from '../string';
import {
ignoreCase, numSortAsc, numSortDesc,
dateSortAsc, sortNumberStr, sortDateStr
} from '../sort';
import {addEvt, targetEvt} from '../event';
import {
SELECT, MULTIPLE, NONE,
NUMBER, FORMATTED_NUMBER,
DATE, FORMATTED_DATE
} from '../const';
import {isArray} from '../types';
// import {parse as parseNb} from '../number';
// const SORT_ERROR = 'Filter options for column {0} cannot be sorted in ' +
// '{1} manner.';
import {SELECT, MULTIPLE, NONE} from '../const';
/**
* Dropdown filter UI component
* @export
* @class Dropdown
* @extends {BaseDropdown}
*/
export class Dropdown extends Feature {
export class Dropdown extends BaseDropdown {
/**
* Creates an instance of Dropdown
@ -53,26 +42,6 @@ export class Dropdown extends Feature {
*/
this.multipleSlcTooltip = f.multiple_slc_tooltip ||
'Use Ctrl/Cmd key for multiple selections';
/**
* Indicates drop-down has custom options
* @private
*/
this.isCustom = null;
/**
* List of options values
* @type {Array}
* @private
*/
this.opts = null;
/**
* List of options texts for custom values
* @type {Array}
* @private
*/
this.optsTxt = null;
}
@ -106,15 +75,10 @@ export class Dropdown extends Feature {
* Refresh all drop-down filters
*/
refreshAll() {
let tf = this.tf;
let selectFlts = tf.getFiltersByType(SELECT, true);
let multipleFlts = tf.getFiltersByType(MULTIPLE, true);
let flts = selectFlts.concat(multipleFlts);
flts.forEach((colIdx) => {
let values = this.getValues(colIdx);
this.build(colIdx, tf.linkedFilters);
this.selectOptions(colIdx, values);
});
let selectFlts = this.tf.getFiltersByType(SELECT, true);
let multipleFlts = this.tf.getFiltersByType(MULTIPLE, true);
let colIdxs = selectFlts.concat(multipleFlts);
this.refreshFilters(colIdxs);
}
/**
@ -267,59 +231,11 @@ export class Dropdown extends Feature {
}//for j
}//for k
//sort options
this.opts = this.sortOptions(colIndex, this.opts);
if (excludedOpts) {
excludedOpts = this.sortOptions(colIndex, excludedOpts);
}
//Retrieves custom values
// if (this.isCustom) {
// let customValues = tf.getCustomOptions(colIndex);
// this.opts = customValues[0];
// this.optsTxt = customValues[1];
// }
// if (tf.sortSlc && !this.isCustom) {
// if (!tf.caseSensitive) {
// this.opts.sort(ignoreCase);
// if (excludedOpts) {
// excludedOpts.sort(ignoreCase);
// }
// } else {
// this.opts.sort();
// if (excludedOpts) { excludedOpts.sort(); }
// }
// }
// //asc sort
// if (tf.sortNumAsc.indexOf(colIndex) !== -1) {
// try {
// this.opts.sort(numSortAsc);
// if (excludedOpts) {
// excludedOpts.sort(numSortAsc);
// }
// if (this.isCustom) {
// this.optsTxt.sort(numSortAsc);
// }
// } catch (e) {
// throw new Error(SORT_ERROR.replace('{0}', colIndex)
// .replace('{1}', 'ascending'));
// }//in case there are alphanumeric values
// }
// //desc sort
// if (tf.sortNumDesc.indexOf(colIndex) !== -1) {
// try {
// this.opts.sort(numSortDesc);
// if (excludedOpts) {
// excludedOpts.sort(numSortDesc);
// }
// if (this.isCustom) {
// this.optsTxt.sort(numSortDesc);
// }
// } catch (e) {
// throw new Error(SORT_ERROR.replace('{0}', colIndex)
// .replace('{1}', 'ascending'));
// }//in case there are alphanumeric values
// }
//populates drop-down
this.addOptions(colIndex, slc, isLinked, excludedOpts);
@ -327,43 +243,6 @@ export class Dropdown extends Feature {
this.emitter.emit('after-populating-filter', tf, colIndex, slc);
}
/**
* Sort passed options based on the type of the specified column
* @param {Number} colIndex Column index
* @param {Array} [options=[]] Collection of values
* @return {Array} Sorted values
* @private
*/
sortOptions(colIndex, options = []) {
let tf = this.tf;
if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||
(isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {
return options;
}
let { caseSensitive, sortNumDesc } = tf;
if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {
let decimal = tf.getDecimal(colIndex);
let compareFn = numSortAsc;
if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {
compareFn = numSortDesc;
}
options.sort(sortNumberStr(compareFn, decimal));
}
else if (tf.hasType(colIndex, [DATE, FORMATTED_DATE])) {
let locale = this.tf.feature('dateType').getLocale(colIndex);
let compareFn = dateSortAsc;
options.sort(sortDateStr(compareFn, locale));
} else {
let compareFn = caseSensitive ? undefined : ignoreCase;
options.sort(compareFn);
}
return options;
}
/**
* Add drop-down options
* @param {Number} colIndex Column index

View file

@ -1852,7 +1852,6 @@ export class TableFilter {
let dateType = this.Mod.dateType;
let isValidDate = dateType.isValid.bind(dateType);
let parseDate = dateType.parse.bind(dateType);
// let locale = dateType.getOptions(colIdx).locale || this.locale;
let locale = dateType.getLocale(colIdx);
// Search arg dates tests
@ -1924,12 +1923,6 @@ export class TableFilter {
}
else {
// if (this.hasType(colIdx, [FORMATTED_NUMBER])) {
// let colType = this.colTypes[colIdx];
// if (colType.hasOwnProperty('decimal')) {
// decimal = colType.decimal;
// }
// }
// Convert to number anyways to auto-resolve type in case not
// defined by configuration
numData = Number(cellValue) || parseNb(cellValue, decimal);
@ -2268,19 +2261,13 @@ export class TableFilter {
let value = this.getCellValue(cell);
if (this.hasType(colIndex, [FORMATTED_NUMBER])) {
let decimal = this.getDecimal(colIndex);
// let colType = this.colTypes[colIndex];
// if (colType.hasOwnProperty('decimal')) {
// decimal = colType.decimal;
// }
return parseNb(value, decimal);
return parseNb(value, this.getDecimal(colIndex));
}
else if (this.hasType(colIndex, [NUMBER])) {
return Number(value) || parseNb(value);
}
else if (this.hasType(colIndex, [DATE])){
let dateType = this.Mod.dateType;
// let locale = dateType.getOptions(colIndex).locale || this.locale;
return dateType.parse(value, dateType.getLocale(colIndex));
}

View file

@ -42,13 +42,6 @@ var tfConfig = {
btn_reset: true,
loader: true,
status_bar: true,
col_3: 'select',
col_4: 'checklist',
col_6: 'multiple',
col_7: 'multiple',
col_8: 'checklist',
sort_num_desc: [4],
enable_empty_option: true,
col_types: [
'string',
'string',

View file

@ -282,6 +282,24 @@
deepEqual(tf.getValidRows().length, 8, 'Expected rows');
});
module('Locale helpers');
test('Can get decimal separator for given column from config', function() {
// act
var result = tf.getDecimal(3);
// assert
deepEqual(result, ',', 'Decimal separator for given column');
});
test('Can get decimal separator for given column from global setting',
function() {
// act
var result = tf.getDecimal(1);
// assert
deepEqual(result, '.', 'Decimal separator for given column');
});
module('Tear-down');
test('can destroy TableFilter DOM elements', function() {
tf.destroy();

View file

@ -136,6 +136,22 @@ test('Can add date formats from config', function() {
);
});
test('Can get locale for a column index retrieved from config', function() {
// act
var result = dateType.getLocale(6);
// assert
deepEqual(result, 'fr', 'Locale for given column');
});
test('Can get locale for a column index from global setting', function() {
// act
var result = dateType.getLocale(1);
// assert
deepEqual(result, 'en', 'Locale for given column');
});
module('Tear-down');
test('can destroy TableFilter DOM elements', function() {
tf.destroy();