patternfly-sass 3.13.0 → 3.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/patternfly-functions.js +1137 -0
  3. data/assets/javascripts/patternfly-functions.min.js +1 -0
  4. data/assets/javascripts/patternfly-settings.js +506 -0
  5. data/assets/javascripts/patternfly-settings.min.js +1 -0
  6. data/assets/javascripts/patternfly.dataTables.pfEmpty.js +244 -0
  7. data/assets/javascripts/patternfly.dataTables.pfEmpty.min.js +1 -0
  8. data/assets/javascripts/patternfly.dataTables.pfFilter.js +421 -0
  9. data/assets/javascripts/patternfly.dataTables.pfFilter.min.js +1 -0
  10. data/assets/javascripts/patternfly.dataTables.pfResize.js +214 -0
  11. data/assets/javascripts/patternfly.dataTables.pfResize.min.js +1 -0
  12. data/assets/javascripts/patternfly.dataTables.pfSelect.js +281 -0
  13. data/assets/javascripts/patternfly.dataTables.pfSelect.min.js +1 -0
  14. data/assets/javascripts/patternfly.js +692 -652
  15. data/assets/javascripts/patternfly.min.js +2 -2
  16. data/assets/stylesheets/_patternfly.scss +1 -0
  17. data/assets/stylesheets/patternfly/_datatables.scss +17 -49
  18. data/assets/stylesheets/patternfly/_table-view.scss +170 -0
  19. data/bower.json +1 -1
  20. data/lib/patternfly-sass/version.rb +2 -2
  21. data/package.json +70 -0
  22. data/spec/html/about-modal.html +1 -0
  23. data/spec/html/accordions.html +1 -0
  24. data/spec/html/alerts.html +1 -0
  25. data/spec/html/area-charts.html +1 -0
  26. data/spec/html/badges.html +1 -0
  27. data/spec/html/bar-charts.html +1 -0
  28. data/spec/html/basic.html +368 -418
  29. data/spec/html/blank-slate.html +2 -1
  30. data/spec/html/bootstrap-combobox.html +1 -0
  31. data/spec/html/bootstrap-datepicker.html +1 -0
  32. data/spec/html/bootstrap-select.html +1 -0
  33. data/spec/html/bootstrap-switch.html +1 -0
  34. data/spec/html/bootstrap-touchspin.html +1 -0
  35. data/spec/html/bootstrap-treeview-2.html +1 -0
  36. data/spec/html/bootstrap-treeview.html +1 -0
  37. data/spec/html/breadcrumbs.html +1 -0
  38. data/spec/html/buttons.html +1 -0
  39. data/spec/html/card-view-card-variations.html +1 -0
  40. data/spec/html/card-view-multi-select.html +1 -0
  41. data/spec/html/card-view-single-select.html +1 -0
  42. data/spec/html/cards.html +1 -0
  43. data/spec/html/code.html +1 -0
  44. data/spec/html/dashboard.html +1 -0
  45. data/spec/html/dist/css/patternfly-additions.css +143 -52
  46. data/spec/html/dist/css/patternfly-additions.css.map +1 -1
  47. data/spec/html/dist/css/patternfly-additions.min.css +1 -1
  48. data/spec/html/dist/css/patternfly-additions.min.css.map +1 -1
  49. data/spec/html/dist/css/patternfly.min.css +2 -2
  50. data/spec/html/dist/css/patternfly.min.css.map +1 -1
  51. data/spec/html/donut-charts.html +1 -0
  52. data/spec/html/dropdowns.html +1 -0
  53. data/spec/html/form.html +1 -0
  54. data/spec/html/forms.html +1 -0
  55. data/spec/html/horizontal-navigation.html +1 -0
  56. data/spec/html/icons.html +1 -0
  57. data/spec/html/index.html +10 -6
  58. data/spec/html/infotip.html +1 -0
  59. data/spec/html/labels.html +1 -0
  60. data/spec/html/line-charts.html +1 -0
  61. data/spec/html/list-group.html +1 -0
  62. data/spec/html/list-view-compound-expansion.html +1 -0
  63. data/spec/html/list-view-rows.html +1 -0
  64. data/spec/html/list-view-simple-expansion.html +1 -0
  65. data/spec/html/list-view.html +1 -0
  66. data/spec/html/login.html +1 -0
  67. data/spec/html/modals.html +1 -0
  68. data/spec/html/navbar.html +1 -0
  69. data/spec/html/notification-drawer-horizontal-nav.html +1 -0
  70. data/spec/html/notification-drawer-vertical-nav.html +1 -0
  71. data/spec/html/pagination.html +1 -0
  72. data/spec/html/panels.html +1 -0
  73. data/spec/html/pie-charts.html +1 -0
  74. data/spec/html/popovers.html +1 -0
  75. data/spec/html/progress-bars.html +1 -0
  76. data/spec/html/search.html +1 -0
  77. data/spec/html/spinner.html +1 -0
  78. data/spec/html/tab.html +373 -420
  79. data/spec/html/{datatables-columns.html → table-view-columns.html} +9 -7
  80. data/spec/html/table-view-navbar.html +532 -0
  81. data/spec/html/table-view.html +422 -0
  82. data/spec/html/tables.html +1 -0
  83. data/spec/html/tabs.html +1 -0
  84. data/spec/html/time-picker.html +1 -0
  85. data/spec/html/toast.html +1 -0
  86. data/spec/html/toolbar.html +1 -0
  87. data/spec/html/tooltip.html +1 -0
  88. data/spec/html/typography-2.html +1 -1
  89. data/spec/html/typography.html +1 -0
  90. data/spec/html/utilization-bar-charts.html +1 -0
  91. data/spec/html/vertical-navigation-primary-only.html +1 -0
  92. data/spec/html/vertical-navigation-with-badges.html +1 -0
  93. data/spec/html/vertical-navigation-with-secondary.html +1 -0
  94. data/spec/html/vertical-navigation-with-tertiary-no-icons.html +1 -0
  95. data/spec/html/vertical-navigation-with-tertiary-pins.html +1 -0
  96. data/spec/html/wizard.html +1 -0
  97. metadata +22 -6
  98. data/spec/html/datatables.html +0 -472
