All Downloads are FREE. Search and download functionalities are using the official Maven repository.

@kie-tools.dashbuilder-client.dist.org.dashbuilder.DashbuilderRuntime.js.patternfly.js Maven / Gradle / Ivy

There is a newer version: 0.32.0
Show newest version
(function (window) {
  'use strict';

  var patternfly = {
    version: "3.18.1",
  };

  // Util: PatternFly Palette colors
  patternfly.pfPaletteColors = {
    black:         '#030303',
    black100:      '#fafafa',
    black200:      '#ededed',
    black300:      '#d1d1d1',
    black400:      '#bbbbbb',
    black500:      '#8b8d8f',
    black600:      '#72767b',
    black700:      '#4d5258',
    black800:      '#393f44',
    black900:      '#292e34',
    blue:          '#0088ce',
    blue100:       '#bee1f4',
    blue200:       '#7dc3e8',
    blue300:       '#39a5dc',
    blue400:       '#0088ce',
    blue500:       '#00659c',
    blue600:       '#004368',
    blue700:       '#002235',
    gold:          '#f0ab00',
    gold100:       '#fbeabc',
    gold200:       '#f9d67a',
    gold300:       '#f5c12e',
    gold400:       '#f0ab00',
    gold500:       '#b58100',
    gold600:       '#795600',
    gold700:       '#3d2c00',
    orange:        '#ec7a08',
    orange100:     '#fbdebf',
    orange200:     '#f7bd7f',
    orange300:     '#f39d3c',
    orange400:     '#ec7a08',
    orange500:     '#b35c00',
    orange600:     '#773d00',
    orange700:     '#3b1f00',
    lightBlue:     '#00b9e4',
    lightBlue100:  '#beedf9',
    lightBlue200:  '#7cdbf3',
    lightBlue300:  '#35caed',
    lightBlue400:  '#00b9e4',
    lightBlue500:  '#008bad',
    lightBlue600:  '#005c73',
    lightBlue700:  '#002d39',
    green:         '#3f9c35',
    green100:      '#cfe7cd',
    green200:      '#9ecf99',
    green300:      '#6ec664',
    green400:      '#3f9c35',
    green500:      '#2d7623',
    green600:      '#1e4f18',
    green700:      '#0f280d',
    lightGreen:    '#92d400',
    lightGreen100: '#e4f5bc',
    lightGreen200: '#c8eb79',
    lightGreen300: '#ace12e',
    lightGreen400: '#92d400',
    lightGreen500: '#6ca100',
    lightGreen600: '#486b00',
    lightGreen700: '#253600',
    cyan:          '#007a87',
    cyan100:       '#bedee1',
    cyan200:       '#7dbdc3',
    cyan300:       '#3a9ca6',
    cyan400:       '#007a87',
    cyan500:       '#005c66',
    cyan600:       '#003d44',
    cyan700:       '#001f22',
    purple:        '#703fec',
    purple100:     '#c7bfff',
    purple200:     '#a18fff',
    purple300:     '#8461f7',
    purple400:     '#703fec',
    purple500:     '#582fc0',
    purple600:     '#40199a',
    purple700:     '#1f0066',
    red:           '#cc0000',
    red100:        '#cc0000',
    red200:        '#a30000',
    red300:        '#8b0000',
    red400:        '#470000',
    red500:        '#2c0000'
  };

  // Util: PatternFly C3 Chart Defaults
  patternfly.pfSetDonutChartTitle = function (selector, primary, secondary) {
    var donutChartRightTitle = window.d3.select(selector).select('text.c3-chart-arcs-title');
    donutChartRightTitle.text("");
    donutChartRightTitle.insert('tspan').text(primary).classed('donut-title-big-pf', true).attr('dy', 0).attr('x', 0);
    donutChartRightTitle.insert('tspan').text(secondary).classed('donut-title-small-pf', true).attr('dy', 20).attr('x', 0);
  };

  patternfly.pfDonutTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) {
    return '' +
      '  ' +
      '    ' +
      '    ' +
      '  ' +
      '
' + '' + d[0].value + ' ' + d[0].name + '' + (Math.round(d[0].ratio * 1000) / 10) + '%
'; }; patternfly.pfGetUtilizationDonutTooltipContentsFn = function (units) { return function (d) { return '' + (Math.round(d[0].ratio * 1000) / 10) + '%' + ' ' + units + ' ' + d[0].name + ''; }; }; patternfly.pfGetBarChartTooltipContentsFn = function (categories) { return function (d) { var name = categories ? categories[d[0].index] : d[0].index; return '' + ' ' + ' ' + ' ' + ' ' + '
' + name + ':' + d[0].value + '
'; }; }; patternfly.pfSingleLineChartTooltipContentsFn = function (categories) { return function (d) { var name = categories ? categories[d[0].index] : d[0].index; return '' + ' ' + ' ' + ' ' + ' ' + '
' + name + ':' + d[0].value + '
'; }; }; patternfly.pfPieTooltipContents = function (d, defaultTitleFormat, defaultValueFormat, color) { return patternfly.pfDonutTooltipContents(d, defaultTitleFormat, defaultValueFormat, color); }; patternfly.c3ChartDefaults = function () { var getDefaultColors = function () { return { pattern: [ patternfly.pfPaletteColors.blue, patternfly.pfPaletteColors.blue300, patternfly.pfPaletteColors.green, patternfly.pfPaletteColors.orange, patternfly.pfPaletteColors.red ] }; }, getDefaultBarGrid = function () { return { y: { show: true } }; }, getDefaultBarTooltip = function (categories) { return { contents: patternfly.pfGetBarChartTooltipContentsFn(categories) }; }, getDefaultBarLegend = function () { return { show: false }; }, getDefaultBarConfig = function (categories) { return { color: this.getDefaultColors(), grid: this.getDefaultBarGrid(), tooltip: this.getDefaultBarTooltip(categories), legend: this.getDefaultBarLegend() }; }, getDefaultGroupedBarGrid = function () { return { y: { show: true } }; }, getDefaultGroupedBarLegend = function () { return { show: true, position: 'bottom' }; }, getDefaultGroupedBarConfig = function () { return { color: this.getDefaultColors(), grid: this.getDefaultGroupedBarGrid(), legend: this.getDefaultGroupedBarLegend() }; }, getDefaultStackedBarGrid = function () { return { y: { show: true } }; }, getDefaultStackedBarLegend = function () { return { show: true, position: 'bottom' }; }, getDefaultStackedBarConfig = function () { return { color: this.getDefaultColors(), grid: this.getDefaultStackedBarGrid(), legend: this.getDefaultStackedBarLegend() }; }, getDefaultDonut = function (title) { return { title: title, label: { show: false }, width: 11 }; }, getDefaultDonutSize = function () { return { height: 171 // produces a diameter of 150 and a centered chart when there is no legend // Don't set a width here, the default is to center horizontally in the parent container }; }, getDefaultDonutColors = function () { return { pattern: [ patternfly.pfPaletteColors.blue, patternfly.pfPaletteColors.black300 ] }; }, getDefaultDonutTooltip = function () { return { show: false }; }, getDefaultDonutLegend = function () { return { show: false }; }, getDefaultDonutConfig = function (title) { return { donut: this.getDefaultDonut(title), size: this.getDefaultDonutSize(), legend: this.getDefaultDonutLegend(), color: this.getDefaultDonutColors(), tooltip: this.getDefaultDonutTooltip() }; }, getDefaultPie = function () { return { expand: true, label: { show: false } }; }, getDefaultPieSize = function () { return { height: 171 // produces a diameter of 150 and a centered chart when there is no legend // Don't set a width here, default is to center horizontally in the parent container }; }, getDefaultPieColors = function () { return { pattern: [ patternfly.pfPaletteColors.blue, patternfly.pfPaletteColors.black300 ] }; }, getDefaultPieTooltip = function () { return { contents: $().pfPieTooltipContents }; }, getDefaultPieLegend = function () { return { show: false }; }, getDefaultPieConfig = function () { return { pie: this.getDefaultPie(), size: this.getDefaultPieSize(), legend: this.getDefaultPieLegend(), color: this.getDefaultPieColors(), tooltip: this.getDefaultPieTooltip() }; }, getDefaultSparklineArea = function () { return { zerobased: true }; }, getDefaultSparklineSize = function () { return { height: 60 }; }, getDefaultSparklineAxis = function () { return { x: { show: false }, y: { show: false } }; }, getDefaultSparklineLegend = function () { return { show: false }; }, getDefaultSparklinePoint = function () { return { r: 1, focus: { expand: { r: 4 } } }; }, getDefaultSparklineTooltip = function () { return { // because a sparkline should only contain a single data column, // the tooltip will only work for a single data column contents: function (d) { return '' + d[0].value + ' ' + d[0].name + ''; } }; }, getDefaultSparklineConfig = function () { return { area: getDefaultSparklineArea(), size: getDefaultSparklineSize(), axis: getDefaultSparklineAxis(), color: getDefaultColors(), legend: getDefaultSparklineLegend(), point: getDefaultSparklinePoint(), tooltip: getDefaultSparklineTooltip() }; }, getDefaultLineAxis = function () { return { x: { show: true }, y: { show: true } }; }, getDefaultLineGrid = function () { return { x: { show: false }, y: { show: true } }; }, getDefaultLineLegend = function () { return { show: true }; }, getDefaultLinePoint = function () { return { r: 3, focus: { expand: { r: 5 } } }; }, getDefaultLineConfig = function () { return { axis: getDefaultLineAxis(), grid: getDefaultLineGrid(), color: getDefaultColors(), legend: getDefaultLineLegend(), point: getDefaultLinePoint() }; }, getDefaultSingleLineTooltip = function () { return { contents: $().pfGetBarChartTooltipContentsFn() }; }, getDefaultSingleLineLegend = function () { return { show: false }; }, getDefaultSingleLineConfig = function () { return { axis: getDefaultLineAxis(), grid: getDefaultLineGrid(), color: getDefaultColors(), legend: getDefaultSingleLineLegend(), point: getDefaultLinePoint(), tooltip: getDefaultSingleLineTooltip() }; }, getDefaultAreaAxis = function () { return getDefaultLineAxis(); }, getDefaultAreaGrid = function () { return getDefaultLineGrid(); }, getDefaultAreaLegend = function () { return getDefaultLineLegend(); }, getDefaultAreaPoint = function () { return getDefaultLinePoint(); }, getDefaultAreaConfig = function () { return { axis: getDefaultAreaAxis(), grid: getDefaultAreaGrid(), color: getDefaultColors(), legend: getDefaultAreaLegend(), point: getDefaultAreaPoint() }; }, getDefaultSingleAreaTooltip = function () { return { contents: $().pfGetBarChartTooltipContentsFn() }; }, getDefaultSingleAreaLegend = function () { return getDefaultSingleLineLegend(); }, getDefaultSingleAreaConfig = function () { return { axis: getDefaultAreaAxis(), grid: getDefaultAreaGrid(), color: getDefaultColors(), legend: getDefaultSingleAreaLegend(), point: getDefaultAreaPoint(), tooltip: getDefaultSingleAreaTooltip() }; }; return { getDefaultColors: getDefaultColors, getDefaultBarGrid: getDefaultBarGrid, getDefaultBarTooltip: getDefaultBarTooltip, getDefaultBarLegend: getDefaultBarLegend, getDefaultBarConfig: getDefaultBarConfig, getDefaultGroupedBarGrid: getDefaultGroupedBarGrid, getDefaultGroupedBarLegend: getDefaultGroupedBarLegend, getDefaultGroupedBarConfig: getDefaultGroupedBarConfig, getDefaultStackedBarGrid: getDefaultStackedBarGrid, getDefaultStackedBarLegend: getDefaultStackedBarLegend, getDefaultStackedBarConfig: getDefaultStackedBarConfig, getDefaultDonut: getDefaultDonut, getDefaultDonutSize: getDefaultDonutSize, getDefaultDonutColors: getDefaultDonutColors, getDefaultDonutTooltip: getDefaultDonutTooltip, getDefaultDonutLegend: getDefaultDonutLegend, getDefaultDonutConfig: getDefaultDonutConfig, getDefaultPie: getDefaultPie, getDefaultPieSize: getDefaultPieSize, getDefaultPieColors: getDefaultPieColors, getDefaultPieTooltip: getDefaultPieTooltip, getDefaultPieLegend: getDefaultPieLegend, getDefaultPieConfig: getDefaultPieConfig, getDefaultSparklineArea: getDefaultSparklineArea, getDefaultSparklineSize: getDefaultSparklineSize, getDefaultSparklineAxis: getDefaultSparklineAxis, getDefaultSparklineLegend: getDefaultSparklineLegend, getDefaultSparklinePoint: getDefaultSparklinePoint, getDefaultSparklineTooltip: getDefaultSparklineTooltip, getDefaultSparklineConfig: getDefaultSparklineConfig, getDefaultLineAxis: getDefaultLineAxis, getDefaultLineGrid: getDefaultLineGrid, getDefaultLineLegend: getDefaultLineLegend, getDefaultLinePoint: getDefaultLinePoint, getDefaultLineConfig: getDefaultLineConfig, getDefaultSingleLineTooltip: getDefaultSingleLineTooltip, getDefaultSingleLineConfig: getDefaultSingleLineConfig, getDefaultAreaAxis: getDefaultAreaAxis, getDefaultAreaGrid: getDefaultAreaGrid, getDefaultAreaLegend: getDefaultAreaLegend, getDefaultAreaPoint: getDefaultAreaPoint, getDefaultAreaConfig: getDefaultAreaConfig, getDefaultSingleAreaTooltip: getDefaultSingleAreaTooltip, getDefaultSingleAreaConfig: getDefaultSingleAreaConfig }; }; // definition of breakpoint sizes for tablet and desktop modes patternfly.pfBreakpoints = { 'tablet': 768, 'desktop': 1200 }; window.patternfly = patternfly; })(window); // Util: PatternFly Sidebar // Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile (function ($) { 'use strict'; $.fn.sidebar = function () { var documentHeight = 0, navbarpfHeight = 0, colHeight = 0; if ($('.navbar-pf .navbar-toggle').is(':hidden')) { documentHeight = $(document).height(); navbarpfHeight = $('.navbar-pf').outerHeight(); colHeight = documentHeight - navbarpfHeight; } $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({"min-height" : colHeight}); }; $(document).ready(function () { // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist if ($('.sidebar-pf').length > 0 && $('.datatable').length === 0) { $.fn.sidebar(); } }); $(window).resize(function () { // Call sidebar() on resize if .sidebar-pf exists if ($('.sidebar-pf').length > 0) { $.fn.sidebar(); } }); }(jQuery)); // Util: PatternFly Popovers // Add data-close="true" to insert close X icon (function ($) { 'use strict'; $.fn.popovers = function () { // Initialize this.popover(); // Add close icons this.filter('[data-close=true]').each(function (index, element) { var $this = $(element), title = $this.attr('data-original-title') + ''; $this.attr('data-original-title', title); }); // Bind Close Icon to Toggle Display this.on('click', function (e) { var $this = $(this), $title = $this.next('.popover').find('.popover-title'); // Only if data-close is true add class "x" to title for right padding $title.find('.close').parent('.popover-title').addClass('closable'); // Bind x icon to close popover $title.find('.close').on('click', function () { $this.popover('hide'); }); // Prevent href="#" page scroll to top e.preventDefault(); }); return this; }; }(jQuery)); // Util: DataTables Settings (function ($) { 'use strict'; if ($.fn.dataTableExt) { /* Set the defaults for DataTables initialisation */ $.extend(true, $.fn.dataTable.defaults, { "bDestroy": true, "bAutoWidth": false, "iDisplayLength": 20, "sDom": "<'dataTables_header' f i r >" + "<'table-responsive' t >" + "<'dataTables_footer' p >", "oLanguage": { "sInfo": "Showing _START_ to _END_ of _TOTAL_ Items", "sInfoFiltered" : "(of _MAX_)", "sInfoEmpty" : "Showing 0 Results", "sZeroRecords": "

Suggestions

" + "
    " + "
  • Check the javascript regular expression syntax of the search term.
  • " + "
  • Check that the correct menu option is chosen (token ID vs. user ID).
  • " + "
  • Use wildcards (* to match 0 or more characters, + to match 1 or more characters, ? to match 0 or 1 character).
  • " + "
  • Clear the search field, then click Search to return to the 20 most recent records.
  • " + "
", "sSearch": "" }, "sPaginationType": "bootstrap_input", "oSearch": { "sSearch": "", "bRegex": true, "bSmart": false } }); /* Default class modification */ $.extend($.fn.dataTableExt.oStdClasses, { "sWrapper": "dataTables_wrapper" }); /* API method to get paging information */ $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) { return { "iStart": oSettings._iDisplayStart, "iEnd": oSettings.fnDisplayEnd(), "iLength": oSettings._iDisplayLength, "iTotal": oSettings.fnRecordsTotal(), "iFilteredTotal": oSettings.fnRecordsDisplay(), "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) }; }; /* Combination of Bootstrap + Input Text style pagination control */ $.extend($.fn.dataTableExt.oPagination, { "bootstrap_input": { "fnInit": function (oSettings, nPaging, fnDraw) { var fnClickHandler = function (e) { e.preventDefault(); if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { fnDraw(oSettings); } }, els, nInput; $(nPaging).append( '
    ' + '
  • ' + ' ' + '
' + '
' + ' ' + ' of 3' + '
' + '
    ' + ' ' + '
  • ' + '
' ); els = $('li', nPaging); $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler); $(els[1]).bind('click.DT', { action: "previous" }, fnClickHandler); $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler); $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler); nInput = $('input', nPaging); $(nInput).keyup(function (e) { var iNewStart; if (e.which === 38 || e.which === 39) { this.value += 1; } else if ((e.which === 37 || e.which === 40) && this.value > 1) { this.value -= 1; } if (this.value === "" || !this.value.match(/[0-9]/)) { /* Nothing entered or non-numeric character */ return; } iNewStart = oSettings._iDisplayLength * (this.value - 1); if (iNewStart >= oSettings.fnRecordsDisplay() || iNewStart < 0) { /* Display overrun */ oSettings._iDisplayStart = (Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength; fnDraw(oSettings); return; } oSettings._iDisplayStart = iNewStart; fnDraw(oSettings); }); }, "fnUpdate": function (oSettings, fnDraw) { var oPaging = oSettings.oInstance.fnPagingInfo(), an = oSettings.aanFeatures.p, ien = an.length, iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength), iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1, i; for (i = 0; i < ien; i += 1) { $('.paginate_input', an[i]).val(iCurrentPage) .siblings('.paginate_of').find('b').html(iPages); // Add / remove disabled classes from the static elements if (oPaging.iPage === 0) { $('li.first', an[i]).addClass('disabled'); $('li.prev', an[i]).addClass('disabled'); } else { $('li.first', an[i]).removeClass('disabled'); $('li.prev', an[i]).removeClass('disabled'); } if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) { $('li.next', an[i]).addClass('disabled'); $('li.last', an[i]).addClass('disabled'); } else { $('li.next', an[i]).removeClass('disabled'); $('li.last', an[i]).removeClass('disabled'); } } } } }); } }(jQuery)); // Util: definition of breakpoint sizes for tablet and desktop modes (function ($) { 'use strict'; if (patternfly !== undefined) { $.pfBreakpoints = patternfly.pfBreakpoints; } }(jQuery)); // Util: PatternFly Collapsible Left Hand Navigation // Must have navbar-toggle in navbar-pf-alt for expand/collapse (function ($) { 'use strict'; $.fn.navigation = function () { var navElement = $('.layout-pf-alt-fixed .nav-pf-vertical-alt'), bodyContentElement = $('.container-pf-alt-nav-pf-vertical-alt'), toggleNavBarButton = $('.navbar-toggle'), explicitCollapse = false, checkNavState = function () { var width = $(window).width(); //Always remove the hidden & peek class navElement.removeClass('hidden show-mobile-nav collapsed'); //Set the body class back to the default bodyContentElement.removeClass('collapsed-nav hidden-nav'); // Check to see if the nav needs to collapse if (width < $.pfBreakpoints.desktop || explicitCollapse) { navElement.addClass('collapsed'); bodyContentElement.addClass('collapsed-nav'); } // Check to see if we need to move down to the mobile state if (width < $.pfBreakpoints.tablet) { //Set the nav to being hidden navElement.addClass('hidden'); //Make sure this is expanded navElement.removeClass('collapsed'); //Set the body class to the correct state bodyContentElement.removeClass('collapsed-nav'); bodyContentElement.addClass('hidden-nav'); } }, collapseMenu = function () { //Make sure this is expanded navElement.addClass('collapsed'); //Set the body class to the correct state bodyContentElement.addClass('collapsed-nav'); explicitCollapse = true; }, enableTransitions = function () { // enable transitions only when toggleNavBarButton is clicked or window is resized $('html').addClass('transitions'); }, expandMenu = function () { //Make sure this is expanded navElement.removeClass('collapsed'); //Set the body class to the correct state bodyContentElement.removeClass('collapsed-nav'); explicitCollapse = false; }, bindMenuBehavior = function () { toggleNavBarButton.on('click', function (e) { var inMobileState = bodyContentElement.hasClass('hidden-nav'); enableTransitions(); if (inMobileState && navElement.hasClass('show-mobile-nav')) { //In mobile state just need to hide the nav navElement.removeClass('show-mobile-nav'); } else if (inMobileState) { navElement.addClass('show-mobile-nav'); } else if (navElement.hasClass('collapsed')) { expandMenu(); } else { collapseMenu(); } }); }, setTooltips = function () { $('.nav-pf-vertical-alt [data-toggle="tooltip"]').tooltip({'container': 'body', 'delay': { 'show': '500', 'hide': '200' }}); $(".nav-pf-vertical-alt").on("show.bs.tooltip", function (e) { return $(this).hasClass("collapsed"); }); }, init = function () { //Set correct state on load checkNavState(); // Bind Top level hamburger menu with menu behavior; bindMenuBehavior(); //Set tooltips setTooltips(); }; //Listen for the window resize event and collapse/hide as needed $(window).on('resize', function () { checkNavState(); enableTransitions(); }); init(); }; $(document).ready(function () { if ($('.nav-pf-vertical-alt').length > 0) { $.fn.navigation(); } }); }(jQuery)); // Count and Display Remaining Characters (function ($) { 'use strict'; $.fn.countRemainingChars = function (options) { var settings = $.extend({ // These are the defaults. charsMaxLimit: 100, charsWarnRemaining: 5, blockInputAtMaxLimit: false }, options), $taFld = this, $countFld = $('#' + settings.countFld).text(settings.charsMaxLimit), charsRemainingFn = function (charsLength) { var charsRemaining = settings.charsMaxLimit - charsLength; $countFld.text(charsRemaining); $countFld.toggleClass('chars-warn-remaining-pf', charsRemaining <= settings.charsWarnRemaining); if (charsRemaining < 0) { $taFld.trigger("overCharsMaxLimitEvent", $taFld.attr('id')); } else { $taFld.trigger("underCharsMaxLimitEvent", $taFld.attr('id')); } }; this.on('paste', function (event) { setTimeout(function () { var charsLength = $taFld.val().length, maxTxt; if (settings.blockInputAtMaxLimit && charsLength > settings.charsMaxLimit) { maxTxt = $taFld.val(); maxTxt = maxTxt.substring(0, settings.charsMaxLimit); $taFld.val(maxTxt); charsLength = $taFld.val().length; } charsRemainingFn(charsLength); }, 100); }); this.keyup(function (event) { charsRemainingFn($taFld.val().length); }); this.keydown(function (event) { var charsLength = $taFld.val().length; if (settings.blockInputAtMaxLimit && charsLength >= settings.charsMaxLimit) { // Except backspace if (event.keyCode !== 8) { event.preventDefault(); } } }); return this; }; }(jQuery)); // Util: PatternFly Palette colors (function ($) { 'use strict'; if (patternfly !== undefined) { $.pfPaletteColors = patternfly.pfPaletteColors; } }(jQuery)); // Util: PatternFly C3 Chart Defaults (function ($) { 'use strict'; if (patternfly !== undefined) { $.fn.pfSetDonutChartTitle = patternfly.pfSetDonutChartTitle; $.fn.pfDonutTooltipContents = patternfly.pfDonutTooltipContents; $.fn.pfGetUtilizationDonutTooltipContentsFn = patternfly.pfGetUtilizationDonutTooltipContentsFn; $.fn.pfGetBarChartTooltipContentsFn = patternfly.pfGetBarChartTooltipContentsFn; $.fn.pfSingleLineChartTooltipContentsFn = patternfly.pfSingleLineChartTooltipContentsFn; $.fn.pfPieTooltipContents = patternfly.pfPieTooltipContents; $.fn.c3ChartDefaults = patternfly.c3ChartDefaults; } }(jQuery)); // Util: PatternFly Collapse with fixed heights // Update the max-height of collapse elements based on the parent container's height. (function ($) { 'use strict'; $.fn.initCollapseHeights = function (scrollSelector) { var parentElement = this, setCollapseHeights, targetScrollSelector = scrollSelector; setCollapseHeights = function () { var height, openPanel, contentHeight, bodyHeight, overflowY = 'hidden'; height = parentElement.height(); // Close any open panel openPanel = parentElement.find('.collapse.in'); if (openPanel && openPanel.length > 0) { openPanel.removeClass('in'); } // Determine the necessary height for the closed content contentHeight = 0; parentElement.children().each($.proxy(function (i, element) { var $element = $(element); contentHeight += $element.outerHeight(true); }, parentElement)).end(); // Determine the height remaining for opened collapse panels bodyHeight = height - contentHeight; // Make sure we have enough height to be able to scroll the contents if necessary if (bodyHeight < 25) { bodyHeight = 25; // Allow the parent to scroll so the child elements are accessible overflowY = 'auto'; } // Reopen the initially opened panel if (openPanel && openPanel.length > 0) { openPanel.addClass("in"); } setTimeout(function () { // Set the max-height for the collapse panels parentElement.find('[data-toggle="collapse"]').each($.proxy(function (i, element) { var $element, selector, $target, scrollElement, innerHeight = 0; $element = $(element); // Determine the selector to find the target selector = $element.attr('data-target'); if (!selector) { selector = $element.attr('href'); } // Determine the scroll element (either the target or the child of the target based on the given selector) $target = $(selector); scrollElement = $target; if (targetScrollSelector) { scrollElement = $target.find(targetScrollSelector); if (scrollElement.length === 1) { innerHeight = 0; $target.children().each($.proxy(function (j, sibling) { var $sibling = $(sibling); if (sibling !== scrollElement[0]) { innerHeight += $sibling.outerHeight(true); } }, $target)).end(); bodyHeight -= innerHeight; } else { scrollElement = $target; } } // Set the max-height and vertical scroll of the scroll element scrollElement.css({'max-height': (bodyHeight - innerHeight) + 'px', 'overflow-y': 'auto'}); }, parentElement)).end(); parentElement.css({'overflow-y': overflowY}); }, 100); }; setCollapseHeights(); // Update on window resizing $(window).resize(setCollapseHeights); }; }(jQuery)); // Util: PatternFly TreeGrid Tables (function ($) { 'use strict'; function getParent (rows, node) { var parent = node.attr('data-parent'); if (typeof parent === "string") { if (isNaN(parent)) { parent = rows.closest(parent); } else { parent = $(rows[parseInt(parent, 10)]); } return parent; } return undefined; } function renderItem (item, parent) { if (parent) { parent.find('.treegrid-node > span.expand-icon') .toggleClass('fa-angle-right', parent.hasClass('collapsed')) .toggleClass('fa-angle-down', !parent.hasClass('collapsed')); item.toggleClass('hidden', parent.hasClass('collapsed')); if (parent.hasClass('collapsed')) { item.addClass('collapsed'); } } } function reStripe (tree) { tree.find('tbody > tr').removeClass('odd'); tree.find('tbody > tr:not(.hidden):odd').addClass('odd'); } $.fn.treegrid = function (options) { var i, rows, _this; rows = this.find('tbody > tr'); _this = this; $.each(rows, function () { var node, parent; node = $(this); parent = getParent(rows, node); // Append expand icon dummies node.children('.treegrid-node').prepend(''); // Set up an event listener for the node node.children('.treegrid-node').on('click', function (e) { var icon = node.find('span.expand-icon'); if (options && typeof options.callback === 'function') { options.callback(e); } if (icon.hasClass('fa-angle-right')) { node.removeClass('collapsed'); } if (icon.hasClass('fa-angle-down')) { node.addClass('collapsed'); } $.each(rows.slice(rows.index(node) + 1), function () { renderItem($(this), getParent(rows, $(this))); }); reStripe(_this); }); if (parent) { // Calculate indentation depth i = parent.find('.treegrid-node > span.indent').length + 1; for (i; i > 0; i -= 1) { node.children('.treegrid-node').prepend(''); } // Render expand/collapse icons renderItem(node, parent); } }); reStripe(_this); }; }(jQuery)); // Util: PatternFly Vertical Navigation // Must have navbar-toggle in navbar-pf-vertical for expand/collapse (function ($) { 'use strict'; $.fn.setupVerticalNavigation = function (handleItemSelections) { var navElement = $('.nav-pf-vertical'), bodyContentElement = $('.container-pf-nav-pf-vertical'), toggleNavBarButton = $('.navbar-toggle'), explicitCollapse = false, subDesktop = false, hoverDelay = 500, hideDelay = hoverDelay + 200, inMobileState = function () { return bodyContentElement.hasClass('hidden-nav'); }, forceResize = function (delay) { setTimeout(function () { $(window).trigger('resize'); }, delay); }, showSecondaryMenu = function () { if (inMobileState() || !subDesktop) { navElement.addClass('secondary-visible-pf'); bodyContentElement.addClass('secondary-visible-pf'); } // Dispatch a resize event when showing the secondary menu in non-subdesktop state to // allow content to adjust to the secondary menu sizing if (!subDesktop) { forceResize(100); } }, hideSecondaryMenu = function () { navElement.removeClass('secondary-visible-pf'); bodyContentElement.removeClass('secondary-visible-pf'); navElement.find('.mobile-nav-item-pf').each(function (index, item) { $(item).removeClass('mobile-nav-item-pf'); }); }, setPrimaryActiveItem = function (item) { // Make the clicked on item active $(document).find('.nav-pf-vertical > .list-group > .list-group-item.active').each(function (index, element) { $(element).removeClass('active'); }); item.addClass('active'); }, setSecondaryActiveItem = function (item, $primaryParent) { $(document).find('.nav-pf-secondary-nav > .list-group > .list-group-item.active').each(function (index, element) { $(element).removeClass('active'); }); item.addClass('active'); setPrimaryActiveItem($primaryParent); }, setTertiaryActiveItem = function (item, $secondaryParent, $primaryParent) { $(document).find('.nav-pf-tertiary-nav > .list-group > .list-group-item.active').each(function (index, element) { $(element).removeClass('active'); }); item.addClass('active'); setSecondaryActiveItem($secondaryParent, $primaryParent); }, updateSecondaryMenuDisplayAfterSelection = function () { if (inMobileState()) { navElement.removeClass('show-mobile-nav'); hideSecondaryMenu(); navElement.find('.mobile-nav-item-pf').each(function (index, item) { $(item).removeClass('mobile-nav-item-pf'); }); } else { showSecondaryMenu(); } }, updateSecondaryCollapsedState = function (setCollapsed, collapsedItem) { if (setCollapsed) { collapsedItem.addClass('collapsed'); navElement.addClass('collapsed-secondary-nav-pf'); bodyContentElement.addClass('collapsed-secondary-nav-pf'); } else { if (collapsedItem) { collapsedItem.removeClass('collapsed'); } else { // Remove any collapsed secondary menus navElement.find('[data-toggle="collapse-secondary-nav"]').each(function (index, element) { var $e = $(element); $e.removeClass('collapsed'); }); } navElement.removeClass('collapsed-secondary-nav-pf'); bodyContentElement.removeClass('collapsed-secondary-nav-pf'); } }, updateTertiaryCollapsedState = function (setCollapsed, collapsedItem) { if (setCollapsed) { collapsedItem.addClass('collapsed'); navElement.addClass('collapsed-tertiary-nav-pf'); bodyContentElement.addClass('collapsed-tertiary-nav-pf'); updateSecondaryCollapsedState(false); } else { if (collapsedItem) { collapsedItem.removeClass('collapsed'); } else { // Remove any collapsed tertiary menus navElement.find('[data-toggle="collapse-tertiary-nav"]').each(function (index, element) { var $e = $(element); $e.removeClass('collapsed'); }); } navElement.removeClass('collapsed-tertiary-nav-pf'); bodyContentElement.removeClass('collapsed-tertiary-nav-pf'); } }, updateMobileMenu = function (selected, secondaryItem) { $(document).find('.list-group-item.mobile-nav-item-pf').each(function (index, item) { $(item).removeClass('mobile-nav-item-pf'); }); $(document).find('.list-group-item.mobile-secondary-item-pf').each(function (index, item) { $(item).removeClass('mobile-secondary-item-pf'); }); if (selected) { selected.addClass('mobile-nav-item-pf'); if (secondaryItem) { secondaryItem.addClass('mobile-secondary-item-pf'); navElement.removeClass('show-mobile-secondary'); navElement.addClass('show-mobile-tertiary'); } else { navElement.addClass('show-mobile-secondary'); navElement.removeClass('show-mobile-tertiary'); } } else { navElement.removeClass('show-mobile-secondary'); navElement.removeClass('show-mobile-tertiary'); } }, checkNavState = function () { var width = $(window).width(), makeSecondaryVisible; // Check to see if we need to enter/exit the mobile state if (width < $.pfBreakpoints.tablet) { if (!navElement.hasClass('hidden')) { //Set the nav to being hidden navElement.addClass('hidden'); navElement.removeClass('collapsed'); //Set the body class to the correct state bodyContentElement.removeClass('collapsed-nav'); bodyContentElement.addClass('hidden-nav'); // Reset the collapsed states updateSecondaryCollapsedState(false); updateTertiaryCollapsedState(false); explicitCollapse = false; } } else if (navElement.hasClass('hidden')) { // Always remove the hidden & peek class navElement.removeClass('hidden show-mobile-nav'); // Set the body class back to the default bodyContentElement.removeClass('hidden-nav'); } // Check to see if we need to enter/exit the sub desktop state if (width < $.pfBreakpoints.desktop) { if (!subDesktop) { // Collapse the navigation bars when entering sub desktop mode navElement.addClass('collapsed'); bodyContentElement.addClass('collapsed-nav'); } if (width >= $.pfBreakpoints.tablet) { hideSecondaryMenu(); } subDesktop = true; } else { makeSecondaryVisible = subDesktop && (navElement.find('.secondary-nav-item-pf.active').length > 0); subDesktop = false; if (makeSecondaryVisible) { showSecondaryMenu(); } } if (explicitCollapse) { navElement.addClass('collapsed'); bodyContentElement.addClass('collapsed-nav'); } else { navElement.removeClass('collapsed'); bodyContentElement.removeClass('collapsed-nav'); } }, collapseMenu = function () { //Make sure this is expanded navElement.addClass('collapsed'); //Set the body class to the correct state bodyContentElement.addClass('collapsed-nav'); if (subDesktop) { hideSecondaryMenu(); } explicitCollapse = true; }, enableTransitions = function () { // enable transitions only when toggleNavBarButton is clicked or window is resized $('html').addClass('transitions'); }, expandMenu = function () { //Make sure this is expanded navElement.removeClass('collapsed'); //Set the body class to the correct state bodyContentElement.removeClass('collapsed-nav'); explicitCollapse = false; // Dispatch a resize event when showing the expanding then menu to // allow content to adjust to the menu sizing if (!subDesktop) { forceResize(100); } }, bindMenuBehavior = function () { toggleNavBarButton.on('click', function (e) { enableTransitions(); if (inMobileState()) { // Toggle the mobile nav if (navElement.hasClass('show-mobile-nav')) { navElement.removeClass('show-mobile-nav'); } else { // Always start at the primary menu updateMobileMenu(); navElement.addClass('show-mobile-nav'); } } else if (navElement.hasClass('collapsed')) { window.localStorage.setItem('patternfly-navigation-primary', 'expanded'); expandMenu(); } else { window.localStorage.setItem('patternfly-navigation-primary', 'collapsed'); collapseMenu(); } }); }, forceHideSecondaryMenu = function () { navElement.addClass('force-hide-secondary-nav-pf'); setTimeout(function () { navElement.removeClass('force-hide-secondary-nav-pf'); }, 500); }, bindMenuItemsBehavior = function (handleSelection) { $(document).find('.nav-pf-vertical > .list-group > .list-group-item').each(function (index, primaryItem) { var $primaryItem = $(primaryItem); // Set main nav active item on click or show secondary nav if it has a secondary nav bar and we are in the mobile state $primaryItem.on('click.pf.secondarynav.data-api', function (event) { var $this = $(this), $secondaryItem, tertiaryItem; if (!$this.hasClass('secondary-nav-item-pf')) { hideSecondaryMenu(); if (inMobileState()) { updateMobileMenu(); navElement.removeClass('show-mobile-nav'); } if (handleSelection) { setPrimaryActiveItem($this); // Don't process the click on the item event.stopImmediatePropagation(); } } else if (inMobileState()) { updateMobileMenu($this); } else if (handleSelection) { $secondaryItem = $($primaryItem.find('.nav-pf-secondary-nav > .list-group > .list-group-item')[0]); if ($secondaryItem.hasClass('tertiary-nav-item-pf')) { tertiaryItem = $secondaryItem.find('.nav-pf-tertiary-nav > .list-group > .list-group-item')[0]; setTertiaryActiveItem($(tertiaryItem), $secondaryItem, $primaryItem); } else { setSecondaryActiveItem($secondaryItem, $this); } event.stopImmediatePropagation(); } }); $primaryItem.find('.nav-pf-secondary-nav > .list-group > .list-group-item').each(function (index, secondaryItem) { var $secondaryItem = $(secondaryItem); // Set secondary nav active item on click or show tertiary nav if it has a tertiary nav bar and we are in the mobile state $secondaryItem.on('click.pf.secondarynav.data-api', function (event) { var $this = $(this), tertiaryItem; if (!$this.hasClass('tertiary-nav-item-pf')) { if (inMobileState()) { updateMobileMenu(); navElement.removeClass('show-mobile-nav'); } updateSecondaryMenuDisplayAfterSelection(); if (handleSelection) { setSecondaryActiveItem($secondaryItem, $primaryItem); // Don't process the click on the item event.stopImmediatePropagation(); } } else if (inMobileState()) { updateMobileMenu($this, $primaryItem); event.stopImmediatePropagation(); } else if (handleSelection) { tertiaryItem = $secondaryItem.find('.nav-pf-tertiary-nav > .list-group > .list-group-item')[0]; setTertiaryActiveItem($(tertiaryItem), $secondaryItem, $primaryItem); event.stopImmediatePropagation(); } }); $secondaryItem.find('.nav-pf-tertiary-nav > .list-group > .list-group-item').each(function (index, tertiaryItem) { var $tertiaryItem = $(tertiaryItem); // Set tertiary nav active item on click $tertiaryItem.on('click.pf.secondarynav.data-api', function (event) { if (inMobileState()) { updateMobileMenu(); navElement.removeClass('show-mobile-nav'); } updateSecondaryMenuDisplayAfterSelection(); if (handleSelection) { setTertiaryActiveItem($tertiaryItem, $secondaryItem, $primaryItem); // Don't process the click on the item event.stopImmediatePropagation(); } }); }); }); }); $(document).find('.secondary-nav-item-pf').each(function (index, secondaryItem) { var $secondaryItem = $(secondaryItem); // Collapse the secondary nav bar when the toggle is clicked $secondaryItem.on('click.pf.secondarynav.data-api', '[data-toggle="collapse-secondary-nav"]', function (e) { var $this = $(this); if (inMobileState()) { updateMobileMenu(); e.stopImmediatePropagation(); } else { if ($this.hasClass('collapsed')) { window.localStorage.setItem('patternfly-navigation-secondary', 'expanded'); window.localStorage.setItem('patternfly-navigation-tertiary', 'expanded'); updateSecondaryCollapsedState(false, $this); forceHideSecondaryMenu(); } else { window.localStorage.setItem('patternfly-navigation-secondary', 'collapsed'); updateSecondaryCollapsedState(true, $this); } } navElement.removeClass('hover-secondary-nav-pf'); if (handleSelection) { // Don't process the click on the parent item e.stopImmediatePropagation(); } }); $secondaryItem.find('.tertiary-nav-item-pf').each(function (index, primaryItem) { var $primaryItem = $(primaryItem); // Collapse the tertiary nav bar when the toggle is clicked $primaryItem.on('click.pf.tertiarynav.data-api', '[data-toggle="collapse-tertiary-nav"]', function (e) { var $this = $(this); if (inMobileState()) { updateMobileMenu($secondaryItem); e.stopImmediatePropagation(); } else { if ($this.hasClass('collapsed')) { window.localStorage.setItem('patternfly-navigation-secondary', 'expanded'); window.localStorage.setItem('patternfly-navigation-tertiary', 'expanded'); updateTertiaryCollapsedState(false, $this); forceHideSecondaryMenu(); } else { window.localStorage.setItem('patternfly-navigation-tertiary', 'collapsed'); updateTertiaryCollapsedState(true, $this); } } navElement.removeClass('hover-secondary-nav-pf'); navElement.removeClass('hover-tertiary-nav-pf'); if (handleSelection) { // Don't process the click on the parent item e.stopImmediatePropagation(); } }); }); }); // Show secondary nav bar on hover of secondary nav items $(document).on('mouseenter.pf.tertiarynav.data-api', '.secondary-nav-item-pf', function (e) { var $this = $(this); if (!inMobileState()) { if ($this[0].navUnHoverTimeout !== undefined) { clearTimeout($this[0].navUnHoverTimeout); $this[0].navUnHoverTimeout = undefined; } else if ($this[0].navHoverTimeout === undefined) { $this[0].navHoverTimeout = setTimeout(function () { navElement.addClass('hover-secondary-nav-pf'); $this.addClass('is-hover'); $this[0].navHoverTimeout = undefined; }, hoverDelay); } } }); $(document).on('mouseleave.pf.tertiarynav.data-api', '.secondary-nav-item-pf', function (e) { var $this = $(this); if ($this[0].navHoverTimeout !== undefined) { clearTimeout($this[0].navHoverTimeout); $this[0].navHoverTimeout = undefined; } else if ($this[0].navUnHoverTimeout === undefined) { $this[0].navUnHoverTimeout = setTimeout(function () { if (navElement.find('.secondary-nav-item-pf.is-hover').length <= 1) { navElement.removeClass('hover-secondary-nav-pf'); } $this.removeClass('is-hover'); $this[0].navUnHoverTimeout = undefined; }, hideDelay); } }); // Show tertiary nav bar on hover of secondary nav items $(document).on('mouseover.pf.tertiarynav.data-api', '.tertiary-nav-item-pf', function (e) { var $this = $(this); if (!inMobileState()) { if ($this[0].navUnHoverTimeout !== undefined) { clearTimeout($this[0].navUnHoverTimeout); $this[0].navUnHoverTimeout = undefined; } else if ($this[0].navHoverTimeout === undefined) { $this[0].navHoverTimeout = setTimeout(function () { navElement.addClass('hover-tertiary-nav-pf'); $this.addClass('is-hover'); $this[0].navHoverTimeout = undefined; }, hoverDelay); } } }); $(document).on('mouseout.pf.tertiarynav.data-api', '.tertiary-nav-item-pf', function (e) { var $this = $(this); if ($this[0].navHoverTimeout !== undefined) { clearTimeout($this[0].navHoverTimeout); $this[0].navHoverTimeout = undefined; } else if ($this[0].navUnHoverTimeout === undefined) { $this[0].navUnHoverTimeout = setTimeout(function () { if (navElement.find('.tertiary-nav-item-pf.is-hover').length <= 1) { navElement.removeClass('hover-tertiary-nav-pf'); } $this.removeClass('is-hover'); $this[0].navUnHoverTimeout = undefined; }, hideDelay); } }); }, loadFromLocalStorage = function () { if (inMobileState()) { return; } if (window.localStorage.getItem('patternfly-navigation-primary') === 'collapsed') { collapseMenu(); } if ($('.nav-pf-vertical.nav-pf-vertical-collapsible-menus').length > 0) { if (window.localStorage.getItem('patternfly-navigation-secondary') === 'collapsed') { updateSecondaryCollapsedState(true, $('.secondary-nav-item-pf.active [data-toggle=collapse-secondary-nav]')); } if (window.localStorage.getItem('patternfly-navigation-tertiary') === 'collapsed') { updateTertiaryCollapsedState(true, $('.tertiary-nav-item-pf.active [data-toggle=collapse-tertiary-nav]')); } } }, setTooltips = function () { var tooltipOptions = { container: 'body', placement: 'bottom', delay: { 'show': '500', 'hide': '200' }, template: '' }; $('.nav-pf-vertical [data-toggle="tooltip"]').tooltip(tooltipOptions); $('.nav-pf-vertical').on("show.bs.tooltip", function (e) { return $(this).hasClass("collapsed"); }); }, init = function (handleItemSelections) { // Hide the nav menus during initialization navElement.addClass('hide-nav-pf'); bodyContentElement.addClass('hide-nav-pf'); //Set correct state on load checkNavState(); // Bind Top level hamburger menu with menu behavior; bindMenuBehavior(); // Bind menu items bindMenuItemsBehavior(handleItemSelections); //Set tooltips setTooltips(); loadFromLocalStorage(); // Show the nav menus navElement.removeClass('hide-nav-pf'); bodyContentElement.removeClass('hide-nav-pf'); forceResize(250); }; //Listen for the window resize event and collapse/hide as needed $(window).on('resize', function () { checkNavState(); enableTransitions(); }); init(handleItemSelections); }; }(jQuery));




© 2015 - 2024 Weber Informatics LLC | Privacy Policy