├── .gitignore ├── LICENSE ├── README.md ├── css.min ├── bootstrap-table-filter-control.min.css ├── bootstrap-table.min.css ├── datatable.bundle.min.css └── datatable.min.css ├── css ├── bootstrap-table-filter-control.css ├── bootstrap-table.css ├── datatable.css └── overlay.png ├── docs ├── data1.json ├── data1.yaml ├── data2.json ├── data2.yaml ├── data3.json ├── data4.json └── index.html ├── js.min ├── Chart.bundle.min.js ├── bootstrap-table-filter-control.min.js ├── bootstrap-table.min.js ├── datatable.bundle.min.js ├── datatable.min.js ├── js-yaml.min.js └── moment.min.js ├── js ├── Chart.bundle.js ├── bootstrap-table-filter-control.js ├── bootstrap-table.js ├── datatable.js ├── js-yaml.js └── moment.js ├── minification.py └── tests ├── data4.json ├── data5.json ├── data6.json ├── data_time.json └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Toni Heittola 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | js-datatable - Dynamic table with data visualization 2 | ==================================================== 3 | 4 | js-datatable is an open source JQuery plugin to produce dynamic HTML tables with data visualization capabilities. The plugins was originally developed for the need of academic data visualization ([DCASE2016 evaluation campaign results](http://www.cs.tut.fi/sgn/arg/dcase2016/task-results-acoustic-scene-classification)), and to be used with [Pelican](https://github.com/getpelican/pelican) static page generation framework. For integration with Pelican, see [pelican-datatable]() project. 5 | 6 | The plugin is designed to be used with [Bootstrap 3 framework](http://getbootstrap.com/). Dynamic table handling is implemented with [bootstrap-table.js](http://bootstrap-table.wenzhixin.net.cn/) and data visualizations with [chart.js](http://www.chartjs.org/). 7 | 8 | To see plugin in action check [DCASE2016 challenge results page](http://www.cs.tut.fi/sgn/arg/dcase2016/task-results-acoustic-scene-classification). 9 | 10 | Detailed instructions and demos see [docs](https://toni-heittola.github.io/js-datatable/). 11 | 12 | **Author** 13 | 14 | Toni Heittola (toni.heittola@gmail.com), 15 | [GitHub](https://github.com/toni-heittola), [Home page](http://www.cs.tut.fi/~heittolt/) 16 | 17 | Installation instructions 18 | ========================= 19 | 20 | To use plugin, following javascripts and css files are required: 21 | 22 | 23 | 24 | 25 | 26 | You can use also non-minified versions in case debugging is required: 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Plugin is initialized automatically for `` elements having class `datatable` set on them. Most of the parametrization is done through data-fields either inside `
`-tag or in header `
`-tags. 37 | 38 | Usage 39 | ===== 40 | 41 | ## Via data attributes 42 | 43 | *This is the simplest way to use the plugin.* 44 | 45 | Plugin is initialized automatically for `` elements having class `datatable` set on them.. Parameters to the plugin are given with attributes to table element. 46 | 47 | ### Simple example table without visualizations 48 | 49 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
NameValue 1Value 2
item 140.46.5344
item 260.23.232
item 320.69.32
80 | 81 | ### Simple example table without visualizations, loading data from a data file 82 | 83 | #### JSON 84 | 85 | *HTML* 86 | 87 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 |
NameValue 1Value 2
102 | 103 | *JSON-datafile* 104 | 105 | [ 106 | { 107 | "code": "Red", 108 | "value1": "12", 109 | "value2": "22", 110 | "value3": "5", 111 | "value4": "34", 112 | "feature1": "square", 113 | "feature2": "triangle", 114 | "row_css": "danger" 115 | }, 116 | { 117 | "code": "Blue", 118 | "value1": "62", 119 | "value2": "42", 120 | "value3": "8", 121 | "value4": "64", 122 | "feature1": "circle", 123 | "feature2": "triangle", 124 | "row_css": "warning" 125 | } 126 | ] 127 | 128 | #### YAML 129 | 130 | *HTML* 131 | 132 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 |
NameValue 1Value 2
147 | 148 | *YAML-datafile* 149 | 150 | data: 151 | - code: Red 152 | value1: 12 153 | value2: 22 154 | feature1: square 155 | feature2: triangle 156 | row_css: danger 157 | 158 | - code: Blue 159 | value1: 62 160 | value2: 42 161 | feature1: circle 162 | feature2: triangle 163 | row_css: warning 164 | 165 | ## Via JavaScript 166 | 167 | *In case you need customization.* 168 | 169 | In case an extensive customization is required, the datatable can be created with javascript. 170 | 171 | *HTML* 172 | 173 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 |
NameValue 1Value 2
item 140.46.5344
195 | 196 | *Javascript* 197 | 198 | 203 | 204 | ## Parameters 205 | 206 | ### Table options 207 | 208 | | Attribute | Default | Description | 209 | | ------------------------- |--------------------- | ----------------------------------------------------------------------------- | 210 | | data-chart | false | Controls chart visualization. | 211 | | data-chart-default-mode | 'bar' | Default visualization mode: bar, scatter, comparison | 212 | | data-chart-modes | 'bar' | Comma separated list of visualization modes: bar, scatter, comparison | 213 | | data-id-field | undefined | Column name to be used to identify rows. | 214 | | data-json | undefined | JSON file to populate the table from. | 215 | | data-rank-mode | 'normal' | Dynamic ranking mode: normal, grouped_muted, grouped_empty | 216 | | data-row-highlighting | false | Use row_css field in the data file to have row colors. | 217 | | data-column-hover | false | On cell hover highlight full column. | 218 | | data-show-bar-chart-xaxis | 'true' | Show x-axis in bar visualization. | 219 | | data-tag-mode | 'global' | Dynamic tagging, column values are grouped and groups are assigned a color: global, column | 220 | | data-yaml | undefined | YAML file to populate the table from. | 221 | | |  | | 222 | | data-bar-hline | false | Show horizontal line, value got from data file. Use hline field to set. | 223 | | data-bar-height   | 200 | Height of a visualization canvas. | 224 | | data-bar-show-xaxis   | true | Show x-axis in bar visualization. | 225 | | data-bar-show-vertical-indicator | false | Show vertical indicator line. | 226 | | data-bar-vertical-indicator-linewidth | 4 | Vertical indicator line width. | 227 | | data-bar-vertical-indicator-stroke | rgba(0,0,0,0.2) | Vertical indicator line color. | 228 | | data-bar-show-horizontal-indicator | true | Show horizontal indicator line. | 229 | | data-bar-horizontal-indicator-linewidth | 4  | Horizontal indicator line width. | 230 | | data-bar-horizontal-indicator-stroke | rgba(0,0,0,0.2) | Horizontal indicator line color. | 231 | | data-bar-horizontal-indicator-fill  | rgba(0,0,0,0.1) | Horizontal indicator fill color. | 232 | | data-bar-horizontal-highlights | undefined | Data structure to contain data for highlights in format: value1;title;color,value2;title2;color | 233 | | data-bar-horizontal-highlight-opacity | 0.1 | Line opacity. | 234 | | data-bar-horizontal-highlight-linewidth | 1 | Line width. | 235 | | data-bar-horizontal-highlight-stroke | rgba(112, 187, 225 ,1.0) | Line color. | 236 | | data-bar-horizontal-highlight-label-position | 'bottom-right' | Line title position, possible values: top-left, top-right, bottom-left, bottom-right | 237 | | data-bar-horizontal-highlight-label-fill | #000 | Line title color. | 238 | | data-bar-horizontal-highlight-label-size | '12px' | Line title size. | 239 | | data-bar-horizontal-highlight-label-opacity | 0.2 | Line title opacity. | 240 | | data-bar-show-error-bar | true | Show error bar for data point (if interval is defined). | 241 | | data-bar-error-bar-linewidth | 2 | Error bar line width. | 242 | | data-bar-error-bar-tipwidth | undefined | Error bar tip width. If null give, then tip width is defined automatically. | 243 | | data-bar-error-bar-stroke | undefined | Error bar line color. If null given, then item/row color is used. | 244 | | data-bar-tooltip-position | 'top' | Tooltip position, possible values: 'average', 'top', 'bottom' | 245 | | |  | | 246 | | data-line-fields | undefined | Comma separated list of fields to be show in the line plot. If undefined, all field shown. | 247 | | data-line-fill | false | Fill area under the line. | 248 | | data-line-show-xaxis | true | Show x-axis. | 249 | | data-line-xaxis-field | undefined | Data field to be used on x-axis. | 250 | | data-line-xaxis-sorted | false | Should the data be sorted based on x-axis field. | 251 | | data-line-xaxis-timeunit | undefined | Time unit used. Possible values e.g. minute,hour,day,month,year | 252 | | data-line-xaxis-timestepsize | undefined | Step size. | 253 | | data-line-xaxis-gridlines | true | Show x-axis gridlines. | 254 | | data-line-yaxis-beginatzero | false | Start y-axis from zero. | 255 | | data-line-yaxis-label | undefined | Label for y-axis. | 256 | | data-line-yaxis-scale | undefined | Scale for y-axis. Possible values 'log', 'log_unit', 'log_exp', 'log10', 'log10_unit', and 'log10_exp' | 257 | | data-line-yaxis-gridlines | true | Show y-axis gridlines. | 258 | | data-line-height | 240 | Height of a visualization canvas. | 259 | | data-line-show-point | false | Show data points. | 260 | | data-line-point-radius | 4 | Data point radius. | 261 | | data-line-point-radius-hover | 4 | Data point radius when mouse on top of it. | 262 | | data-line-show-line | true | Show line between data points. | 263 | | data-line-show-vertical-indicator | true | Show vertical indicator line. | 264 | | data-line-vertical-indicator-linewidth | 4 | Vertical indicator line width. | 265 | | data-line-vertical-indicator-stroke | rgba(160,160,160,0.5) | Vertical indicator line color. | 266 | | data-line-show-horizontal-indicator | true | Show horizontal indicator line. | 267 | | data-line-horizontal-indicator-linewidth | 4 | Horizontal indicator line width. | 268 | | data-line-horizontal-indicator-stroke | rgba(160,160,160,0.5) | Horizontal indicator line color. | 269 | | data-line-horizontal-indicator-fill | rgba(160,160,160,0.5) | Horizontal indicator fill color. | 270 | | data-line-show-horizontal-highlights | true | Show horizontal highlights.   | 271 | | data-line-horizontal-highlights | undefined | Data structure to contain data for highlights in format: value1;title;color,value2;title2;color | 272 | | data-line-horizontal-highlight-opacity | 0.1 | Line opacity. | 273 | | data-line-horizontal-highlight-linewidth | 1 | Line width. | 274 | | data-line-horizontal-highlight-stroke | rgba(112, 187, 225 ,1.0) | Line color. | 275 | | data-line-horizontal-highlight-label-position | 'bottom-right' | Line title position, possible values: top-left, top-right, bottom-left, bottom-right | 276 | | data-line-horizontal-highlight-label-fill | #000 | Line title color. | 277 | | data-line-horizontal-highlight-label-size | '12px' | Line title size. | 278 | | data-line-horizontal-highlight-label-opacity | 0.2 | Line title opacity. | 279 | | data-line-show-vertical-segments | undefined | Show vertical segments. | 280 | | data-line-vertical-segments | undefined | Data structure to contain data for segments in format: start_value1;stop_value1;title;color,start_value2;stop_value2;title2;color | 281 | | data-line-vertical-segment-opacity | 0.1 | Segment opacity. | 282 | | data-line-vertical-segment-label-position | 'bottom-right' | Segment title position, possible values: top, bottom, middle | 283 | | data-line-vertical-segment-label-fill | #000 | Line title color. | 284 | | data-line-vertical-segment-label-size | '12px' | Line title size. | 285 | | data-line-vertical-segment-label-opacity | 0.2 | Line title opacity. | 286 | | data-line-show-error-bar | true | Show error bar for data point (if interval is defined). | 287 | | data-line-error-bar-linewidth | 2 | Error bar line width. | 288 | | data-line-error-bar-tipwidth | undefined | Error bar tip width. If undefined give, then tip width is defined automatically. | 289 | | data-line-error-bar-stroke | undefined | Error bar line color. If undefined given, then item/row color is used. | 290 | | data-line-show-interval | true | Show interval. | 291 | | data-line-interval-linewidth | 0.4 | Interval line width. | 292 | | data-line-hline | false | Show horizontal line, value got from data file. Use hline field to set. | 293 | | data-line-tooltip-position | 'top' | Tooltip position, possible values: average, top, bottom | 294 | | data-line-show-legend | true | Show legend. | 295 | | data-line-legend-position | 'right' | Legend position, possible values: top, bottom, left, right | 296 | | |  | | 297 | | data-scatter-height | 240 | Height of a visualization canvas. | 298 | | data-scatter-x | undefined | Id of a column used as default data source for a scatter plot. | 299 | | data-scatter-y | undefined | Id of a column used as default data source for a scatter plot. | 300 | | data-scatter-point-radius | 5 | Data point radius. | 301 | | data-scatter-point-radius-hover | 10 | Data point radius when mouse on top of it. | 302 | | data-scatter-show-vertical-indicator | true | Show vertical indicator line. | 303 | | data-scatter-vertical-indicator-linewidth | 4 | Vertical indicator line width. | 304 | | data-scatter-vertical-indicator-stroke | rgba(160,160,160,0.5) | Vertical indicator line color. | 305 | | data-scatter-show-horizontal-indicator | true | Show horizontal indicator line. | 306 | | data-scatter-horizontal-indicator-linewidth | 4 | Horizontal indicator line width. | 307 | | data-scatter-horizontal-indicator-stroke | rgba(160,160,160,0.5) | Horizontal indicator line color. | 308 | | data-scatter-horizontal-indicator-fill | rgba(160,160,160,0.5) | Horizontal indicator fill color. | 309 | | data-scatter-show-error-bar | true | Show error bar for data point (if interval is defined). | 310 | | data-scatter-error-bar-linewidth | 1 | Error bar line width. | 311 | | data-scatter-error-bar-tipwidth | 8 | Error bar tip width. If undefined give, then tip width is defined automatically. | 312 | | data-scatter-error-bar-stroke | rgba(0,0,0,0.2) | Error bar line color. If undefined given, then item/row color is used. | 313 | | data-scatter-show-error-box | true | Show bounding box for error. | 314 | | data-scatter-error-box-fill | rgba(0,0,0,0.05) | Error bounding box fill color. | 315 | | |  | | 316 | | data-comparison-height | 240 | Height of a visualization canvas. | 317 | | data-comparison-row-id-field | undefined | Id of a column used to populate selection dropdown. | 318 | | data-comparison-sets-json | undefined | Comparison sets in JSON format. | 319 | | data-comparison-active-set | undefined | Preselected set. | 320 | | data-comparison-a-row | undefined | Preselected row A | 321 | | data-comparison-b-row | undefined | Preselected row B | 322 | | data-comparison-show-error-bar | true | Show error bar for data point (if interval is defined). | 323 | | data-comparison-error-bar-linewidth | 2 | Error bar line width. | 324 | | data-comparison-error-bar-tipwidth | 8 | Error bar tip width. If undefined give, then tip width is defined automatically. | 325 | | data-comparison-error-bar-stroke | rgba(0,0,0,0.2) | Error bar line color. If undefined given, then item/row color is used. | 326 | | |  | | 327 | 328 | #### Comparison sets json-format 329 | 330 | { 331 | "title": "title of a set", 332 | "data_axis_title": "custom value for axis", 333 | "fields": ["column_field1", "column_field1"], 334 | "field_titles": ["custom title 1","custom title 2"] 335 | } 336 | 337 | `field_titles` is an optional field. 338 | 339 | ### Header options 340 | 341 | | Attribute | Default | Description | 342 | | ---------------------- |--------------------- | ----------------------------------------------------------------------------- | 343 | | data-tag | undefined | Groups values in the column and colors them. | 344 | | data-postfix | '' | String to be added at the end of all values. Use for units. | 345 | | data-chartable | undefined | Can the column be select for visualization. | 346 | | data-beginatzero | undefined | 0 is included in when values from column are visualized. | 347 | | data-value-type | undefined | Value formatter: e.g. int, int-percentage, float1, float1-percentage, float2, float2-percentage, float3, float3-percentage, float4, float4-percentage, list, url, ref, anchor | 348 | | data-axis-scale | 'linear' | Axis scale type, possible values: 'log', 'log_unit', 'log_exp', 'log10', 'log10_unit', and 'log10_exp' | 349 | 350 | ### Row options 351 | 352 | | Attribute | Default | Description | 353 | | ---------------------- |--------------------- | ----------------------------------------------------------------------------- | 354 | | data-hline | undefined | Indicate row to be used draw horizontal line in bar chart. | 355 | 356 | ## Bootstrap parameters 357 | 358 | Essential Bootstraptable specific parameters are collected here for completeness. For full reference, see Bootstraptable.js documentation. 359 | 360 | ### Table options 361 | 362 | | Attribute | Default | Description | 363 | | ---------------------- |--------------------- | ----------------------------------------------------------------------------- | 364 | | data-page-list | [10, 25, 50, 100] | When set pagination property, initialize the page size selecting list. If you include the 'All' option, all the records will be shown in your table. | 365 | | data-pagination | true | True to show a pagination toolbar on table bottom. | 366 | | data-show-columns | false | True to show the columns drop down list. | 367 | | data-show-pagination-switch | true | True to show the pagination switch button. | 368 | | data-show-toggle | false | True to show the toggle button to toggle table / card view. | 369 | | data-sort-name | undefined | Defines which column will be sorted. | 370 | | data-sort-order | 'asc' | Defines the column sort order, can only be 'asc' or 'desc'. | 371 | | data-sort-order | 'asc' | Defines the column sort order, can only be 'asc' or 'desc'. | 372 | | data-striped | true | True to stripe the rows. | 373 | 374 | ### Header options 375 | 376 | | Attribute | Default | Description | 377 | | ---------------------- |--------------------- | ----------------------------------------------------------------------------- | 378 | | data-visible | true | False to hide the columns item. | 379 | | data-sortable | false | True to allow the column can be sorted. | 380 | | data-formatter | undefined | The context (this) is the column Object. The cell formatter function, take three parameters: value: the field value. row: the row record data. index: the row index. | 381 | | data-field | undefined | The column field name. | 382 | 383 | ## Changelog 384 | 385 | **v1.1.1 (master)** 386 | 387 | - Add logarithmic scales to bar and scatter plots. 388 | - Add new value formatters float1-exp, float2-exp, float3-exp, float4-exp, numeric-unit. 389 | - Update line plot to handle time. 390 | - Update line plot to support logarithmic y-axis. 391 | - Update line plot to support vertical segments and horizontal highlight lines. 392 | - Update bar plot to support horizontal highlight lines. 393 | - Add parameter to hide toolbar and table. 394 | 395 | **v1.1.0** 396 | 397 | - Add inline data visualizations to the table. 398 | - Add line plot type. 399 | - Add error bars to bar, scatter, line, and comparison plots. 400 | - Add two way data highlighting, hovering data point in graph will now highlight corresponding data row. 401 | - Add horizontal and vertical lines when hovering over data point. 402 | 403 | **v1.0.5** 404 | 405 | - Add more value formatters (e.g. interval, and plusminus) 406 | 407 | **v1.0.4** 408 | 409 | - Fix click event triggering for dynamically created elements 410 | 411 | **v1.0.3** 412 | 413 | - Minor edit to handle negative values in ValueSorter 414 | 415 | **v1.0.2** 416 | 417 | - Fix default chart type handling 418 | 419 | **v1.0.1** 420 | 421 | - Fix documentation 422 | 423 | **v1.0.0** 424 | 425 | - Initial release 426 | -------------------------------------------------------------------------------- /css.min/bootstrap-table-filter-control.min.css: -------------------------------------------------------------------------------- 1 | .no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px} -------------------------------------------------------------------------------- /css.min/bootstrap-table.min.css: -------------------------------------------------------------------------------- 1 | .bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #dddddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>thead>tr>th,.bootstrap-table .table.table-no-bordered>tbody>tr>td{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #dddddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #dddddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #dddddd}.fixed-table-container thead th:focus{outline:0 solid transparent}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container thead th .th-inner,.fixed-table-container tbody td .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==')}.fixed-table-container thead th .desc{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=')}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #dddddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox{text-align:center}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type="radio"],.fixed-table-container input[type="checkbox"]{margin:0 auto!important}.fixed-table-container .no-records-found{text-align:center}.fixed-table-pagination div.pagination,.fixed-table-pagination .pagination-detail{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .search,.fixed-table-toolbar .columns{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:bold;display:inline-block;min-width:30%;text-align:left!important}.fixed-table-body thead th .th-inner{box-sizing:border-box}.table th,.table td{vertical-align:middle;box-sizing:border-box}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-toolbar:after,.fixed-table-pagination:after{content:"";display:block;clear:both} -------------------------------------------------------------------------------- /css.min/datatable.bundle.min.css: -------------------------------------------------------------------------------- 1 | .sep-left-cell{border-left:solid 1px #000!important}.sep-right-cell{border-right:solid 1px #000!important}.highlight-cell{background-color:#FCF8E3!important}td.sm-cell{font-size:80%}td.xs-cell{font-size:60%}.datatable{margin-top:10px;margin-bottom:10px}.datatable-toolbar{margin-top:3px;margin-bottom:3px}.datatable a.icon,.datatable a.icon:hover,a.datatable-icon,a.datatable-icon:hover{border:none!important;text-decoration:none!important}a.datatable-link{text-decoration:none!important;border-bottom:none!important}a.datatable-link:hover{text-decoration:none!important;border-bottom:1px dotted!important}.datatable .dropdown-menu{height:auto;max-height:200px;overflow-x:hidden}table.datatable .hidden{display:none}.form-control,.no-filter-control{height:24px;padding:0px}.datatable-toolbar .selector-button,.datatable .selector-button{min-width:80px!important}.datatable-toolbar .selector-button-large,.datatable .selector-button-large{width:160px!important}.datatable-toolbar .selector-button-xlarge,.datatable .selector-button-xlarge{width:320px!important}.label-tag{font-weight:normal;color:black!important;font-size:1em;display:block;margin:3px}.label-tag-default{background-color:rgba(34,34,34,0.3)}.label-tag1{background-color:rgba(77,77,77,0.3)}.label-tag2{background-color:rgba(93,165,218,0.3)}.label-tag3{background-color:rgba(250,164,58,0.3)}.label-tag4{background-color:rgba(96,189,104,0.3)}.label-tag5{background-color:rgba(241,124,176,0.3)}.label-tag6{background-color:rgba(178,145,47,0.3)}.label-tag7{background-color:rgba(178,118,178,0.3)}.label-tag8{background-color:rgba(222,207,63,0.3)}.label-tag9{background-color:rgba(241,88,84,0.3)}.label-tag10{background-color:rgba(3,192,60,0.3)}.label-tag11{background-color:rgba(0,140,186,0.3)}.label-tag12{background-color:rgba(174,198,207,0.3)}.label-tag13{background-color:rgba(255,179,71,0.3)}.label-tag14{background-color:rgba(244,154,194,0.3)}.label-tag15{background-color:rgba(109,109,109,0.3)}.no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px}.datatable-horizontal-bar{}.datatable-horizontal-bar-thin{height:10px!important;margin-bottom:5px!important}.datatable-inline-vertical-bar{}.canvas-cell{padding-top:4px!important;padding-bottom:4px!important;vertical-align:middle!important}table.datatable td.canvas-cell{text-align:left!important}table.datatable .hover{background-image:url("overlay.png")}table.datatable .row-hover{background-color:#e8e8e8!important}table.datatable tr.success>td.row-hover{background-color:#d0e9c6!important}table.datatable tr.info>td.row-hover{background-color:#c4e3f3!important}table.datatable tr.warning>td.row-hover{background-color:#faf2cc!important}table.datatable tr.danger>td.row-hover{background-color:#ebcccc!important}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #dddddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>thead>tr>th,.bootstrap-table .table.table-no-bordered>tbody>tr>td{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #dddddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #dddddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #dddddd}.fixed-table-container thead th:focus{outline:0 solid transparent}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container thead th .th-inner,.fixed-table-container tbody td .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==')}.fixed-table-container thead th .desc{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=')}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #dddddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox{text-align:center}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type="radio"],.fixed-table-container input[type="checkbox"]{margin:0 auto!important}.fixed-table-container .no-records-found{text-align:center}.fixed-table-pagination div.pagination,.fixed-table-pagination .pagination-detail{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .search,.fixed-table-toolbar .columns{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:bold;display:inline-block;min-width:30%;text-align:left!important}.fixed-table-body thead th .th-inner{box-sizing:border-box}.table th,.table td{vertical-align:middle;box-sizing:border-box}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-toolbar:after,.fixed-table-pagination:after{content:"";display:block;clear:both}.no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px} -------------------------------------------------------------------------------- /css.min/datatable.min.css: -------------------------------------------------------------------------------- 1 | .sep-left-cell{border-left:solid 1px #000!important}.sep-right-cell{border-right:solid 1px #000!important}.highlight-cell{background-color:#FCF8E3!important}td.sm-cell{font-size:80%}td.xs-cell{font-size:60%}.datatable{margin-top:10px;margin-bottom:10px}.datatable-toolbar{margin-top:3px;margin-bottom:3px}.datatable a.icon,.datatable a.icon:hover,a.datatable-icon,a.datatable-icon:hover{border:none!important;text-decoration:none!important}a.datatable-link{text-decoration:none!important;border-bottom:none!important}a.datatable-link:hover{text-decoration:none!important;border-bottom:1px dotted!important}.datatable .dropdown-menu{height:auto;max-height:200px;overflow-x:hidden}table.datatable .hidden{display:none}.form-control,.no-filter-control{height:24px;padding:0px}.datatable-toolbar .selector-button,.datatable .selector-button{min-width:80px!important}.datatable-toolbar .selector-button-large,.datatable .selector-button-large{width:160px!important}.datatable-toolbar .selector-button-xlarge,.datatable .selector-button-xlarge{width:320px!important}.label-tag{font-weight:normal;color:black!important;font-size:1em;display:block;margin:3px}.label-tag-default{background-color:rgba(34,34,34,0.3)}.label-tag1{background-color:rgba(77,77,77,0.3)}.label-tag2{background-color:rgba(93,165,218,0.3)}.label-tag3{background-color:rgba(250,164,58,0.3)}.label-tag4{background-color:rgba(96,189,104,0.3)}.label-tag5{background-color:rgba(241,124,176,0.3)}.label-tag6{background-color:rgba(178,145,47,0.3)}.label-tag7{background-color:rgba(178,118,178,0.3)}.label-tag8{background-color:rgba(222,207,63,0.3)}.label-tag9{background-color:rgba(241,88,84,0.3)}.label-tag10{background-color:rgba(3,192,60,0.3)}.label-tag11{background-color:rgba(0,140,186,0.3)}.label-tag12{background-color:rgba(174,198,207,0.3)}.label-tag13{background-color:rgba(255,179,71,0.3)}.label-tag14{background-color:rgba(244,154,194,0.3)}.label-tag15{background-color:rgba(109,109,109,0.3)}.no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px}.datatable-horizontal-bar{}.datatable-horizontal-bar-thin{height:10px!important;margin-bottom:5px!important}.datatable-inline-vertical-bar{}.canvas-cell{padding-top:4px!important;padding-bottom:4px!important;vertical-align:middle!important}table.datatable td.canvas-cell{text-align:left!important}table.datatable .hover{background-image:url("overlay.png")}table.datatable .row-hover{background-color:#e8e8e8!important}table.datatable tr.success>td.row-hover{background-color:#d0e9c6!important}table.datatable tr.info>td.row-hover{background-color:#c4e3f3!important}table.datatable tr.warning>td.row-hover{background-color:#faf2cc!important}table.datatable tr.danger>td.row-hover{background-color:#ebcccc!important} -------------------------------------------------------------------------------- /css/bootstrap-table-filter-control.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: Dennis Hernández 3 | * @webSite: http://djhvscf.github.io/Blog 4 | * @version: v2.1.1 5 | */ 6 | 7 | .no-filter-control { 8 | height: 34px; 9 | } 10 | 11 | .filter-control { 12 | margin: 0 2px 2px 2px; 13 | } -------------------------------------------------------------------------------- /css/bootstrap-table.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @author zhixin wen 3 | * version: 1.11.0 4 | * https://github.com/wenzhixin/bootstrap-table/ 5 | */ 6 | 7 | .bootstrap-table .table { 8 | margin-bottom: 0 !important; 9 | border-bottom: 1px solid #dddddd; 10 | border-collapse: collapse !important; 11 | border-radius: 1px; 12 | } 13 | 14 | .bootstrap-table .table:not(.table-condensed), 15 | .bootstrap-table .table:not(.table-condensed) > tbody > tr > th, 16 | .bootstrap-table .table:not(.table-condensed) > tfoot > tr > th, 17 | .bootstrap-table .table:not(.table-condensed) > thead > tr > td, 18 | .bootstrap-table .table:not(.table-condensed) > tbody > tr > td, 19 | .bootstrap-table .table:not(.table-condensed) > tfoot > tr > td { 20 | padding: 8px; 21 | } 22 | 23 | .bootstrap-table .table.table-no-bordered > thead > tr > th, 24 | .bootstrap-table .table.table-no-bordered > tbody > tr > td { 25 | border-right: 2px solid transparent; 26 | } 27 | 28 | .bootstrap-table .table.table-no-bordered > tbody > tr > td:last-child { 29 | border-right: none; 30 | } 31 | 32 | .fixed-table-container { 33 | position: relative; 34 | clear: both; 35 | border: 1px solid #dddddd; 36 | border-radius: 4px; 37 | -webkit-border-radius: 4px; 38 | -moz-border-radius: 4px; 39 | } 40 | 41 | .fixed-table-container.table-no-bordered { 42 | border: 1px solid transparent; 43 | } 44 | 45 | .fixed-table-footer, 46 | .fixed-table-header { 47 | overflow: hidden; 48 | } 49 | 50 | .fixed-table-footer { 51 | border-top: 1px solid #dddddd; 52 | } 53 | 54 | .fixed-table-body { 55 | overflow-x: auto; 56 | overflow-y: auto; 57 | height: 100%; 58 | } 59 | 60 | .fixed-table-container table { 61 | width: 100%; 62 | } 63 | 64 | .fixed-table-container thead th { 65 | height: 0; 66 | padding: 0; 67 | margin: 0; 68 | border-left: 1px solid #dddddd; 69 | } 70 | 71 | .fixed-table-container thead th:focus { 72 | outline: 0 solid transparent; 73 | } 74 | 75 | .fixed-table-container thead th:first-child { 76 | border-left: none; 77 | border-top-left-radius: 4px; 78 | -webkit-border-top-left-radius: 4px; 79 | -moz-border-radius-topleft: 4px; 80 | } 81 | 82 | .fixed-table-container thead th .th-inner, 83 | .fixed-table-container tbody td .th-inner { 84 | padding: 8px; 85 | line-height: 24px; 86 | vertical-align: top; 87 | overflow: hidden; 88 | text-overflow: ellipsis; 89 | white-space: nowrap; 90 | } 91 | 92 | .fixed-table-container thead th .sortable { 93 | cursor: pointer; 94 | background-position: right; 95 | background-repeat: no-repeat; 96 | padding-right: 30px; 97 | } 98 | 99 | .fixed-table-container thead th .both { 100 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC'); 101 | } 102 | 103 | .fixed-table-container thead th .asc { 104 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=='); 105 | } 106 | 107 | .fixed-table-container thead th .desc { 108 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= '); 109 | } 110 | 111 | .fixed-table-container th.detail { 112 | width: 30px; 113 | } 114 | 115 | .fixed-table-container tbody td { 116 | border-left: 1px solid #dddddd; 117 | } 118 | 119 | .fixed-table-container tbody tr:first-child td { 120 | border-top: none; 121 | } 122 | 123 | .fixed-table-container tbody td:first-child { 124 | border-left: none; 125 | } 126 | 127 | /* the same color with .active */ 128 | .fixed-table-container tbody .selected td { 129 | background-color: #f5f5f5; 130 | } 131 | 132 | .fixed-table-container .bs-checkbox { 133 | text-align: center; 134 | } 135 | 136 | .fixed-table-container .bs-checkbox .th-inner { 137 | padding: 8px 0; 138 | } 139 | 140 | .fixed-table-container input[type="radio"], 141 | .fixed-table-container input[type="checkbox"] { 142 | margin: 0 auto !important; 143 | } 144 | 145 | .fixed-table-container .no-records-found { 146 | text-align: center; 147 | } 148 | 149 | .fixed-table-pagination div.pagination, 150 | .fixed-table-pagination .pagination-detail { 151 | margin-top: 10px; 152 | margin-bottom: 10px; 153 | } 154 | 155 | .fixed-table-pagination div.pagination .pagination { 156 | margin: 0; 157 | } 158 | 159 | .fixed-table-pagination .pagination a { 160 | padding: 6px 12px; 161 | line-height: 1.428571429; 162 | } 163 | 164 | .fixed-table-pagination .pagination-info { 165 | line-height: 34px; 166 | margin-right: 5px; 167 | } 168 | 169 | .fixed-table-pagination .btn-group { 170 | position: relative; 171 | display: inline-block; 172 | vertical-align: middle; 173 | } 174 | 175 | .fixed-table-pagination .dropup .dropdown-menu { 176 | margin-bottom: 0; 177 | } 178 | 179 | .fixed-table-pagination .page-list { 180 | display: inline-block; 181 | } 182 | 183 | .fixed-table-toolbar .columns-left { 184 | margin-right: 5px; 185 | } 186 | 187 | .fixed-table-toolbar .columns-right { 188 | margin-left: 5px; 189 | } 190 | 191 | .fixed-table-toolbar .columns label { 192 | display: block; 193 | padding: 3px 20px; 194 | clear: both; 195 | font-weight: normal; 196 | line-height: 1.428571429; 197 | } 198 | 199 | .fixed-table-toolbar .bs-bars, 200 | .fixed-table-toolbar .search, 201 | .fixed-table-toolbar .columns { 202 | position: relative; 203 | margin-top: 10px; 204 | margin-bottom: 10px; 205 | line-height: 34px; 206 | } 207 | 208 | .fixed-table-pagination li.disabled a { 209 | pointer-events: none; 210 | cursor: default; 211 | } 212 | 213 | .fixed-table-loading { 214 | display: none; 215 | position: absolute; 216 | top: 42px; 217 | right: 0; 218 | bottom: 0; 219 | left: 0; 220 | z-index: 99; 221 | background-color: #fff; 222 | text-align: center; 223 | } 224 | 225 | .fixed-table-body .card-view .title { 226 | font-weight: bold; 227 | display: inline-block; 228 | min-width: 30%; 229 | text-align: left !important; 230 | } 231 | 232 | /* support bootstrap 2 */ 233 | .fixed-table-body thead th .th-inner { 234 | box-sizing: border-box; 235 | } 236 | 237 | .table th, .table td { 238 | vertical-align: middle; 239 | box-sizing: border-box; 240 | } 241 | 242 | .fixed-table-toolbar .dropdown-menu { 243 | text-align: left; 244 | max-height: 300px; 245 | overflow: auto; 246 | } 247 | 248 | .fixed-table-toolbar .btn-group > .btn-group { 249 | display: inline-block; 250 | margin-left: -1px !important; 251 | } 252 | 253 | .fixed-table-toolbar .btn-group > .btn-group > .btn { 254 | border-radius: 0; 255 | } 256 | 257 | .fixed-table-toolbar .btn-group > .btn-group:first-child > .btn { 258 | border-top-left-radius: 4px; 259 | border-bottom-left-radius: 4px; 260 | } 261 | 262 | .fixed-table-toolbar .btn-group > .btn-group:last-child > .btn { 263 | border-top-right-radius: 4px; 264 | border-bottom-right-radius: 4px; 265 | } 266 | 267 | .bootstrap-table .table > thead > tr > th { 268 | vertical-align: bottom; 269 | border-bottom: 1px solid #ddd; 270 | } 271 | 272 | /* support bootstrap 3 */ 273 | .bootstrap-table .table thead > tr > th { 274 | padding: 0; 275 | margin: 0; 276 | } 277 | 278 | .bootstrap-table .fixed-table-footer tbody > tr > td { 279 | padding: 0 !important; 280 | } 281 | 282 | .bootstrap-table .fixed-table-footer .table { 283 | border-bottom: none; 284 | border-radius: 0; 285 | padding: 0 !important; 286 | } 287 | 288 | .bootstrap-table .pull-right .dropdown-menu { 289 | right: 0; 290 | left: auto; 291 | } 292 | 293 | /* calculate scrollbar width */ 294 | p.fixed-table-scroll-inner { 295 | width: 100%; 296 | height: 200px; 297 | } 298 | 299 | div.fixed-table-scroll-outer { 300 | top: 0; 301 | left: 0; 302 | visibility: hidden; 303 | width: 200px; 304 | height: 150px; 305 | overflow: hidden; 306 | } 307 | 308 | /* for get correct heights */ 309 | .fixed-table-toolbar:after, .fixed-table-pagination:after { 310 | content: ""; 311 | display: block; 312 | clear: both; 313 | } 314 | -------------------------------------------------------------------------------- /css/datatable.css: -------------------------------------------------------------------------------- 1 | /* Cell decorators */ 2 | .sep-left-cell{ 3 | border-left: solid 1px #000 !important; 4 | } 5 | .sep-right-cell{ 6 | border-right: solid 1px #000 !important; 7 | } 8 | .highlight-cell{ 9 | background-color: #FCF8E3 !important; 10 | } 11 | 12 | td.sm-cell{ 13 | font-size: 80%; 14 | } 15 | td.xs-cell{ 16 | font-size: 60%; 17 | } 18 | 19 | .datatable{ 20 | margin-top: 10px; 21 | margin-bottom: 10px; 22 | } 23 | 24 | .datatable-toolbar{ 25 | margin-top: 3px; 26 | margin-bottom: 3px; 27 | } 28 | 29 | .datatable a.icon, .datatable a.icon:hover, a.datatable-icon, a.datatable-icon:hover { 30 | border: none !important; 31 | text-decoration: none !important; 32 | } 33 | 34 | a.datatable-link{ 35 | text-decoration: none !important; 36 | border-bottom: none !important; 37 | } 38 | 39 | a.datatable-link:hover{ 40 | text-decoration: none !important; 41 | border-bottom: 1px dotted !important; 42 | } 43 | 44 | .datatable .dropdown-menu { 45 | height: auto; 46 | max-height: 200px; 47 | overflow-x: hidden; 48 | } 49 | 50 | table.datatable .hidden{ 51 | display: none; 52 | } 53 | 54 | .form-control, .no-filter-control{ 55 | height:24px; 56 | padding: 0px; 57 | } 58 | 59 | .datatable-toolbar .selector-button, .datatable .selector-button{ 60 | min-width: 80px !important; 61 | } 62 | 63 | .datatable-toolbar .selector-button-large, .datatable .selector-button-large{ 64 | width: 160px !important; 65 | } 66 | 67 | .datatable-toolbar .selector-button-xlarge, .datatable .selector-button-xlarge{ 68 | width: 320px !important; 69 | } 70 | 71 | /* Tag colors */ 72 | .label-tag{ 73 | font-weight: normal; 74 | color: black !important; 75 | font-size:1em; 76 | display:block; 77 | margin: 3px; 78 | } 79 | .label-tag-default{ 80 | background-color: rgba(34, 34, 34, 0.3); /* #4D4D4D gray */ 81 | } 82 | .label-tag1{ 83 | background-color: rgba(77, 77, 77, 0.3); /* #4D4D4D gray */ 84 | } 85 | .label-tag2{ 86 | background-color: rgba(93, 165, 218, 0.3); /* #5DA5DA blue */ 87 | } 88 | .label-tag3{ 89 | background-color: rgba(250, 164, 58, 0.3); /* #FAA43A orange */ 90 | } 91 | .label-tag4{ 92 | background-color: rgba(96, 189, 104, 0.3); /* #60BD68 green */ 93 | } 94 | .label-tag5{ 95 | background-color: rgba(241, 124, 176, 0.3); /* #F17CB0 pink */ 96 | } 97 | .label-tag6{ 98 | background-color: rgba(178, 145, 47, 0.3); /* #B2912F brown */ 99 | } 100 | .label-tag7{ 101 | background-color: rgba(178, 118, 178, 0.3); /* #B276B2 purple */ 102 | } 103 | .label-tag8{ 104 | background-color: rgba(222, 207, 63, 0.3); /* #DECF3F yellow */ 105 | } 106 | .label-tag9{ 107 | background-color: rgba(241, 88, 84, 0.3); /* #F15854 red */ 108 | } 109 | .label-tag10{ 110 | background-color: rgba(3, 192, 60, 0.3); /* #03C03C */ 111 | } 112 | .label-tag11{ 113 | background-color: rgba(0, 140, 186, 0.3); /* #008cba */ 114 | } 115 | .label-tag12{ 116 | background-color: rgba(174, 198, 207, 0.3); /* #AEC6CF */ 117 | } 118 | .label-tag13{ 119 | background-color: rgba(255, 179, 71, 0.3); /* #FFB347 */ 120 | } 121 | .label-tag14{ 122 | background-color: rgba(244, 154, 194, 0.3); /* #F49AC2 */ 123 | } 124 | .label-tag15{ 125 | background-color: rgba(109, 109, 109, 0.3); /* #6D6D6D gray */ 126 | } 127 | 128 | .no-filter-control { 129 | height: 34px; 130 | } 131 | 132 | .filter-control { 133 | margin: 0 2px 2px 2px; 134 | } 135 | 136 | .datatable-horizontal-bar{} 137 | 138 | .datatable-horizontal-bar-thin{ 139 | height: 10px !important; 140 | margin-bottom: 5px !important; 141 | } 142 | 143 | .datatable-inline-vertical-bar{} 144 | 145 | .canvas-cell{ 146 | padding-top: 4px !important; 147 | padding-bottom: 4px !important; 148 | vertical-align: middle !important; 149 | } 150 | 151 | table.datatable td.canvas-cell{ 152 | text-align: left !important; 153 | } 154 | 155 | table.datatable .hover{ 156 | background-image: url("overlay.png"); 157 | } 158 | table.datatable .row-hover{ 159 | background-color: #e8e8e8 !important; 160 | } 161 | table.datatable tr.success > td.row-hover { 162 | background-color: #d0e9c6 !important; 163 | } 164 | table.datatable tr.info > td.row-hover { 165 | background-color: #c4e3f3 !important; 166 | } 167 | table.datatable tr.warning > td.row-hover { 168 | background-color: #faf2cc !important; 169 | } 170 | table.datatable tr.danger > td.row-hover { 171 | background-color: #ebcccc !important; 172 | } -------------------------------------------------------------------------------- /css/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/toni-heittola/js-datatable/fb8efed1f6a2a7d608b83a3f075073f538493470/css/overlay.png -------------------------------------------------------------------------------- /docs/data1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "code": "Red", 4 | "accuracy_eval": "74.4", 5 | "accuracy_dev": "74.1" 6 | }, 7 | { 8 | "code": "Blue", 9 | "accuracy_eval": "84.1", 10 | "accuracy_dev": "79.2" 11 | }, 12 | { 13 | "code": "White", 14 | "accuracy_eval": "83.1", 15 | "accuracy_dev": "89.3" 16 | }, 17 | { 18 | "code": "Purple", 19 | "accuracy_eval": "80.0", 20 | "accuracy_dev": "67.5" 21 | }, 22 | { 23 | "code": "Black", 24 | "accuracy_eval": "87.7", 25 | "accuracy_dev": "86.2" 26 | }, 27 | { 28 | "code": "Baseline", 29 | "accuracy_eval": "77.2", 30 | "accuracy_dev": "72.5", 31 | "row_css": "info", 32 | "baseline": "true" 33 | }, 34 | { 35 | "code": "Green", 36 | "accuracy_eval": "76.4", 37 | "accuracy_dev": "80.0" 38 | }, 39 | { 40 | "code": "Pink", 41 | "accuracy_eval": "73.1", 42 | "accuracy_dev": "75.0" 43 | }, 44 | { 45 | "code": "Grey", 46 | "accuracy_eval": "62.8", 47 | "accuracy_dev": "59.0" 48 | }, 49 | { 50 | "code": "Lime", 51 | "accuracy_eval": "88.7", 52 | "accuracy_dev": "80.8" 53 | }, 54 | { 55 | "code": "Cyan", 56 | "accuracy_eval": "88.7", 57 | "accuracy_dev": "" 58 | }, 59 | { 60 | "code": "Brown", 61 | "accuracy_eval": "83.3", 62 | "accuracy_dev": "79.5" 63 | }, 64 | { 65 | "code": "Yellow", 66 | "accuracy_eval": "89.7", 67 | "accuracy_dev": "89.9" 68 | }, 69 | { 70 | "code": "Beige", 71 | "accuracy_eval": "76.2", 72 | "accuracy_dev": "" 73 | }, 74 | { 75 | "code": "Red", 76 | "accuracy_eval": "56.2", 77 | "accuracy_dev": "78.8" 78 | } 79 | ] -------------------------------------------------------------------------------- /docs/data1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | - code: Red 3 | accuracy_eval: 74.4 4 | accuracy_dev: 74.1 5 | 6 | - code: Blue 7 | accuracy_eval: 84.1 8 | accuracy_dev: 79.2 9 | 10 | - code: White 11 | accuracy_eval: 83.1 12 | accuracy_dev: 89.3 13 | 14 | - code: Purple 15 | accuracy_eval: 80.0 16 | accuracy_dev: 67.5 17 | 18 | - code: Black 19 | accuracy_eval: 87.7 20 | accuracy_dev: 86.2 21 | 22 | - code: Baseline 23 | accuracy_eval: 77.2 24 | accuracy_dev: 72.5 25 | row_css: info 26 | baseline: true 27 | 28 | - code: Green 29 | accuracy_eval: 76.4 30 | accuracy_dev: 80.0 31 | 32 | - code: Pink 33 | accuracy_eval: 73.1 34 | accuracy_dev: 75.0 35 | 36 | - code: Grey 37 | accuracy_eval: 62.8 38 | accuracy_dev: 59.0 39 | 40 | - code: Lime 41 | accuracy_eval: 88.7 42 | accuracy_dev: 80.8 43 | 44 | - code: Cyan 45 | accuracy_eval: 88.7 46 | accuracy_dev: 47 | 48 | - code: Brown 49 | accuracy_eval: 83.3 50 | accuracy_dev: 79.5 51 | 52 | - code: Yellow 53 | accuracy_eval: 89.7 54 | accuracy_dev: 89.9 55 | 56 | - code: Beige 57 | accuracy_eval: 76.2 58 | accuracy_dev: 59 | 60 | - code: Red 61 | accuracy_eval: 56.2 62 | accuracy_dev: 78.8 63 | -------------------------------------------------------------------------------- /docs/data2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "code": "Red", 4 | "value1": "12", 5 | "value2": "22", 6 | "value3": "5", 7 | "value4": "34", 8 | "list": "item1,item2,item3", 9 | "anchor": "parameters", 10 | "url": "https://www.google.com;Google 1,https://www.google.com;Google 2", 11 | "ref": "http://asmp.eurasipjournals.com/content/pdf/1687-4722-2013-1.pdf;Heittola2013,http://www.cs.tut.fi/~heittolt/pubs/chime2011_heittola.pdf;Heittola2011", 12 | "feature1": "square", 13 | "feature2": "triangle", 14 | "row_css": "danger" 15 | }, 16 | { 17 | "code": "Blue", 18 | "value1": "62", 19 | "value2": "42", 20 | "value3": "8", 21 | "value4": "64", 22 | "list": "item1", 23 | "ref": "http://asmp.eurasipjournals.com/content/pdf/1687-4722-2013-1.pdf;Heittola2013", 24 | "feature1": "circle", 25 | "feature2": "triangle", 26 | "row_css": "warning" 27 | }, 28 | { 29 | "code": "Black", 30 | "value1": "18", 31 | "value2": "42", 32 | "value3": "12", 33 | "value4": "34", 34 | "feature1": "square", 35 | "feature2": "circle", 36 | "row_css": "success" 37 | }, 38 | { 39 | "code": "White", 40 | "value1": "18", 41 | "value2": "37", 42 | "value3": "21", 43 | "value4": "14", 44 | "anchor": "parameters", 45 | "url": "https://www.google.com", 46 | "feature1": "triangle", 47 | "feature2": "square", 48 | "row_css": "info" 49 | }, 50 | { 51 | "code": "Purple", 52 | "value1": "12", 53 | "value2": "22", 54 | "value3": "18", 55 | "value4": "44", 56 | "list": "item1,item2,item3", 57 | "anchor": "parameters", 58 | "url": "https://www.google.com;Google", 59 | "feature1": "square", 60 | "feature2": "circle" 61 | }, 62 | { 63 | "code": "Brown", 64 | "value1": "42", 65 | "value2": "26", 66 | "value3": "48", 67 | "value4": "52", 68 | "list": "item1,item2,item3", 69 | "anchor": "parameters", 70 | "url": "https://www.google.com;Google", 71 | "feature1": "block", 72 | "feature2": "pyramid" 73 | }, 74 | { 75 | "code": "Baseline", 76 | "value1": "62", 77 | "value2": "32", 78 | "value3": "33", 79 | "value4": "34", 80 | "list": "item1,item2,item3", 81 | "anchor": "parameters", 82 | "url": "https://www.google.com;Google", 83 | "feature1": "triangle", 84 | "feature2": "circle", 85 | "row_css": "active", 86 | "baseline": "true" 87 | } 88 | ] 89 | -------------------------------------------------------------------------------- /docs/data2.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | - code: Red 3 | value1: 12 4 | value2: 22 5 | feature1: square 6 | feature2: triangle 7 | row_css: danger 8 | 9 | - code: Blue 10 | value1: 62 11 | value2: 42 12 | feature1: circle 13 | feature2: triangle 14 | row_css: warning 15 | 16 | - code: Black 17 | value1: 18 18 | value2: 42 19 | feature1: square 20 | feature2: circle 21 | row_css: success 22 | 23 | - code: White 24 | value1: 18 25 | value2: 37 26 | feature1: triangle 27 | feature2: square 28 | row_css: info 29 | 30 | - code: Purple 31 | value1: 12 32 | value2: 22 33 | feature1: square 34 | feature2: circle 35 | 36 | - code: Brown 37 | value1: 42 38 | value2: 26 39 | feature1: block 40 | feature2: pyramid 41 | 42 | - code: Baseline 43 | value1: 62 44 | value2: 32 45 | feature1: triangle 46 | feature2: circle 47 | baseline: true 48 | row_css: active -------------------------------------------------------------------------------- /docs/data3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "code": "Red", 4 | "value1": "12", 5 | "value2": "22", 6 | "value3": "5", 7 | "value4": "34", 8 | "feature1": "square", 9 | "feature2": "triangle" 10 | }, 11 | { 12 | "code": "Blue", 13 | "value1": "62", 14 | "value2": "42", 15 | "value3": "8", 16 | "value4": "64", 17 | "feature1": "circle", 18 | "feature2": "triangle" 19 | }, 20 | { 21 | "code": "Black", 22 | "value1": "18", 23 | "value2": "42", 24 | "value3": "12", 25 | "value4": "34", 26 | "feature1": "square", 27 | "feature2": "circle" 28 | }, 29 | { 30 | "code": "White", 31 | "value1": "18", 32 | "value2": "37", 33 | "value3": "21", 34 | "value4": "14", 35 | "feature1": "triangle", 36 | "feature2": "square" 37 | }, 38 | { 39 | "code": "Purple", 40 | "value1": "12", 41 | "value2": "22", 42 | "value3": "18", 43 | "value4": "44", 44 | "feature1": "square", 45 | "feature2": "circle", 46 | "hline": "true", 47 | "row_css": "warning" 48 | }, 49 | { 50 | "code": "Brown", 51 | "value1": "42", 52 | "value2": "26", 53 | "value3": "48", 54 | "value4": "52", 55 | "feature1": "block", 56 | "feature2": "pyramid" 57 | }, 58 | { 59 | "code": "Baseline", 60 | "value1": "62", 61 | "value2": "32", 62 | "value3": "33", 63 | "value4": "34", 64 | "feature1": "triangle", 65 | "feature2": "circle", 66 | "row_css": "info", 67 | "baseline": "true", 68 | "hline": "true" 69 | } 70 | ] -------------------------------------------------------------------------------- /docs/data4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "code": "Red", 4 | "value1": "12.7832", 5 | "value1i": "22.4177177177175 (16.22312312 - 28.612312315435)", 6 | "value1p": "12.7832±5.9124778823", 7 | "value1e": "5.9124778823", 8 | "bar": "62.3;labelA,22.1;labelB,12.1;labelB;#AA0000,54.1;labelB;#AA0000,24.1;labelB,43.2;labelB;#AA0000,12;A,32;B", 9 | "line": "10,42,74;#AA0000,12,25,-35,0,21", 10 | "binary": "1;#0085ff,1;#99FFFF,0;#0085ff,1;#99FFFF,0;#99FFFF,1;#0085ff,1;#0085ff,1;#333,0;#0085ff,0;#AAA,1;#0085ff,1;#0085ff,1;#AAA", 11 | "timeline": "(1:10),(2:20),(3:-30),(4:24),(5:40),(6:65),(7:70),(8:90),(15:-40),(16:65),(17:70),(18:90)", 12 | "hbar": "10,20,50,30" 13 | }, 14 | { 15 | "code": "Blue", 16 | "value1": "62.3456", 17 | "value1i": "62.4497798732 (46.245325234 - 78.6542345124)", 18 | "value1p": "62.3456±25.234412312", 19 | "value1e": "25.234412312", 20 | "bar": "62.3;labelA,22.1;labelB;#AA0000,12.1;labelB,54.1;labelB,24.1;labelB,43.2;labelB,12;A,32;B", 21 | "line": "10,42;#AA0000,74,52;#AA0000,-5,55,32,-21", 22 | "binary": "1;#229922,1;#4455FF,1;#99FFFF,1;#222222,0;#222222,1,1,0,0,0,1,1,1", 23 | "timeline": "(1:30),(4:20),(3:30),(4:24),(5:-40),(16:65),(7:70),(28:90)", 24 | "hbar": "20,30,25,25" 25 | }, 26 | { 27 | "code": "Black", 28 | "value1": "18.65332", 29 | "value1i": "15.487579691999999 (10.891212 - 20.083947384)", 30 | "value1p": "18.65332±5.238i9247788543", 31 | "value1e": "5.2389247788543", 32 | "bar": "62.3,22.1,-12.1,-54.1,24.1,43.2,12,0,32", 33 | "line": "10;#AA0000,-42;#AA0000,-74;#AA0000,52,0,55;#AA0000,32;#AA0000,21;#777", 34 | "binary": "1;text 1A,0;text 2,0;text 3,1;text 4,0;text 5,1;text 6,1;text 7,0;text 8,0;text 9,0,1,1,1", 35 | "timeline": "(1.4:10.2),(2.5:20.3),(3.6:30.4),(5.4:-24.7),(7.5:40.34),(9.6:35.32),(31.3:40.2),(62.4:30.2)", 36 | "hbar": "20,15,20" 37 | } 38 | ] -------------------------------------------------------------------------------- /js.min/bootstrap-table-filter-control.min.js: -------------------------------------------------------------------------------- 1 | (function($){'use strict';var sprintf=$.fn.bootstrapTable.utils.sprintf,objectKeys=$.fn.bootstrapTable.utils.objectKeys;var getOptionsFromSelectControl=function(selectControl){return selectControl.get(selectControl.length-1).options;};var hideUnusedSelectOptions=function(selectControl,uniqueValues){var options=getOptionsFromSelectControl(selectControl);for(var i=0;i").attr("value",value).text($('
').html(text).text()));}};var sortSelectControl=function(selectControl){var $opts=selectControl.find('option:gt(0)');$opts.sort(function(a,b){a=$(a).text().toLowerCase();b=$(b).text().toLowerCase();if($.isNumeric(a)&&$.isNumeric(b)){a=parseFloat(a);b=parseFloat(b);} 2 | return a>b?1:a0){header.find(searchControls).each(function(index,ele){field=$(this).closest('[data-field]').data('field');result=$.grep(that.options.valuesFilterControl,function(valueObj){return valueObj.field===field;});if(result.length>0){$(this).val(result[0].value);setCursorPosition($(this).get(0),result[0].position);}});}};var collectBootstrapCookies=function cookiesRegex(){var cookies=[],foundCookies=document.cookie.match(/(?:bs.table.)(\w*)/g);if(foundCookies){$.each(foundCookies,function(i,cookie){if(/./.test(cookie)){cookie=cookie.split(".").pop();} 7 | if($.inArray(cookie,cookies)===-1){cookies.push(cookie);}});return cookies;}};var initFilterSelectControls=function(that){var data=that.data,itemsPerPage=that.pageTo0;};var z=that.options.pagination?(that.options.sidePagination==='server'?that.pageTo:that.options.totalRows):that.pageTo;$.each(that.header.fields,function(j,field){var column=that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns,field)],selectControl=$(that.$el).find('.bootstrap-table-filter-control-'+escapeID(column.field));if(isColumnSearchableViaSelect(column)&&isFilterDataNotGiven(column)&&hasSelectControlElement(selectControl)){if(selectControl.get(selectControl.length-1).options.length===0){addOptionToSelectControl(selectControl,'','');} 8 | var uniqueValues={};for(var i=0;i
');}else{html.push('
');var nameControl=column.filterControl.toLowerCase();if(column.searchable&&that.options.filterTemplate[nameControl]){addedFilterControl=true;isVisible='visible';html.push(that.options.filterTemplate[nameControl](that,column.field,isVisible,column.filterControlPlaceholder));}} 13 | $.each(header.children().children(),function(i,tr){tr=$(tr);if(tr.data('field')===column.field){tr.find('.fht-cell').append(html.join(''));return false;}});if(column.filterData!==undefined&&column.filterData.toLowerCase()!=='column'){var filterDataType=getFilterDataMethod(filterDataMethods,column.filterData.substring(0,column.filterData.indexOf(':')));var filterDataSource,selectControl;if(filterDataType!==null){filterDataSource=column.filterData.substring(column.filterData.indexOf(':')+1,column.filterData.length);selectControl=$('.bootstrap-table-filter-control-'+escapeID(column.field));addOptionToSelectControl(selectControl,'','');filterDataType(filterDataSource,selectControl);}else{throw new SyntaxError('Error. You should use any of these allowed filter data methods: var, json, url.'+' Use like this: var: {key: "value"}');} 14 | var variableValues,key;switch(filterDataType){case'url':$.ajax({url:filterDataSource,dataType:'json',success:function(data){for(var key in data){addOptionToSelectControl(selectControl,key,data[key]);} 15 | sortSelectControl(selectControl);}});break;case'var':variableValues=window[filterDataSource];for(key in variableValues){addOptionToSelectControl(selectControl,key,variableValues[key]);} 16 | sortSelectControl(selectControl);break;case'jso':variableValues=JSON.parse(filterDataSource);for(key in variableValues){addOptionToSelectControl(selectControl,key,variableValues[key]);} 17 | sortSelectControl(selectControl);break;}}});if(addedFilterControl){header.off('keyup','input').on('keyup','input',function(event){clearTimeout(timeoutId);timeoutId=setTimeout(function(){that.onColumnSearch(event);},that.options.searchTimeOut);});header.off('change','select').on('change','select',function(event){clearTimeout(timeoutId);timeoutId=setTimeout(function(){that.onColumnSearch(event);},that.options.searchTimeOut);});header.off('mouseup','input').on('mouseup','input',function(event){var $input=$(this),oldValue=$input.val();if(oldValue===""){return;} 18 | setTimeout(function(){var newValue=$input.val();if(newValue===""){clearTimeout(timeoutId);timeoutId=setTimeout(function(){that.onColumnSearch(event);},that.options.searchTimeOut);}},1);});if(header.find('.date-filter-control').length>0){$.each(that.columns,function(i,column){if(column.filterControl!==undefined&&column.filterControl.toLowerCase()==='datepicker'){header.find('.date-filter-control.bootstrap-table-filter-control-'+column.field).datepicker(column.filterDatepickerOptions).on('changeDate',function(e){$(sprintf(".%s",e.currentTarget.classList.toString().split(" ").join("."))).val(e.currentTarget.value);$(e.currentTarget).keyup();});}});}}else{header.find('.filterControl').hide();}};var getDirectionOfSelectOptions=function(alignment){alignment=alignment===undefined?'left':alignment.toLowerCase();switch(alignment){case'left':return'ltr';case'right':return'rtl';case'auto':return'auto';default:return'ltr';}};var filterDataMethods={'var':function(filterDataSource,selectControl){var variableValues=window[filterDataSource];for(var key in variableValues){addOptionToSelectControl(selectControl,key,variableValues[key]);} 19 | sortSelectControl(selectControl);},'url':function(filterDataSource,selectControl){$.ajax({url:filterDataSource,dataType:'json',success:function(data){for(var key in data){addOptionToSelectControl(selectControl,key,data[key]);} 20 | sortSelectControl(selectControl);}});},'json':function(filterDataSource,selectControl){var variableValues=JSON.parse(filterDataSource);for(var key in variableValues){addOptionToSelectControl(selectControl,key,variableValues[key]);} 21 | sortSelectControl(selectControl);}};var getFilterDataMethod=function(objFilterDataMethod,searchTerm){var keys=Object.keys(objFilterDataMethod);for(var i=0;i',field,isVisible,placeholder);},select:function(that,field,isVisible){return sprintf('',field,isVisible,getDirectionOfSelectOptions(that.options.alignmentSelectControlOptions));},datepicker:function(that,field,isVisible){return sprintf('',field,isVisible);}},valuesFilterControl:[]});$.extend($.fn.bootstrapTable.COLUMN_DEFAULTS,{filterControl:undefined,filterData:undefined,filterDatepickerOptions:undefined,filterStrictSearch:false,filterStartsWithSearch:false,filterControlPlaceholder:""});$.extend($.fn.bootstrapTable.Constructor.EVENTS,{'column-search.bs.table':'onColumnSearch'});$.extend($.fn.bootstrapTable.defaults.icons,{clear:'glyphicon-trash icon-clear'});$.extend($.fn.bootstrapTable.locales,{formatClearFilters:function(){return'Clear Filters';}});$.extend($.fn.bootstrapTable.defaults,$.fn.bootstrapTable.locales);var BootstrapTable=$.fn.bootstrapTable.Constructor,_init=BootstrapTable.prototype.init,_initToolbar=BootstrapTable.prototype.initToolbar,_initHeader=BootstrapTable.prototype.initHeader,_initBody=BootstrapTable.prototype.initBody,_initSearch=BootstrapTable.prototype.initSearch;BootstrapTable.prototype.init=function(){if(this.options.filterControl){var that=this;if(!Object.keys){objectKeys();} 23 | this.options.valuesFilterControl=[];this.$el.on('reset-view.bs.table',function(){if(!that.options.height){return;} 24 | if(that.$tableHeader.find('select').length>0||that.$tableHeader.find('input').length>0){return;} 25 | createControls(that,that.$tableHeader);}).on('post-header.bs.table',function(){setValues(that);}).on('post-body.bs.table',function(){if(that.options.height){fixHeaderCSS(that);}}).on('column-switch.bs.table',function(){setValues(that);});} 26 | _init.apply(this,Array.prototype.slice.apply(arguments));};BootstrapTable.prototype.initToolbar=function(){this.showToolbar=this.options.filterControl&&this.options.filterShowClear;_initToolbar.apply(this,Array.prototype.slice.apply(arguments));if(this.options.filterControl&&this.options.filterShowClear){var $btnGroup=this.$toolbar.find('>.btn-group'),$btnClear=$btnGroup.find('.filter-show-clear');if(!$btnClear.length){$btnClear=$([''].join('')).appendTo($btnGroup);$btnClear.off('click').on('click',$.proxy(this.clearFilterControl,this));}}};BootstrapTable.prototype.initHeader=function(){_initHeader.apply(this,Array.prototype.slice.apply(arguments));if(!this.options.filterControl){return;} 27 | createControls(this,this.$header);};BootstrapTable.prototype.initBody=function(){_initBody.apply(this,Array.prototype.slice.apply(arguments));initFilterSelectControls(this);};BootstrapTable.prototype.initSearch=function(){_initSearch.apply(this,Array.prototype.slice.apply(arguments));if(this.options.sidePagination==='server'){return;} 28 | var that=this;var fp=$.isEmptyObject(this.filterColumnsPartial)?null:this.filterColumnsPartial;this.data=fp?$.grep(this.data,function(item,i){for(var key in fp){var thisColumn=that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns,key)];var fval=fp[key].toLowerCase();var value=item[key].replace(/<(?:.|\n)*?>/gm,'');var fieldValue=$('').append($.parseHTML(item[key].trim()));var fieldValueList=[];fieldValue.find('.label-tag').each(function(){fieldValueList.push($(this).text().trim().toLowerCase());});if(thisColumn&&thisColumn.searchFormatter){value=$.fn.bootstrapTable.utils.calculateObjectValue(that.header,that.header.formatters[$.inArray(key,that.header.fields)],[value,item,i],value);} 29 | if(thisColumn.filterStrictSearch){if(fieldValueList){if(!($.inArray(key,that.header.fields)!==-1&&$.inArray(fval.toString().toLowerCase(),fieldValueList)!==-1)){return false;}}else{if(!($.inArray(key,that.header.fields)!==-1&&(typeof value==='string'||typeof value==='number')&&value.toString().toLowerCase()===fval.toString().toLowerCase())){return false;}}}else if(thisColumn.filterStartsWithSearch){if(!($.inArray(key,that.header.fields)!==-1&&(typeof value==='string'||typeof value==='number')&&(value+'').toLowerCase().indexOf(fval)===0)){return false;}}else{if(!($.inArray(key,that.header.fields)!==-1&&(typeof value==='string'||typeof value==='number')&&(value+'').toLowerCase().indexOf(fval)!==-1)){return false;}}} 30 | return true;}):this.data;};BootstrapTable.prototype.initColumnSearch=function(filterColumnsDefaults){copyValues(this);if(filterColumnsDefaults){this.filterColumnsPartial=filterColumnsDefaults;this.updatePagination();for(var filter in filterColumnsDefaults){this.trigger('column-search',filter,filterColumnsDefaults[filter]);}}};BootstrapTable.prototype.onColumnSearch=function(event){if($.inArray(event.keyCode,[37,38,39,40])>-1){return;} 31 | copyValues(this);var text=$.trim($(event.currentTarget).val());var $field=$(event.currentTarget).closest('[data-field]').data('field');if($.isEmptyObject(this.filterColumnsPartial)){this.filterColumnsPartial={};} 32 | if(text){this.filterColumnsPartial[$field]=text;}else{delete this.filterColumnsPartial[$field];} 33 | this.searchText+="randomText";this.options.pageNumber=1;this.onSearch(event);this.trigger('column-search',$field,text);};BootstrapTable.prototype.clearFilterControl=function(){if(this.options.filterControl&&this.options.filterShowClear){var that=this,cookies=collectBootstrapCookies(),header=getCurrentHeader(that),table=header.closest('table'),controls=header.find(getCurrentSearchControls(that)),search=that.$toolbar.find('.search input'),timeoutId=0;$.each(that.options.valuesFilterControl,function(i,item){item.value='';});setValues(that);if(controls.length>0){this.filterColumnsPartial={};$(controls[0]).trigger(controls[0].tagName==='INPUT'?'keyup':'change');}else{return;} 34 | if(search.length>0){that.resetSearch();} 35 | if(that.options.sortName!==table.data('sortName')||that.options.sortOrder!==table.data('sortOrder')){var sorter=header.find(sprintf('[data-field="%s"]',$(controls[0]).closest('table').data('sortName')));if(sorter.length>0){that.onSort(table.data('sortName'),table.data('sortName'));$(sorter).find('.sortable').trigger('click');}} 36 | clearTimeout(timeoutId);timeoutId=setTimeout(function(){if(cookies&&cookies.length>0){$.each(cookies,function(i,item){if(that.deleteCookie!==undefined){that.deleteCookie(item);}});}},that.options.searchTimeOut);}};})(jQuery); -------------------------------------------------------------------------------- /js/bootstrap-table-filter-control.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author: Dennis Hernández 3 | * @webSite: http://djhvscf.github.io/Blog 4 | * @version: v2.1.1 5 | */ 6 | 7 | (function ($) { 8 | 9 | 'use strict'; 10 | 11 | var sprintf = $.fn.bootstrapTable.utils.sprintf, 12 | objectKeys = $.fn.bootstrapTable.utils.objectKeys; 13 | 14 | var getOptionsFromSelectControl = function (selectControl) { 15 | return selectControl.get(selectControl.length - 1).options; 16 | }; 17 | 18 | var hideUnusedSelectOptions = function (selectControl, uniqueValues) { 19 | var options = getOptionsFromSelectControl(selectControl); 20 | 21 | for (var i = 0; i < options.length; i++) { 22 | if (options[i].value !== "") { 23 | if (!uniqueValues.hasOwnProperty(options[i].value)) { 24 | selectControl.find(sprintf("option[value='%s']", options[i].value)).hide(); 25 | } else { 26 | selectControl.find(sprintf("option[value='%s']", options[i].value)).show(); 27 | } 28 | } 29 | } 30 | }; 31 | 32 | var addOptionToSelectControl = function (selectControl, value, text) { 33 | value = $.trim(value); 34 | selectControl = $(selectControl.get(selectControl.length - 1)); 35 | if (!existOptionInSelectControl(selectControl, value)) { 36 | selectControl.append($("") 37 | .attr("value", value) 38 | .text($('
').html(text).text())); 39 | } 40 | }; 41 | 42 | var sortSelectControl = function (selectControl) { 43 | var $opts = selectControl.find('option:gt(0)'); 44 | $opts.sort(function (a, b) { 45 | a = $(a).text().toLowerCase(); 46 | b = $(b).text().toLowerCase(); 47 | if ($.isNumeric(a) && $.isNumeric(b)) { 48 | // Convert numerical values from string to float. 49 | a = parseFloat(a); 50 | b = parseFloat(b); 51 | } 52 | return a > b ? 1 : a < b ? -1 : 0; 53 | }); 54 | 55 | selectControl.find('option:gt(0)').remove(); 56 | selectControl.append($opts); 57 | }; 58 | 59 | var existOptionInSelectControl = function (selectControl, value) { 60 | var options = getOptionsFromSelectControl(selectControl); 61 | for (var i = 0; i < options.length; i++) { 62 | if (options[i].value === value.toString()) { 63 | //The value is not valid to add 64 | return true; 65 | } 66 | } 67 | 68 | //If we get here, the value is valid to add 69 | return false; 70 | }; 71 | 72 | var fixHeaderCSS = function (that) { 73 | that.$tableHeader.css('height', '77px'); 74 | }; 75 | 76 | var getCurrentHeader = function (that) { 77 | var header = that.$header; 78 | if (that.options.height) { 79 | header = that.$tableHeader; 80 | } 81 | 82 | return header; 83 | }; 84 | 85 | var getCurrentSearchControls = function (that) { 86 | var searchControls = 'select, input'; 87 | if (that.options.height) { 88 | searchControls = 'table select, table input'; 89 | } 90 | 91 | return searchControls; 92 | }; 93 | 94 | var getCursorPosition = function(el) { 95 | if ($.fn.bootstrapTable.utils.isIEBrowser()) { 96 | if ($(el).is('input')) { 97 | var pos = 0; 98 | if ('selectionStart' in el) { 99 | pos = el.selectionStart; 100 | } else if ('selection' in document) { 101 | el.focus(); 102 | var Sel = document.selection.createRange(); 103 | var SelLength = document.selection.createRange().text.length; 104 | Sel.moveStart('character', -el.value.length); 105 | pos = Sel.text.length - SelLength; 106 | } 107 | return pos; 108 | } else { 109 | return -1; 110 | } 111 | } else { 112 | return -1; 113 | } 114 | }; 115 | 116 | var setCursorPosition = function (el, index) { 117 | if ($.fn.bootstrapTable.utils.isIEBrowser()) { 118 | if(el.setSelectionRange !== undefined) { 119 | el.setSelectionRange(index, index); 120 | } else { 121 | $(el).val(el.value); 122 | } 123 | } 124 | }; 125 | 126 | var copyValues = function (that) { 127 | var header = getCurrentHeader(that), 128 | searchControls = getCurrentSearchControls(that); 129 | 130 | that.options.valuesFilterControl = []; 131 | 132 | header.find(searchControls).each(function () { 133 | that.options.valuesFilterControl.push( 134 | { 135 | field: $(this).closest('[data-field]').data('field'), 136 | value: $(this).val(), 137 | position: getCursorPosition($(this).get(0)) 138 | }); 139 | }); 140 | }; 141 | 142 | var setValues = function(that) { 143 | var field = null, 144 | result = [], 145 | header = getCurrentHeader(that), 146 | searchControls = getCurrentSearchControls(that); 147 | 148 | if (that.options.valuesFilterControl.length > 0) { 149 | header.find(searchControls).each(function (index, ele) { 150 | field = $(this).closest('[data-field]').data('field'); 151 | result = $.grep(that.options.valuesFilterControl, function (valueObj) { 152 | return valueObj.field === field; 153 | }); 154 | 155 | if (result.length > 0) { 156 | $(this).val(result[0].value); 157 | setCursorPosition($(this).get(0), result[0].position); 158 | } 159 | }); 160 | } 161 | }; 162 | 163 | var collectBootstrapCookies = function cookiesRegex() { 164 | var cookies = [], 165 | foundCookies = document.cookie.match(/(?:bs.table.)(\w*)/g); 166 | 167 | if (foundCookies) { 168 | $.each(foundCookies, function (i, cookie) { 169 | if (/./.test(cookie)) { 170 | cookie = cookie.split(".").pop(); 171 | } 172 | 173 | if ($.inArray(cookie, cookies) === -1) { 174 | cookies.push(cookie); 175 | } 176 | }); 177 | return cookies; 178 | } 179 | }; 180 | 181 | var initFilterSelectControls = function (that) { 182 | var data = that.data, 183 | itemsPerPage = that.pageTo < that.options.data.length ? that.options.data.length : that.pageTo, 184 | 185 | isColumnSearchableViaSelect = function (column) { 186 | return column.filterControl && column.filterControl.toLowerCase() === 'select' && column.searchable; 187 | }, 188 | 189 | isFilterDataNotGiven = function (column) { 190 | return column.filterData === undefined || column.filterData.toLowerCase() === 'column'; 191 | }, 192 | 193 | hasSelectControlElement = function (selectControl) { 194 | return selectControl && selectControl.length > 0; 195 | }; 196 | 197 | var z = that.options.pagination ? 198 | (that.options.sidePagination === 'server' ? that.pageTo : that.options.totalRows) : 199 | that.pageTo; 200 | 201 | $.each(that.header.fields, function (j, field) { 202 | var column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)], 203 | selectControl = $(that.$el).find('.bootstrap-table-filter-control-' + escapeID(column.field)); 204 | 205 | if (isColumnSearchableViaSelect(column) && isFilterDataNotGiven(column) && hasSelectControlElement(selectControl)) { 206 | if (selectControl.get(selectControl.length - 1).options.length === 0) { 207 | //Added the default option 208 | addOptionToSelectControl(selectControl, '', ''); 209 | } 210 | 211 | var uniqueValues = {}; 212 | for (var i = 0; i < z; i++) { 213 | //Added a new value 214 | // Added for js-datatable 215 | var fieldValue = data[i][field].trim(); 216 | var $fieldValue = $(fieldValue); 217 | 218 | var fieldValueArray = []; 219 | if($fieldValue.length){ 220 | $fieldValue.each(function( index ) { 221 | fieldValueArray.push($(this).text().trim()); 222 | }); 223 | }else{ 224 | var comma = fieldValue.split(','); 225 | comma.forEach(function (item) { 226 | fieldValueArray.push(item.trim()); 227 | }); 228 | } 229 | fieldValueArray.forEach(function (item) { 230 | var formattedValue = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, that.header.formatters[j], [item, data[i], i], item); 231 | uniqueValues[formattedValue] = item; 232 | }); 233 | } 234 | 235 | for (var key in uniqueValues) { 236 | addOptionToSelectControl(selectControl, uniqueValues[key], key); 237 | } 238 | 239 | sortSelectControl(selectControl); 240 | 241 | if (that.options.hideUnusedSelectOptions) { 242 | hideUnusedSelectOptions(selectControl, uniqueValues); 243 | } 244 | } 245 | }); 246 | }; 247 | 248 | var escapeID = function(id) { 249 | return String(id).replace( /(:|\.|\[|\]|,)/g, "\\$1" ); 250 | }; 251 | 252 | var createControls = function (that, header) { 253 | var addedFilterControl = false, 254 | isVisible, 255 | html, 256 | timeoutId = 0; 257 | 258 | $.each(that.columns, function (i, column) { 259 | isVisible = 'hidden'; 260 | html = []; 261 | 262 | if (!column.visible) { 263 | return; 264 | } 265 | 266 | if (!column.filterControl) { 267 | html.push('
'); 268 | } else { 269 | html.push('
'); 270 | 271 | var nameControl = column.filterControl.toLowerCase(); 272 | if (column.searchable && that.options.filterTemplate[nameControl]) { 273 | addedFilterControl = true; 274 | isVisible = 'visible'; 275 | html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible, column.filterControlPlaceholder)); 276 | } 277 | } 278 | 279 | $.each(header.children().children(), function (i, tr) { 280 | tr = $(tr); 281 | if (tr.data('field') === column.field) { 282 | tr.find('.fht-cell').append(html.join('')); 283 | return false; 284 | } 285 | }); 286 | 287 | if (column.filterData !== undefined && column.filterData.toLowerCase() !== 'column') { 288 | var filterDataType = getFilterDataMethod(filterDataMethods, column.filterData.substring(0, column.filterData.indexOf(':'))); 289 | var filterDataSource, selectControl; 290 | 291 | if (filterDataType !== null) { 292 | filterDataSource = column.filterData.substring(column.filterData.indexOf(':') + 1, column.filterData.length); 293 | selectControl = $('.bootstrap-table-filter-control-' + escapeID(column.field)); 294 | 295 | addOptionToSelectControl(selectControl, '', ''); 296 | filterDataType(filterDataSource, selectControl); 297 | } else { 298 | throw new SyntaxError('Error. You should use any of these allowed filter data methods: var, json, url.' + ' Use like this: var: {key: "value"}'); 299 | } 300 | 301 | var variableValues, key; 302 | switch (filterDataType) { 303 | case 'url': 304 | $.ajax({ 305 | url: filterDataSource, 306 | dataType: 'json', 307 | success: function (data) { 308 | for (var key in data) { 309 | addOptionToSelectControl(selectControl, key, data[key]); 310 | } 311 | sortSelectControl(selectControl); 312 | } 313 | }); 314 | break; 315 | case 'var': 316 | variableValues = window[filterDataSource]; 317 | for (key in variableValues) { 318 | addOptionToSelectControl(selectControl, key, variableValues[key]); 319 | } 320 | sortSelectControl(selectControl); 321 | break; 322 | case 'jso': 323 | variableValues = JSON.parse(filterDataSource); 324 | for (key in variableValues) { 325 | addOptionToSelectControl(selectControl, key, variableValues[key]); 326 | } 327 | sortSelectControl(selectControl); 328 | break; 329 | } 330 | } 331 | }); 332 | 333 | if (addedFilterControl) { 334 | header.off('keyup', 'input').on('keyup', 'input', function (event) { 335 | clearTimeout(timeoutId); 336 | timeoutId = setTimeout(function () { 337 | that.onColumnSearch(event); 338 | }, that.options.searchTimeOut); 339 | }); 340 | 341 | header.off('change', 'select').on('change', 'select', function (event) { 342 | clearTimeout(timeoutId); 343 | timeoutId = setTimeout(function () { 344 | that.onColumnSearch(event); 345 | }, that.options.searchTimeOut); 346 | }); 347 | 348 | header.off('mouseup', 'input').on('mouseup', 'input', function (event) { 349 | var $input = $(this), 350 | oldValue = $input.val(); 351 | 352 | if (oldValue === "") { 353 | return; 354 | } 355 | 356 | setTimeout(function(){ 357 | var newValue = $input.val(); 358 | 359 | if (newValue === "") { 360 | clearTimeout(timeoutId); 361 | timeoutId = setTimeout(function () { 362 | that.onColumnSearch(event); 363 | }, that.options.searchTimeOut); 364 | } 365 | }, 1); 366 | }); 367 | 368 | if (header.find('.date-filter-control').length > 0) { 369 | $.each(that.columns, function (i, column) { 370 | if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') { 371 | header.find('.date-filter-control.bootstrap-table-filter-control-' + column.field).datepicker(column.filterDatepickerOptions) 372 | .on('changeDate', function (e) { 373 | $(sprintf(".%s", e.currentTarget.classList.toString().split(" ").join("."))).val(e.currentTarget.value); 374 | //Fired the keyup event 375 | $(e.currentTarget).keyup(); 376 | }); 377 | } 378 | }); 379 | } 380 | } else { 381 | header.find('.filterControl').hide(); 382 | } 383 | }; 384 | 385 | var getDirectionOfSelectOptions = function (alignment) { 386 | alignment = alignment === undefined ? 'left' : alignment.toLowerCase(); 387 | 388 | switch (alignment) { 389 | case 'left': 390 | return 'ltr'; 391 | case 'right': 392 | return 'rtl'; 393 | case 'auto': 394 | return 'auto'; 395 | default: 396 | return 'ltr'; 397 | } 398 | }; 399 | 400 | var filterDataMethods = 401 | { 402 | 'var': function (filterDataSource, selectControl) { 403 | var variableValues = window[filterDataSource]; 404 | for (var key in variableValues) { 405 | addOptionToSelectControl(selectControl, key, variableValues[key]); 406 | } 407 | sortSelectControl(selectControl); 408 | }, 409 | 'url': function (filterDataSource, selectControl) { 410 | $.ajax({ 411 | url: filterDataSource, 412 | dataType: 'json', 413 | success: function (data) { 414 | for (var key in data) { 415 | addOptionToSelectControl(selectControl, key, data[key]); 416 | } 417 | sortSelectControl(selectControl); 418 | } 419 | }); 420 | }, 421 | 'json':function (filterDataSource, selectControl) { 422 | var variableValues = JSON.parse(filterDataSource); 423 | for (var key in variableValues) { 424 | addOptionToSelectControl(selectControl, key, variableValues[key]); 425 | } 426 | sortSelectControl(selectControl); 427 | } 428 | }; 429 | 430 | var getFilterDataMethod = function (objFilterDataMethod, searchTerm) { 431 | var keys = Object.keys(objFilterDataMethod); 432 | for (var i = 0; i < keys.length; i++) { 433 | if (keys[i] === searchTerm) { 434 | return objFilterDataMethod[searchTerm]; 435 | } 436 | } 437 | return null; 438 | }; 439 | 440 | $.extend($.fn.bootstrapTable.defaults, { 441 | filterControl: false, 442 | onColumnSearch: function (field, text) { 443 | return false; 444 | }, 445 | filterShowClear: false, 446 | alignmentSelectControlOptions: undefined, 447 | filterTemplate: { 448 | input: function (that, field, isVisible, placeholder) { 449 | return sprintf('', field, isVisible, placeholder); 450 | }, 451 | select: function (that, field, isVisible) { 452 | return sprintf('', 453 | field, isVisible, getDirectionOfSelectOptions(that.options.alignmentSelectControlOptions)); 454 | }, 455 | datepicker: function (that, field, isVisible) { 456 | return sprintf('', field, isVisible); 457 | } 458 | }, 459 | //internal variables 460 | valuesFilterControl: [] 461 | }); 462 | 463 | $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, { 464 | filterControl: undefined, 465 | filterData: undefined, 466 | filterDatepickerOptions: undefined, 467 | filterStrictSearch: false, 468 | filterStartsWithSearch: false, 469 | filterControlPlaceholder: "" 470 | }); 471 | 472 | $.extend($.fn.bootstrapTable.Constructor.EVENTS, { 473 | 'column-search.bs.table': 'onColumnSearch' 474 | }); 475 | 476 | $.extend($.fn.bootstrapTable.defaults.icons, { 477 | clear: 'glyphicon-trash icon-clear' 478 | }); 479 | 480 | $.extend($.fn.bootstrapTable.locales, { 481 | formatClearFilters: function () { 482 | return 'Clear Filters'; 483 | } 484 | }); 485 | $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); 486 | 487 | var BootstrapTable = $.fn.bootstrapTable.Constructor, 488 | _init = BootstrapTable.prototype.init, 489 | _initToolbar = BootstrapTable.prototype.initToolbar, 490 | _initHeader = BootstrapTable.prototype.initHeader, 491 | _initBody = BootstrapTable.prototype.initBody, 492 | _initSearch = BootstrapTable.prototype.initSearch; 493 | 494 | BootstrapTable.prototype.init = function () { 495 | //Make sure that the filterControl option is set 496 | if (this.options.filterControl) { 497 | var that = this; 498 | 499 | // Compatibility: IE < 9 and old browsers 500 | if (!Object.keys) { 501 | objectKeys(); 502 | } 503 | 504 | //Make sure that the internal variables are set correctly 505 | this.options.valuesFilterControl = []; 506 | 507 | this.$el.on('reset-view.bs.table', function () { 508 | //Create controls on $tableHeader if the height is set 509 | if (!that.options.height) { 510 | return; 511 | } 512 | 513 | //Avoid recreate the controls 514 | if (that.$tableHeader.find('select').length > 0 || that.$tableHeader.find('input').length > 0) { 515 | return; 516 | } 517 | 518 | createControls(that, that.$tableHeader); 519 | }).on('post-header.bs.table', function () { 520 | setValues(that); 521 | }).on('post-body.bs.table', function () { 522 | if (that.options.height) { 523 | fixHeaderCSS(that); 524 | } 525 | }).on('column-switch.bs.table', function() { 526 | setValues(that); 527 | }); 528 | } 529 | _init.apply(this, Array.prototype.slice.apply(arguments)); 530 | }; 531 | 532 | BootstrapTable.prototype.initToolbar = function () { 533 | this.showToolbar = this.options.filterControl && this.options.filterShowClear; 534 | 535 | _initToolbar.apply(this, Array.prototype.slice.apply(arguments)); 536 | 537 | if (this.options.filterControl && this.options.filterShowClear) { 538 | var $btnGroup = this.$toolbar.find('>.btn-group'), 539 | $btnClear = $btnGroup.find('.filter-show-clear'); 540 | 541 | if (!$btnClear.length) { 542 | $btnClear = $([ 543 | '' 547 | ].join('')).appendTo($btnGroup); 548 | 549 | $btnClear.off('click').on('click', $.proxy(this.clearFilterControl, this)); 550 | } 551 | } 552 | }; 553 | 554 | BootstrapTable.prototype.initHeader = function () { 555 | _initHeader.apply(this, Array.prototype.slice.apply(arguments)); 556 | 557 | if (!this.options.filterControl) { 558 | return; 559 | } 560 | createControls(this, this.$header); 561 | }; 562 | 563 | BootstrapTable.prototype.initBody = function () { 564 | _initBody.apply(this, Array.prototype.slice.apply(arguments)); 565 | 566 | initFilterSelectControls(this); 567 | }; 568 | 569 | BootstrapTable.prototype.initSearch = function () { 570 | _initSearch.apply(this, Array.prototype.slice.apply(arguments)); 571 | 572 | if (this.options.sidePagination === 'server') { 573 | return; 574 | } 575 | 576 | var that = this; 577 | var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; 578 | 579 | //Check partial column filter 580 | this.data = fp ? $.grep(this.data, function (item, i) { 581 | for (var key in fp) { 582 | var thisColumn = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)]; 583 | var fval = fp[key].toLowerCase(); 584 | 585 | var value = item[key].replace(/<(?:.|\n)*?>/gm, ''); 586 | 587 | // js-datatable fix to use tagged data 588 | var fieldValue = $('').append($.parseHTML(item[key].trim())); 589 | var fieldValueList = []; 590 | fieldValue.find('.label-tag').each(function (){ 591 | fieldValueList.push($(this).text().trim().toLowerCase()); 592 | }); 593 | // ----------------- 594 | 595 | // Fix #142: search use formated data 596 | if (thisColumn && thisColumn.searchFormatter) { 597 | value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, 598 | that.header.formatters[$.inArray(key, that.header.fields)], 599 | [value, item, i], value); 600 | } 601 | if (thisColumn.filterStrictSearch) { 602 | // js-datatable fix to use tagged data 603 | if (fieldValueList){ 604 | if (!($.inArray(key, that.header.fields) !== -1 && 605 | $.inArray(fval.toString().toLowerCase(), fieldValueList) !== -1 )) { 606 | return false; 607 | } 608 | }else{ 609 | // ----------------- 610 | if (!($.inArray(key, that.header.fields) !== -1 && 611 | (typeof value === 'string' || typeof value === 'number') && 612 | value.toString().toLowerCase() === fval.toString().toLowerCase())) { 613 | return false; 614 | } 615 | } 616 | } else if (thisColumn.filterStartsWithSearch) { 617 | if (!($.inArray(key, that.header.fields) !== -1 && 618 | (typeof value === 'string' || typeof value === 'number') && 619 | (value + '').toLowerCase().indexOf(fval) === 0)) { 620 | return false; 621 | } 622 | } else { 623 | if (!($.inArray(key, that.header.fields) !== -1 && 624 | (typeof value === 'string' || typeof value === 'number') && 625 | (value + '').toLowerCase().indexOf(fval) !== -1)) { 626 | return false; 627 | } 628 | } 629 | } 630 | 631 | return true; 632 | }) : this.data; 633 | }; 634 | 635 | BootstrapTable.prototype.initColumnSearch = function(filterColumnsDefaults) { 636 | copyValues(this); 637 | 638 | if (filterColumnsDefaults) { 639 | this.filterColumnsPartial = filterColumnsDefaults; 640 | this.updatePagination(); 641 | 642 | for (var filter in filterColumnsDefaults) { 643 | this.trigger('column-search', filter, filterColumnsDefaults[filter]); 644 | } 645 | } 646 | }; 647 | 648 | BootstrapTable.prototype.onColumnSearch = function (event) { 649 | if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) { 650 | return; 651 | } 652 | 653 | copyValues(this); 654 | var text = $.trim($(event.currentTarget).val()); 655 | var $field = $(event.currentTarget).closest('[data-field]').data('field'); 656 | 657 | if ($.isEmptyObject(this.filterColumnsPartial)) { 658 | this.filterColumnsPartial = {}; 659 | } 660 | if (text) { 661 | this.filterColumnsPartial[$field] = text; 662 | } else { 663 | delete this.filterColumnsPartial[$field]; 664 | } 665 | 666 | // if the searchText is the same as the previously selected column value, 667 | // bootstrapTable will not try searching again (even though the selected column 668 | // may be different from the previous search). As a work around 669 | // we're manually appending some text to bootrap's searchText field 670 | // to guarantee that it will perform a search again when we call this.onSearch(event) 671 | this.searchText += "randomText"; 672 | 673 | this.options.pageNumber = 1; 674 | this.onSearch(event); 675 | this.trigger('column-search', $field, text); 676 | }; 677 | 678 | BootstrapTable.prototype.clearFilterControl = function () { 679 | if (this.options.filterControl && this.options.filterShowClear) { 680 | var that = this, 681 | cookies = collectBootstrapCookies(), 682 | header = getCurrentHeader(that), 683 | table = header.closest('table'), 684 | controls = header.find(getCurrentSearchControls(that)), 685 | search = that.$toolbar.find('.search input'), 686 | timeoutId = 0; 687 | 688 | $.each(that.options.valuesFilterControl, function (i, item) { 689 | item.value = ''; 690 | }); 691 | 692 | setValues(that); 693 | 694 | // Clear each type of filter if it exists. 695 | // Requires the body to reload each time a type of filter is found because we never know 696 | // which ones are going to be present. 697 | if (controls.length > 0) { 698 | this.filterColumnsPartial = {}; 699 | $(controls[0]).trigger(controls[0].tagName === 'INPUT' ? 'keyup' : 'change'); 700 | } else { 701 | return; 702 | } 703 | 704 | if (search.length > 0) { 705 | that.resetSearch(); 706 | } 707 | 708 | // use the default sort order if it exists. do nothing if it does not 709 | if (that.options.sortName !== table.data('sortName') || that.options.sortOrder !== table.data('sortOrder')) { 710 | var sorter = header.find(sprintf('[data-field="%s"]', $(controls[0]).closest('table').data('sortName'))); 711 | if (sorter.length > 0) { 712 | that.onSort(table.data('sortName'), table.data('sortName')); 713 | $(sorter).find('.sortable').trigger('click'); 714 | } 715 | } 716 | 717 | // clear cookies once the filters are clean 718 | clearTimeout(timeoutId); 719 | timeoutId = setTimeout(function () { 720 | if (cookies && cookies.length > 0) { 721 | $.each(cookies, function (i, item) { 722 | if (that.deleteCookie !== undefined) { 723 | that.deleteCookie(item); 724 | } 725 | }); 726 | } 727 | }, that.options.searchTimeOut); 728 | } 729 | }; 730 | })(jQuery); 731 | -------------------------------------------------------------------------------- /minification.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """ 4 | JS and CSS minification 5 | ============================ 6 | Author: Toni Heittola (toni.heittola@gmail.com) 7 | 8 | This plugin will create dynamic datatable with charting features from given yaml-datafile. 9 | 10 | """ 11 | 12 | import os 13 | import sys 14 | import io 15 | import argparse 16 | import textwrap 17 | from IPython import embed 18 | __version_info__ = ('0', '1', '0') 19 | __version__ = '.'.join(__version_info__) 20 | 21 | 22 | def main(argv): 23 | parser = argparse.ArgumentParser( 24 | prefix_chars='-+', 25 | formatter_class=argparse.RawDescriptionHelpFormatter, 26 | description=textwrap.dedent('''\ 27 | JS and CSS minification 28 | --------------------------------------------- 29 | Author: Toni Heittola ( toni.heittola@gmail.com ) 30 | 31 | ''')) 32 | parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + __version__) 33 | args = parser.parse_args() 34 | print("JS and CSS minification") 35 | print("-----------------------") 36 | 37 | minify_css_directory2(source='css', target='css.min') 38 | minify_js_directory(source='js', target='js.min') 39 | 40 | 41 | def minify_css_directory(source, target): 42 | """ 43 | Move CSS resources from source directory to target directory and minify. Using csscompressor. 44 | 45 | """ 46 | from csscompressor import compress 47 | 48 | if os.path.isdir(source): 49 | if not os.path.exists(target): 50 | os.makedirs(target) 51 | 52 | for root, dirs, files in os.walk(source): 53 | for current_file in files: 54 | if current_file.endswith(".css"): 55 | current_file_path = os.path.join(root, current_file) 56 | print(" " + current_file_path) 57 | with open(current_file_path) as css_file: 58 | with open(os.path.join(target, current_file.replace('.css', '.min.css')), "w") as minified_file: 59 | minified_file.write(compress(css_file.read())) 60 | 61 | def minify_css_directory2(source, target): 62 | """ 63 | Move CSS resources from source directory to target directory and minify. Using rcssmin. 64 | 65 | """ 66 | import rcssmin 67 | 68 | if os.path.isdir(source): 69 | if not os.path.exists(target): 70 | os.makedirs(target) 71 | 72 | for root, dirs, files in os.walk(source): 73 | for current_file in files: 74 | if current_file.endswith(".css"): 75 | current_file_path = os.path.join(root, current_file) 76 | print(" " + current_file_path) 77 | with open(current_file_path) as css_file: 78 | with open(os.path.join(target, current_file.replace('.css', '.min.css')), "w") as minified_file: 79 | minified_file.write(rcssmin.cssmin(css_file.read(), keep_bang_comments=True)) 80 | 81 | bundle_data = [] 82 | for root, dirs, files in os.walk(target): 83 | for current_file in files: 84 | if current_file.endswith(".css") and current_file != 'datatable.bundle.min.css': 85 | current_file_path = os.path.join(root, current_file) 86 | css_file = open(current_file_path, "r") 87 | bundle_data += css_file.readlines() 88 | css_file.close() 89 | 90 | bundle_filename = os.path.join(target, 'datatable.bundle.min.css') 91 | bundle_file = open(bundle_filename, 'w+') 92 | bundle_file.write(''.join(bundle_data)) 93 | bundle_file.close() 94 | 95 | print(" " + bundle_filename) 96 | 97 | def minify_js_directory(source, target): 98 | """ 99 | Move JS resources from source directory to target directory and minify. 100 | 101 | """ 102 | from jsmin import jsmin 103 | 104 | if os.path.isdir(source): 105 | if not os.path.exists(target): 106 | os.makedirs(target) 107 | 108 | for root, dirs, files in os.walk(source): 109 | for current_file in files: 110 | if current_file.endswith(".js"): 111 | current_file_path = os.path.join(root, current_file) 112 | print(" " + current_file_path) 113 | with open(current_file_path) as js_file: 114 | with open(os.path.join(target, current_file.replace('.js', '.min.js')), "w") as minified_file: 115 | minified_file.write(jsmin(js_file.read())) 116 | 117 | bundle_data = [] 118 | for root, dirs, files in os.walk(target): 119 | for current_file in files: 120 | if current_file.endswith(".js") and current_file != 'datatable.bundle.min.js': 121 | current_file_path = os.path.join(root, current_file) 122 | js_file = open(current_file_path, "r") 123 | bundle_data += js_file.readlines() 124 | js_file.close() 125 | 126 | bundle_filename = os.path.join(target, 'datatable.bundle.min.js') 127 | bundle_file = open(bundle_filename, 'w+') 128 | bundle_file.write(''.join(bundle_data)) 129 | bundle_file.close() 130 | 131 | print(" " + bundle_filename) 132 | 133 | if __name__ == "__main__": 134 | try: 135 | sys.exit(main(sys.argv)) 136 | except (ValueError, IOError) as e: 137 | sys.exit(e) -------------------------------------------------------------------------------- /tests/data4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "code": "Red", 4 | "value1": "12.3233 (2.1 - 32.5)", 5 | "value2": "22", 6 | "value3": "5±2", 7 | "value4": "34±2", 8 | "value5": "12340", 9 | "list": "C,G", 10 | "anchor": "parameters", 11 | "url": "www.google.com;Google 1,www.google.com;Google 2", 12 | "ref": "http://asmp.eurasipjournals.com/content/pdf/1687-4722-2013-1.pdf;Heittola2013,http://www.cs.tut.fi/~heittolt/pubs/chime2011_heittola.pdf;Heittola2011", 13 | "feature1": "square, circle", 14 | "feature2": "triangle", 15 | "feature3": "A", 16 | "row_css": "danger", 17 | "bar": "20;labelA,30;labelB,40;labelC,10;labelD", 18 | "line": "10,-12,44,22,-5,55,-32,21", 19 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 20 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 21 | "hbar": "10,30,40,20" 22 | }, 23 | { 24 | "code": "Blue", 25 | "value1": "51.599999999999994 (32.1 - 73.1)", 26 | "value2": "", 27 | "value3": "8±3", 28 | "value4": "64±4", 29 | "value5": "143500", 30 | "list": "F,C", 31 | "ref": "http://asmp.eurasipjournals.com/content/pdf/1687-4722-2013-1.pdf;Heittola2013", 32 | "feature1": "circle, triangle", 33 | "feature2": "triangle", 34 | "feature3": "B", 35 | "row_css": "warning", 36 | "bar": "20;labelA", 37 | "line": "10,12,-44,22,5,-55,32,21", 38 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 39 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 40 | "hbar": "10,20,10,20,10,30" 41 | }, 42 | { 43 | "code": "Black", 44 | "value1": "18.0123 (12.8 - 38.2)", 45 | "value2": "42", 46 | "value3": "12±7", 47 | "value4": "54.3±5", 48 | "value5": "532400", 49 | "list": "F,G", 50 | "feature1": "square", 51 | "feature2": "circle", 52 | "feature3": "C", 53 | "row_css": "success", 54 | "bar": "80;labelA,20;labelB", 55 | "line": "10,12,-44,0,5,-55,32,21", 56 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 57 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 58 | "hbar": "10;A,20;B,10;C,20;#666;D" 59 | }, 60 | { 61 | "code": "White", 62 | "value1": "18.834234 (13.6 - 39.0)", 63 | "value2": "", 64 | "value3": "21.2±2.5", 65 | "value4": "14.313±4.142", 66 | "value5": "50000", 67 | "list": "C,F", 68 | "anchor": "parameters", 69 | "url": "www.google.com", 70 | "feature1": "triangle", 71 | "feature2": "square", 72 | "feature3": "A,B", 73 | "row_css": "info", 74 | "bar": "80;labelA", 75 | "line": "10,-12,0,22,5,-55,32,-21", 76 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 77 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 78 | "hbar": "10,20,20,10" 79 | }, 80 | { 81 | "code": "Purple", 82 | "value1": "12.42342 (10.2 - 56.6)", 83 | "value2": "", 84 | "value3": "18.8±2.5", 85 | "value4": "44.3234±3.432", 86 | "value5": "100000", 87 | "list": "G,F,C", 88 | "anchor": "parameters", 89 | "url": "www.google.com;Google", 90 | "feature1": "square, triangle", 91 | "feature2": "circle", 92 | "feature3": "AAA", 93 | "bar": "10;labelA,10;labelB,20;labelC", 94 | "line": "10,12,44,-22,5,55,-32,21,40,12,-44,0,35,-35,32,51", 95 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 96 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 97 | "hbar": "10,20,50,30" 98 | }, 99 | { 100 | "code": "Brown", 101 | "value1": "42.71231 (32.2 - 44.9)", 102 | "value2": "26", 103 | "value3": "48.4±8.4", 104 | "value4": "52.3234±4.2", 105 | "value5": "1.232e7", 106 | "list": "G", 107 | "anchor": "parameters", 108 | "url": "www.google.com;Google", 109 | "feature1": "block, triangle", 110 | "feature2": "pyramid", 111 | "feature3": "BB", 112 | "hline": "true", 113 | "bar": "13;labelA,50;labelB,-10;labelC,-50;labelD,10;labelE,20;labelF", 114 | "line": "40;#AA0000,12,44;#AA0000,52,35,35;#AA0000,32,51", 115 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 116 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 117 | "hbar": "10,20,50,30" 118 | }, 119 | { 120 | "code": "Baseline", 121 | "value1": "23.4432 (15.2 - 29.6)", 122 | "value2": "19", 123 | "value3": "33.2±7.4", 124 | "value4": "34.7234±6.5234", 125 | "value5": "5.892367e8", 126 | "list": "F", 127 | "anchor": "parameters", 128 | "url": "www.google.com;Google", 129 | "feature1": "triangle", 130 | "feature2": "circle", 131 | "feature3": "CA", 132 | "row_css": "active", 133 | "bar": "62.3;labelA,22.1;labelB,12.1;labelB,54.1;labelB,24.1;labelB,43.2;labelB,12;A,32;B", 134 | "line": "10;#AA0000;A,42;B,74;#AA0000;C,52;D,5,55;E;#AA0000,32;F,21;G", 135 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 136 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90)", 137 | "hbar": "10,20,50,30" 138 | }, 139 | { 140 | "code": "Yellow", 141 | "value1": "23.4234 (13.2 - 43.6)", 142 | "value2": "12", 143 | "value3": "13.3±2.6", 144 | "value4": "34.2342±4.3234", 145 | "value5": "1.243542e3", 146 | "list": "F", 147 | "anchor": "parameters", 148 | "url": "www.google.com;Google", 149 | "feature1": "triangle", 150 | "feature2": "circle", 151 | "feature3": "ABC", 152 | "row_css": "active", 153 | "bar": "62.3;labelA,22.1;labelB,12.1;labelB,54.1;labelB,24.1;labelB,43.2;labelB,12;A,32;B", 154 | "line": "10,42,74,52,5,55,32,21", 155 | "binary": "1,0,0,1,0,1,1,0,0,0,1,1,1", 156 | "timeline": "(1:10),(2:20),(3:30),(4:24),(5:40),(6:65),(7:70),(8:90),(13:30),(24:24),(25:70),(30:27)", 157 | "hbar": "10,20,50,30" 158 | }, 159 | { 160 | "code": "Orange", 161 | "value1": "53.442 (43.2 - 73.6)", 162 | "value2": "64", 163 | "value3": "46±6.4", 164 | "value4": "31.45345±2.3", 165 | "value5": "1e6", 166 | "list": "F", 167 | "anchor": "parameters", 168 | "url": "www.google.com;Google", 169 | "feature1": "triangle", 170 | "feature2": "circle", 171 | "feature3": "CCC", 172 | "row_css": "active", 173 | "bar": "62.3;labelA,22.1;labelB,12.1;labelB;#AA0000,54.1;labelB;#AA0000,24.1;labelB,43.2;labelB;#AA0000,12;A,32;B", 174 | "line": "10,42,74;#AA0000,52,5,55,32,21", 175 | "binary": "#0085ff,#99FFFF,#0085ff,#99FFFF,#99FFFF,#0085ff,#0085ff,#333,#0085ff,#AAA,#0085ff,#0085ff,#AAA", 176 | "timeline": "(1:10),(2:20),(3:-30),(4:24),(5:40),(6:65),(7:70),(8:90),(15:-40),(16:65),(17:70),(18:90)", 177 | "hbar": "10,20,50,30" 178 | }, 179 | { 180 | "code": "Green", 181 | "value1": "23.4234 (16.2 - 28.6)", 182 | "value2": "43", 183 | "value3": "43.9±5.9", 184 | "value4": "24.4232±6.3", 185 | "value5": "1e5", 186 | "list": "F", 187 | "anchor": "parameters", 188 | "url": "www.google.com;Google", 189 | "feature1": "triangle", 190 | "feature2": "circle", 191 | "feature3": "BB", 192 | "row_css": "active", 193 | "bar": "62.3;labelA,22.1;labelB;#AA0000,12.1;labelB,54.1;labelB,24.1;labelB,43.2;labelB,12;A,32;B", 194 | "line": "10,42;#AA0000,74,52;#AA0000,5,55,32,21", 195 | "binary": "1;#229922,1;#4455FF,1;#99FFFF,1;#222222,0;#222222,1,1,0,0,0,1,1,1", 196 | "timeline": "(1:30),(4:20),(3:30),(4:24),(5:-40),(16:65),(7:70),(28:90)", 197 | "hbar": "10,20,50,30" 198 | }, 199 | { 200 | "code": "Light green", 201 | "value1": "23.4234 (11.2 - 36.6)", 202 | "value2": "24", 203 | "value3": "18.2±2.8", 204 | "value4": "34.32323±5.4", 205 | "value5": "1265600", 206 | "list": "F", 207 | "anchor": "parameters", 208 | "url": "www.google.com;Google", 209 | "feature1": "triangle", 210 | "feature2": "circle", 211 | "feature3": "CBA", 212 | "row_css": "active", 213 | "bar": "62.3,22.1,-12.1,-54.1,24.1,43.2,12,0,32", 214 | "line": "10;#AA0000,-42;#AA0000,-74;#AA0000,52,0,55;#AA0000,32;#AA0000,21;#777", 215 | "binary": "1;text 1A,0;text 2,0;text 3,1;text 4,0;text 5,1;text 6,1;text 7,0;text 8,0;text 9,0,1,1,1", 216 | "timeline": "(1.4:10.2),(2.5:20.3),(3.6:30.4),(5.4:-24.7),(7.5:40.34),(9.6:35.32),(31.3:40.2),(62.4:30.2)", 217 | "hbar": "10,20,50,30" 218 | }, 219 | { 220 | "code": "Grey", 221 | "value1": "13.4123 (53.2 - 3.6)", 222 | "value2": "82", 223 | "value3": "53.5±6.6", 224 | "value4": "25.5232±7.5", 225 | "value5": "10220400", 226 | "list": "F", 227 | "anchor": "parameters", 228 | "url": "www.google.com;Google", 229 | "feature1": "triangle", 230 | "feature2": "circle", 231 | "feature3": "CAA", 232 | "row_css": "active", 233 | "bar": "62.3,22.1,-12.1,-54.1,24.1,43.2,12,0,32", 234 | "line": "10;#AA0000,-42;#AA0000,-74;#AA0000,52,0,55;#AA0000,32;#AA0000,21;#777", 235 | "binary": "1;text 1A,0;text 2,0;text 3,1;text 4,0;text 5,1;text 6,1;text 7,0;text 8,0;text 9,0,1,1,1", 236 | "timeline": "(1.4:10.2),(2.5:20.3),(3.6:30.4),(5.4:-24.7),(7.5:40.34),(9.6:35.32),(31.3:40.2),(62.4:30.2)", 237 | "hbar": "10,20,50,30" 238 | }, 239 | { 240 | "code": "Dark blue", 241 | "value1": "48.39999999999999 (23.2 - 73.6)", 242 | "value2": "62", 243 | "value3": "54.2±8.3", 244 | "value4": "21.62323±8.9", 245 | "value5": "23156870", 246 | "list": "F", 247 | "anchor": "parameters", 248 | "url": "www.google.com;Google", 249 | "feature1": "triangle", 250 | "feature2": "circle", 251 | "feature3": "ABB", 252 | "row_css": "active", 253 | "bar": "62.3,22.1,-12.1,-54.1,24.1,43.2,12,0,32", 254 | "line": "10;#AA0000,-42;#AA0000,-74;#AA0000,52,0,55;#AA0000,32;#AA0000,21;#777", 255 | "binary": "1;text 1A,0;text 2,0;text 3,1;text 4,0;text 5,1;text 6,1;text 7,0;text 8,0;text 9,0,1,1,1", 256 | "timeline": "(1.4:10.2),(2.5:20.3),(3.6:30.4),(5.4:-24.7),(7.5:40.34),(9.6:35.32),(31.3:40.2),(62.4:30.2)", 257 | "hbar": "10,20,50,30" 258 | } 259 | ] -------------------------------------------------------------------------------- /tests/data5.json: -------------------------------------------------------------------------------- 1 | [{"top5_mean_public_lb":63.5,"min_team_public_lb":62.5,"mean_public_lb":63.5,"interval_public":"63.5 (62.5 - 64.5)","top10team_median_interval_public_lb":"63.5 (62.5 - 64.5)","top10_mean_public_lb":63.5,"min_public_lb":62.5,"timestamp":1527119999,"median_public_lb":63.5,"interval2_public":"62.5 - 64.5","max_public_lb":64.5,"top10team_mean_public_lb":63.5,"top5team_mean_public_lb":63.5,"date":"2018-05-24","max_team_public_lb":64.5,"mean_team_public_lb":63.5,"top5team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","top10team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":63.5,"min_team_public_lb":62.5,"mean_public_lb":63.5,"interval_public":"63.5 (62.5 - 64.5)","top10team_median_interval_public_lb":"63.5 (62.5 - 64.5)","top10_mean_public_lb":63.5,"min_public_lb":62.5,"timestamp":1527206399,"median_public_lb":63.5,"interval2_public":"62.5 - 64.5","max_public_lb":64.5,"top10team_mean_public_lb":63.5,"top5team_mean_public_lb":63.5,"date":"2018-05-25","max_team_public_lb":64.5,"mean_team_public_lb":63.5,"top5team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","top10team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":63.5,"min_team_public_lb":62.5,"mean_public_lb":63.5,"interval_public":"63.5 (62.5 - 64.5)","top10team_median_interval_public_lb":"63.5 (62.5 - 64.5)","top10_mean_public_lb":63.5,"min_public_lb":62.5,"timestamp":1527292799,"median_public_lb":63.5,"interval2_public":"62.5 - 64.5","max_public_lb":64.5,"top10team_mean_public_lb":63.5,"top5team_mean_public_lb":63.5,"date":"2018-05-26","max_team_public_lb":64.5,"mean_team_public_lb":63.5,"top5team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","top10team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":63.3889,"min_team_public_lb":62.5,"mean_public_lb":63.3889,"interval_public":"63.1667 (62.5 - 64.5)","top10team_median_interval_public_lb":"63.5 (62.5 - 64.5)","top10_mean_public_lb":63.3889,"min_public_lb":62.5,"timestamp":1527379199,"median_public_lb":63.1667,"interval2_public":"62.5 - 64.5","max_public_lb":64.5,"top10team_mean_public_lb":63.5,"top5team_mean_public_lb":63.5,"date":"2018-05-27","max_team_public_lb":64.5,"mean_team_public_lb":63.5,"top5team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","top10team_mean_interval_public_lb":"63.5 (62.5 - 64.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":63.70835,"min_team_public_lb":62.5,"mean_public_lb":63.70835,"interval_public":"63.83335 (62.5 - 64.6667)","top10team_median_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10_mean_public_lb":63.70835,"min_public_lb":62.5,"timestamp":1527465599,"median_public_lb":63.83335,"interval2_public":"62.5 - 64.6667","max_public_lb":64.6667,"top10team_mean_public_lb":63.58335,"top5team_mean_public_lb":63.58335,"date":"2018-05-28","max_team_public_lb":64.6667,"mean_team_public_lb":63.58335,"top5team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","median_team_public_lb":63.58335},{"top5_mean_public_lb":63.63334,"min_team_public_lb":62.5,"mean_public_lb":63.63334,"interval_public":"63.3333 (62.5 - 64.6667)","top10team_median_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10_mean_public_lb":63.63334,"min_public_lb":62.5,"timestamp":1527551999,"median_public_lb":63.3333,"interval2_public":"62.5 - 64.6667","max_public_lb":64.6667,"top10team_mean_public_lb":63.58335,"top5team_mean_public_lb":63.58335,"date":"2018-05-29","max_team_public_lb":64.6667,"mean_team_public_lb":63.58335,"top5team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","median_team_public_lb":63.58335},{"top5_mean_public_lb":63.63334,"min_team_public_lb":62.5,"mean_public_lb":63.63334,"interval_public":"63.3333 (62.5 - 64.6667)","top10team_median_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10_mean_public_lb":63.63334,"min_public_lb":62.5,"timestamp":1527638399,"median_public_lb":63.3333,"interval2_public":"62.5 - 64.6667","max_public_lb":64.6667,"top10team_mean_public_lb":63.58335,"top5team_mean_public_lb":63.58335,"date":"2018-05-30","max_team_public_lb":64.6667,"mean_team_public_lb":63.58335,"top5team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","median_team_public_lb":63.58335},{"top5_mean_public_lb":63.63334,"min_team_public_lb":62.5,"mean_public_lb":63.63334,"interval_public":"63.3333 (62.5 - 64.6667)","top10team_median_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10_mean_public_lb":63.63334,"min_public_lb":62.5,"timestamp":1527724799,"median_public_lb":63.3333,"interval2_public":"62.5 - 64.6667","max_public_lb":64.6667,"top10team_mean_public_lb":63.58335,"top5team_mean_public_lb":63.58335,"date":"2018-05-31","max_team_public_lb":64.6667,"mean_team_public_lb":63.58335,"top5team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","top10team_mean_interval_public_lb":"63.58335 (62.5 - 64.6667)","median_team_public_lb":63.58335},{"top5_mean_public_lb":63.9,"min_team_public_lb":60.3333,"mean_public_lb":63.0416625,"interval_public":"63.25 (60.3333 - 64.6667)","top10team_median_interval_public_lb":"63.16665 (60.3333 - 64.6667)","top10_mean_public_lb":63.0416625,"min_public_lb":60.3333,"timestamp":1527811199,"median_public_lb":63.25,"interval2_public":"60.3333 - 64.6667","max_public_lb":64.6667,"top10team_mean_public_lb":62.833325,"top5team_mean_public_lb":62.833325,"date":"2018-06-01","max_team_public_lb":64.6667,"mean_team_public_lb":62.833325,"top5team_mean_interval_public_lb":"62.833325 (60.3333 - 64.6667)","top10team_mean_interval_public_lb":"62.833325 (60.3333 - 64.6667)","median_team_public_lb":63.16665},{"top5_mean_public_lb":64.9,"min_team_public_lb":53.8333,"mean_public_lb":62.63333,"interval_public":"63.25 (53.8333 - 68.1667)","top10team_median_interval_public_lb":"63.8333 (53.8333 - 68.1667)","top10_mean_public_lb":62.63333,"min_public_lb":53.8333,"timestamp":1527897599,"median_public_lb":63.25,"interval2_public":"53.8333 - 68.1667","max_public_lb":68.1667,"top10team_mean_public_lb":62.6,"top5team_mean_public_lb":62.6,"date":"2018-06-02","max_team_public_lb":68.1667,"mean_team_public_lb":62.6,"top5team_mean_interval_public_lb":"62.6 (53.8333 - 68.1667)","top10team_mean_interval_public_lb":"62.6 (53.8333 - 68.1667)","median_team_public_lb":63.8333},{"top5_mean_public_lb":64.9,"min_team_public_lb":53.8333,"mean_public_lb":62.63333,"interval_public":"63.25 (53.8333 - 68.1667)","top10team_median_interval_public_lb":"63.8333 (53.8333 - 68.1667)","top10_mean_public_lb":62.63333,"min_public_lb":53.8333,"timestamp":1527983999,"median_public_lb":63.25,"interval2_public":"53.8333 - 68.1667","max_public_lb":68.1667,"top10team_mean_public_lb":62.6,"top5team_mean_public_lb":62.6,"date":"2018-06-03","max_team_public_lb":68.1667,"mean_team_public_lb":62.6,"top5team_mean_interval_public_lb":"62.6 (53.8333 - 68.1667)","top10team_mean_interval_public_lb":"62.6 (53.8333 - 68.1667)","median_team_public_lb":63.8333},{"top5_mean_public_lb":66.26668,"min_team_public_lb":61.3333,"mean_public_lb":63.152775,"interval_public":"63.25 (53.8333 - 70.1667)","top10team_median_interval_public_lb":"64.25 (61.3333 - 70.1667)","top10_mean_public_lb":64.36667,"min_public_lb":53.8333,"timestamp":1528070399,"median_public_lb":63.25,"interval2_public":"53.8333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.1111166667,"top5team_mean_public_lb":65.86668,"date":"2018-06-04","max_team_public_lb":70.1667,"mean_team_public_lb":65.1111166667,"top5team_mean_interval_public_lb":"65.86668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.1111166667 (61.3333 - 70.1667)","median_team_public_lb":64.25},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528156799,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-05","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528243199,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-06","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528329599,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-07","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528415999,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-08","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528502399,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-09","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.6309521429,"interval_public":"63.25 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528588799,"median_public_lb":63.25,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-10","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":59.7333353333,"interval_public":"63.1667 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528675199,"median_public_lb":63.1667,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-11","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":61.3333,"mean_public_lb":56.3137311765,"interval_public":"62.5 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"65.75 (61.3333 - 70.1667)","top10_mean_public_lb":65.00001,"min_public_lb":9.33333,"timestamp":1528761599,"median_public_lb":62.5,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.6111166667,"top5team_mean_public_lb":66.46668,"date":"2018-06-12","max_team_public_lb":70.1667,"mean_team_public_lb":65.6111166667,"top5team_mean_interval_public_lb":"66.46668 (62.5 - 70.1667)","top10team_mean_interval_public_lb":"65.6111166667 (61.3333 - 70.1667)","median_team_public_lb":65.75},{"top5_mean_public_lb":67.03336,"min_team_public_lb":62.5,"mean_public_lb":57.0000068421,"interval_public":"62.5 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"63.8333 (62.5 - 70.1667)","top10_mean_public_lb":65.11668,"min_public_lb":9.33333,"timestamp":1528847999,"median_public_lb":62.5,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.4285857143,"top5team_mean_public_lb":66.60002,"date":"2018-06-13","max_team_public_lb":70.1667,"mean_team_public_lb":65.4285857143,"top5team_mean_interval_public_lb":"66.60002 (63.1667 - 70.1667)","top10team_mean_interval_public_lb":"65.4285857143 (62.5 - 70.1667)","median_team_public_lb":63.8333},{"top5_mean_public_lb":67.03336,"min_team_public_lb":62.5,"mean_public_lb":57.0000068421,"interval_public":"62.5 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"63.8333 (62.5 - 70.1667)","top10_mean_public_lb":65.11668,"min_public_lb":9.33333,"timestamp":1528934399,"median_public_lb":62.5,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.4285857143,"top5team_mean_public_lb":66.60002,"date":"2018-06-14","max_team_public_lb":70.1667,"mean_team_public_lb":65.4285857143,"top5team_mean_interval_public_lb":"66.60002 (63.1667 - 70.1667)","top10team_mean_interval_public_lb":"65.4285857143 (62.5 - 70.1667)","median_team_public_lb":63.8333},{"top5_mean_public_lb":67.03336,"min_team_public_lb":62.5,"mean_public_lb":57.0000068421,"interval_public":"62.5 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"63.8333 (62.5 - 70.1667)","top10_mean_public_lb":65.11668,"min_public_lb":9.33333,"timestamp":1529020799,"median_public_lb":62.5,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.4285857143,"top5team_mean_public_lb":66.60002,"date":"2018-06-15","max_team_public_lb":70.1667,"mean_team_public_lb":65.4285857143,"top5team_mean_interval_public_lb":"66.60002 (63.1667 - 70.1667)","top10team_mean_interval_public_lb":"65.4285857143 (62.5 - 70.1667)","median_team_public_lb":63.8333},{"top5_mean_public_lb":67.60002,"min_team_public_lb":62.5,"mean_public_lb":55.6287922727,"interval_public":"62.83335 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"64.0 (62.5 - 70.1667)","top10_mean_public_lb":65.68334,"min_public_lb":9.33333,"timestamp":1529107199,"median_public_lb":62.83335,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":65.4814888889,"top5team_mean_public_lb":67.46668,"date":"2018-06-16","max_team_public_lb":70.1667,"mean_team_public_lb":65.4814888889,"top5team_mean_interval_public_lb":"67.46668 (64.0 - 70.1667)","top10team_mean_interval_public_lb":"65.4814888889 (62.5 - 70.1667)","median_team_public_lb":64.0},{"top5_mean_public_lb":68.20002,"min_team_public_lb":57.5,"mean_public_lb":56.20833875,"interval_public":"62.83335 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"63.91665 (57.5 - 70.1667)","top10_mean_public_lb":66.13334,"min_public_lb":9.33333,"timestamp":1529193599,"median_public_lb":62.83335,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":64.71668,"top5team_mean_public_lb":67.53336,"date":"2018-06-17","max_team_public_lb":70.1667,"mean_team_public_lb":64.71668,"top5team_mean_interval_public_lb":"67.53336 (64.0 - 70.1667)","top10team_mean_interval_public_lb":"64.71668 (57.5 - 70.1667)","median_team_public_lb":63.91665},{"top5_mean_public_lb":68.20002,"min_team_public_lb":57.5,"mean_public_lb":56.6266732,"interval_public":"63.1667 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"63.91665 (57.5 - 70.1667)","top10_mean_public_lb":66.46668,"min_public_lb":9.33333,"timestamp":1529279999,"median_public_lb":63.1667,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":64.71668,"top5team_mean_public_lb":67.53336,"date":"2018-06-18","max_team_public_lb":70.1667,"mean_team_public_lb":64.71668,"top5team_mean_interval_public_lb":"67.53336 (64.0 - 70.1667)","top10team_mean_interval_public_lb":"64.71668 (57.5 - 70.1667)","median_team_public_lb":63.91665},{"top5_mean_public_lb":68.66668,"min_team_public_lb":57.5,"mean_public_lb":57.7873631034,"interval_public":"63.1667 (9.33333 - 70.1667)","top10team_median_interval_public_lb":"67.1667 (62.5 - 70.1667)","top10_mean_public_lb":67.63335,"min_public_lb":9.33333,"timestamp":1529366399,"median_public_lb":63.1667,"interval2_public":"9.33333 - 70.1667","max_public_lb":70.1667,"top10team_mean_public_lb":66.08335,"top5team_mean_public_lb":68.43336,"date":"2018-06-19","max_team_public_lb":70.1667,"mean_team_public_lb":65.3030454545,"top5team_mean_interval_public_lb":"68.43336 (67.6667 - 70.1667)","top10team_mean_interval_public_lb":"66.08335 (62.5 - 70.1667)","median_team_public_lb":66.6667},{"top5_mean_public_lb":69.7,"min_team_public_lb":57.5,"mean_public_lb":58.2096816129,"interval_public":"63.1667 (9.33333 - 72.8333)","top10team_median_interval_public_lb":"67.1667 (62.5 - 72.8333)","top10_mean_public_lb":68.45001,"min_public_lb":9.33333,"timestamp":1529452799,"median_public_lb":63.1667,"interval2_public":"9.33333 - 72.8333","max_public_lb":72.8333,"top10team_mean_public_lb":66.51668,"top5team_mean_public_lb":69.30002,"date":"2018-06-20","max_team_public_lb":72.8333,"mean_team_public_lb":65.6969818182,"top5team_mean_interval_public_lb":"69.30002 (67.6667 - 72.8333)","top10team_mean_interval_public_lb":"66.51668 (62.5 - 72.8333)","median_team_public_lb":66.6667},{"top5_mean_public_lb":70.86666,"min_team_public_lb":57.5,"mean_public_lb":59.225495,"interval_public":"63.5833 (9.33333 - 72.8333)","top10team_median_interval_public_lb":"67.1667 (62.5 - 72.8333)","top10_mean_public_lb":69.36667,"min_public_lb":9.33333,"timestamp":1529539199,"median_public_lb":63.5833,"interval2_public":"9.33333 - 72.8333","max_public_lb":72.8333,"top10team_mean_public_lb":66.76668,"top5team_mean_public_lb":69.80002,"date":"2018-06-21","max_team_public_lb":72.8333,"mean_team_public_lb":65.9242545455,"top5team_mean_interval_public_lb":"69.80002 (67.6667 - 72.8333)","top10team_mean_interval_public_lb":"66.76668 (62.5 - 72.8333)","median_team_public_lb":66.6667},{"top5_mean_public_lb":71.8,"min_team_public_lb":57.5,"mean_public_lb":58.612617027,"interval_public":"63.8333 (9.33333 - 73.5)","top10team_median_interval_public_lb":"67.1667 (62.5 - 73.5)","top10_mean_public_lb":70.23334,"min_public_lb":9.33333,"timestamp":1529625599,"median_public_lb":63.8333,"interval2_public":"9.33333 - 73.5","max_public_lb":73.5,"top10team_mean_public_lb":66.83335,"top5team_mean_public_lb":69.93336,"date":"2018-06-22","max_team_public_lb":73.5,"mean_team_public_lb":65.9848636364,"top5team_mean_interval_public_lb":"69.93336 (67.6667 - 73.5)","top10team_mean_interval_public_lb":"66.83335 (62.5 - 73.5)","median_team_public_lb":66.6667},{"top5_mean_public_lb":72.73332,"min_team_public_lb":57.5,"mean_public_lb":59.01667075,"interval_public":"63.91665 (9.33333 - 74.0)","top10team_median_interval_public_lb":"67.1667 (62.5 - 74.0)","top10_mean_public_lb":71.15,"min_public_lb":9.33333,"timestamp":1529711999,"median_public_lb":63.91665,"interval2_public":"9.33333 - 74.0","max_public_lb":74.0,"top10team_mean_public_lb":66.96668,"top5team_mean_public_lb":70.20002,"date":"2018-06-23","max_team_public_lb":74.0,"mean_team_public_lb":66.1060727273,"top5team_mean_interval_public_lb":"70.20002 (67.6667 - 74.0)","top10team_mean_interval_public_lb":"66.96668 (62.5 - 74.0)","median_team_public_lb":66.6667},{"top5_mean_public_lb":72.73332,"min_team_public_lb":57.5,"mean_public_lb":59.2886226829,"interval_public":"64.0 (9.33333 - 74.0)","top10team_median_interval_public_lb":"67.1667 (62.5 - 74.0)","top10_mean_public_lb":71.31667,"min_public_lb":9.33333,"timestamp":1529798399,"median_public_lb":64.0,"interval2_public":"9.33333 - 74.0","max_public_lb":74.0,"top10team_mean_public_lb":66.96668,"top5team_mean_public_lb":70.20002,"date":"2018-06-24","max_team_public_lb":74.0,"mean_team_public_lb":66.1060727273,"top5team_mean_interval_public_lb":"70.20002 (67.6667 - 74.0)","top10team_mean_interval_public_lb":"66.96668 (62.5 - 74.0)","median_team_public_lb":66.6667},{"top5_mean_public_lb":72.73332,"min_team_public_lb":57.5,"mean_public_lb":59.2945774419,"interval_public":"63.8333 (9.33333 - 74.0)","top10team_median_interval_public_lb":"67.1667 (62.5 - 74.0)","top10_mean_public_lb":71.31667,"min_public_lb":9.33333,"timestamp":1529884799,"median_public_lb":63.8333,"interval2_public":"9.33333 - 74.0","max_public_lb":74.0,"top10team_mean_public_lb":66.96668,"top5team_mean_public_lb":70.20002,"date":"2018-06-25","max_team_public_lb":74.0,"mean_team_public_lb":65.5555666667,"top5team_mean_interval_public_lb":"70.20002 (67.6667 - 74.0)","top10team_mean_interval_public_lb":"66.96668 (62.5 - 74.0)","median_team_public_lb":65.25},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.3159735417,"interval_public":"63.25 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.1667 (62.5 - 75.5)","top10_mean_public_lb":71.98334,"min_public_lb":9.33333,"timestamp":1529971199,"median_public_lb":63.25,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.11668,"top5team_mean_public_lb":70.50002,"date":"2018-06-26","max_team_public_lb":75.5,"mean_team_public_lb":63.7738142857,"top5team_mean_interval_public_lb":"70.50002 (67.6667 - 75.5)","top10team_mean_interval_public_lb":"67.11668 (62.5 - 75.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.5833332692,"interval_public":"63.25 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.75 (62.5 - 75.5)","top10_mean_public_lb":71.98334,"min_public_lb":9.33333,"timestamp":1530057599,"median_public_lb":63.25,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.23334,"top5team_mean_public_lb":70.53334,"date":"2018-06-27","max_team_public_lb":75.5,"mean_team_public_lb":63.9166642857,"top5team_mean_interval_public_lb":"70.53334 (67.8333 - 75.5)","top10team_mean_interval_public_lb":"67.23334 (62.5 - 75.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.6333332727,"interval_public":"63.1667 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.75 (62.5 - 75.5)","top10_mean_public_lb":71.98334,"min_public_lb":9.33333,"timestamp":1530143999,"median_public_lb":63.1667,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.45001,"top5team_mean_public_lb":70.53334,"date":"2018-06-28","max_team_public_lb":75.5,"mean_team_public_lb":63.9666666667,"top5team_mean_interval_public_lb":"70.53334 (67.8333 - 75.5)","top10team_mean_interval_public_lb":"67.45001 (62.5 - 75.5)","median_team_public_lb":63.8333},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.65476125,"interval_public":"63.1667 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.75 (62.5 - 75.5)","top10_mean_public_lb":71.98334,"min_public_lb":9.33333,"timestamp":1530230399,"median_public_lb":63.1667,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.45001,"top5team_mean_public_lb":70.53334,"date":"2018-06-29","max_team_public_lb":75.5,"mean_team_public_lb":63.9666666667,"top5team_mean_interval_public_lb":"70.53334 (67.8333 - 75.5)","top10team_mean_interval_public_lb":"67.45001 (62.5 - 75.5)","median_team_public_lb":63.8333},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.8275867241,"interval_public":"63.1667 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.75 (62.5 - 75.5)","top10_mean_public_lb":72.18334,"min_public_lb":9.33333,"timestamp":1530316799,"median_public_lb":63.1667,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.56668,"top5team_mean_public_lb":70.76668,"date":"2018-06-30","max_team_public_lb":75.5,"mean_team_public_lb":64.0444466667,"top5team_mean_interval_public_lb":"70.76668 (67.8333 - 75.5)","top10team_mean_interval_public_lb":"67.56668 (62.5 - 75.5)","median_team_public_lb":63.8333},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.9858767797,"interval_public":"63.1667 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.75 (62.5 - 75.5)","top10_mean_public_lb":72.18334,"min_public_lb":9.33333,"timestamp":1530403199,"median_public_lb":63.1667,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":67.56668,"top5team_mean_public_lb":70.76668,"date":"2018-07-01","max_team_public_lb":75.5,"mean_team_public_lb":64.0444466667,"top5team_mean_interval_public_lb":"70.76668 (67.8333 - 75.5)","top10team_mean_interval_public_lb":"67.56668 (62.5 - 75.5)","median_team_public_lb":63.8333},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":60.0268827419,"interval_public":"63.1667 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.91665 (63.1667 - 75.5)","top10_mean_public_lb":72.18334,"min_public_lb":9.33333,"timestamp":1530489599,"median_public_lb":63.1667,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":68.11668,"top5team_mean_public_lb":70.80002,"date":"2018-07-02","max_team_public_lb":75.5,"mean_team_public_lb":63.7549058824,"top5team_mean_interval_public_lb":"70.80002 (68.0 - 75.5)","top10team_mean_interval_public_lb":"68.11668 (63.1667 - 75.5)","median_team_public_lb":63.8333},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.6815929851,"interval_public":"62.5 (9.33333 - 75.5)","top10team_median_interval_public_lb":"67.91665 (63.5 - 75.5)","top10_mean_public_lb":72.18334,"min_public_lb":9.33333,"timestamp":1530575999,"median_public_lb":62.5,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":68.15001,"top5team_mean_public_lb":70.80002,"date":"2018-07-03","max_team_public_lb":75.5,"mean_team_public_lb":63.7407444444,"top5team_mean_interval_public_lb":"70.80002 (68.0 - 75.5)","top10team_mean_interval_public_lb":"68.15001 (63.5 - 75.5)","median_team_public_lb":63.66665},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":59.8607319178,"interval_public":"62.5 (9.33333 - 75.5)","top10team_median_interval_public_lb":"68.0 (63.5 - 75.5)","top10_mean_public_lb":72.18334,"min_public_lb":9.33333,"timestamp":1530662399,"median_public_lb":62.5,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":68.36668,"top5team_mean_public_lb":71.23336,"date":"2018-07-04","max_team_public_lb":75.5,"mean_team_public_lb":63.5789526316,"top5team_mean_interval_public_lb":"71.23336 (68.1667 - 75.5)","top10team_mean_interval_public_lb":"68.36668 (63.5 - 75.5)","median_team_public_lb":63.5},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":60.1068388462,"interval_public":"62.5 (9.33333 - 75.5)","top10team_median_interval_public_lb":"68.0 (63.8333 - 75.5)","top10_mean_public_lb":72.23334,"min_public_lb":9.33333,"timestamp":1530748799,"median_public_lb":62.5,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":68.55001,"top5team_mean_public_lb":71.33336,"date":"2018-07-05","max_team_public_lb":75.5,"mean_team_public_lb":63.725005,"top5team_mean_interval_public_lb":"71.33336 (68.1667 - 75.5)","top10team_mean_interval_public_lb":"68.55001 (63.8333 - 75.5)","median_team_public_lb":63.66665},{"top5_mean_public_lb":73.63332,"min_team_public_lb":45.8333,"mean_public_lb":60.5058131395,"interval_public":"62.75 (9.33333 - 75.5)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 75.5)","top10_mean_public_lb":72.46666,"min_public_lb":9.33333,"timestamp":1530835199,"median_public_lb":62.75,"interval2_public":"9.33333 - 75.5","max_public_lb":75.5,"top10team_mean_public_lb":69.36667,"top5team_mean_public_lb":72.1,"date":"2018-07-06","max_team_public_lb":75.5,"mean_team_public_lb":63.9318181818,"top5team_mean_interval_public_lb":"72.1 (70.1667 - 75.5)","top10team_mean_interval_public_lb":"69.36667 (64.6667 - 75.5)","median_team_public_lb":63.66665},{"top5_mean_public_lb":75.06666,"min_team_public_lb":45.8333,"mean_public_lb":60.9523794505,"interval_public":"63.0 (9.33333 - 76.5)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 76.5)","top10_mean_public_lb":73.59999,"min_public_lb":9.33333,"timestamp":1530921599,"median_public_lb":63.0,"interval2_public":"9.33333 - 76.5","max_public_lb":76.5,"top10team_mean_public_lb":69.85001,"top5team_mean_public_lb":73.06668,"date":"2018-07-07","max_team_public_lb":76.5,"mean_team_public_lb":64.1515181818,"top5team_mean_interval_public_lb":"73.06668 (70.1667 - 76.5)","top10team_mean_interval_public_lb":"69.85001 (64.6667 - 76.5)","median_team_public_lb":63.66665},{"top5_mean_public_lb":76.73332,"min_team_public_lb":45.8333,"mean_public_lb":61.3172024731,"interval_public":"63.1667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 79.0)","top10_mean_public_lb":74.86665,"min_public_lb":9.33333,"timestamp":1531007999,"median_public_lb":63.1667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":70.20001,"top5team_mean_public_lb":73.76668,"date":"2018-07-08","max_team_public_lb":79.0,"mean_team_public_lb":64.3106090909,"top5team_mean_interval_public_lb":"73.76668 (70.1667 - 79.0)","top10team_mean_interval_public_lb":"70.20001 (64.6667 - 79.0)","median_team_public_lb":63.66665},{"top5_mean_public_lb":77.26666,"min_team_public_lb":45.8333,"mean_public_lb":61.6163180208,"interval_public":"63.1667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 79.0)","top10_mean_public_lb":75.54999,"min_public_lb":9.33333,"timestamp":1531094399,"median_public_lb":63.1667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":70.20001,"top5team_mean_public_lb":73.76668,"date":"2018-07-09","max_team_public_lb":79.0,"mean_team_public_lb":64.1739173913,"top5team_mean_interval_public_lb":"73.76668 (70.1667 - 79.0)","top10team_mean_interval_public_lb":"70.20001 (64.6667 - 79.0)","median_team_public_lb":63.5},{"top5_mean_public_lb":77.3,"min_team_public_lb":45.8333,"mean_public_lb":61.8316477778,"interval_public":"63.1667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 79.0)","top10_mean_public_lb":75.86666,"min_public_lb":9.33333,"timestamp":1531180799,"median_public_lb":63.1667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":70.20001,"top5team_mean_public_lb":73.76668,"date":"2018-07-10","max_team_public_lb":79.0,"mean_team_public_lb":64.1739173913,"top5team_mean_interval_public_lb":"73.76668 (70.1667 - 79.0)","top10team_mean_interval_public_lb":"70.20001 (64.6667 - 79.0)","median_team_public_lb":63.5},{"top5_mean_public_lb":77.66666,"min_team_public_lb":45.8333,"mean_public_lb":61.65063875,"interval_public":"63.25 (9.33333 - 79.0)","top10team_median_interval_public_lb":"69.1667 (64.6667 - 79.0)","top10_mean_public_lb":76.31666,"min_public_lb":9.33333,"timestamp":1531267199,"median_public_lb":63.25,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":70.30001,"top5team_mean_public_lb":73.96668,"date":"2018-07-11","max_team_public_lb":79.0,"mean_team_public_lb":64.2083375,"top5team_mean_interval_public_lb":"73.96668 (70.1667 - 79.0)","top10team_mean_interval_public_lb":"70.30001 (64.6667 - 79.0)","median_team_public_lb":63.66665},{"top5_mean_public_lb":77.76666,"min_team_public_lb":45.8333,"mean_public_lb":61.4538663393,"interval_public":"63.1667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"70.4167 (64.8333 - 79.0)","top10_mean_public_lb":76.76666,"min_public_lb":9.33333,"timestamp":1531353599,"median_public_lb":63.1667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":71.33334,"top5team_mean_public_lb":74.93334,"date":"2018-07-12","max_team_public_lb":79.0,"mean_team_public_lb":64.5192346154,"top5team_mean_interval_public_lb":"74.93334 (70.6667 - 79.0)","top10team_mean_interval_public_lb":"71.33334 (64.8333 - 79.0)","median_team_public_lb":63.66665},{"top5_mean_public_lb":77.76666,"min_team_public_lb":45.8333,"mean_public_lb":61.7619010924,"interval_public":"63.1667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"70.75 (67.6667 - 79.0)","top10_mean_public_lb":76.93333,"min_public_lb":9.33333,"timestamp":1531439999,"median_public_lb":63.1667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":71.85,"top5team_mean_public_lb":75.06666,"date":"2018-07-13","max_team_public_lb":79.0,"mean_team_public_lb":64.6547607143,"top5team_mean_interval_public_lb":"75.06666 (71.3333 - 79.0)","top10team_mean_interval_public_lb":"71.85 (67.6667 - 79.0)","median_team_public_lb":63.66665},{"top5_mean_public_lb":77.76666,"min_team_public_lb":45.8333,"mean_public_lb":62.2151711194,"interval_public":"63.58335 (9.33333 - 79.0)","top10team_median_interval_public_lb":"71.6667 (68.8333 - 79.0)","top10_mean_public_lb":77.01666,"min_public_lb":9.33333,"timestamp":1531526399,"median_public_lb":63.58335,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":72.91666,"top5team_mean_public_lb":75.96666,"date":"2018-07-14","max_team_public_lb":79.0,"mean_team_public_lb":65.3655903226,"top5team_mean_interval_public_lb":"75.96666 (72.1667 - 79.0)","top10team_mean_interval_public_lb":"72.91666 (68.8333 - 79.0)","median_team_public_lb":64.0},{"top5_mean_public_lb":77.76666,"min_team_public_lb":45.8333,"mean_public_lb":62.6985789362,"interval_public":"64.0 (9.33333 - 79.0)","top10team_median_interval_public_lb":"72.9167 (69.8333 - 79.0)","top10_mean_public_lb":77.11666,"min_public_lb":9.33333,"timestamp":1531612799,"median_public_lb":64.0,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":73.45,"top5team_mean_public_lb":76.46666,"date":"2018-07-15","max_team_public_lb":79.0,"mean_team_public_lb":65.703125,"top5team_mean_interval_public_lb":"76.46666 (74.6667 - 79.0)","top10team_mean_interval_public_lb":"73.45 (69.8333 - 79.0)","median_team_public_lb":64.33335},{"top5_mean_public_lb":78.03332,"min_team_public_lb":45.8333,"mean_public_lb":63.1442921477,"interval_public":"64.6667 (9.33333 - 79.0)","top10team_median_interval_public_lb":"73.08335 (69.8333 - 79.0)","top10_mean_public_lb":77.39999,"min_public_lb":9.33333,"timestamp":1531699199,"median_public_lb":64.6667,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":73.71666,"top5team_mean_public_lb":76.99998,"date":"2018-07-16","max_team_public_lb":79.0,"mean_team_public_lb":65.7777727273,"top5team_mean_interval_public_lb":"76.99998 (75.0 - 79.0)","top10team_mean_interval_public_lb":"73.71666 (69.8333 - 79.0)","median_team_public_lb":64.0},{"top5_mean_public_lb":78.33332,"min_team_public_lb":45.8333,"mean_public_lb":63.7494731447,"interval_public":"66.3333 (9.33333 - 79.0)","top10team_median_interval_public_lb":"74.33335 (70.1667 - 79.0)","top10_mean_public_lb":77.71665,"min_public_lb":9.33333,"timestamp":1531785599,"median_public_lb":66.3333,"interval2_public":"9.33333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":74.2,"top5team_mean_public_lb":76.99998,"date":"2018-07-17","max_team_public_lb":79.0,"mean_team_public_lb":66.1523771429,"top5team_mean_interval_public_lb":"76.99998 (75.0 - 79.0)","top10team_mean_interval_public_lb":"74.2 (70.1667 - 79.0)","median_team_public_lb":64.6667},{"top5_mean_public_lb":78.4,"min_team_public_lb":45.8333,"mean_public_lb":63.7017518129,"interval_public":"67.1667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"74.33335 (71.0 - 79.0)","top10_mean_public_lb":77.84999,"min_public_lb":8.83333,"timestamp":1531871999,"median_public_lb":67.1667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":74.58334,"top5team_mean_public_lb":77.06666,"date":"2018-07-18","max_team_public_lb":79.0,"mean_team_public_lb":66.3703694444,"top5team_mean_interval_public_lb":"77.06666 (75.0 - 79.0)","top10team_mean_interval_public_lb":"74.58334 (71.0 - 79.0)","median_team_public_lb":65.9167},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":63.6029123497,"interval_public":"66.6667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"74.5 (71.0 - 79.0)","top10_mean_public_lb":78.01666,"min_public_lb":8.83333,"timestamp":1531958399,"median_public_lb":66.6667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":74.65,"top5team_mean_public_lb":77.19998,"date":"2018-07-19","max_team_public_lb":79.0,"mean_team_public_lb":65.9487179487,"top5team_mean_interval_public_lb":"77.19998 (75.3333 - 79.0)","top10team_mean_interval_public_lb":"74.65 (71.0 - 79.0)","median_team_public_lb":66.6667},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":63.8177873575,"interval_public":"67.1667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"76.0833 (71.0 - 79.0)","top10_mean_public_lb":78.08333,"min_public_lb":8.83333,"timestamp":1532044799,"median_public_lb":67.1667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":75.06666,"top5team_mean_public_lb":77.59998,"date":"2018-07-20","max_team_public_lb":79.0,"mean_team_public_lb":66.2564076923,"top5team_mean_interval_public_lb":"77.59998 (76.3333 - 79.0)","top10team_mean_interval_public_lb":"75.06666 (71.0 - 79.0)","median_team_public_lb":67.6667},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":63.6179854455,"interval_public":"67.3333 (8.83333 - 79.0)","top10team_median_interval_public_lb":"76.25 (71.1667 - 79.0)","top10_mean_public_lb":78.08333,"min_public_lb":8.83333,"timestamp":1532131199,"median_public_lb":67.3333,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":75.3,"top5team_mean_public_lb":77.59998,"date":"2018-07-21","max_team_public_lb":79.0,"mean_team_public_lb":66.4105707317,"top5team_mean_interval_public_lb":"77.59998 (76.3333 - 79.0)","top10team_mean_interval_public_lb":"75.3 (71.1667 - 79.0)","median_team_public_lb":67.6667},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":63.9071412381,"interval_public":"67.6667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"76.5833 (71.1667 - 79.0)","top10_mean_public_lb":78.16667,"min_public_lb":8.83333,"timestamp":1532217599,"median_public_lb":67.6667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":75.66667,"top5team_mean_public_lb":77.73332,"date":"2018-07-22","max_team_public_lb":79.0,"mean_team_public_lb":66.512197561,"top5team_mean_interval_public_lb":"77.73332 (76.8333 - 79.0)","top10team_mean_interval_public_lb":"75.66667 (71.1667 - 79.0)","median_team_public_lb":67.6667},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":64.0508208969,"interval_public":"67.6667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"76.75 (72.5 - 79.0)","top10_mean_public_lb":78.16667,"min_public_lb":8.83333,"timestamp":1532303999,"median_public_lb":67.6667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":76.3,"top5team_mean_public_lb":77.73332,"date":"2018-07-23","max_team_public_lb":79.0,"mean_team_public_lb":66.8255837209,"top5team_mean_interval_public_lb":"77.73332 (76.8333 - 79.0)","top10team_mean_interval_public_lb":"76.3 (72.5 - 79.0)","median_team_public_lb":67.6667},{"top5_mean_public_lb":78.53334,"min_team_public_lb":45.8333,"mean_public_lb":64.3071622314,"interval_public":"67.6667 (8.83333 - 79.0)","top10team_median_interval_public_lb":"76.91665 (72.6667 - 79.0)","top10_mean_public_lb":78.16667,"min_public_lb":8.83333,"timestamp":1532390399,"median_public_lb":67.6667,"interval2_public":"8.83333 - 79.0","max_public_lb":79.0,"top10team_mean_public_lb":76.61667,"top5team_mean_public_lb":77.76666,"date":"2018-07-24","max_team_public_lb":79.0,"mean_team_public_lb":66.3299367347,"top5team_mean_interval_public_lb":"77.76666 (77.0 - 79.0)","top10team_mean_interval_public_lb":"76.61667 (72.6667 - 79.0)","median_team_public_lb":67.6667},{"top5_mean_public_lb":78.73334,"min_team_public_lb":45.8333,"mean_public_lb":64.4453123438,"interval_public":"67.75 (8.83333 - 79.1667)","top10team_median_interval_public_lb":"77.0 (74.3333 - 79.1667)","top10_mean_public_lb":78.33334,"min_public_lb":8.83333,"timestamp":1532476799,"median_public_lb":67.75,"interval2_public":"8.83333 - 79.1667","max_public_lb":79.1667,"top10team_mean_public_lb":76.9,"top5team_mean_public_lb":77.96666,"date":"2018-07-25","max_team_public_lb":79.1667,"mean_team_public_lb":66.720004,"top5team_mean_interval_public_lb":"77.96666 (77.0 - 79.1667)","top10team_mean_interval_public_lb":"76.9 (74.3333 - 79.1667)","median_team_public_lb":67.91665},{"top5_mean_public_lb":78.73334,"min_team_public_lb":45.8333,"mean_public_lb":64.7521216727,"interval_public":"67.8333 (8.83333 - 79.1667)","top10team_median_interval_public_lb":"77.0 (75.0 - 79.1667)","top10_mean_public_lb":78.33334,"min_public_lb":8.83333,"timestamp":1532563199,"median_public_lb":67.8333,"interval2_public":"8.83333 - 79.1667","max_public_lb":79.1667,"top10team_mean_public_lb":76.98334,"top5team_mean_public_lb":77.96666,"date":"2018-07-26","max_team_public_lb":79.1667,"mean_team_public_lb":66.8969745455,"top5team_mean_interval_public_lb":"77.96666 (77.0 - 79.1667)","top10team_mean_interval_public_lb":"76.98334 (75.0 - 79.1667)","median_team_public_lb":67.8333},{"top5_mean_public_lb":78.73334,"min_team_public_lb":45.8333,"mean_public_lb":65.1588109764,"interval_public":"68.3333 (8.83333 - 79.1667)","top10team_median_interval_public_lb":"77.0 (75.1667 - 79.1667)","top10_mean_public_lb":78.33334,"min_public_lb":8.83333,"timestamp":1532649599,"median_public_lb":68.3333,"interval2_public":"8.83333 - 79.1667","max_public_lb":79.1667,"top10team_mean_public_lb":77.01667,"top5team_mean_public_lb":77.96666,"date":"2018-07-27","max_team_public_lb":79.1667,"mean_team_public_lb":67.5386928571,"top5team_mean_interval_public_lb":"77.96666 (77.0 - 79.1667)","top10team_mean_interval_public_lb":"77.01667 (75.1667 - 79.1667)","median_team_public_lb":68.75},{"top5_mean_public_lb":79.26668,"min_team_public_lb":45.8333,"mean_public_lb":65.30270081,"interval_public":"68.3333 (8.83333 - 79.6667)","top10team_median_interval_public_lb":"77.16665 (75.5 - 79.6667)","top10_mean_public_lb":78.71668,"min_public_lb":8.83333,"timestamp":1532735999,"median_public_lb":68.3333,"interval2_public":"8.83333 - 79.6667","max_public_lb":79.6667,"top10team_mean_public_lb":77.36667,"top5team_mean_public_lb":78.26666,"date":"2018-07-28","max_team_public_lb":79.6667,"mean_team_public_lb":67.7589303571,"top5team_mean_interval_public_lb":"78.26666 (77.3333 - 79.6667)","top10team_mean_interval_public_lb":"77.36667 (75.5 - 79.6667)","median_team_public_lb":68.75},{"top5_mean_public_lb":79.36668,"min_team_public_lb":45.8333,"mean_public_lb":65.3382649704,"interval_public":"68.3333 (8.83333 - 79.6667)","top10team_median_interval_public_lb":"77.3333 (76.1667 - 79.6667)","top10_mean_public_lb":78.86668,"min_public_lb":8.83333,"timestamp":1532822399,"median_public_lb":68.3333,"interval2_public":"8.83333 - 79.6667","max_public_lb":79.6667,"top10team_mean_public_lb":77.55,"top5team_mean_public_lb":78.26666,"date":"2018-07-29","max_team_public_lb":79.6667,"mean_team_public_lb":67.8742701754,"top5team_mean_interval_public_lb":"78.26666 (77.3333 - 79.6667)","top10team_mean_interval_public_lb":"77.55 (76.1667 - 79.6667)","median_team_public_lb":69.1667},{"top5_mean_public_lb":79.46668,"min_team_public_lb":45.8333,"mean_public_lb":65.5404770286,"interval_public":"68.5 (8.83333 - 79.6667)","top10team_median_interval_public_lb":"77.3333 (76.1667 - 79.6667)","top10_mean_public_lb":79.00001,"min_public_lb":8.83333,"timestamp":1532908799,"median_public_lb":68.5,"interval2_public":"8.83333 - 79.6667","max_public_lb":79.6667,"top10team_mean_public_lb":77.55,"top5team_mean_public_lb":78.26666,"date":"2018-07-30","max_team_public_lb":79.6667,"mean_team_public_lb":68.1553677966,"top5team_mean_interval_public_lb":"78.26666 (77.3333 - 79.6667)","top10team_mean_interval_public_lb":"77.55 (76.1667 - 79.6667)","median_team_public_lb":69.3333},{"top5_mean_public_lb":79.73334,"min_team_public_lb":45.8333,"mean_public_lb":65.4774172358,"interval_public":"68.5 (8.83333 - 80.0)","top10team_median_interval_public_lb":"77.3333 (76.6667 - 80.0)","top10_mean_public_lb":79.41667,"min_public_lb":8.83333,"timestamp":1532995199,"median_public_lb":68.5,"interval2_public":"8.83333 - 80.0","max_public_lb":80.0,"top10team_mean_public_lb":77.94999,"top5team_mean_public_lb":78.83332,"date":"2018-07-31","max_team_public_lb":80.0,"mean_team_public_lb":68.1798952381,"top5team_mean_interval_public_lb":"78.83332 (77.3333 - 80.0)","top10team_mean_interval_public_lb":"77.94999 (76.6667 - 80.0)","median_team_public_lb":69.6667},{"top5_mean_public_lb":79.73334,"min_team_public_lb":45.8333,"mean_public_lb":65.6116674,"interval_public":"68.3333 (8.83333 - 80.0)","top10team_median_interval_public_lb":"77.3333 (76.6667 - 80.0)","top10_mean_public_lb":79.41667,"min_public_lb":8.83333,"timestamp":1533081599,"median_public_lb":68.3333,"interval2_public":"8.83333 - 80.0","max_public_lb":80.0,"top10team_mean_public_lb":77.94999,"top5team_mean_public_lb":78.83332,"date":"2018-08-01","max_team_public_lb":80.0,"mean_team_public_lb":67.7311106667,"top5team_mean_interval_public_lb":"78.83332 (77.3333 - 80.0)","top10team_mean_interval_public_lb":"77.94999 (76.6667 - 80.0)","median_team_public_lb":68.6667}] -------------------------------------------------------------------------------- /tests/data6.json: -------------------------------------------------------------------------------- 1 | [{"entries_per_team":1.0,"timestamp":1527119999,"total_entries":2,"teams":2,"current_entries":2,"date":"2018-05-24"},{"entries_per_team":1.0,"timestamp":1527206399,"total_entries":2,"teams":2,"current_entries":0,"date":"2018-05-25"},{"entries_per_team":1.0,"timestamp":1527292799,"total_entries":2,"teams":2,"current_entries":0,"date":"2018-05-26"},{"entries_per_team":1.5,"timestamp":1527379199,"total_entries":3,"teams":2,"current_entries":1,"date":"2018-05-27"},{"entries_per_team":2.0,"timestamp":1527465599,"total_entries":4,"teams":2,"current_entries":1,"date":"2018-05-28"},{"entries_per_team":2.5,"timestamp":1527551999,"total_entries":5,"teams":2,"current_entries":1,"date":"2018-05-29"},{"entries_per_team":2.5,"timestamp":1527638399,"total_entries":5,"teams":2,"current_entries":0,"date":"2018-05-30"},{"entries_per_team":2.5,"timestamp":1527724799,"total_entries":5,"teams":2,"current_entries":0,"date":"2018-05-31"},{"entries_per_team":2.0,"timestamp":1527811199,"total_entries":8,"teams":4,"current_entries":3,"date":"2018-06-01"},{"entries_per_team":2.0,"timestamp":1527897599,"total_entries":10,"teams":5,"current_entries":2,"date":"2018-06-02"},{"entries_per_team":2.0,"timestamp":1527983999,"total_entries":10,"teams":5,"current_entries":0,"date":"2018-06-03"},{"entries_per_team":2.0,"timestamp":1528070399,"total_entries":12,"teams":6,"current_entries":2,"date":"2018-06-04"},{"entries_per_team":2.1666666667,"timestamp":1528156799,"total_entries":14,"teams":6,"current_entries":2,"date":"2018-06-05"},{"entries_per_team":2.1666666667,"timestamp":1528243199,"total_entries":14,"teams":6,"current_entries":0,"date":"2018-06-06"},{"entries_per_team":2.1666666667,"timestamp":1528329599,"total_entries":14,"teams":6,"current_entries":0,"date":"2018-06-07"},{"entries_per_team":2.1666666667,"timestamp":1528415999,"total_entries":14,"teams":6,"current_entries":0,"date":"2018-06-08"},{"entries_per_team":2.1666666667,"timestamp":1528502399,"total_entries":14,"teams":6,"current_entries":0,"date":"2018-06-09"},{"entries_per_team":2.1666666667,"timestamp":1528588799,"total_entries":14,"teams":6,"current_entries":0,"date":"2018-06-10"},{"entries_per_team":2.3333333333,"timestamp":1528675199,"total_entries":15,"teams":6,"current_entries":1,"date":"2018-06-11"},{"entries_per_team":2.5,"timestamp":1528761599,"total_entries":17,"teams":6,"current_entries":2,"date":"2018-06-12"},{"entries_per_team":2.4285714286,"timestamp":1528847999,"total_entries":19,"teams":7,"current_entries":2,"date":"2018-06-13"},{"entries_per_team":2.4285714286,"timestamp":1528934399,"total_entries":19,"teams":7,"current_entries":0,"date":"2018-06-14"},{"entries_per_team":2.4285714286,"timestamp":1529020799,"total_entries":19,"teams":7,"current_entries":0,"date":"2018-06-15"},{"entries_per_team":2.1111111111,"timestamp":1529107199,"total_entries":22,"teams":9,"current_entries":3,"date":"2018-06-16"},{"entries_per_team":2.1,"timestamp":1529193599,"total_entries":24,"teams":10,"current_entries":2,"date":"2018-06-17"},{"entries_per_team":2.2,"timestamp":1529279999,"total_entries":25,"teams":10,"current_entries":1,"date":"2018-06-18"},{"entries_per_team":2.3636363636,"timestamp":1529366399,"total_entries":29,"teams":11,"current_entries":4,"date":"2018-06-19"},{"entries_per_team":2.5454545455,"timestamp":1529452799,"total_entries":31,"teams":11,"current_entries":2,"date":"2018-06-20"},{"entries_per_team":2.8181818182,"timestamp":1529539199,"total_entries":34,"teams":11,"current_entries":3,"date":"2018-06-21"},{"entries_per_team":3.0,"timestamp":1529625599,"total_entries":37,"teams":11,"current_entries":3,"date":"2018-06-22"},{"entries_per_team":3.2727272727,"timestamp":1529711999,"total_entries":40,"teams":11,"current_entries":3,"date":"2018-06-23"},{"entries_per_team":3.3636363636,"timestamp":1529798399,"total_entries":41,"teams":11,"current_entries":1,"date":"2018-06-24"},{"entries_per_team":3.25,"timestamp":1529884799,"total_entries":43,"teams":12,"current_entries":2,"date":"2018-06-25"},{"entries_per_team":3.1428571429,"timestamp":1529971199,"total_entries":48,"teams":14,"current_entries":5,"date":"2018-06-26"},{"entries_per_team":3.4285714286,"timestamp":1530057599,"total_entries":52,"teams":14,"current_entries":4,"date":"2018-06-27"},{"entries_per_team":3.4,"timestamp":1530143999,"total_entries":55,"teams":15,"current_entries":3,"date":"2018-06-28"},{"entries_per_team":3.4666666667,"timestamp":1530230399,"total_entries":56,"teams":15,"current_entries":1,"date":"2018-06-29"},{"entries_per_team":3.6,"timestamp":1530316799,"total_entries":58,"teams":15,"current_entries":2,"date":"2018-06-30"},{"entries_per_team":3.6666666667,"timestamp":1530403199,"total_entries":59,"teams":15,"current_entries":1,"date":"2018-07-01"},{"entries_per_team":3.4117647059,"timestamp":1530489599,"total_entries":62,"teams":17,"current_entries":3,"date":"2018-07-02"},{"entries_per_team":3.5,"timestamp":1530575999,"total_entries":67,"teams":18,"current_entries":5,"date":"2018-07-03"},{"entries_per_team":3.6315789474,"timestamp":1530662399,"total_entries":73,"teams":19,"current_entries":6,"date":"2018-07-04"},{"entries_per_team":3.7,"timestamp":1530748799,"total_entries":78,"teams":20,"current_entries":5,"date":"2018-07-05"},{"entries_per_team":3.7272727273,"timestamp":1530835199,"total_entries":86,"teams":22,"current_entries":8,"date":"2018-07-06"},{"entries_per_team":3.9545454545,"timestamp":1530921599,"total_entries":91,"teams":22,"current_entries":5,"date":"2018-07-07"},{"entries_per_team":4.0454545455,"timestamp":1531007999,"total_entries":93,"teams":22,"current_entries":2,"date":"2018-07-08"},{"entries_per_team":4.0,"timestamp":1531094399,"total_entries":96,"teams":23,"current_entries":3,"date":"2018-07-09"},{"entries_per_team":4.1304347826,"timestamp":1531180799,"total_entries":99,"teams":23,"current_entries":3,"date":"2018-07-10"},{"entries_per_team":4.125,"timestamp":1531267199,"total_entries":104,"teams":24,"current_entries":5,"date":"2018-07-11"},{"entries_per_team":4.0769230769,"timestamp":1531353599,"total_entries":112,"teams":26,"current_entries":8,"date":"2018-07-12"},{"entries_per_team":4.0357142857,"timestamp":1531439999,"total_entries":119,"teams":28,"current_entries":7,"date":"2018-07-13"},{"entries_per_team":4.0967741935,"timestamp":1531526399,"total_entries":134,"teams":31,"current_entries":15,"date":"2018-07-14"},{"entries_per_team":4.1875,"timestamp":1531612799,"total_entries":141,"teams":32,"current_entries":7,"date":"2018-07-15"},{"entries_per_team":4.303030303,"timestamp":1531699199,"total_entries":149,"teams":33,"current_entries":8,"date":"2018-07-16"},{"entries_per_team":4.3428571429,"timestamp":1531785599,"total_entries":159,"teams":35,"current_entries":10,"date":"2018-07-17"},{"entries_per_team":4.5,"timestamp":1531871999,"total_entries":171,"teams":36,"current_entries":12,"date":"2018-07-18"},{"entries_per_team":4.4358974359,"timestamp":1531958399,"total_entries":183,"teams":39,"current_entries":12,"date":"2018-07-19"},{"entries_per_team":4.6666666667,"timestamp":1532044799,"total_entries":193,"teams":39,"current_entries":10,"date":"2018-07-20"},{"entries_per_team":4.6097560976,"timestamp":1532131199,"total_entries":202,"teams":41,"current_entries":9,"date":"2018-07-21"},{"entries_per_team":4.8048780488,"timestamp":1532217599,"total_entries":210,"teams":41,"current_entries":8,"date":"2018-07-22"},{"entries_per_team":4.8604651163,"timestamp":1532303999,"total_entries":223,"teams":43,"current_entries":13,"date":"2018-07-23"},{"entries_per_team":4.6530612245,"timestamp":1532390399,"total_entries":242,"teams":49,"current_entries":19,"date":"2018-07-24"},{"entries_per_team":4.84,"timestamp":1532476799,"total_entries":256,"teams":50,"current_entries":14,"date":"2018-07-25"},{"entries_per_team":4.7454545455,"timestamp":1532563199,"total_entries":275,"teams":55,"current_entries":19,"date":"2018-07-26"},{"entries_per_team":5.0535714286,"timestamp":1532649599,"total_entries":297,"teams":56,"current_entries":22,"date":"2018-07-27"},{"entries_per_team":5.4642857143,"timestamp":1532735999,"total_entries":321,"teams":56,"current_entries":24,"date":"2018-07-28"},{"entries_per_team":5.649122807,"timestamp":1532822399,"total_entries":338,"teams":57,"current_entries":17,"date":"2018-07-29"},{"entries_per_team":5.6610169492,"timestamp":1532908799,"total_entries":350,"teams":59,"current_entries":12,"date":"2018-07-30"},{"entries_per_team":5.5873015873,"timestamp":1532995199,"total_entries":369,"teams":63,"current_entries":19,"date":"2018-07-31"},{"entries_per_team":5.1066666667,"timestamp":1533081599,"total_entries":400,"teams":75,"current_entries":31,"date":"2018-08-01"}] -------------------------------------------------------------------------------- /tests/data_time.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "time": "2018-02-10 12:30:00", 4 | "valueA": "84.0 (64.0 - 86.0)", 5 | "valueB": "11 (10.0 - 75)", 6 | "valueC": "95", 7 | "valueD": "25", 8 | "valueE": "45" 9 | }, 10 | { 11 | "time": "2018-02-10 10:30:00", 12 | "valueA": "88.0 (34.0 - 92.0)", 13 | "valueB": "23 (10.0 - 75)", 14 | "valueD": "12", 15 | "valueE": "16" 16 | }, 17 | { 18 | "time": "2018-02-10 11:30:00", 19 | "valueA": "72.0 (40.0 - 84.0)", 20 | "valueB": "36 (20.0 - 75)", 21 | "valueC": "36", 22 | "valueD": "25", 23 | "valueE": "34" 24 | }, 25 | { 26 | "time": "2018-02-10 13:30:00", 27 | "valueA": "66.0 (65.0 - 87.0)", 28 | "valueB": "16 (10.0 - 75)", 29 | "valueC": "22", 30 | "valueD": "35", 31 | "valueE": "88" 32 | }, 33 | { 34 | "time": "2018-02-10 13:40:00", 35 | "valueA": "56.0 (54.0 - 78.0)", 36 | "valueB": "97 (30.0 - 99)", 37 | "valueC": "46", 38 | "valueE": "87" 39 | }, 40 | { 41 | "time": "2018-02-10 13:50:00", 42 | "valueA": "46.0 (23.0 - 69.0)", 43 | "valueB": "66 (30.0 - 75)", 44 | "valueC": "32", 45 | "valueD": "46", 46 | "valueE": "75" 47 | }, 48 | { 49 | "time": "2018-02-10 14:50:00", 50 | "valueA": "66.0 (53.0 - 79.0)", 51 | "valueB": "68 (20- 73)", 52 | "valueC": "52", 53 | "valueD": "76", 54 | "valueE": "35" 55 | }, 56 | { 57 | "time": "2018-02-10 22:00:00", 58 | "valueA": "86.0 (85.0 - 87.0)", 59 | "valueB": "58 (30.0 - 75)", 60 | "valueC": "52", 61 | "valueD": "36", 62 | "valueE": "45" 63 | }, 64 | { 65 | "time": "2018-02-09 14:50:00", 66 | "valueA": "66.0 (43.0 - 79.0)", 67 | "valueB": "68 (30.0 - 75)", 68 | "valueC": "52", 69 | "valueD": "76", 70 | "valueE": "35" 71 | } 72 | ] -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JS-datatable examples 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 44 | 45 | 46 | 47 | 48 |
49 |
50 |
51 | 52 |
53 |
54 |

js-datatable development tests

55 | 56 |

Hide datatable

57 | 83 | 84 | 85 | 88 | 95 | 106 | 107 | 108 |
86 | Rank 87 | 93 | System 94 | 104 | Value Y 105 |
109 |

Timeline

110 |
111 |
112 |

Teams

113 | 136 | 137 | 138 | 145 | 154 | 155 | 156 |
143 | Date 144 | 152 | Teams 153 |
157 |
158 |
159 |

Total entries

160 | 183 | 184 | 185 | 192 | 201 | 202 | 203 |
190 | Date 191 | 199 | Entries 200 |
204 |
205 |
206 |

Entries per day

207 | 230 | 231 | 232 | 239 | 248 | 249 | 250 |
237 | Date 238 | 246 | Entries per day 247 |
251 |
252 |
253 | 284 | 285 | 286 | 293 | 302 | 310 | 311 | 312 |
291 | Date 292 | 300 | Top Team 301 | 308 | Top 10 Team median 309 |
313 | 314 | 315 |

Horizontal line

316 | 359 | 360 | 361 | 364 | 371 | 383 | 395 | 405 | 415 | 425 | 435 | 436 | 437 |
362 | Rank 363 | 369 | System 370 | 381 | Value 1 382 | 393 | Value 2 394 | 403 | Bar 404 | 413 | Line 414 | 423 | Bin 424 | 433 | scatter line 434 |
438 | 439 |

Time line

440 | 452 | 453 | 454 | 461 | 468 | 469 | 470 |
459 | Time 460 | 466 | Value 467 |
471 | 472 | 473 |

Comparison

474 | 492 | 493 | 494 | 497 | 504 | 514 | 524 | 534 | 544 | 545 | 546 |
495 | Rank 496 | 502 | System 503 | 512 | Value 1 513 | 522 | Value 2 523 | 532 | Value 3 533 | 542 | Value 4 543 |
547 | 548 |

Filtering

549 |

Column based filtering.

550 | 565 | 566 | 567 | 571 | 578 | 585 | 593 | 602 | 603 | 604 |
569 | Name 570 | 576 | Value 1 577 | 583 | Value 2 584 | 591 | Feature 2 592 | 600 | Feature 3 601 |
605 | 606 |

Logarithmic data

607 | 608 | 624 | 625 | 626 | 629 | 636 | 646 | 657 | 658 | 659 |
627 | Rank 628 | 634 | System 635 | 644 | Value X 645 | 655 | Value Y 656 |
660 | 661 |
662 |
663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 683 | 684 | --------------------------------------------------------------------------------