unit tests

This commit is contained in:
koalyptus 2017-10-09 21:56:58 +11:00
parent 3abca0ef22
commit 763fbcc86e
22 changed files with 888 additions and 12292 deletions

514
dist/starter.html vendored Normal file
View File

@ -0,0 +1,514 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>tablefilter v0.5.43 - Starter</title>
</head>
<body>
<h1>tablefilter v0.5.43</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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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:inherit;}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-type: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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* MIT License
*/
.activeHeader{background-color:#66afe9 !important;color:#fff !important}

View File

@ -1,6 +1,6 @@
/**
* tablefilter v0.5.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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.43 by Max Guglielmi
* build date: 2017-10-08T10:24:08.458Z
* build date: 2017-10-09T10:51:27.062Z
* 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

View File

@ -409,12 +409,9 @@ export default class ColsVisibility extends Feature {
let span = createElm('span');
span.className = this.spanCssClass;
//Container element (rdiv or custom element)
// if (!this.btnTgtId) {
// tf.setToolbar();
// }
let targetEl = !this.btnTgtId ? /*tf.rDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
// Container element (rdiv or custom element)
let targetEl = !this.btnTgtId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.btnTgtId);
if (!this.btnTgtId) {
@ -436,7 +433,7 @@ export default class ColsVisibility extends Feature {
} else {
addEvt(btn, 'mouseover', (evt) => this.toggle(evt));
}
} else { //Custom html
} else { // Custom html
span.innerHTML = this.btnHtml;
let colVisEl = span.firstChild;
if (!this.enableHover) {

View File

@ -214,12 +214,9 @@ export default class FiltersVisibility extends Feature {
let span = createElm('span');
span.className = this.contCssClass;
//Container element (rdiv or custom element)
// if (!this.targetId) {
// tf.setToolbar();
// }
let targetEl = !this.targetId ? /*tf.rDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
// Container element (rdiv or custom element)
let targetEl = !this.targetId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.targetId);
if (!this.targetId) {
@ -236,7 +233,7 @@ export default class FiltersVisibility extends Feature {
btn.title = this.btnText || this.defaultText;
btn.innerHTML = this.collapseBtnHtml;
span.appendChild(btn);
} else { //Custom html
} else { // Custom html
span.innerHTML = this.btnHtml;
btn = span.firstChild;
}

View File

@ -154,10 +154,6 @@ export class Help extends Feature {
this.boundMouseup = this.onMouseup.bind(this);
//help button is added to defined element
// if (!this.tgtId) {
// tf.setToolbar();
// }
let targetEl = !this.tgtId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.tgtId);

View File

@ -446,11 +446,8 @@ export class Paging extends Feature {
}
// paging elements (buttons+drop-down list) are added to defined element
// if (!this.tgtId) {
// tf.setToolbar();
// }
let targetEl = !this.tgtId ? /*tf.mDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
let targetEl = !this.tgtId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.tgtId);
targetEl.appendChild(btnFirstSpan);
targetEl.appendChild(btnPrevSpan);
@ -528,8 +525,8 @@ export class Paging extends Feature {
*/
setPagingInfo(validRows) {
let tf = this.tf;
let cont = !this.tgtId ? /*tf.mDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
let cont = !this.tgtId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.tgtId);
//store valid rows indexes
@ -668,9 +665,6 @@ export class Paging extends Feature {
slcRSpan.className = this.resultsSpanCssClass;
// results per page select is added to external element
// if (!this.pageLengthTgtId) {
// tf.setToolbar();
// }
let targetEl = !this.pageLengthTgtId ?
tf.feature('toolbar').container(RIGHT) :
elm(this.pageLengthTgtId);

View File

@ -111,11 +111,8 @@ export class RowsCounter extends Feature {
countText.appendChild(createText(this.text));
// counter is added to defined element
// if (!this.targetId) {
// tf.setToolbar();
// }
let targetEl = !this.targetId ? /*tf.lDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
let targetEl = !this.targetId ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.targetId);
//default container: 'lDiv'

View File

@ -185,25 +185,22 @@ export class StatusBar extends Feature {
emitter.emit('initializing-feature', this, !isNull(this.targetId));
//status bar container
// status bar container
let statusDiv = createElm('div');
statusDiv.className = this.cssClass;
//status bar label
// status bar label
let statusSpan = createElm('span');
//preceding text
// preceding text
let statusSpanText = createElm('span');
statusSpanText.appendChild(createText(this.text));
// target element container
// if (!this.targetId) {
// tf.setToolbar();
// }
let targetEl = (!this.targetId) ? /*tf.lDiv*/
tf.feature('toolbar').container(this.toolbarPosition) :
let targetEl = (!this.targetId) ?
tf.feature('toolbar').container(this.toolbarPosition) :
elm(this.targetId);
//default container: 'lDiv'
// default container
if (!this.targetId) {
statusDiv.appendChild(statusSpanText);
statusDiv.appendChild(statusSpan);
@ -218,7 +215,7 @@ export class StatusBar extends Feature {
this.msgContainer = statusSpan;
this.labelContainer = statusSpanText;
// Subscribe to events
// subscribe to events
emitter.on(['before-filtering'], () => this.message(this.msgFilter));
emitter.on(['before-populating-filter'],
() => this.message(this.msgPopulate));

View File

@ -35,25 +35,25 @@ export class Toolbar extends Feature {
* Css class for toolbar's container DOM element
* @type {String}
*/
this.infDivCssClass = defaultsStr(f.inf_div_css_class, 'inf');
this.contCssClass = defaultsStr(f.container_css_class, 'inf');
/**
* Css class for left-side inner container DOM element
* @type {String}
*/
this.lDivCssClass = defaultsStr(f.left_div_css_class, 'ldiv');
this.lContCssClass = defaultsStr(f.left_cont_css_class, 'ldiv');
/**
* Css class for right-side inner container DOM element
* @type {String}
*/
this.rDivCssClass = defaultsStr(f.right_div_css_class, 'rdiv');
this.rContCssClass = defaultsStr(f.right_cont_css_class, 'rdiv');
/**
* Css class for middle inner container DOM element
* @type {String}
*/
this.mDivCssClass = defaultsStr(f.middle_div_css_class, 'mdiv');
this.cContCssClass = defaultsStr(f.center_cont_css_class, 'mdiv');
/**
* Toolbar's custom container ID
@ -73,7 +73,7 @@ export class Toolbar extends Feature {
* @type {DOMElement}
* @private
*/
this.lDiv = null;
this.lCont = null;
/**
* Right-side inner container DOM element (reset button,
@ -81,38 +81,14 @@ export class Toolbar extends Feature {
* @type {DOMElement}
* @private
*/
this.rDiv = null;
this.rCont = null;
/**
* Middle inner container DOM element (paging elements in toolbar)
* @type {DOMElement}
* @private
*/
this.mDiv = null;
/**
* Toolbar container ID prefix
* @private
*/
this.prfxInfDiv = 'inf_';
/**
* Toolbar left element ID prefix
* @private
*/
this.prfxLDiv = 'ldiv_';
/**
* Toolbar right element ID prefix
* @private
*/
this.prfxRDiv = 'rdiv_';
/**
* Toolbar middle element ID prefix
* @private
*/
this.prfxMDiv = 'mdiv_';
this.cCont = null;
/**
* Container elements inside toolbar
@ -126,6 +102,9 @@ export class Toolbar extends Feature {
this.emitter.on(EVENTS,
(feature, isExternal) => this.init(isExternal));
/** @inherited */
this.enabled = true;
}
/**
@ -142,7 +121,7 @@ export class Toolbar extends Feature {
// default container
let container = createElm('div');
container.className = this.infDivCssClass;
container.className = this.contCssClass;
// custom container
if (this.tgtId) {
@ -163,18 +142,18 @@ export class Toolbar extends Feature {
this.cont = container;
// left container
this.lDiv = this.createContainer(container, this.lDivCssClass);
this.lCont = this.createContainer(container, this.lContCssClass);
// right container
this.rDiv = this.createContainer(container, this.rDivCssClass);
this.rCont = this.createContainer(container, this.rContCssClass);
// middle container
this.mDiv = this.createContainer(container, this.mDivCssClass);
this.cCont = this.createContainer(container, this.cContCssClass);
this.innerCont = {
left: this.lDiv,
center: this.mDiv,
right: this.rDiv
left: this.lCont,
center: this.cCont,
right: this.rCont
};
/** @inherited */
@ -193,13 +172,13 @@ export class Toolbar extends Feature {
* Return the container based on requested position inside the toolbar
* @param {String} [position=RIGHT] 3 possible positions: 'left', 'center',
* 'right'
* @param {DOMElement} elm optional DOM element to be inserter in container
* @param {DOMElement} el optional DOM element to be inserter in container
* @returns {DOMElement}
*/
container(position = RIGHT, elm) {
container(position = RIGHT, el) {
let cont = this.innerCont[position];
if (elm) {
cont.appendChild(elm);
if (el) {
cont.appendChild(el);
}
return cont;
}
@ -231,7 +210,7 @@ export class Toolbar extends Feature {
let tbl = tf.dom();
let captions = tag(tbl, 'caption');
[].forEach.call(captions, (elm) => removeElm(elm));
[].forEach.call(captions, (el) => removeElm(el));
/** @inherited */
this.initialized = false;

View File

@ -879,6 +879,12 @@ export class TableFilter {
*/
this.responsive = Boolean(f.responsive);
/**
* Enable toolbar component
* @type {Object|Boolean}
*/
this.toolbar = isObj(f.toolbar) || Boolean(f.toolbar);
/**
* Features registry
* @private
@ -918,7 +924,7 @@ export class TableFilter {
const { dateType, help, state, markActiveColumns, gridLayout, loader,
highlightKeyword, popupFilter, rowsCounter, statusBar, clearButton,
alternateRows, noResults, paging } = FEATURES;
alternateRows, noResults, paging, toolbar } = FEATURES;
//explicitly initialise features in given order
this.initFeatures([
@ -1005,7 +1011,8 @@ export class TableFilter {
clearButton,
alternateRows,
noResults,
paging
paging,
toolbar
]);
this.setColWidths();

81
test/test-toolbar.html Normal file
View File

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TableFilter with toolbar</title>
<link rel="stylesheet" href="libs/qunit/qunit.css">
<script src="libs/qunit/qunit.js"></script>
<script src="libs/polyfill.js"></script>
</head>
<body>
<div id="ext-cont"></div>
<table id="demo">
<thead>
<tr>
<th>From</th>
<th>Destination</th>
<th>Road Distance (km)</th>
<th>By Air (hrs)</th>
<th>By Rail (hrs)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Sydney</strong></td>
<td>Adelaide</td>
<td>1412</td>
<td>1.4</td>
<td>25.3</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Brisbane</td>
<td>982</td>
<td>1.5</td>
<td>16</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Canberra</td>
<td>286</td>
<td>.6</td>
<td>4.3</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Melbourne</td>
<td>872</td>
<td>1.1</td>
<td>10.5</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Perth</td>
<td>2781</td>
<td>3.1</td>
<td>38</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Alice Springs</td>
<td>1533</td>
<td>2</td>
<td>20.25</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Brisbane</td>
<td>2045</td>
<td>2.15</td>
<td>40</td>
</tr>
</tbody>
</table>
<script src="../dist/tablefilter/tablefilter.js"></script>
<script src="test-toolbar.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>

218
test/test-toolbar.js Normal file
View File

@ -0,0 +1,218 @@
var tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
rows_counter: true
});
tf.init();
var toolbar = tf.feature('toolbar');
module('Sanity checks');
test('toolbar component', function() {
// assert
notEqual(toolbar, null, 'toolbar instanciated');
equal(toolbar.contCssClass, 'inf', 'container css class');
equal(toolbar.lContCssClass, 'ldiv', 'left container css class');
equal(toolbar.cContCssClass, 'mdiv', 'middle container css class');
equal(toolbar.rContCssClass, 'rdiv', 'right container css class');
equal(toolbar.tgtId, null, 'external container id null');
notEqual(toolbar.cont, null, 'container created');
notEqual(toolbar.lCont, null, 'left inner container created');
notEqual(toolbar.cCont, null, 'middle inner container created');
notEqual(toolbar.rCont, null, 'right inner container created');
equal(toolbar.emitter.events['initializing-feature'].length, 1,
'subscribed to `initializing-feature` event');
equal(toolbar.emitter.events['initializing-extension'].length, 1,
'subscribed to `initializing-extension` event');
});
module('Feature interface');
test('Properties', function() {
deepEqual(toolbar.tf instanceof TableFilter, true, 'TableFilter instance');
deepEqual(toolbar.feature, 'toolbar', 'Feature name');
deepEqual(toolbar.enabled, true, 'Feature enabled');
deepEqual(toolbar.initialized, true, 'Feature enabled');
deepEqual(typeof toolbar.config, 'object', 'TF configuration object');
deepEqual(typeof toolbar.init, 'function', 'Feature init method');
deepEqual(typeof toolbar.destroy, 'function', 'Feature destroy method');
deepEqual(typeof toolbar.reset, 'function', 'Feature reset method');
deepEqual(typeof toolbar.enable, 'function', 'Feature enable method');
deepEqual(typeof toolbar.disable, 'function', 'Feature enable method');
deepEqual(typeof toolbar.isEnabled, 'function', 'Feature enable method');
});
test('Can destroy', function() {
toolbar.destroy();
deepEqual(toolbar.initialized, false, 'not initialised');
});
test('Can reset', function() {
toolbar.reset();
deepEqual(toolbar.enabled, true, 'enabled');
});
test('Can disable', function() {
toolbar.disable();
deepEqual(toolbar.enabled, false, 'disabled');
});
test('Can enable', function() {
toolbar.enable();
deepEqual(toolbar.enabled, true, 'enabled');
});
test('Can init', function() {
toolbar.destroy();
toolbar.enable();
toolbar.init();
deepEqual(toolbar.enabled, true, 'enabled');
});
test('Can check is enabled', function() {
toolbar.isEnabled();
deepEqual(toolbar.enabled, true, 'enabled');
});
module('Behaviour');
test('Does not init if initialised', function() {
// setup
var createContainer = toolbar.createContainer;
var hit = 0;
toolbar.createContainer = function() {
hit++;
};
// act
toolbar.init();
// assert
deepEqual(hit, 0, 'does not initialise');
toolbar.createContainer = createContainer;
});
test('Does not init if external', function() {
// setup
toolbar.initialized = false;
var createContainer = toolbar.createContainer;
var hit = 0;
toolbar.createContainer = function() {
hit++;
};
// act
toolbar.init(true);
// assert
deepEqual(hit, 0, 'does not initialise');
toolbar.createContainer = createContainer;
toolbar.initialized = true;
});
test('Can get container', function() {
// act
var result = toolbar.container('left');
// assert
deepEqual(result, toolbar.cont.querySelector('.ldiv'),
'left inner container');
});
test('Can get default container', function() {
// act
var result = toolbar.container();
// assert
deepEqual(result, toolbar.cont.querySelector('.rdiv'),
'left inner container');
});
test('Can get container with appended element', function() {
// act
var result = toolbar.container('center',
document.createElement('span')
.appendChild(document.createTextNode('test')));
// assert
deepEqual(result.firstChild, toolbar.cont.querySelector('.mdiv').firstChild,
'center inner container with appended element');
});
test('Can create container with css class', function() {
// act
var result = toolbar.createContainer(toolbar.cont, 'test');
// assert
deepEqual(result, toolbar.cont.querySelector('.test'),
'inner container created');
});
module('Custom css');
test('config with custom css', function() {
// setup
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
toolbar: {
container_css_class: 'cont-css',
left_cont_css_class: 'left-cont-css',
right_cont_css_class: 'right-cont-css',
center_cont_css_class: 'center-cont-css'
}
});
// act
tf.init();
var toolbar = tf.feature('toolbar');
deepEqual(toolbar.cont, document.querySelector('.cont-css'),
'container with custom css class');
deepEqual(toolbar.lCont, toolbar.cont.querySelector('.left-cont-css'),
'left inner container with custom css class');
deepEqual(toolbar.rCont, document.querySelector('.right-cont-css'),
'right inner container with custom css class');
deepEqual(toolbar.cCont, document.querySelector('.center-cont-css'),
'middle inner container with custom css class');
});
module('External container');
test('config with external container id', function() {
// setup
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
toolbar: {
target_id: 'ext-cont'
}
});
// act
tf.init();
var toolbar = tf.feature('toolbar');
// assert
deepEqual(toolbar.cont, document.querySelector('#ext-cont').firstChild,
'external container element');
});
module('Grid-layout');
test('config with grid-layout', function() {
// setup
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
grid_layout: true,
toolbar: true
});
// act
tf.init();
var toolbar = tf.feature('toolbar');
// assert
deepEqual(toolbar.cont, document.querySelector('.grd_inf'),
'container element with grid-layout mode');
});
module('tear-down');
test('destroy TableFilter', function() {
// act
tf.destroy();
// assert
deepEqual(tf.feature('toolbar').initialized, false, 'toolbar removed');
});