@@ -0,0 +1 @@
1
+ !function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function($){return factory($,window,document)}):"object"==typeof exports?module.exports=function(root,$){return root||(root=window),$&&$.fn.dataTable||($=require("datatables.net")(root,$).$),factory($,root,root.document)}:factory(jQuery,window,document)}(function($,window,document,undefined){"use strict";function selectAllRows(dt,select){var ctx=dt.settings()[0],filteredRows=dt.rows({page:"current",search:"applied"});if("single"===dt.select.style())throw new Error("Cannot select all rows with selection style 'single'");select?filteredRows.select():filteredRows.deselect(),$(ctx._pfSelect.selector,dt.table().container()).prop("checked",select),syncSelectAllCheckbox(dt)}function syncSelectAllCheckbox(dt){var ctx=dt.settings()[0],filteredRows=dt.rows({page:"current",search:"applied"}).flatten().length,selectedFilteredRows=dt.rows({page:"current",search:"applied",selected:!0}).flatten().length,selectAll=$(ctx._pfSelect.selectAllSelector,dt.table().container())[0];selectAll&&(selectAll.checked=filteredRows===selectedFilteredRows),updateSelectedRowsText(dt)}function syncSelectCheckboxes(dt){var ctx=dt.settings()[0];$(ctx._pfSelect.selector,dt.table().container()).prop("checked",!1),dt.rows({page:"current",search:"applied",selected:!0}).every(function(index){$(ctx._pfSelect.selector,dt.table().row(index).node()).prop("checked",!0)}),syncSelectAllCheckbox(dt)}function updateSelectedRowsText(dt){var ctx=dt.settings()[0],selectedRows=dt.rows({selected:!0}).flatten().length,totalRows=dt.rows().flatten().length;ctx._pfSelect.results!==undefined&&0!==ctx._pfSelect.results.length&&$(ctx._pfSelect.results).html("<strong>"+selectedRows+"</strong> of <strong>"+totalRows+"</strong> selected")}var DataTable=$.fn.dataTable,RESULTS_SELECTOR=".table-view-pf-select-results",SELECT_ALL_SELECTOR='th:first-child input[type="checkbox"]',SELECT_SELECTOR='td:first-child input[type="checkbox"]';return DataTable.pfSelect={},DataTable.pfSelect.init=function(dt){var ctx=dt.settings()[0],opts=ctx.oInit.pfConfig?ctx.oInit.pfConfig:{},select=ctx.oInit.select?ctx.oInit.select:{},style=dt.select.style();ctx._pfSelect={},ctx._pfSelect.selectAllSelector=opts.selectAllSelector!==undefined?opts.selectAllSelector:SELECT_ALL_SELECTOR,ctx._pfSelect.selector=select.selector!==undefined?select.selector:SELECT_SELECTOR,ctx._pfSelect.results=$(RESULTS_SELECTOR,opts.toolbarSelector),"api"===style?($(dt.table().container()).on("click",ctx._pfSelect.selectAllSelector,function(evt){evt.preventDefault()}),$(dt.table().container()).on("click",ctx._pfSelect.selector,function(evt){evt.preventDefault()}),dt.table().on("select.dt",function(){syncSelectCheckboxes(dt)})):($(dt.table().container()).on("click",ctx._pfSelect.selectAllSelector,function(evt){selectAllRows(dt,evt.target.checked)}),$(dt.table().container()).on("click",ctx._pfSelect.selector,function(evt){"multi"!==style||"multi+shift"!==style?syncSelectCheckboxes(dt):syncSelectAllCheckbox(dt)})),dt.table().on("draw.dt",function(){syncSelectCheckboxes(dt)}),updateSelectedRowsText(dt)},DataTable.Api.register("pfSelect.selectAllRows()",function(select){return this.iterator("table",function(ctx){selectAllRows(new DataTable.Api(ctx),select)})}),$(document).on("preInit.dt.dtSelect",function(e,ctx){"dt"===e.namespace&&DataTable.pfSelect.init(new DataTable.Api(ctx))}),DataTable.pfSelect});
@@ -1,601 +1,197 @@
1
- // Util: PatternFly Sidebar
2
- // Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile
3
- (function ($) {
1
+ (function (window) {
4
2
  'use strict';
5
- $.fn.sidebar = function () {
6
- var documentHeight = 0,
7
- navbarpfHeight = 0,
8
- colHeight = 0;
9
3
 
10
- if ($('.navbar-pf .navbar-toggle').is(':hidden')) {
11
- documentHeight = $(document).height();
12
- navbarpfHeight = $('.navbar-pf').outerHeight();
13
- colHeight = documentHeight - navbarpfHeight;
14
- }
15
- $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({"min-height" : colHeight});
4
+ var patternfly = {
5
+ version: "3.13.0"
16
6
  };
17
7
 
18
- $(document).ready(function () {
19
- // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist
20
- if ($('.sidebar-pf').length > 0 && $('.datatable').length === 0) {
21
- $.fn.sidebar();
22
- }
23
- });
24
-
25
- $(window).resize(function () {
26
- // Call sidebar() on resize if .sidebar-pf exists
27
- if ($('.sidebar-pf').length > 0) {
28
- $.fn.sidebar();
29
- }
30
- });
31
- }(jQuery));
32
-
33
- // Util: PatternFly Popovers
34
- // Add data-close="true" to insert close X icon
35
- (function ($) {
36
- 'use strict';
37
-
38
- $.fn.popovers = function () {
39
- // Initialize
40
- this.popover();
41
-
42
- // Add close icons
43
- this.filter('[data-close=true]').each(function (index, element) {
44
- var $this = $(element),
45
- title = $this.attr('data-original-title') + '<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';
46
-
47
- $this.attr('data-original-title', title);
48
- });
49
-
50
- // Bind Close Icon to Toggle Display
51
- this.on('click', function (e) {
52
- var $this = $(this),
53
- $title = $this.next('.popover').find('.popover-title');
54
-
55
- // Only if data-close is true add class "x" to title for right padding
56
- $title.find('.close').parent('.popover-title').addClass('closable');
57
-
58
- // Bind x icon to close popover
59
- $title.find('.close').on('click', function () {
60
- $this.popover('hide');
61
- });
62
-
63
- // Prevent href="#" page scroll to top
64
- e.preventDefault();
65
- });
8
+ // Util: PatternFly Palette colors
9
+ patternfly.pfPaletteColors = {
10
+ black: '#030303',
11
+ black100: '#fafafa',
12
+ black200: '#ededed',
13
+ black300: '#d1d1d1',
14
+ black400: '#bbbbbb',
15
+ black500: '#8b8d8f',
16
+ black600: '#72767b',
17
+ black700: '#4d5258',
18
+ black800: '#393f44',
19
+ black900: '#292e34',
20
+ blue: '#0088ce',
21
+ blue100: '#bee1f4',
22
+ blue200: '#7dc3e8',
23
+ blue300: '#39a5dc',
24
+ blue400: '#0088ce',
25
+ blue500: '#00659c',
26
+ blue600: '#004368',
27
+ blue700: '#002235',
28
+ gold: '#f0ab00',
29
+ gold100: '#fbeabc',
30
+ gold200: '#f9d67a',
31
+ gold300: '#f5c12e',
32
+ gold400: '#f0ab00',
33
+ gold500: '#b58100',
34
+ gold600: '#795600',
35
+ gold700: '#3d2c00',
36
+ orange: '#ec7a08',
37
+ orange100: '#fbdebf',
38
+ orange200: '#f7bd7f',
39
+ orange300: '#f39d3c',
40
+ orange400: '#ec7a08',
41
+ orange500: '#b35c00',
42
+ orange600: '#773d00',
43
+ orange700: '#3b1f00',
44
+ lightBlue: '#00b9e4',
45
+ lightBlue100: '#beedf9',
46
+ lightBlue200: '#7cdbf3',
47
+ lightBlue300: '#35caed',
48
+ lightBlue400: '#00b9e4',
49
+ lightBlue500: '#008bad',
50
+ lightBlue600: '#005c73',
51
+ lightBlue700: '#002d39',
52
+ green: '#3f9c35',
53
+ green100: '#cfe7cd',
54
+ green200: '#9ecf99',
55
+ green300: '#6ec664',
56
+ green400: '#3f9c35',
57
+ green500: '#2d7623',
58
+ green600: '#1e4f18',
59
+ green700: '#0f280d',
60
+ lightGreen: '#92d400',
61
+ lightGreen100: '#e4f5bc',
62
+ lightGreen200: '#c8eb79',
63
+ lightGreen300: '#ace12e',
64
+ lightGreen400: '#92d400',
65
+ lightGreen500: '#6ca100',
66
+ lightGreen600: '#486b00',
67
+ lightGreen700: '#253600',
68
+ cyan: '#007a87',
69
+ cyan100: '#bedee1',
70
+ cyan200: '#7dbdc3',
71
+ cyan300: '#3a9ca6',
72
+ cyan400: '#007a87',
73
+ cyan500: '#005c66',
74
+ cyan600: '#003d44',
75
+ cyan700: '#001f22',
76
+ purple: '#703fec',
77
+ purple100: '#c7bfff',
78
+ purple200: '#a18fff',
79
+ purple300: '#8461f7',
80
+ purple400: '#703fec',
81
+ purple500: '#582fc0',
82
+ purple600: '#40199a',
83
+ purple700: '#1f0066',
84
+ red: '#cc0000',
85
+ red100: '#cc0000',
86
+ red200: '#a30000',
87
+ red300: '#8b0000',
88
+ red400: '#470000',
89
+ red500: '#2c0000'
90
+ };
66
91
 
67
- return this;
92
+ // Util: PatternFly C3 Chart Defaults
93
+ patternfly.pfSetDonutChartTitle = function (selector, primary, secondary) {
94
+ var donutChartRightTitle = window.d3.select(selector).select('text.c3-chart-arcs-title');
95
+ donutChartRightTitle.text("");
96
+ donutChartRightTitle.insert('tspan').text(primary).classed('donut-title-big-pf', true).attr('dy', 0).attr('x', 0);
97
+ donutChartRightTitle.insert('tspan').text(secondary).classed('donut-title-small-pf', true).attr('dy', 20).attr('x', 0);
68
98
  };
69
- }(jQuery));
70
99
 
100
+ patternfly.pfDonutTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) {
101
+ return '<table class="c3-tooltip">' +
102
+ ' <tr>' +
103
+ ' <td><span style="background-color:' + color(d[0].id) + '"></span>' + '<strong>' + d[0].value + '</strong> ' + d[0].name + '</td>' +
104
+ ' <td>' + (Math.round(d[0].ratio * 1000) / 10) + '%</td>' +
105
+ ' </tr>' +
106
+ '</table>';
107
+ };
71
108
 
72
- // Util: DataTables Settings
73
- (function ($) {
74
- 'use strict';
75
- if ($.fn.dataTableExt) {
76
- /* Set the defaults for DataTables initialisation */
77
- $.extend(true, $.fn.dataTable.defaults, {
78
- "bDestroy": true,
79
- "bAutoWidth": false,
80
- "iDisplayLength": 20,
81
- "sDom":
82
- "<'dataTables_header' f i r >" +
83
- "<'table-responsive' t >" +
84
- "<'dataTables_footer' p >",
85
- "oLanguage": {
86
- "sInfo": "Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",
87
- "sInfoFiltered" : "(of <b>_MAX_</b>)",
88
- "sInfoEmpty" : "Showing <b>0</b> Results",
89
- "sZeroRecords":
90
- "<p>Suggestions</p>" +
91
- "<ul>" +
92
- "<li>Check the javascript regular expression syntax of the search term.</li>" +
93
- "<li>Check that the correct menu option is chosen (token ID vs. user ID).</li>" +
94
- "<li>Use wildcards (* to match 0 or more characters, + to match 1 or more characters, ? to match 0 or 1 character).</li>" +
95
- "<li>Clear the search field, then click Search to return to the 20 most recent records.</li>" +
96
- "</ul>",
97
- "sSearch": ""
98
- },
99
- "sPaginationType": "bootstrap_input",
100
- "oSearch": {
101
- "sSearch": "",
102
- "bRegex": true,
103
- "bSmart": false
104
- }
105
- });
109
+ patternfly.pfGetUtilizationDonutTooltipContentsFn = function (units) {
110
+ return function (d) {
111
+ return '<span class="donut-tooltip-pf" style="white-space: nowrap;">' +
112
+ (Math.round(d[0].ratio * 1000) / 10) + '%' + ' ' + units + ' ' + d[0].name +
113
+ '</span>';
114
+ };
115
+ };
106
116
 
107
- /* Default class modification */
108
- $.extend($.fn.dataTableExt.oStdClasses, {
109
- "sWrapper": "dataTables_wrapper"
110
- });
117
+ patternfly.pfGetBarChartTooltipContentsFn = function (categories) {
118
+ return function (d) {
119
+ var name = categories ? categories[d[0].index] : d[0].index;
120
+ return '<table class="c3-tooltip">' +
121
+ ' <tr>' +
122
+ ' <td><strong>' + name + ':</td>' +
123
+ ' <td>' + d[0].value + '</td>' +
124
+ ' </tr>' +
125
+ '</table>';
126
+ };
127
+ };
111
128
 
112
- /* API method to get paging information */
113
- $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
114
- return {
115
- "iStart": oSettings._iDisplayStart,
116
- "iEnd": oSettings.fnDisplayEnd(),
117
- "iLength": oSettings._iDisplayLength,
118
- "iTotal": oSettings.fnRecordsTotal(),
119
- "iFilteredTotal": oSettings.fnRecordsDisplay(),
120
- "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
121
- "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
122
- };
129
+ patternfly.pfSingleLineChartTooltipContentsFn = function (categories) {
130
+ return function (d) {
131
+ var name = categories ? categories[d[0].index] : d[0].index;
132
+ return '<table class="c3-tooltip">' +
133
+ ' <tr>' +
134
+ ' <td><strong>' + name + ':</td>' +
135
+ ' <td>' + d[0].value + '</td>' +
136
+ ' </tr>' +
137
+ '</table>';
123
138
  };
139
+ };
124
140
 
125
- /* Combination of Bootstrap + Input Text style pagination control */
126
- $.extend($.fn.dataTableExt.oPagination, {
127
- "bootstrap_input": {
128
- "fnInit": function (oSettings, nPaging, fnDraw) {
129
- var fnClickHandler = function (e) {
130
- e.preventDefault();
131
- if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
132
- fnDraw(oSettings);
133
- }
134
- },
135
- els,
136
- nInput;
141
+ patternfly.pfPieTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) {
142
+ return patternfly.pfDonutTooltipContents(d, defaultTitleFormat, defaultValueFormat, color);
143
+ };
137
144
 
138
- $(nPaging).append(
139
- '<ul class="pagination">' +
140
- ' <li class="first disabled"><span class="i fa fa-angle-double-left"></span></li>' +
141
- ' <li class="prev disabled"><span class="i fa fa-angle-left"></span></li>' +
142
- '</ul>' +
143
- '<div class="pagination-input">' +
144
- ' <input type="text" class="paginate_input">' +
145
- ' <span class="paginate_of">of <b>3</b></span>' +
146
- '</div>' +
147
- '<ul class="pagination">' +
148
- ' <li class="next disabled"><span class="i fa fa-angle-right"></span></li>' +
149
- ' <li class="last disabled"><span class="i fa fa-angle-double-right"></span></li>' +
150
- '</ul>'
151
- );
152
-
153
- els = $('li', nPaging);
154
- $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);
155
- $(els[1]).bind('click.DT', { action: "previous" }, fnClickHandler);
156
- $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);
157
- $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);
158
-
159
- nInput = $('input', nPaging);
160
- $(nInput).keyup(function (e) {
161
- var iNewStart;
162
- if (e.which === 38 || e.which === 39) {
163
- this.value += 1;
164
- } else if ((e.which === 37 || e.which === 40) && this.value > 1) {
165
- this.value -= 1;
166
- }
167
-
168
- if (this.value === "" || !this.value.match(/[0-9]/)) {
169
- /* Nothing entered or non-numeric character */
170
- return;
171
- }
172
-
173
- iNewStart = oSettings._iDisplayLength * (this.value - 1);
174
- if (iNewStart >= oSettings.fnRecordsDisplay()) {
175
- /* Display overrun */
176
- oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) /
177
- oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
178
- fnDraw(oSettings);
179
- return;
180
- }
181
-
182
- oSettings._iDisplayStart = iNewStart;
183
- fnDraw(oSettings);
184
- });
185
- },
186
-
187
- "fnUpdate": function (oSettings, fnDraw) {
188
- var oPaging = oSettings.oInstance.fnPagingInfo(),
189
- an = oSettings.aanFeatures.p,
190
- ien = an.length,
191
- iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength),
192
- iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1,
193
- i;
194
-
195
- for (i = 0; i < ien; i += 1) {
196
- $('.paginate_input', an[i]).val(iCurrentPage)
197
- .siblings('.paginate_of').find('b').html(iPages);
198
-
199
- // Add / remove disabled classes from the static elements
200
- if (oPaging.iPage === 0) {
201
- $('li.first', an[i]).addClass('disabled');
202
- $('li.prev', an[i]).addClass('disabled');
203
- } else {
204
- $('li.first', an[i]).removeClass('disabled');
205
- $('li.prev', an[i]).removeClass('disabled');
206
- }
207
-
208
- if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
209
- $('li.next', an[i]).addClass('disabled');
210
- $('li.last', an[i]).addClass('disabled');
211
- } else {
212
- $('li.next', an[i]).removeClass('disabled');
213
- $('li.last', an[i]).removeClass('disabled');
214
- }
145
+ patternfly.c3ChartDefaults = function () {
146
+ var
147
+ getDefaultColors = function () {
148
+ return {
149
+ pattern: [
150
+ patternfly.pfPaletteColors.blue,
151
+ patternfly.pfPaletteColors.blue300,
152
+ patternfly.pfPaletteColors.green,
153
+ patternfly.pfPaletteColors.orange,
154
+ patternfly.pfPaletteColors.red
155
+ ]
156
+ };
157
+ },
158
+ getDefaultBarGrid = function () {
159
+ return {
160
+ y: {
161
+ show: true
215
162
  }
216
- }
217
- }
218
- });
219
- }
220
- }(jQuery));
221
-
222
- // Util: definition of breakpoint sizes for tablet and desktop modes
223
- (function ($) {
224
- 'use strict';
225
- $.pfBreakpoints = {
226
- 'tablet': 768,
227
- 'desktop': 1200
228
- };
229
- }(jQuery));
230
-
231
- // Util: PatternFly Collapsible Left Hand Navigation
232
- // Must have navbar-toggle in navbar-pf-alt for expand/collapse
233
- (function ($) {
234
-
235
- 'use strict';
236
-
237
- $.fn.navigation = function () {
238
-
239
- var navElement = $('.layout-pf-alt-fixed .nav-pf-vertical-alt'),
240
- bodyContentElement = $('.container-pf-alt-nav-pf-vertical-alt'),
241
- toggleNavBarButton = $('.navbar-toggle'),
242
- explicitCollapse = false,
243
- checkNavState = function () {
244
- var width = $(window).width();
245
-
246
- //Always remove the hidden & peek class
247
- navElement.removeClass('hidden show-mobile-nav collapsed');
248
-
249
- //Set the body class back to the default
250
- bodyContentElement.removeClass('collapsed-nav hidden-nav');
251
-
252
- // Check to see if the nav needs to collapse
253
- if (width < $.pfBreakpoints.desktop || explicitCollapse) {
254
- navElement.addClass('collapsed');
255
- bodyContentElement.addClass('collapsed-nav');
256
- }
257
-
258
- // Check to see if we need to move down to the mobile state
259
- if (width < $.pfBreakpoints.tablet) {
260
- //Set the nav to being hidden
261
- navElement.addClass('hidden');
262
-
263
- //Make sure this is expanded
264
- navElement.removeClass('collapsed');
265
-
266
- //Set the body class to the correct state
267
- bodyContentElement.removeClass('collapsed-nav');
268
- bodyContentElement.addClass('hidden-nav');
269
- }
163
+ };
270
164
  },
271
- collapseMenu = function () {
272
- //Make sure this is expanded
273
- navElement.addClass('collapsed');
274
- //Set the body class to the correct state
275
- bodyContentElement.addClass('collapsed-nav');
276
-
277
- explicitCollapse = true;
165
+ getDefaultBarTooltip = function (categories) {
166
+ return {
167
+ contents: patternfly.pfGetBarChartTooltipContentsFn(categories)
168
+ };
278
169
  },
279
- enableTransitions = function () {
280
- // enable transitions only when toggleNavBarButton is clicked or window is resized
281
- $('html').addClass('transitions');
170
+ getDefaultBarLegend = function () {
171
+ return {
172
+ show: false
173
+ };
282
174
  },
283
- expandMenu = function () {
284
- //Make sure this is expanded
285
- navElement.removeClass('collapsed');
286
- //Set the body class to the correct state
287
- bodyContentElement.removeClass('collapsed-nav');
288
-
289
- explicitCollapse = false;
175
+ getDefaultBarConfig = function (categories) {
176
+ return {
177
+ color: this.getDefaultColors(),
178
+ grid: this.getDefaultBarGrid(),
179
+ tooltip: this.getDefaultBarTooltip(categories),
180
+ legend: this.getDefaultBarLegend()
181
+ };
290
182
  },
291
- bindMenuBehavior = function () {
292
- toggleNavBarButton.on('click', function (e) {
293
- var inMobileState = bodyContentElement.hasClass('hidden-nav');
294
- enableTransitions();
295
-
296
- if (inMobileState && navElement.hasClass('show-mobile-nav')) {
297
- //In mobile state just need to hide the nav
298
- navElement.removeClass('show-mobile-nav');
299
- } else if (inMobileState) {
300
- navElement.addClass('show-mobile-nav');
301
- } else if (navElement.hasClass('collapsed')) {
302
- expandMenu();
303
- } else {
304
- collapseMenu();
183
+ getDefaultGroupedBarGrid = function () {
184
+ return {
185
+ y: {
186
+ show: true
305
187
  }
306
- });
188
+ };
307
189
  },
308
- setTooltips = function () {
309
- $('.nav-pf-vertical-alt [data-toggle="tooltip"]').tooltip({'container': 'body', 'delay': { 'show': '500', 'hide': '200' }});
310
-
311
- $(".nav-pf-vertical-alt").on("show.bs.tooltip", function (e) {
312
- return $(this).hasClass("collapsed");
313
- });
314
-
315
- },
316
- init = function () {
317
- //Set correct state on load
318
- checkNavState();
319
-
320
- // Bind Top level hamburger menu with menu behavior;
321
- bindMenuBehavior();
322
-
323
- //Set tooltips
324
- setTooltips();
325
- };
326
-
327
- //Listen for the window resize event and collapse/hide as needed
328
- $(window).on('resize', function () {
329
- checkNavState();
330
- enableTransitions();
331
- });
332
-
333
- init();
334
-
335
- };
336
-
337
- $(document).ready(function () {
338
- if ($('.nav-pf-vertical-alt').length > 0) {
339
- $.fn.navigation();
340
- }
341
- });
342
-
343
- }(jQuery));
344
-
345
- // Count and Display Remaining Characters
346
- (function ($) {
347
-
348
- 'use strict';
349
-
350
- $.fn.countRemainingChars = function (options) {
351
-
352
- var settings = $.extend({
353
- // These are the defaults.
354
- charsMaxLimit: 100,
355
- charsWarnRemaining: 5,
356
- blockInputAtMaxLimit: false
357
- }, options),
358
- $taFld = this,
359
- $countFld = $('#' + settings.countFld).text(settings.charsMaxLimit),
360
- charsRemainingFn = function (charsLength) {
361
- var charsRemaining = settings.charsMaxLimit - charsLength;
362
- $countFld.text(charsRemaining);
363
- $countFld.toggleClass('chars-warn-remaining-pf', charsRemaining <= settings.charsWarnRemaining);
364
- if (charsRemaining < 0) {
365
- $taFld.trigger("overCharsMaxLimitEvent", $taFld.attr('id'));
366
- } else {
367
- $taFld.trigger("underCharsMaxLimitEvent", $taFld.attr('id'));
368
- }
369
- };
370
-
371
- this.on('paste', function (event) {
372
- setTimeout(function () {
373
- var charsLength = $taFld.val().length, maxTxt;
374
-
375
- if (settings.blockInputAtMaxLimit && charsLength > settings.charsMaxLimit) {
376
- maxTxt = $taFld.val();
377
- maxTxt = maxTxt.substring(0, settings.charsMaxLimit);
378
- $taFld.val(maxTxt);
379
- charsLength = $taFld.val().length;
380
- }
381
-
382
- charsRemainingFn(charsLength);
383
- }, 100);
384
- });
385
-
386
- this.keyup(function (event) {
387
- charsRemainingFn($taFld.val().length);
388
- });
389
-
390
- this.keydown(function (event) {
391
- var charsLength = $taFld.val().length;
392
-
393
- if (settings.blockInputAtMaxLimit && charsLength >= settings.charsMaxLimit) {
394
- // Except backspace
395
- if (event.keyCode !== 8) {
396
- event.preventDefault();
397
- }
398
- }
399
- });
400
-
401
- return this;
402
- };
403
- }(jQuery));
404
-
405
- // Util: PatternFly Palette colors
406
- (function ($) {
407
- 'use strict';
408
-
409
- $.pfPaletteColors = {
410
- black: '#030303',
411
- black100: '#fafafa',
412
- black200: '#ededed',
413
- black300: '#d1d1d1',
414
- black400: '#bbbbbb',
415
- black500: '#8b8d8f',
416
- black600: '#72767b',
417
- black700: '#4d5258',
418
- black800: '#393f44',
419
- black900: '#292e34',
420
- blue: '#0088ce',
421
- blue100: '#bee1f4',
422
- blue200: '#7dc3e8',
423
- blue300: '#39a5dc',
424
- blue400: '#0088ce',
425
- blue500: '#00659c',
426
- blue600: '#004368',
427
- blue700: '#002235',
428
- gold: '#f0ab00',
429
- gold100: '#fbeabc',
430
- gold200: '#f9d67a',
431
- gold300: '#f5c12e',
432
- gold400: '#f0ab00',
433
- gold500: '#b58100',
434
- gold600: '#795600',
435
- gold700: '#3d2c00',
436
- orange: '#ec7a08',
437
- orange100: '#fbdebf',
438
- orange200: '#f7bd7f',
439
- orange300: '#f39d3c',
440
- orange400: '#ec7a08',
441
- orange500: '#b35c00',
442
- orange600: '#773d00',
443
- orange700: '#3b1f00',
444
- lightBlue: '#00b9e4',
445
- lightBlue100: '#beedf9',
446
- lightBlue200: '#7cdbf3',
447
- lightBlue300: '#35caed',
448
- lightBlue400: '#00b9e4',
449
- lightBlue500: '#008bad',
450
- lightBlue600: '#005c73',
451
- lightBlue700: '#002d39',
452
- green: '#3f9c35',
453
- green100: '#cfe7cd',
454
- green200: '#9ecf99',
455
- green300: '#6ec664',
456
- green400: '#3f9c35',
457
- green500: '#2d7623',
458
- green600: '#1e4f18',
459
- green700: '#0f280d',
460
- lightGreen: '#92d400',
461
- lightGreen100: '#e4f5bc',
462
- lightGreen200: '#c8eb79',
463
- lightGreen300: '#ace12e',
464
- lightGreen400: '#92d400',
465
- lightGreen500: '#6ca100',
466
- lightGreen600: '#486b00',
467
- lightGreen700: '#253600',
468
- cyan: '#007a87',
469
- cyan100: '#bedee1',
470
- cyan200: '#7dbdc3',
471
- cyan300: '#3a9ca6',
472
- cyan400: '#007a87',
473
- cyan500: '#005c66',
474
- cyan600: '#003d44',
475
- cyan700: '#001f22',
476
- purple: '#703fec',
477
- purple100: '#c7bfff',
478
- purple200: '#a18fff',
479
- purple300: '#8461f7',
480
- purple400: '#703fec',
481
- purple500: '#582fc0',
482
- purple600: '#40199a',
483
- purple700: '#1f0066',
484
- red: '#cc0000',
485
- red100: '#cc0000',
486
- red200: '#a30000',
487
- red300: '#8b0000',
488
- red400: '#470000',
489
- red500: '#2c0000'
490
- };
491
- }(jQuery));
492
-
493
- // Util: PatternFly C3 Chart Defaults
494
- (function ($) {
495
- 'use strict';
496
-
497
- $.fn.pfSetDonutChartTitle = function (selector, primary, secondary) {
498
- var donutChartRightTitle = window.d3.select(selector).select('text.c3-chart-arcs-title');
499
- donutChartRightTitle.text("");
500
- donutChartRightTitle.insert('tspan').text(primary).classed('donut-title-big-pf', true).attr('dy', 0).attr('x', 0);
501
- donutChartRightTitle.insert('tspan').text(secondary).classed('donut-title-small-pf', true).attr('dy', 20).attr('x', 0);
502
- };
503
-
504
- $.fn.pfDonutTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) {
505
- return '<table class="c3-tooltip">' +
506
- ' <tr>' +
507
- ' <td><span style="background-color:' + color(d[0].id) + '"></span>' + '<strong>' + d[0].value + '</strong> ' + d[0].name + '</td>' +
508
- ' <td>' + (Math.round(d[0].ratio * 1000) / 10) + '%</td>' +
509
- ' </tr>' +
510
- '</table>';
511
- };
512
-
513
- $.fn.pfGetUtilizationDonutTooltipContentsFn = function (units) {
514
- return function (d) {
515
- return '<span class="donut-tooltip-pf" style="white-space: nowrap;">' +
516
- (Math.round(d[0].ratio * 1000) / 10) + '%' + ' ' + units + ' ' + d[0].name +
517
- '</span>';
518
- };
519
- };
520
-
521
- $.fn.pfGetBarChartTooltipContentsFn = function (categories) {
522
- return function (d) {
523
- var name = categories ? categories[d[0].index] : d[0].index;
524
- return '<table class="c3-tooltip">' +
525
- ' <tr>' +
526
- ' <td><strong>' + name + ':</td>' +
527
- ' <td>' + d[0].value + '</td>' +
528
- ' </tr>' +
529
- '</table>';
530
- };
531
- };
532
-
533
- $.fn.pfSingleLineChartTooltipContentsFn = function (categories) {
534
- return function (d) {
535
- var name = categories ? categories[d[0].index] : d[0].index;
536
- return '<table class="c3-tooltip">' +
537
- ' <tr>' +
538
- ' <td><strong>' + name + ':</td>' +
539
- ' <td>' + d[0].value + '</td>' +
540
- ' </tr>' +
541
- '</table>';
542
- };
543
- };
544
-
545
- $.fn.pfPieTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) {
546
- return $().pfDonutTooltipContents(d, defaultTitleFormat, defaultValueFormat, color);
547
- };
548
-
549
- $.fn.c3ChartDefaults = function () {
550
- var
551
- getDefaultColors = function () {
552
- return {
553
- pattern: [
554
- $.pfPaletteColors.blue,
555
- $.pfPaletteColors.blue300,
556
- $.pfPaletteColors.green,
557
- $.pfPaletteColors.orange,
558
- $.pfPaletteColors.red
559
- ]
560
- };
561
- },
562
- getDefaultBarGrid = function () {
563
- return {
564
- y: {
565
- show: true
566
- }
567
- };
568
- },
569
- getDefaultBarTooltip = function (categories) {
570
- return {
571
- contents: $().pfGetBarChartTooltipContentsFn(categories)
572
- };
573
- },
574
- getDefaultBarLegend = function () {
575
- return {
576
- show: false
577
- };
578
- },
579
- getDefaultBarConfig = function (categories) {
580
- return {
581
- color: this.getDefaultColors(),
582
- grid: this.getDefaultBarGrid(),
583
- tooltip: this.getDefaultBarTooltip(categories),
584
- legend: this.getDefaultBarLegend()
585
- };
586
- },
587
- getDefaultGroupedBarGrid = function () {
588
- return {
589
- y: {
590
- show: true
591
- }
592
- };
593
- },
594
- getDefaultGroupedBarLegend = function () {
595
- return {
596
- show: true,
597
- position: 'bottom'
598
- };
190
+ getDefaultGroupedBarLegend = function () {
191
+ return {
192
+ show: true,
193
+ position: 'bottom'
194
+ };
599
195
  },
600
196
  getDefaultGroupedBarConfig = function () {
601
197
  return {
@@ -622,8 +218,8 @@
622
218
  getDefaultDonutColors = function () {
623
219
  return {
624
220
  pattern: [
625
- $.pfPaletteColors.blue,
626
- $.pfPaletteColors.black300
221
+ patternfly.pfPaletteColors.blue,
222
+ patternfly.pfPaletteColors.black300
627
223
  ]
628
224
  };
629
225
  },
@@ -663,8 +259,8 @@
663
259
  getDefaultPieColors = function () {
664
260
  return {
665
261
  pattern: [
666
- $.pfPaletteColors.blue,
667
- $.pfPaletteColors.black300
262
+ patternfly.pfPaletteColors.blue,
263
+ patternfly.pfPaletteColors.black300
668
264
  ]
669
265
  };
670
266
  },
@@ -812,85 +408,529 @@
812
408
  getDefaultAreaGrid = function () {
813
409
  return getDefaultLineGrid();
814
410
  },
815
- getDefaultAreaLegend = function () {
816
- return getDefaultLineLegend();
411
+ getDefaultAreaLegend = function () {
412
+ return getDefaultLineLegend();
413
+ },
414
+ getDefaultAreaPoint = function () {
415
+ return getDefaultLinePoint();
416
+ },
417
+ getDefaultAreaConfig = function () {
418
+ return {
419
+ axis: getDefaultAreaAxis(),
420
+ grid: getDefaultAreaGrid(),
421
+ color: getDefaultColors(),
422
+ legend: getDefaultAreaLegend(),
423
+ point: getDefaultAreaPoint()
424
+ };
425
+ },
426
+ getDefaultSingleAreaTooltip = function () {
427
+ return {
428
+ contents: $().pfGetBarChartTooltipContentsFn()
429
+ };
430
+ },
431
+ getDefaultSingleAreaLegend = function () {
432
+ return getDefaultSingleLineLegend();
433
+ },
434
+ getDefaultSingleAreaConfig = function () {
435
+ return {
436
+ axis: getDefaultAreaAxis(),
437
+ grid: getDefaultAreaGrid(),
438
+ color: getDefaultColors(),
439
+ legend: getDefaultSingleAreaLegend(),
440
+ point: getDefaultAreaPoint(),
441
+ tooltip: getDefaultSingleAreaTooltip()
442
+ };
443
+ };
444
+ return {
445
+ getDefaultColors: getDefaultColors,
446
+ getDefaultBarGrid: getDefaultBarGrid,
447
+ getDefaultBarTooltip: getDefaultBarTooltip,
448
+ getDefaultBarLegend: getDefaultBarLegend,
449
+ getDefaultBarConfig: getDefaultBarConfig,
450
+ getDefaultGroupedBarGrid: getDefaultGroupedBarGrid,
451
+ getDefaultGroupedBarLegend: getDefaultGroupedBarLegend,
452
+ getDefaultGroupedBarConfig: getDefaultGroupedBarConfig,
453
+ getDefaultDonut: getDefaultDonut,
454
+ getDefaultDonutSize: getDefaultDonutSize,
455
+ getDefaultDonutColors: getDefaultDonutColors,
456
+ getDefaultDonutTooltip: getDefaultDonutTooltip,
457
+ getDefaultDonutLegend: getDefaultDonutLegend,
458
+ getDefaultDonutConfig: getDefaultDonutConfig,
459
+ getDefaultPie: getDefaultPie,
460
+ getDefaultPieSize: getDefaultPieSize,
461
+ getDefaultPieColors: getDefaultPieColors,
462
+ getDefaultPieTooltip: getDefaultPieTooltip,
463
+ getDefaultPieLegend: getDefaultPieLegend,
464
+ getDefaultPieConfig: getDefaultPieConfig,
465
+ getDefaultSparklineArea: getDefaultSparklineArea,
466
+ getDefaultSparklineSize: getDefaultSparklineSize,
467
+ getDefaultSparklineAxis: getDefaultSparklineAxis,
468
+ getDefaultSparklineLegend: getDefaultSparklineLegend,
469
+ getDefaultSparklinePoint: getDefaultSparklinePoint,
470
+ getDefaultSparklineTooltip: getDefaultSparklineTooltip,
471
+ getDefaultSparklineConfig: getDefaultSparklineConfig,
472
+ getDefaultLineAxis: getDefaultLineAxis,
473
+ getDefaultLineGrid: getDefaultLineGrid,
474
+ getDefaultLineLegend: getDefaultLineLegend,
475
+ getDefaultLinePoint: getDefaultLinePoint,
476
+ getDefaultLineConfig: getDefaultLineConfig,
477
+ getDefaultSingleLineTooltip: getDefaultSingleLineTooltip,
478
+ getDefaultSingleLineConfig: getDefaultSingleLineConfig,
479
+ getDefaultAreaAxis: getDefaultAreaAxis,
480
+ getDefaultAreaGrid: getDefaultAreaGrid,
481
+ getDefaultAreaLegend: getDefaultAreaLegend,
482
+ getDefaultAreaPoint: getDefaultAreaPoint,
483
+ getDefaultAreaConfig: getDefaultAreaConfig,
484
+ getDefaultSingleAreaTooltip: getDefaultSingleAreaTooltip,
485
+ getDefaultSingleAreaConfig: getDefaultSingleAreaConfig
486
+ };
487
+ };
488
+
489
+ // definition of breakpoint sizes for tablet and desktop modes
490
+ patternfly.pfBreakpoints = {
491
+ 'tablet': 768,
492
+ 'desktop': 1200
493
+ };
494
+
495
+ if (typeof define === 'function' && define.amd) {
496
+ define("patternfly", function () {
497
+ return patternfly;
498
+ });
499
+ } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {
500
+ module.exports = patternfly;
501
+ } else {
502
+ window.patternfly = patternfly;
503
+ }
504
+
505
+ })(window);
506
+
507
+
508
+ // Util: PatternFly Sidebar
509
+ // Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile
510
+ (function ($) {
511
+ 'use strict';
512
+ $.fn.sidebar = function () {
513
+ var documentHeight = 0,
514
+ navbarpfHeight = 0,
515
+ colHeight = 0;
516
+
517
+ if ($('.navbar-pf .navbar-toggle').is(':hidden')) {
518
+ documentHeight = $(document).height();
519
+ navbarpfHeight = $('.navbar-pf').outerHeight();
520
+ colHeight = documentHeight - navbarpfHeight;
521
+ }
522
+ $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({"min-height" : colHeight});
523
+ };
524
+
525
+ $(document).ready(function () {
526
+ // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist
527
+ if ($('.sidebar-pf').length > 0 && $('.datatable').length === 0) {
528
+ $.fn.sidebar();
529
+ }
530
+ });
531
+
532
+ $(window).resize(function () {
533
+ // Call sidebar() on resize if .sidebar-pf exists
534
+ if ($('.sidebar-pf').length > 0) {
535
+ $.fn.sidebar();
536
+ }
537
+ });
538
+ }(jQuery));
539
+
540
+ // Util: PatternFly Popovers
541
+ // Add data-close="true" to insert close X icon
542
+ (function ($) {
543
+ 'use strict';
544
+
545
+ $.fn.popovers = function () {
546
+ // Initialize
547
+ this.popover();
548
+
549
+ // Add close icons
550
+ this.filter('[data-close=true]').each(function (index, element) {
551
+ var $this = $(element),
552
+ title = $this.attr('data-original-title') + '<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';
553
+
554
+ $this.attr('data-original-title', title);
555
+ });
556
+
557
+ // Bind Close Icon to Toggle Display
558
+ this.on('click', function (e) {
559
+ var $this = $(this),
560
+ $title = $this.next('.popover').find('.popover-title');
561
+
562
+ // Only if data-close is true add class "x" to title for right padding
563
+ $title.find('.close').parent('.popover-title').addClass('closable');
564
+
565
+ // Bind x icon to close popover
566
+ $title.find('.close').on('click', function () {
567
+ $this.popover('hide');
568
+ });
569
+
570
+ // Prevent href="#" page scroll to top
571
+ e.preventDefault();
572
+ });
573
+
574
+ return this;
575
+ };
576
+ }(jQuery));
577
+
578
+
579
+ // Util: DataTables Settings
580
+ (function ($) {
581
+ 'use strict';
582
+ if ($.fn.dataTableExt) {
583
+ /* Set the defaults for DataTables initialisation */
584
+ $.extend(true, $.fn.dataTable.defaults, {
585
+ "bDestroy": true,
586
+ "bAutoWidth": false,
587
+ "iDisplayLength": 20,
588
+ "sDom":
589
+ "<'dataTables_header' f i r >" +
590
+ "<'table-responsive' t >" +
591
+ "<'dataTables_footer' p >",
592
+ "oLanguage": {
593
+ "sInfo": "Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",
594
+ "sInfoFiltered" : "(of <b>_MAX_</b>)",
595
+ "sInfoEmpty" : "Showing <b>0</b> Results",
596
+ "sZeroRecords":
597
+ "<p>Suggestions</p>" +
598
+ "<ul>" +
599
+ "<li>Check the javascript regular expression syntax of the search term.</li>" +
600
+ "<li>Check that the correct menu option is chosen (token ID vs. user ID).</li>" +
601
+ "<li>Use wildcards (* to match 0 or more characters, + to match 1 or more characters, ? to match 0 or 1 character).</li>" +
602
+ "<li>Clear the search field, then click Search to return to the 20 most recent records.</li>" +
603
+ "</ul>",
604
+ "sSearch": ""
605
+ },
606
+ "sPaginationType": "bootstrap_input",
607
+ "oSearch": {
608
+ "sSearch": "",
609
+ "bRegex": true,
610
+ "bSmart": false
611
+ }
612
+ });
613
+
614
+ /* Default class modification */
615
+ $.extend($.fn.dataTableExt.oStdClasses, {
616
+ "sWrapper": "dataTables_wrapper"
617
+ });
618
+
619
+ /* API method to get paging information */
620
+ $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
621
+ return {
622
+ "iStart": oSettings._iDisplayStart,
623
+ "iEnd": oSettings.fnDisplayEnd(),
624
+ "iLength": oSettings._iDisplayLength,
625
+ "iTotal": oSettings.fnRecordsTotal(),
626
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
627
+ "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
628
+ "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
629
+ };
630
+ };
631
+
632
+ /* Combination of Bootstrap + Input Text style pagination control */
633
+ $.extend($.fn.dataTableExt.oPagination, {
634
+ "bootstrap_input": {
635
+ "fnInit": function (oSettings, nPaging, fnDraw) {
636
+ var fnClickHandler = function (e) {
637
+ e.preventDefault();
638
+ if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
639
+ fnDraw(oSettings);
640
+ }
641
+ },
642
+ els,
643
+ nInput;
644
+
645
+ $(nPaging).append(
646
+ '<ul class="pagination">' +
647
+ ' <li class="first disabled"><span class="i fa fa-angle-double-left"></span></li>' +
648
+ ' <li class="prev disabled"><span class="i fa fa-angle-left"></span></li>' +
649
+ '</ul>' +
650
+ '<div class="pagination-input">' +
651
+ ' <input type="text" class="paginate_input">' +
652
+ ' <span class="paginate_of">of <b>3</b></span>' +
653
+ '</div>' +
654
+ '<ul class="pagination">' +
655
+ ' <li class="next disabled"><span class="i fa fa-angle-right"></span></li>' +
656
+ ' <li class="last disabled"><span class="i fa fa-angle-double-right"></span></li>' +
657
+ '</ul>'
658
+ );
659
+
660
+ els = $('li', nPaging);
661
+ $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);
662
+ $(els[1]).bind('click.DT', { action: "previous" }, fnClickHandler);
663
+ $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);
664
+ $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);
665
+
666
+ nInput = $('input', nPaging);
667
+ $(nInput).keyup(function (e) {
668
+ var iNewStart;
669
+ if (e.which === 38 || e.which === 39) {
670
+ this.value += 1;
671
+ } else if ((e.which === 37 || e.which === 40) && this.value > 1) {
672
+ this.value -= 1;
673
+ }
674
+
675
+ if (this.value === "" || !this.value.match(/[0-9]/)) {
676
+ /* Nothing entered or non-numeric character */
677
+ return;
678
+ }
679
+
680
+ iNewStart = oSettings._iDisplayLength * (this.value - 1);
681
+ if (iNewStart >= oSettings.fnRecordsDisplay()) {
682
+ /* Display overrun */
683
+ oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) /
684
+ oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
685
+ fnDraw(oSettings);
686
+ return;
687
+ }
688
+
689
+ oSettings._iDisplayStart = iNewStart;
690
+ fnDraw(oSettings);
691
+ });
692
+ },
693
+
694
+ "fnUpdate": function (oSettings, fnDraw) {
695
+ var oPaging = oSettings.oInstance.fnPagingInfo(),
696
+ an = oSettings.aanFeatures.p,
697
+ ien = an.length,
698
+ iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength),
699
+ iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1,
700
+ i;
701
+
702
+ for (i = 0; i < ien; i += 1) {
703
+ $('.paginate_input', an[i]).val(iCurrentPage)
704
+ .siblings('.paginate_of').find('b').html(iPages);
705
+
706
+ // Add / remove disabled classes from the static elements
707
+ if (oPaging.iPage === 0) {
708
+ $('li.first', an[i]).addClass('disabled');
709
+ $('li.prev', an[i]).addClass('disabled');
710
+ } else {
711
+ $('li.first', an[i]).removeClass('disabled');
712
+ $('li.prev', an[i]).removeClass('disabled');
713
+ }
714
+
715
+ if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
716
+ $('li.next', an[i]).addClass('disabled');
717
+ $('li.last', an[i]).addClass('disabled');
718
+ } else {
719
+ $('li.next', an[i]).removeClass('disabled');
720
+ $('li.last', an[i]).removeClass('disabled');
721
+ }
722
+ }
723
+ }
724
+ }
725
+ });
726
+ }
727
+ }(jQuery));
728
+
729
+ // Util: definition of breakpoint sizes for tablet and desktop modes
730
+ (function ($) {
731
+ 'use strict';
732
+ if (patternfly !== undefined) {
733
+ $.pfBreakpoints = patternfly.pfBreakpoints;
734
+ }
735
+ }(jQuery));
736
+
737
+ // Util: PatternFly Collapsible Left Hand Navigation
738
+ // Must have navbar-toggle in navbar-pf-alt for expand/collapse
739
+ (function ($) {
740
+
741
+ 'use strict';
742
+
743
+ $.fn.navigation = function () {
744
+
745
+ var navElement = $('.layout-pf-alt-fixed .nav-pf-vertical-alt'),
746
+ bodyContentElement = $('.container-pf-alt-nav-pf-vertical-alt'),
747
+ toggleNavBarButton = $('.navbar-toggle'),
748
+ explicitCollapse = false,
749
+ checkNavState = function () {
750
+ var width = $(window).width();
751
+
752
+ //Always remove the hidden & peek class
753
+ navElement.removeClass('hidden show-mobile-nav collapsed');
754
+
755
+ //Set the body class back to the default
756
+ bodyContentElement.removeClass('collapsed-nav hidden-nav');
757
+
758
+ // Check to see if the nav needs to collapse
759
+ if (width < $.pfBreakpoints.desktop || explicitCollapse) {
760
+ navElement.addClass('collapsed');
761
+ bodyContentElement.addClass('collapsed-nav');
762
+ }
763
+
764
+ // Check to see if we need to move down to the mobile state
765
+ if (width < $.pfBreakpoints.tablet) {
766
+ //Set the nav to being hidden
767
+ navElement.addClass('hidden');
768
+
769
+ //Make sure this is expanded
770
+ navElement.removeClass('collapsed');
771
+
772
+ //Set the body class to the correct state
773
+ bodyContentElement.removeClass('collapsed-nav');
774
+ bodyContentElement.addClass('hidden-nav');
775
+ }
776
+ },
777
+ collapseMenu = function () {
778
+ //Make sure this is expanded
779
+ navElement.addClass('collapsed');
780
+ //Set the body class to the correct state
781
+ bodyContentElement.addClass('collapsed-nav');
782
+
783
+ explicitCollapse = true;
817
784
  },
818
- getDefaultAreaPoint = function () {
819
- return getDefaultLinePoint();
785
+ enableTransitions = function () {
786
+ // enable transitions only when toggleNavBarButton is clicked or window is resized
787
+ $('html').addClass('transitions');
820
788
  },
821
- getDefaultAreaConfig = function () {
822
- return {
823
- axis: getDefaultAreaAxis(),
824
- grid: getDefaultAreaGrid(),
825
- color: getDefaultColors(),
826
- legend: getDefaultAreaLegend(),
827
- point: getDefaultAreaPoint()
828
- };
789
+ expandMenu = function () {
790
+ //Make sure this is expanded
791
+ navElement.removeClass('collapsed');
792
+ //Set the body class to the correct state
793
+ bodyContentElement.removeClass('collapsed-nav');
794
+
795
+ explicitCollapse = false;
829
796
  },
830
- getDefaultSingleAreaTooltip = function () {
831
- return {
832
- contents: $().pfGetBarChartTooltipContentsFn()
833
- };
797
+ bindMenuBehavior = function () {
798
+ toggleNavBarButton.on('click', function (e) {
799
+ var inMobileState = bodyContentElement.hasClass('hidden-nav');
800
+ enableTransitions();
801
+
802
+ if (inMobileState && navElement.hasClass('show-mobile-nav')) {
803
+ //In mobile state just need to hide the nav
804
+ navElement.removeClass('show-mobile-nav');
805
+ } else if (inMobileState) {
806
+ navElement.addClass('show-mobile-nav');
807
+ } else if (navElement.hasClass('collapsed')) {
808
+ expandMenu();
809
+ } else {
810
+ collapseMenu();
811
+ }
812
+ });
834
813
  },
835
- getDefaultSingleAreaLegend = function () {
836
- return getDefaultSingleLineLegend();
814
+ setTooltips = function () {
815
+ $('.nav-pf-vertical-alt [data-toggle="tooltip"]').tooltip({'container': 'body', 'delay': { 'show': '500', 'hide': '200' }});
816
+
817
+ $(".nav-pf-vertical-alt").on("show.bs.tooltip", function (e) {
818
+ return $(this).hasClass("collapsed");
819
+ });
820
+
837
821
  },
838
- getDefaultSingleAreaConfig = function () {
839
- return {
840
- axis: getDefaultAreaAxis(),
841
- grid: getDefaultAreaGrid(),
842
- color: getDefaultColors(),
843
- legend: getDefaultSingleAreaLegend(),
844
- point: getDefaultAreaPoint(),
845
- tooltip: getDefaultSingleAreaTooltip()
846
- };
822
+ init = function () {
823
+ //Set correct state on load
824
+ checkNavState();
825
+
826
+ // Bind Top level hamburger menu with menu behavior;
827
+ bindMenuBehavior();
828
+
829
+ //Set tooltips
830
+ setTooltips();
847
831
  };
848
- return {
849
- getDefaultColors: getDefaultColors,
850
- getDefaultBarGrid: getDefaultBarGrid,
851
- getDefaultBarTooltip: getDefaultBarTooltip,
852
- getDefaultBarLegend: getDefaultBarLegend,
853
- getDefaultBarConfig: getDefaultBarConfig,
854
- getDefaultGroupedBarGrid: getDefaultGroupedBarGrid,
855
- getDefaultGroupedBarLegend: getDefaultGroupedBarLegend,
856
- getDefaultGroupedBarConfig: getDefaultGroupedBarConfig,
857
- getDefaultDonut: getDefaultDonut,
858
- getDefaultDonutSize: getDefaultDonutSize,
859
- getDefaultDonutColors: getDefaultDonutColors,
860
- getDefaultDonutTooltip: getDefaultDonutTooltip,
861
- getDefaultDonutLegend: getDefaultDonutLegend,
862
- getDefaultDonutConfig: getDefaultDonutConfig,
863
- getDefaultPie: getDefaultPie,
864
- getDefaultPieSize: getDefaultPieSize,
865
- getDefaultPieColors: getDefaultPieColors,
866
- getDefaultPieTooltip: getDefaultPieTooltip,
867
- getDefaultPieLegend: getDefaultPieLegend,
868
- getDefaultPieConfig: getDefaultPieConfig,
869
- getDefaultSparklineArea: getDefaultSparklineArea,
870
- getDefaultSparklineSize: getDefaultSparklineSize,
871
- getDefaultSparklineAxis: getDefaultSparklineAxis,
872
- getDefaultSparklineLegend: getDefaultSparklineLegend,
873
- getDefaultSparklinePoint: getDefaultSparklinePoint,
874
- getDefaultSparklineTooltip: getDefaultSparklineTooltip,
875
- getDefaultSparklineConfig: getDefaultSparklineConfig,
876
- getDefaultLineAxis: getDefaultLineAxis,
877
- getDefaultLineGrid: getDefaultLineGrid,
878
- getDefaultLineLegend: getDefaultLineLegend,
879
- getDefaultLinePoint: getDefaultLinePoint,
880
- getDefaultLineConfig: getDefaultLineConfig,
881
- getDefaultSingleLineTooltip: getDefaultSingleLineTooltip,
882
- getDefaultSingleLineConfig: getDefaultSingleLineConfig,
883
- getDefaultAreaAxis: getDefaultAreaAxis,
884
- getDefaultAreaGrid: getDefaultAreaGrid,
885
- getDefaultAreaLegend: getDefaultAreaLegend,
886
- getDefaultAreaPoint: getDefaultAreaPoint,
887
- getDefaultAreaConfig: getDefaultAreaConfig,
888
- getDefaultSingleAreaTooltip: getDefaultSingleAreaTooltip,
889
- getDefaultSingleAreaConfig: getDefaultSingleAreaConfig
890
- };
832
+
833
+ //Listen for the window resize event and collapse/hide as needed
834
+ $(window).on('resize', function () {
835
+ checkNavState();
836
+ enableTransitions();
837
+ });
838
+
839
+ init();
840
+
841
+ };
842
+
843
+ $(document).ready(function () {
844
+ if ($('.nav-pf-vertical-alt').length > 0) {
845
+ $.fn.navigation();
846
+ }
847
+ });
848
+
849
+ }(jQuery));
850
+
851
+ // Count and Display Remaining Characters
852
+ (function ($) {
853
+
854
+ 'use strict';
855
+
856
+ $.fn.countRemainingChars = function (options) {
857
+
858
+ var settings = $.extend({
859
+ // These are the defaults.
860
+ charsMaxLimit: 100,
861
+ charsWarnRemaining: 5,
862
+ blockInputAtMaxLimit: false
863
+ }, options),
864
+ $taFld = this,
865
+ $countFld = $('#' + settings.countFld).text(settings.charsMaxLimit),
866
+ charsRemainingFn = function (charsLength) {
867
+ var charsRemaining = settings.charsMaxLimit - charsLength;
868
+ $countFld.text(charsRemaining);
869
+ $countFld.toggleClass('chars-warn-remaining-pf', charsRemaining <= settings.charsWarnRemaining);
870
+ if (charsRemaining < 0) {
871
+ $taFld.trigger("overCharsMaxLimitEvent", $taFld.attr('id'));
872
+ } else {
873
+ $taFld.trigger("underCharsMaxLimitEvent", $taFld.attr('id'));
874
+ }
875
+ };
876
+
877
+ this.on('paste', function (event) {
878
+ setTimeout(function () {
879
+ var charsLength = $taFld.val().length, maxTxt;
880
+
881
+ if (settings.blockInputAtMaxLimit && charsLength > settings.charsMaxLimit) {
882
+ maxTxt = $taFld.val();
883
+ maxTxt = maxTxt.substring(0, settings.charsMaxLimit);
884
+ $taFld.val(maxTxt);
885
+ charsLength = $taFld.val().length;
886
+ }
887
+
888
+ charsRemainingFn(charsLength);
889
+ }, 100);
890
+ });
891
+
892
+ this.keyup(function (event) {
893
+ charsRemainingFn($taFld.val().length);
894
+ });
895
+
896
+ this.keydown(function (event) {
897
+ var charsLength = $taFld.val().length;
898
+
899
+ if (settings.blockInputAtMaxLimit && charsLength >= settings.charsMaxLimit) {
900
+ // Except backspace
901
+ if (event.keyCode !== 8) {
902
+ event.preventDefault();
903
+ }
904
+ }
905
+ });
906
+
907
+ return this;
891
908
  };
892
909
  }(jQuery));
893
910
 
911
+ // Util: PatternFly Palette colors
912
+ (function ($) {
913
+ 'use strict';
914
+
915
+ if (patternfly !== undefined) {
916
+ $.pfPaletteColors = patternfly.pfPaletteColors;
917
+ }
918
+ }(jQuery));
919
+
920
+ // Util: PatternFly C3 Chart Defaults
921
+ (function ($) {
922
+ 'use strict';
923
+ if (patternfly !== undefined) {
924
+ $.fn.pfSetDonutChartTitle = patternfly.pfSetDonutChartTitle;
925
+ $.fn.pfDonutTooltipContents = patternfly.pfDonutTooltipContents;
926
+ $.fn.pfGetUtilizationDonutTooltipContentsFn = patternfly.pfGetUtilizationDonutTooltipContentsFn;
927
+ $.fn.pfGetBarChartTooltipContentsFn = patternfly.pfGetBarChartTooltipContentsFn;
928
+ $.fn.pfSingleLineChartTooltipContentsFn = patternfly.pfSingleLineChartTooltipContentsFn;
929
+ $.fn.pfPieTooltipContents = patternfly.pfPieTooltipContents;
930
+ $.fn.c3ChartDefaults = patternfly.c3ChartDefaults;
931
+ }
932
+ }(jQuery));
933
+
894
934
  // Util: PatternFly Collapse with fixed heights
895
935
  // Update the max-height of collapse elements based on the parent container's height.
896
936
  (function ($) {