
From: Samuel Guimarães <sguimaraes943@gmail.com> Signed-off-by: Samuel Guimarães <sguimaraes943@gmail.com> --- configure.ac | 3 + ui/css/Makefile.am | 8 +- ui/css/datatables.bootstrap.css | 255 +++++++++++++++++++++++++ ui/css/src/datatables.bootstrap.scss | 302 ++++++++++++++++++++++++++++++ ui/js/src/wok.datatables.js | 42 +++++ ui/libs/Makefile.am | 2 +- ui/libs/datatables/Makefile.am | 23 +++ ui/libs/datatables/css/Makefile.am | 21 +++ ui/libs/datatables/css/datatables.min.css | 24 +++ ui/libs/moment/LICENSE | 22 +++ ui/libs/moment/Makefile.am | 21 +++ ui/pages/login.html.tmpl | 4 + ui/pages/wok-ui.html.tmpl | 4 + 13 files changed, 728 insertions(+), 3 deletions(-) create mode 100644 ui/css/datatables.bootstrap.css create mode 100644 ui/css/src/datatables.bootstrap.scss create mode 100644 ui/js/src/wok.datatables.js create mode 100644 ui/libs/datatables/Makefile.am create mode 100644 ui/libs/datatables/css/Makefile.am create mode 100644 ui/libs/datatables/css/datatables.min.css create mode 100644 ui/libs/moment/LICENSE create mode 100644 ui/libs/moment/Makefile.am diff --git a/configure.ac b/configure.ac index b7ffee4..12f6c67 100644 --- a/configure.ac +++ b/configure.ac @@ -142,6 +142,9 @@ AC_CONFIG_FILES([ ui/libs/jquery-ui/themes/base/images/Makefile ui/libs/list-js/Makefile ui/libs/lodash/Makefile + ui/libs/moment/Makefile + ui/libs/datatables/Makefile + ui/libs/datatables/css/Makefile ui/libs/typeahead/Makefile ui/pages/Makefile ui/pages/help/Makefile diff --git a/ui/css/Makefile.am b/ui/css/Makefile.am index aee33d7..a779e61 100644 --- a/ui/css/Makefile.am +++ b/ui/css/Makefile.am @@ -22,7 +22,7 @@ SUBDIRS = fontawesome opensans EXTRA_DIST = theme-default cssdir = $(datadir)/wok/ui/css -dist_css_DATA = theme-default.min.css jquery-ui.custom.css wok.css bootstrap.custom.css bootstrap-select.custom.css settings.css +dist_css_DATA = theme-default.min.css jquery-ui.custom.css wok.css bootstrap.custom.css bootstrap-select.custom.css settings.css datatables.bootstrap.css wok: src/wok.scss src/modules/*.scss echo "Compiling .scss file $<" @@ -40,7 +40,11 @@ bootstrap-select: src/bootstrap-select.custom.scss echo "Compiling .scss file $<" sassc -s expanded $< bootstrap-select.custom.css -css: wok bootstrap bootstrap-select settings +datatables: src/datatables.bootstrap.scss + echo "Compiling .scss file $<" + sassc -s expanded $< datatables.bootstrap.css + +css: wok bootstrap bootstrap-select settings datatables theme-default.min.css: theme-default/*.css cat $^ > $@ diff --git a/ui/css/datatables.bootstrap.css b/ui/css/datatables.bootstrap.css new file mode 100644 index 0000000..0bc03c0 --- /dev/null +++ b/ui/css/datatables.bootstrap.css @@ -0,0 +1,255 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} + +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length { + text-align: right; + padding-left: 10px; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length select, div.dataTables_wrapper div.dataTables_length .btn { + width: 100px; + display: inline-block; + height: 34px; + padding-top: 4px; +} + +div.dataTables_wrapper div.dataTables_length .btn .caret { + height: 32px; +} + +div.dataTables_wrapper div.dataTables_length .btn .caret:before { + top: 6px; +} + +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} + +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_wrapper div.dataTables_filter input { + font-size: 14px; + margin-left: 0.5em; + display: inline-block; + width: auto; + font-size: 14px !important; +} + +div.dataTables_wrapper div.dataTables_filter .form-control { + width: 514px; + height: 34px; +} + +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; + text-align: right; +} + +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: left; +} + +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} + +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} + +table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + opacity: 0.3; + font: normal normal normal 19px/1 FontAwesome; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +table.dataTable thead .sorting:after { + top: 13px; + content: "\f107"; + /* sort - arrow down */ +} + +table.dataTable thead .sorting:before { + top: 3px; + content: "\f106"; + /* sort - arrow up */ +} + +table.dataTable thead .sorting_asc:after { + opacity: 0.8; + content: "\f107"; + /* sort-by-attributes */ + top: 13px; +} + +table.dataTable thead .sorting_desc:after { + opacity: 0.8; + content: "\f106"; + /* sort-by-attributes-alt */ + top: 3px; +} + +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +table.dataTable tfoot { + display: none; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table thead .sorting:after, +div.dataTables_scrollBody table thead .sorting_asc:after, +div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; +} + +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} + +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} + +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} + +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} + +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/ui/css/src/datatables.bootstrap.scss b/ui/css/src/datatables.bootstrap.scss new file mode 100644 index 0000000..01a0e40 --- /dev/null +++ b/ui/css/src/datatables.bootstrap.scss @@ -0,0 +1,302 @@ +// +// Project Wok +// +// Copyright IBM Corp, 2016 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +@import "modules/wok-variables"; + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; + + td, + th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + + &.dataTables_empty { + text-align: center; + } + } + + // Style options for the table. Foundation provides its own, but it is also + // useful to have a few more for DataTables + &.nowrap { + th, + td { + white-space: nowrap; + } + } +} + + +// DataTables' built in feature elements +div.dataTables_wrapper { + div.dataTables_length { + text-align: right; + padding-left: 10px; + + label { + font-weight: normal; + text-align: left; + white-space: nowrap; + } + + select, .btn { + width: 100px; + display: inline-block; + height: 34px; + padding-top: 4px; + } + + .btn .caret { + height: 32px; + &:before { + top: 6px; + } + } + } + + div.dataTables_filter { + text-align: right; + + label { + font-weight: normal; + white-space: nowrap; + text-align: left; + } + + input { + font-size: 14px; + margin-left: 0.5em; + display: inline-block; + width: auto; + font-size: $font-size-base !important; + } + + .form-control { + width: 514px; // Adust filter input with Wok filter size + height: 34px; + } + } + + div.dataTables_info { + padding-top: 8px; + white-space: nowrap; + text-align: right; + } + + div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: left; + + ul.pagination { + margin: 2px 0; + white-space: nowrap; + } + } + + div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; + } +} + + +// Sorting - using Glyphicons +table.dataTable thead { + > tr > th, + > tr > td { + &.sorting_asc, + &.sorting_desc, + &.sorting { + padding-right: 30px; + } + + &:active { + outline: none; + } + } + + .sorting, + .sorting_asc, + .sorting_desc, + .sorting_asc_disabled, + .sorting_desc_disabled { + cursor: pointer; + position: relative; + + &:before, + &:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + opacity: 0.3; + font: normal normal normal 19px/1 FontAwesome; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + + .sorting:after { + top: 13px; + content: "\f107"; /* sort - arrow down */ + } + + .sorting:before { + top: 3px; + content: "\f106"; /* sort - arrow up */ + } + + .sorting_asc:after { + opacity: 0.8; + content: "\f107"; /* sort-by-attributes */ + top: 13px; + } + + .sorting_desc:after { + opacity: 0.8; + content: "\f106"; /* sort-by-attributes-alt */ + top: 3px; + } + + .sorting_asc_disabled:after, + .sorting_desc_disabled:after { + color: #eee; + } +} + +table.dataTable tfoot { + display: none; // Wok doesn't have tfoot on tables +} + + +// Scrolling +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody { + table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; + + thead { // Hide sort icons + .sorting:after, + .sorting_asc:after, + .sorting_desc:after { + display: none; + } + } + + tbody tr:first-child th, + tbody tr:first-child td { + border-top: none; + } + } +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + + +// Responsive +@media screen and (max-width: 767px) { + div.dataTables_wrapper { + div.dataTables_length, + div.dataTables_filter, + div.dataTables_info, + div.dataTables_paginate { + text-align: center; + } + } +} + + +// +// Bootstrap provides a range of styling options for table's via class name +// that we want to full support. They sometimes require some customisations +// + +// Condensed +table.dataTable.table-condensed { + > thead > tr > th { + padding-right: 20px; + } + + .sorting:after, + .sorting_asc:after, + .sorting_desc:after { + top: 6px; + right: 6px; + } +} + +// Frustratingly the border-collapse:collapse used by Bootstrap makes the column +// width calculations when using scrolling impossible to align columns. We have +// to use `border-collapse: separate` +table.table-bordered.dataTable { + th, + td { + border-left-width: 0; + + &:last-child, + &:last-child { + border-right-width: 0; + } + } + + tbody th, + tbody td { + border-bottom-width: 0; + } +} + +// Bordered table +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +// Responsive tables. We use rows inside the Bootstrap responsive wrapper, +// so they need to have their margin and padding removed +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; + + > div[class^="col-"] { + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + } + } +} diff --git a/ui/js/src/wok.datatables.js b/ui/js/src/wok.datatables.js new file mode 100644 index 0000000..a64b824 --- /dev/null +++ b/ui/js/src/wok.datatables.js @@ -0,0 +1,42 @@ +/* + * Project Wok + * + * Copyright IBM Corp, 2015-2016 + * + * Code derived from Project Kimchi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Sets defalt Datatable options for Wok + +wok.initCompleteDataTableCallback = function(e) { + var tableId = $('#'+e.sTableId+'_wrapper'); + $('.dataTables_filter input',tableId).attr("placeholder", "Filter"); + $(".dataTables_filter label",tableId).contents().filter(function() { + return this.nodeType === 3; + }).wrap('<div class="sr-only" />'); + $(".dataTables_length label",tableId).contents().filter(function() { + return this.nodeType === 3; + }).wrap('<div class="sr-only" />'); + $(".dataTables_length select",tableId).selectpicker(); + $(".dataTables tfoot",tableId).remove(); +}; + +$.extend( true, $.fn.dataTable.defaults, { + "sPaginationType": "full_numbers", + "dom": '<"row"<"col-sm-12 filter"<"pull-right"l><"pull-right"f>>><"row"<"col-sm-12"t>><"row"<"col-sm-6 pages"p><"col-sm-6 info"i>>', + "initComplete": function(settings, json) { + wok.initCompleteDataTableCallback(settings); + } +}); \ No newline at end of file diff --git a/ui/libs/Makefile.am b/ui/libs/Makefile.am index 5c1140e..9732499 100644 --- a/ui/libs/Makefile.am +++ b/ui/libs/Makefile.am @@ -17,4 +17,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -SUBDIRS = bootstrap jquery jquery-ui bootstrap-select es5-shim jquery-i18n list-js jquery-bootgrid bootstrap-switch bootstrap-editable typeahead jquery-containsNC lodash +SUBDIRS = bootstrap jquery jquery-ui bootstrap-select es5-shim jquery-i18n list-js jquery-bootgrid bootstrap-switch bootstrap-editable typeahead jquery-containsNC lodash datatables moment diff --git a/ui/libs/datatables/Makefile.am b/ui/libs/datatables/Makefile.am new file mode 100644 index 0000000..9c3d2af --- /dev/null +++ b/ui/libs/datatables/Makefile.am @@ -0,0 +1,23 @@ +# +# Project Wok +# +# Copyright IBM Corp, 2016 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +SUBDIRS = css + +datatablesdir = $(datadir)/wok/ui/libs/datatables + +dist_datatables_DATA = $(wildcard *.js) $(NULL) diff --git a/ui/libs/datatables/css/Makefile.am b/ui/libs/datatables/css/Makefile.am new file mode 100644 index 0000000..bedc920 --- /dev/null +++ b/ui/libs/datatables/css/Makefile.am @@ -0,0 +1,21 @@ +# +# Project Wok +# +# Copyright IBM Corp, 2016 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +datatablescssdir = $(datadir)/wok/ui/libs/datatables/css + +dist_datatablescss_DATA = $(wildcard *.css) $(NULL) diff --git a/ui/libs/datatables/css/datatables.min.css b/ui/libs/datatables/css/datatables.min.css new file mode 100644 index 0000000..9a0b859 --- /dev/null +++ b/ui/libs/datatables/css/datatables.min.css @@ -0,0 +1,24 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs/dt-1.10.12/fh-3.1.2/r-2.1.0/se-1.2.0 + * + * Included libraries: + * DataTables 1.10.12, FixedHeader 3.1.2, Responsive 2.1.0, Select 1.2.0 + */ + +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} + + +table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}} + + +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#337ab7}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#337ab7}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none} + + +table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#08C}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0085c7}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0083c5}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#0081c1}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0082c2}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0083c4}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0085c8}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#0086ca}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#0087cb}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#0081c1}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#007dbb}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#007ebd}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#007fbf}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#007dbb}table.dataTable td.select-checkbox{position:relative}table.dataTable td.select-checkbox:before,table.dataTable td.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable td.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed} + + diff --git a/ui/libs/moment/LICENSE b/ui/libs/moment/LICENSE new file mode 100644 index 0000000..9ee5374 --- /dev/null +++ b/ui/libs/moment/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2011-2016 Tim Wood, Iskren Chernev, Moment.js contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/ui/libs/moment/Makefile.am b/ui/libs/moment/Makefile.am new file mode 100644 index 0000000..62f42a5 --- /dev/null +++ b/ui/libs/moment/Makefile.am @@ -0,0 +1,21 @@ +# +# Project Wok +# +# Copyright IBM Corp, 2016 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +momentjsdir = $(datadir)/wok/ui/libs/moment + +dist_momentjs_DATA = $(wildcard *.js) $(NULL) diff --git a/ui/pages/login.html.tmpl b/ui/pages/login.html.tmpl index b5137b1..e21117f 100644 --- a/ui/pages/login.html.tmpl +++ b/ui/pages/login.html.tmpl @@ -63,9 +63,11 @@ <link rel="stylesheet" href="$href('css/jquery-ui.custom.css')"> <link rel="stylesheet" href="$href('css/bootstrap.custom.css')"> <link rel="stylesheet" href="$href('libs/bootstrap-select/dist/css/bootstrap-select.min.css')"> + <link rel="stylesheet" href="$href('libs/datatables/css/datatables.min.css')"> <link rel="stylesheet" href="$href('css/fontawesome/fontawesome.css')"> <link rel="stylesheet" href="$href('css/opensans/opensans.css')"> <link rel="stylesheet" href="$href('css/bootstrap-select.custom.css')"> + <link rel="stylesheet" href="$href('css/datatables.bootstrap.css')"> <link rel="stylesheet" href="$href('css/wok.css')"> <script src="$href('libs/es5-shim/es5-shim.min.js')"></script> <script src="$href('libs/jquery/jquery.min.js')"></script> @@ -75,6 +77,8 @@ <script src="$href('libs/bootstrap/bootstrap.min.js')"></script> <script src="$href('libs/bootstrap-select/dist/js/bootstrap-select.min.js')"></script> <script src="$href('libs/lodash/lodash.js')"></script> + <script src="$href('libs/moment/moment-with-locales.min.js')"></script> + <script src="$href('libs/datatables/datatables.min.js')"></script> <script src="$href('js/wok.min.js')"></script> </head> <body class="login" onload="wok.login_main()"> diff --git a/ui/pages/wok-ui.html.tmpl b/ui/pages/wok-ui.html.tmpl index 6ea6e00..c56af3e 100644 --- a/ui/pages/wok-ui.html.tmpl +++ b/ui/pages/wok-ui.html.tmpl @@ -65,9 +65,11 @@ <link rel="stylesheet" href="$href('libs/jquery-bootgrid/dist/css/jquery.bootgrid.min.css')"> <link rel="stylesheet" href="$href('libs/bootstrap-switch/dist/css/bootstrap-switch.min.css')"> <link rel="stylesheet" href="$href('libs/bootstrap-editable/dist/css/bootstrap-editable.css')"> + <link rel="stylesheet" href="$href('libs/datatables/css/datatables.min.css')"> <link rel="stylesheet" href="$href('css/fontawesome/fontawesome.css')"> <link rel="stylesheet" href="$href('css/opensans/opensans.css')"> <link rel="stylesheet" href="$href('css/bootstrap-select.custom.css')"> + <link rel="stylesheet" href="$href('css/datatables.bootstrap.css')"> <link rel="stylesheet" href="$href('css/wok.css')"> <script src="$href('libs/es5-shim/es5-shim.min.js')"></script> <script src="$href('libs/jquery/jquery.min.js')"></script> @@ -83,6 +85,8 @@ <script src="$href('libs/bootstrap-editable/dist/js/bootstrap-editable.min.js')"></script> <script src="$href('libs/typeahead/typeahead.bundle.min.js')"></script> <script src="$href('libs/lodash/lodash.js')"></script> + <script src="$href('libs/moment/moment-with-locales.min.js')"></script> + <script src="$href('libs/datatables/datatables.min.js')"></script> <script src="$href('base64/jquery.base64.js')"></script> <script src="$href('js/wok.min.js')"></script> <!-- This is used for detecting if the UI needs to be built --> -- 1.9.3