jQuery.extend( jQuery.fn.dataTableExt.oSort, { /** * European dates dd.mm(.yyyy) or dd/mm(/yyyy), will be detected automatically */ 'date-eu-pre': function ( date ) { var year = '', // year is optional month, day, character = '/'; if ( date.indexOf('.') > 0 ) { character = '.'; // if found, use . as the separator. } else if ( date.indexOf('-') > 0 ) { character = '-'; // if found, use - as the separator, otherwise use / } date = date.replace( ' ', '' ).split( character ); if ( date[2] ) { year = date[2]; } month = date[1]; if ( 1 === month.length ) { month = '0' + month; } day = date[0]; if ( 1 === day.length ) { day = '0' + day; } return ( year + month + day ) * 1; }, 'date-eu-asc': function ( a, b ) { return a - b; }, 'date-eu-desc': function ( a, b ) { return b - a; }, /** * Formatted numbers, currency and percentage values, will be detected automatically */ 'formatted-num-pre': function ( a ) { a = ( '-' === a ) ? 0 : a.replace( /[^\d\-\.]/g, "" ); return parseFloat( a ) || 0; }, 'formatted-num-asc': function ( a, b ) { return a - b; }, 'formatted-num-desc': function ( a, b ) { return b - a; }, /** * Numeric Comma (numbers like 0,5), NOT detected automatically! */ 'numeric-comma-pre': function ( a ) { a = ( '-' === a ) ? 0 : a.replace( /[^\d\-\,]/g, "" ).replace( /,/, "." ); return parseFloat( a ); }, 'numeric-comma-asc': function ( a, b ) { return a - b; }, 'numeric-comma-desc': function ( a, b ) { return b - a; }, /** * Numbers and text mixed in a column, text is treated as infinity */ 'numbers+text-pre': function ( a ) { if ( ! isNaN( parseFloat( a ) ) && isFinite( a ) ) { return parseFloat(a); } else { return Number.MAX_VALUE; } }, 'numbers+text-asc': function ( a, b ) { return a - b; }, 'numbers+text-desc': function ( a, b ) { return b - a; }, /* Cell content like 1, 1a, 1b, 2, 3, 3a, 3b, 3c, etc. */ 'numbers+letter-pre': function ( a ) { const number = parseInt( a ); const letter = a.replace( number, '' ); if ( '' === letter ) { return number; } return number + ( letter.toLowerCase().charCodeAt( 0 ) - 96 ) / 100; }, 'numbers+letter-asc': function ( a, b ) { return a - b; }, 'numbers+letter-desc': function ( a, b ) { return b - a; }, } ); /** * Type detection for currency and percentage values */ jQuery.fn.dataTableExt.aTypes.unshift( function ( data ) { if ( typeof data !== 'string' ) { return null; } if ( data.match( /^(0[1-9]|[12][0-9]|30|31)[\.\/-](0[1-9]|1[012])[\.\/-](19|20|21)\d\d$/ ) ) { return 'date-eu'; } return null; } ); /** * Type detection for currency and percentage values */ (function(){ var re = new RegExp( "[^\$£€%0-9\.,' -]" ); // Init the regex just once for speed jQuery.fn.dataTableExt.aTypes.unshift( function ( data ) { if ( typeof data !== 'string' || re.test( data ) ) { return null; } return 'formatted-num'; } ); }()); /** * Type detection for formatted numbers */ jQuery.fn.dataTableExt.aTypes.unshift( function ( data ) { if ( typeof data !== 'string' ) { return null; } var deformatted = data.replace(/[^\d\-\.\/a-zA-Z]/g,''); // Replacement for the deprecated jQuery.isNumeric(). const isNumeric = ( obj ) => ( (obj - parseFloat( obj ) + 1) >= 0 ); if ( isNumeric( deformatted ) || '-' === deformatted ) { return 'formatted-num'; } return null; } ); ; !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(jQuery)}(function(m){"use strict";var a;m.support.htmlMenuitem="HTMLMenuItemElement"in window,m.support.htmlCommand="HTMLCommandElement"in window,m.support.eventSelectstart="onselectstart"in document.documentElement,m.ui&&m.widget||(m.cleanData=(a=m.cleanData,function(e){var t,n,o;for(o=0;null!=e[o];o++){n=e[o];try{(t=m._data(n,"events"))&&t.remove&&m(n).triggerHandler("remove")}catch(e){}}a(e)}));var c=null,d=!1,p=m(window),f=0,h={},x={},v={},g={selector:null,appendTo:null,trigger:"right",autoHide:!1,delay:200,reposition:!0,hideOnSecondTrigger:!1,selectableSubMenu:!1,classNames:{hover:"context-menu-hover",disabled:"context-menu-disabled",visible:"context-menu-visible",notSelectable:"context-menu-not-selectable",icon:"context-menu-icon",iconEdit:"context-menu-icon-edit",iconCut:"context-menu-icon-cut",iconCopy:"context-menu-icon-copy",iconPaste:"context-menu-icon-paste",iconDelete:"context-menu-icon-delete",iconAdd:"context-menu-icon-add",iconQuit:"context-menu-icon-quit",iconLoadingClass:"context-menu-icon-loading"},determinePosition:function(e){if(m.ui&&m.ui.position)e.css("display","block").position({my:"center top",at:"center bottom",of:this,offset:"0 5",collision:"fit"}).css("display","none");else{var t=this.offset();t.top+=this.outerHeight(),t.left+=this.outerWidth()/2-e.outerWidth()/2,e.css(t)}},position:function(e,t,n){var o;if(t||n){if("maintain"===t&&"maintain"===n)o=e.$menu.position();else{var a=e.$menu.offsetParent().offset();o={top:n-a.top,left:t-a.left}}var s=p.scrollTop()+p.height(),i=p.scrollLeft()+p.width(),c=e.$menu.outerHeight(),l=e.$menu.outerWidth();o.top+c>s&&(o.top-=c),o.top<0&&(o.top=0),o.left+l>i&&(o.left-=l),o.left<0&&(o.left=0),e.$menu.css(o)}else e.determinePosition.call(this,e.$menu)},positionSubmenu:function(e){if(void 0!==e)if(m.ui&&m.ui.position)e.css("display","block").position({my:"left top-5",at:"right top",of:this,collision:"flipfit fit"}).css("display","");else{var t={top:-9,left:this.outerWidth()-5};e.css(t)}},zIndex:1,animation:{duration:50,show:"slideDown",hide:"slideUp"},events:{show:m.noop,hide:m.noop,activated:m.noop},callback:null,items:{}},s={timer:null,pageX:null,pageY:null},b={abortevent:function(e){e.preventDefault(),e.stopImmediatePropagation()},contextmenu:function(e){var t=m(this);if("right"===e.data.trigger&&(e.preventDefault(),e.stopImmediatePropagation()),!("right"!==e.data.trigger&&"demand"!==e.data.trigger&&e.originalEvent||!(void 0===e.mouseButton||!e.data||"left"===e.data.trigger&&0===e.mouseButton||"right"===e.data.trigger&&2===e.mouseButton)||t.hasClass("context-menu-active")||t.hasClass("context-menu-disabled"))){if(c=t,e.data.build){var n=e.data.build(c,e);if(!1===n)return;if(e.data=m.extend(!0,{},g,e.data,n||{}),!e.data.items||m.isEmptyObject(e.data.items))throw window.console&&(console.error||console.log).call(console,"No items specified to show in contextMenu"),new Error("No Items specified");e.data.$trigger=c,$.create(e.data)}$.show.call(t,e.data,e.pageX,e.pageY)}},click:function(e){e.preventDefault(),e.stopImmediatePropagation(),m(this).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))},mousedown:function(e){var t=m(this);c&&c.length&&!c.is(t)&&c.data("contextMenu").$menu.trigger("contextmenu:hide"),2===e.button&&(c=t.data("contextMenuActive",!0))},mouseup:function(e){var t=m(this);t.data("contextMenuActive")&&c&&c.length&&c.is(t)&&!t.hasClass("context-menu-disabled")&&(e.preventDefault(),e.stopImmediatePropagation(),(c=t).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))),t.removeData("contextMenuActive")},mouseenter:function(e){var t=m(this),n=m(e.relatedTarget),o=m(document);n.is(".context-menu-list")||n.closest(".context-menu-list").length||c&&c.length||(s.pageX=e.pageX,s.pageY=e.pageY,s.data=e.data,o.on("mousemove.contextMenuShow",b.mousemove),s.timer=setTimeout(function(){s.timer=null,o.off("mousemove.contextMenuShow"),(c=t).trigger(m.Event("contextmenu",{data:s.data,pageX:s.pageX,pageY:s.pageY}))},e.data.delay))},mousemove:function(e){s.pageX=e.pageX,s.pageY=e.pageY},mouseleave:function(e){var t=m(e.relatedTarget);if(!t.is(".context-menu-list")&&!t.closest(".context-menu-list").length){try{clearTimeout(s.timer)}catch(e){}s.timer=null}},layerClick:function(a){var s,i,c=m(this).data("contextMenuRoot"),l=a.button,r=a.pageX,u=a.pageY,d=void 0===r;a.preventDefault(),setTimeout(function(){if(d)null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide");else{var e,t="left"===c.trigger&&0===l||"right"===c.trigger&&2===l;if(document.elementFromPoint&&c.$layer){if(c.$layer.hide(),(s=document.elementFromPoint(r-p.scrollLeft(),u-p.scrollTop())).isContentEditable){var n=document.createRange(),o=window.getSelection();n.selectNode(s),n.collapse(!0),o.removeAllRanges(),o.addRange(n)}m(s).trigger(a),c.$layer.show()}if(c.hideOnSecondTrigger&&t&&null!==c.$menu&&void 0!==c.$menu)c.$menu.trigger("contextmenu:hide");else{if(c.reposition&&t)if(document.elementFromPoint){if(c.$trigger.is(s))return void c.position.call(c.$trigger,c,r,u)}else if(i=c.$trigger.offset(),e=m(window),i.top+=e.scrollTop(),i.top<=a.pageY&&(i.left+=e.scrollLeft(),i.left<=a.pageX&&(i.bottom=i.top+c.$trigger.outerHeight(),i.bottom>=a.pageY&&(i.right=i.left+c.$trigger.outerWidth(),i.right>=a.pageX))))return void c.position.call(c.$trigger,c,r,u);s&&t&&c.$trigger.one("contextmenu:hidden",function(){m(s).contextMenu({x:r,y:u,button:l})}),null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide")}}},50)},keyStop:function(e,t){t.isInput||e.preventDefault(),e.stopPropagation()},key:function(e){var t={};c&&(t=c.data("contextMenu")||{}),void 0===t.zIndex&&(t.zIndex=0);var n=0,o=function(e){""!==e.style.zIndex?n=e.style.zIndex:null!==e.offsetParent&&void 0!==e.offsetParent?o(e.offsetParent):null!==e.parentElement&&void 0!==e.parentElement&&o(e.parentElement)};if(o(e.target),!(t.$menu&&parseInt(n,10)>parseInt(t.$menu.css("zIndex"),10))){switch(e.keyCode){case 9:case 38:if(b.keyStop(e,t),t.isInput){if(9===e.keyCode&&e.shiftKey)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));if(38===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault()}else if(9!==e.keyCode||e.shiftKey)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));break;case 40:if(b.keyStop(e,t),!t.isInput)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(9===e.keyCode)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(40===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault();break;case 37:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;if(!t.$selected.parent().hasClass("context-menu-root")){var a=t.$selected.parent().parent();return t.$selected.trigger("contextmenu:blur"),void(t.$selected=a)}break;case 39:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;var s=t.$selected.data("contextMenu")||{};if(s.$menu&&t.$selected.hasClass("context-menu-submenu"))return t.$selected=null,s.$selected=null,void s.$menu.trigger("nextcommand");break;case 35:case 36:return t.$selected&&t.$selected.find("input, textarea, select").length?void 0:((t.$selected&&t.$selected.parent()||t.$menu).children(":not(."+t.classNames.disabled+", ."+t.classNames.notSelectable+")")[36===e.keyCode?"first":"last"]().trigger("contextmenu:focus"),void e.preventDefault());case 13:if(b.keyStop(e,t),t.isInput){if(t.$selected&&!t.$selected.is("textarea, select"))return void e.preventDefault();break}return void(void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger("mouseup"));case 32:case 33:case 34:return void b.keyStop(e,t);case 27:return b.keyStop(e,t),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("contextmenu:hide"));default:var i=String.fromCharCode(e.keyCode).toUpperCase();if(t.accesskeys&&t.accesskeys[i])return void t.accesskeys[i].$node.trigger(t.accesskeys[i].$menu?"contextmenu:focus":"mouseup")}e.stopPropagation(),void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger(e)}},prevItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.prev().length?t.$selected.prev():a.last(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.prev().length?s.prev():a.last()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},nextItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.next().length?t.$selected.next():a.first(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.next().length?s.next():a.first()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},focusInput:function(){var e=m(this).closest(".context-menu-item"),t=e.data(),n=t.contextMenu,o=t.contextMenuRoot;o.$selected=n.$selected=e,o.isInput=n.isInput=!0},blurInput:function(){var e=m(this).closest(".context-menu-item").data(),t=e.contextMenu;e.contextMenuRoot.isInput=t.isInput=!1},menuMouseenter:function(){m(this).data().contextMenuRoot.hovering=!0},menuMouseleave:function(e){var t=m(this).data().contextMenuRoot;t.$layer&&t.$layer.is(e.relatedTarget)&&(t.hovering=!1)},itemMouseenter:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;a.hovering=!0,e&&a.$layer&&a.$layer.is(e.relatedTarget)&&(e.preventDefault(),e.stopImmediatePropagation()),(o.$menu?o:a).$menu.children("."+a.classNames.hover).trigger("contextmenu:blur").children(".hover").trigger("contextmenu:blur"),t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)?o.$selected=null:t.trigger("contextmenu:focus")},itemMouseleave:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;if(a!==o&&a.$layer&&a.$layer.is(e.relatedTarget))return void 0!==a.$selected&&null!==a.$selected&&a.$selected.trigger("contextmenu:blur"),e.preventDefault(),e.stopImmediatePropagation(),void(a.$selected=o.$selected=o.$node);o&&o.$menu&&o.$menu.hasClass("context-menu-visible")||t.trigger("contextmenu:blur")},itemClick:function(e){var t,n=m(this),o=n.data(),a=o.contextMenu,s=o.contextMenuRoot,i=o.contextMenuKey;if(!(!a.items[i]||n.is("."+s.classNames.disabled+", .context-menu-separator, ."+s.classNames.notSelectable)||n.is(".context-menu-submenu")&&!1===s.selectableSubMenu)){if(e.preventDefault(),e.stopImmediatePropagation(),m.isFunction(a.callbacks[i])&&Object.prototype.hasOwnProperty.call(a.callbacks,i))t=a.callbacks[i];else{if(!m.isFunction(s.callback))return;t=s.callback}!1!==t.call(s.$trigger,i,s,e)?s.$menu.trigger("contextmenu:hide"):s.$menu.parent().length&&$.update.call(s.$trigger,s)}},inputClick:function(e){e.stopImmediatePropagation()},hideMenu:function(e,t){var n=m(this).data("contextMenuRoot");$.hide.call(n.$trigger,n,t&&t.force)},focusItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)||(t.addClass([a.classNames.hover,a.classNames.visible].join(" ")).parent().find(".context-menu-item").not(t).removeClass(a.classNames.visible).filter("."+a.classNames.hover).trigger("contextmenu:blur"),o.$selected=a.$selected=t,o&&o.$node&&o.$node.hasClass("context-menu-submenu")&&o.$node.addClass(a.classNames.hover),o.$node&&a.positionSubmenu.call(o.$node,o.$menu))},blurItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;o.autoHide&&t.removeClass(a.classNames.visible),t.removeClass(a.classNames.hover),o.$selected=null}},$={show:function(n,e,t){var o=m(this),a={};if(m("#context-menu-layer").trigger("mousedown"),n.$trigger=o,!1!==n.events.show.call(o,n))if(!1!==$.update.call(o,n)){if(n.position.call(o,n,e,t),n.zIndex){var s=n.zIndex;"function"==typeof n.zIndex&&(s=n.zIndex.call(o,n)),a.zIndex=function(e){for(var t=0,n=e;t=Math.max(t,parseInt(n.css("z-index"),10)||0),(n=n.parent())&&n.length&&!(-1<"html body".indexOf(n.prop("nodeName").toLowerCase())););return t}(o)+s}$.layer.call(n.$menu,n,a.zIndex),n.$menu.find("ul").css("zIndex",a.zIndex+1),n.$menu.css(a)[n.animation.show](n.animation.duration,function(){o.trigger("contextmenu:visible"),$.activated(n),n.events.activated(n)}),o.data("contextMenu",n).addClass("context-menu-active"),m(document).off("keydown.contextMenu").on("keydown.contextMenu",b.key),n.autoHide&&m(document).on("mousemove.contextMenuAutoHide",function(e){var t=o.offset();t.right=t.left+o.outerWidth(),t.bottom=t.top+o.outerHeight(),!n.$layer||n.hovering||e.pageX>=t.left&&e.pageX<=t.right&&e.pageY>=t.top&&e.pageY<=t.bottom||setTimeout(function(){n.hovering||null===n.$menu||void 0===n.$menu||n.$menu.trigger("contextmenu:hide")},50)})}else c=null;else c=null},hide:function(t,e){var n=m(this);if(t||(t=n.data("contextMenu")||{}),e||!t.events||!1!==t.events.hide.call(n,t)){if(n.removeData("contextMenu").removeClass("context-menu-active"),t.$layer){setTimeout((o=t.$layer,function(){o.remove()}),10);try{delete t.$layer}catch(e){t.$layer=null}}var o;c=null,t.$menu.find("."+t.classNames.hover).trigger("contextmenu:blur"),t.$selected=null,t.$menu.find("."+t.classNames.visible).removeClass(t.classNames.visible),m(document).off(".contextMenuAutoHide").off("keydown.contextMenu"),t.$menu&&t.$menu[t.animation.hide](t.animation.duration,function(){t.build&&(t.$menu.remove(),m.each(t,function(e){switch(e){case"ns":case"selector":case"build":case"trigger":return!0;default:t[e]=void 0;try{delete t[e]}catch(e){}return!0}})),setTimeout(function(){n.trigger("contextmenu:hidden")},10)})}},create:function(r,u){function d(e){var t=m("");if(e._accesskey)e._beforeAccesskey&&t.append(document.createTextNode(e._beforeAccesskey)),m("").addClass("context-menu-accesskey").text(e._accesskey).appendTo(t),e._afterAccesskey&&t.append(document.createTextNode(e._afterAccesskey));else if(e.isHtmlName){if(void 0!==e.accesskey)throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");t.html(e.name)}else t.text(e.name);return t}void 0===u&&(u=r),r.$menu=m('').addClass(r.className||"").data({contextMenu:r,contextMenuRoot:u}),m.each(["callbacks","commands","inputs"],function(e,t){r[t]={},u[t]||(u[t]={})}),u.accesskeys||(u.accesskeys={}),m.each(r.items,function(n,o){var e=m('
  • ').addClass(o.className||""),t=null,a=null;if(e.on("click",m.noop),"string"!=typeof o&&"cm_separator"!==o.type||(o={type:"cm_seperator"}),o.$node=e.data({contextMenu:r,contextMenuRoot:u,contextMenuKey:n}),void 0!==o.accesskey)for(var s,i=function(e){for(var t,n=e.split(/\s+/),o=[],a=0;t=n[a];a++)t=t.charAt(0).toUpperCase(),o.push(t);return o}(o.accesskey),c=0;s=i[c];c++)if(!u.accesskeys[s]){var l=(u.accesskeys[s]=o).name.match(new RegExp("^(.*?)("+s+")(.*)$","i"));l&&(o._beforeAccesskey=l[1],o._accesskey=l[2],o._afterAccesskey=l[3]);break}if(o.type&&v[o.type])v[o.type].call(e,o,r,u),m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)});else{switch("cm_seperator"===o.type?e.addClass("context-menu-separator "+u.classNames.notSelectable):"html"===o.type?e.addClass("context-menu-html "+u.classNames.notSelectable):"sub"===o.type||(o.type?(t=m("").appendTo(e),d(o).appendTo(t),e.addClass("context-menu-input"),r.hasTypes=!0,m.each([r,u],function(e,t){t.commands[n]=o,t.inputs[n]=o})):o.items&&(o.type="sub")),o.type){case"cm_seperator":break;case"text":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t);break;case"textarea":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t),o.height&&a.height(o.height);break;case"checkbox":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"radio":a=m('').attr("name","context-menu-input-"+o.radio).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"select":a=m('').attr("name","context-menu-input-"+n).appendTo(t),o.options&&(m.each(o.options,function(e,t){m("").val(e).text(t).appendTo(a)}),a.val(o.selected));break;case"sub":d(o).appendTo(e),o.appendTo=o.$node,e.data("contextMenu",o).addClass("context-menu-submenu"),o.callback=null,"function"==typeof o.items.then?$.processPromises(o,u,o.items):$.create(o,u);break;case"html":m(o.html).appendTo(e);break;default:m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)}),d(o).appendTo(e)}o.type&&"sub"!==o.type&&"html"!==o.type&&"cm_seperator"!==o.type&&(a.on("focus",b.focusInput).on("blur",b.blurInput),o.events&&a.on(o.events,r)),o.icon&&(m.isFunction(o.icon)?o._icon=o.icon.call(this,this,e,n,o):"string"==typeof o.icon&&"fa-"===o.icon.substring(0,3)?o._icon=u.classNames.icon+" "+u.classNames.icon+"--fa fa "+o.icon:o._icon=u.classNames.icon+" "+u.classNames.icon+"-"+o.icon,e.addClass(o._icon))}o.$input=a,o.$label=t,e.appendTo(r.$menu),!r.hasTypes&&m.support.eventSelectstart&&e.on("selectstart.disableTextSelect",b.abortevent)}),r.$node||r.$menu.css("display","none").addClass("context-menu-root"),r.$menu.appendTo(r.appendTo||document.body)},resize:function(e,t){var n;e.css({position:"absolute",display:"block"}),e.data("width",(n=e.get(0)).getBoundingClientRect?Math.ceil(n.getBoundingClientRect().width):e.outerWidth()+1),e.css({position:"static",minWidth:"0px",maxWidth:"100000px"}),e.find("> li > ul").each(function(){$.resize(m(this),!0)}),t||e.find("ul").addBack().css({position:"",display:"",minWidth:"",maxWidth:""}).outerWidth(function(){return m(this).data("width")})},update:function(s,i){var c=this;void 0===i&&(i=s,$.resize(s.$menu));var l=!1;return s.$menu.children().each(function(){var e,t=m(this),n=t.data("contextMenuKey"),o=s.items[n],a=m.isFunction(o.disabled)&&o.disabled.call(c,n,i)||!0===o.disabled;if((e=m.isFunction(o.visible)?o.visible.call(c,n,i):void 0===o.visible||!0===o.visible)&&(l=!0),t[e?"show":"hide"](),t[a?"addClass":"removeClass"](i.classNames.disabled),m.isFunction(o.icon)&&(t.removeClass(o._icon),o._icon=o.icon.call(this,c,t,n,o),t.addClass(o._icon)),o.type)switch(t.find("input, select, textarea").prop("disabled",a),o.type){case"text":case"textarea":o.$input.val(o.value||"");break;case"checkbox":case"radio":o.$input.val(o.value||"").prop("checked",!!o.selected);break;case"select":o.$input.val((0===o.selected?"0":o.selected)||"")}o.$menu&&($.update.call(c,o,i)&&(l=!0))}),l},layer:function(e,t){var n=e.$layer=m('
    ').css({height:p.height(),width:p.width(),display:"block",position:"fixed","z-index":t,top:0,left:0,opacity:0,filter:"alpha(opacity=0)","background-color":"#000"}).data("contextMenuRoot",e).insertBefore(this).on("contextmenu",b.abortevent).on("mousedown",b.layerClick);return void 0===document.body.style.maxWidth&&n.css({position:"absolute",height:m(document).height()}),n},processPromises:function(e,t,n){function o(e,t,n){void 0===n?(n={error:{name:"No items and no error item",icon:"context-menu-icon context-menu-icon-quit"}},window.console&&(console.error||console.log).call(console,'When you reject a promise, provide an "items" object, equal to normal sub-menu items')):"string"==typeof n&&(n={error:{name:n}}),a(e,t,n)}function a(e,t,n){void 0!==t.$menu&&t.$menu.is(":visible")&&(e.$node.removeClass(t.classNames.iconLoadingClass),e.items=n,$.create(e,t,!0),$.update(e,t),t.positionSubmenu.call(e.$node,e.$menu))}e.$node.addClass(t.classNames.iconLoadingClass),n.then(function(e,t,n){void 0===n&&o(void 0),a(e,t,n)}.bind(this,e,t),o.bind(this,e,t))},activated:function(e){var t=e.$menu,n=t.offset(),o=m(window).height(),a=m(window).scrollTop(),s=t.height();oa+o)&&t.css({top:"0px"})}};function l(e){return e.id&&m('label[for="'+e.id+'"]').val()||e.name}m.fn.contextMenu=function(e){var t=this,n=e;if(0= 0) { return url.replace(pattern, '$1' + paramValue + '$2'); } return url + (url.indexOf('?') > 0 ? '&' : '?') + paramName + '=' + paramValue; }); vendor[appName].getAllTableInstances = (function() { return dataTableInstances; }); vendor[appName].removeAllTableInstances = (function() { dataTableInstances = []; }); vendor[appName].setTableInstance = (function(instance) { dataTableInstances.push(instance); }); vendor[appName].getTableInstanceById = (function(id) { var allTables = this.getAllTableInstances(); for (var i = 0; i < allTables.length; i++) { if (allTables[i].table_id == id) { return allTables[i]; } } return false; }); vendor[appName].getTableInstanceByViewId = (function(viewId) { var allTables = this.getAllTableInstances(); for (var i = 0; i < allTables.length; i++) { if (allTables[i].table_view_id == viewId) { return allTables[i]; } } return false; }); vendor[appName].removeTableInstanceByViewId = (function(viewId) { var allTables = this.getAllTableInstances(); for (var i = 0; i < allTables.length; i++) { if (allTables[i].table_view_id == viewId) { allTables.splice(i, 1); return true; } } return false; }); vendor[appName].getAllRuleJSInstances = (function() { return ruleJSInstances; }); vendor[appName].setRuleJSInstance = (function(table) { var rootElem = table.closest('.supsystic-tables-wrap'), viewId = table.data('view-id'); ruleJSInstances[viewId] = new ruleJS(rootElem.attr('id')); ruleJSInstances[viewId].instanceTable = table; return ruleJSInstances[viewId]; }); vendor[appName].getRuleJSInstance = (function(table) { var allRuleJS = this.getAllRuleJSInstances(), viewId = table.data('view-id'); if (!allRuleJS[viewId]) { this.setRuleJSInstance(table); } return allRuleJS[viewId]; }); vendor[appName].request = (function(route, data) { if (!jQuery.isPlainObject(route) || !('module' in route) || !('action' in route)) { throw new Error('Request route is not specified.'); } if (!jQuery.isPlainObject(data)) { data = {}; } if ('action' in data) { throw new Error('Reserved field "action" used.'); } data.action = 'supsystic-tables'; var url = window.ajaxurl ? window.ajaxurl : ajax_obj.ajaxurl, deferred = jQuery.Deferred(); jQuery.post(url, jQuery.extend({}, { route: route }, data)) .done(function(response, textStatus, jqXHR) { if (response.success) { deferred.resolve(response, textStatus, jqXHR); } else { if (data._maxIter) { retryAjax(deferred, url, route, data, 1, data._maxIter); } else { var message = typeof response.message !== 'undefined' ? response.message : 'There are errors during the request.'; deferred.reject(message, textStatus, jqXHR); } } }).fail(function(jqXHR, textStatus, errorThrown) { if (data._maxIter) { retryAjax(deferred, url, route, data, 1, data._maxIter); } else { deferred.reject(errorThrown, textStatus, jqXHR); } }); function retryAjax(def, url, route, data, curIter, maxIter) { jQuery.post(url, jQuery.extend({}, { route: route }, data)) .done(function(response, textStatus, jqXHR) { if (response.success) { def.resolve(response, textStatus, jqXHR); } else { var message = typeof response.message !== 'undefined' ? response.message : 'There are errors during the request.'; retryErrorHandler(def, url, route, data, curIter, maxIter, message, textStatus, jqXHR); } }).fail(function(jqXHR, textStatus, errorThrown) { retryErrorHandler(def, url, route, data, curIter, maxIter, errorThrown, textStatus, jqXHR); }); } function retryErrorHandler(def, url, route, data, curIter, maxIter, errorThrown, textStatus, jqXHR) { curIter++; if (curIter < maxIter) { retryAjax(def, url, route, data, curIter, maxIter); } else { def.reject(errorThrown, textStatus, jqXHR); } } return deferred.promise(); }); vendor[appName].setTableMobileWidth = (function(isMobile) { jQuery('div .supsystic-tables-wrap').each(function() { isMobile = (typeof(isMobile) == 'undefined' ? true : isMobile); var ssDiv = jQuery(this), widthAttr = ssDiv.data('table-width-' + (isMobile ? 'mobile' : 'fixed')); if (typeof(widthAttr) != 'undefined') { ssDiv.css('display', (widthAttr == 'auto' ? 'inline-block' : '')).css('width', widthAttr); } }); }); vendor[appName].initTablesOnPage = (function(id) { this._initTablesOnPage(id); }); vendor[appName]._initTablesOnPage = (function(id) { var tables = jQuery(typeof id != 'undefined' ? '#supsystic-table-' + id + ':not(.dataTable)' : '.supsystic-table'); if (tables.length == 0) return; if (typeof this._initTablesOnPageWoo === 'function') this._initTablesOnPageWoo(id); var self = this, firstTableId = '', firstTableViewId = '', firstTable = '', firstTableWrapper = '', firstTableFirstRow = ''; if (jQuery(window).width() <= 991) { self.setTableMobileWidth(); } tables.each(function() { self.initializeTable(this, self.showTable, function(table) { // This is used when table is hidden in tabs and can't calculate itself width to adjust on small screens if (table.is(':visible')) { // Fix bug in FF and IE which not supporting max-width 100% for images in td self._calculateImages(table); } else { table.data('isVisible', setInterval(function() { if (table.is(':visible')) { clearInterval(table.data('isVisible')); self._calculateImages(table); } }, 250)); } // Align all tables on page by the columns width depending on the columns width of first table on page if (table.data('align-by-first-table')) { firstTableId = firstTableId || jQuery('.supsystic-table:first').data('id'); firstTable = firstTable || jQuery('#supsystic-table-' + firstTableId); firstTableViewId = firstTable.data('view-id'); firstTableWrapper = firstTableWrapper || firstTable.parents('#supsystic-table-' + firstTableViewId); firstTableFirstRow = firstTable.data('head') ? firstTable.find('thead tr:first-child th') : firstTable.find('tbody tr:first-child td'); if (firstTableViewId != table.data('view-id')) { var currentTableWrapper = table.parents('#supsystic-table-' + table.data('view-id')); currentTableWrapper.css({ width: firstTableWrapper.get(0).style.width }); table.css({ width: firstTable.get(0).style.width }); currentTableWrapper.find('.supsystic-table').each(function() { var curTable = jQuery(this), curTableFirstRow = curTable.data('head') ? curTable.find('thead tr:first-child th') : curTable.find('tbody tr:first-child td'); jQuery.each(curTableFirstRow, function(index, element) { if (firstTableFirstRow[index]) { jQuery(this).width(jQuery(firstTableFirstRow[index]).get(0).style.width); } }); }); } } //if row has merged cells no need place header there if (table.data('merged') && table.hasClass('ColWithMergeCellsAlign')) { var mergedData = table.data('merged'); jQuery.each(mergedData, function(index, value) { var rowNumWithMergeCell = value.row; var numForEq = Number(rowNumWithMergeCell) - 1; table.find('tbody tr:eq(' + numForEq + ')').closest('tr').addClass('haveMergedCell'); }); self.setCellAttributes(table.parents('.supsystic-tables-wrap:first').find('.DTFC_LeftWrapper, DTFC_RightWrapper, .dataTables_scrollHead, .dataTables_scrollFoot').find('th, td')); } if (typeof self.getTableInstanceById(table.data('id')).fnAdjustColumnSizing == 'function') { table.trigger('responsive-resize.dt'); setTimeout(function() { table.trigger('responsive-resize.dt'); self.getTableInstanceById(table.data('id')).fnAdjustColumnSizing(false); }, 500); } self.initShortcodesInTable(table); }); //self.initShortcodesInTable(jQuery(this)); }); }); vendor[appName].initShortcodesInTable = (function(table) { var tableViewId = table.data('view-id'); //google-maps-easy if (typeof(gmpAllMapsInfo) !== 'undefined' && gmpAllMapsInfo && gmpAllMapsInfo.length) { for (var i = 0; i < gmpAllMapsInfo.length; i++) { var mapData = gmpAllMapsInfo[i], map = jQuery('#' + mapData.view_html_id); if (map.length && map.closest('#supsystic-table-' + tableViewId).length) { var mapViewId = mapData.view_id; setTimeout(function(mapData, mapViewId) { g_gmpAllMaps = jQuery.grep(g_gmpAllMaps, function(value) { if (value.getViewId() == mapViewId) { if (mapData.heatmap && mapData.heatmap.coords) { var coord = [], oldCoord = mapData.heatmap.coords; for (var c = 0; c < oldCoord.length; c++) { var data = oldCoord[c]; coord.push(typeof data == 'object' ? data.join(',') : data); } mapData.heatmap.coords = coord; } if (value._mapParams.simple_slider_id) { jQuery('#' + value._mapParams.simple_slider_id).html(value._mapParams.original_slider_html); } } return value.getViewId() != mapViewId; }); gmpInitMapOnPage(mapData); }, 50, mapData, mapViewId); } } jQuery(document).trigger('gmpAmiVarInited'); } //ultimate-maps if (typeof(umsAllMapsInfo) !== 'undefined' && umsAllMapsInfo && umsAllMapsInfo.length) { for (var i = 0; i < umsAllMapsInfo.length; i++) { var mapData = umsAllMapsInfo[i], map = jQuery('#' + mapData.view_html_id); if (map.length && map.closest('#supsystic-table-' + tableViewId).length) { var mapViewId = mapData.view_id; setTimeout(function(mapData, mapViewId) { g_umsAllMaps = jQuery.grep(g_umsAllMaps, function(value) { if (value.getViewId() == mapViewId) { value._mapObj.remove(); } return value.getViewId() != mapViewId; }); umsInitMapOnPage(mapData); }, 600, mapData, mapViewId); } } jQuery(document).trigger('umsAmiVarInited'); } }); vendor[appName]._getOriginalImageSizes = (function(img) { var tempImage = new Image(), width, height; if ('naturalWidth' in tempImage && 'naturalHeight' in tempImage) { width = img.naturalWidth; height = img.naturalHeight; } else { tempImage.src = img.src; width = tempImage.width; height = tempImage.height; } return { width: width, height: height }; }); vendor[appName]._calculateImages = (function($table) { var self = this, $images = $table.find('img'); if ($images.length > 0 && /firefox|trident|msie/i.test(navigator.userAgent)) { $images.hide(); jQuery.each($images, function(index, el) { var $img = jQuery(this), originalSizes = self._getOriginalImageSizes(this); if ($img.closest('td, th').width() < originalSizes.width) { $img.css('width', '100%'); } }); $images.show(); } }); vendor[appName].createSpinner = (function(elem) { elem = typeof(elem) != 'undefined' ? elem : false; if (elem) { var icon = elem.attr('disabled', true).find('.fa'); if (icon) { icon.data('icon', icon.attr('class')); icon.attr('class', 'fa fa-spinner fa-spin'); } } else { return jQuery('', { class: 'fa fa-spinner fa-spin' }); } }); vendor[appName].deleteSpinner = (function(elem) { var icon = elem.attr('disabled', false).find('.fa'); if (icon) { icon.attr('class', icon.data('icon')); icon.data('icon', ''); } }); vendor[appName].initializeTable = (function(table, callback, finalCallback, reinit, addInstance) { if (typeof jQuery.fn.dataTable.moment == "undefined" && typeof moment !== "undefined") { jQuery.fn.dataTable.moment = function ( format, locale, reverseEmpties ) { var types = jQuery.fn.dataTable.ext.type; // Add type detection types.detect.unshift( function ( d ) { if ( d ) { // Strip HTML tags and newline characters if possible if ( d.replace ) { d = d.replace(/(<.*?>)|(\r?\n|\r)/g, ''); } // Strip out surrounding white space d = jQuery.trim( d ); } // Null and empty values are acceptable if ( d === '' || d === null ) { return 'moment-'+format; } return moment( d, format, locale, true ).isValid() ? 'moment-'+format : null; } ); // Add sorting method - use an integer for the sorting types.order[ 'moment-'+format+'-pre' ] = function ( d ) { if ( d ) { // Strip HTML tags and newline characters if possible if ( d.replace ) { d = d.replace(/(<.*?>)|(\r?\n|\r)/g, ''); } // Strip out surrounding white space d = jQuery.trim( d ); } return !moment(d, format, locale, true).isValid() ? (reverseEmpties ? -Infinity : Infinity) : parseInt( moment( d, format, locale, true ).format( 'x' ), 10 ); }; }; } if (typeof jQuery.fn.dataTable.ext.order.intl == "undefined" && typeof window.Intl !== "undefined") { jQuery.fn.dataTable.ext.order.intl = function ( locales, options ) { if ( window.Intl ) { var collator = new Intl.Collator( locales, options ); var types = jQuery.fn.dataTable.ext.type; delete types.order['string-pre']; types.order['string-asc'] = collator.compare; types.order['string-desc'] = function ( a, b ) { return collator.compare( a, b ) * -1; }; } }; } if (typeof naturalSort == "undefined") { function naturalSort (a, b, html) { var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?%?$|^0x[0-9a-f]+$|[0-9]+)/gi, sre = /(^[ ]*|[ ]*$)/g, dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, hre = /^0x[0-9a-f]+$/i, ore = /^0/, htmre = /(<([^>]+)>)/ig, // convert all to strings and trim() x = a.toString().replace(sre, '') || '', y = b.toString().replace(sre, '') || ''; // remove html from strings if desired if (!html) { x = x.replace(htmre, ''); y = y.replace(htmre, ''); } // chunk/tokenize var xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), // numeric, hex or date detection xD = parseInt(x.match(hre), 10) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null; // first try and sort Hex codes or Dates if (yD) { if ( xD < yD ) { return -1; } else if ( xD > yD ) { return 1; } } // natural sorting through split numeric strings and default strings for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { // find floats not starting with '0', string or 0 if not defined (Clint Priest) /*supsystic*/ //var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc], 10) || xN[cLoc] || 0; //var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc], 10) || yN[cLoc] || 0; var oFxNcL = parseFloat(xN[cLoc], 10) || xN[cLoc] || undefined; var oFyNcL = parseFloat(yN[cLoc], 10) || yN[cLoc] || undefined; /*****/ // handle numeric vs string comparison - number < string - (Kyle Adams) if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' else if (typeof oFxNcL !== typeof oFyNcL) { oFxNcL += ''; oFyNcL += ''; } if (oFxNcL < oFyNcL) { return -1; } if (oFxNcL > oFyNcL) { return 1; } } return 0; } } if (typeof jQuery.fn.dataTableExt.oApi.fnFakeRowspan == "undefined") { jQuery.fn.dataTableExt.oApi.fnFakeRowspan = function (oSettings) { if(oSettings) { var cells; jQuery.each(oSettings.aoData, function(index, rowData) { vendor[appName].setCellAttributes(rowData.anCells); }); if (oSettings.aoHeader.length) { cells = []; jQuery.each(oSettings.aoHeader, function(index, rowData) { jQuery.each(rowData, function(index, cellData) { cells.push(cellData.cell); }); }); vendor[appName].setCellAttributes(cells); } if (oSettings.aoFooter.length) { cells = []; jQuery.each(oSettings.aoFooter, function(index, rowData) { jQuery.each(rowData, function(index, cellData) { cells.push(cellData.cell); }); }); vendor[appName].setCellAttributes(cells); } } return this; }; } if (typeof jQuery.fn.dataTableExt.oApi.fnResetFakeRowspan == "undefined") { jQuery.fn.dataTableExt.oApi.fnResetFakeRowspan = function (oSettings) { if(oSettings) { var displayRows = oSettings.aiDisplay, mergedData = jQuery(oSettings.nTable).data('merged'); if(!mergedData || mergedData.length == 0 || displayRows.length == 0) return this; var rows = oSettings.aoData, table = jQuery(oSettings.nTable), autoHiding = table.attr('data-auto-hiding'), rowNums = {}, first = table.attr('data-auto-index') == 'new' ? 1 : 0; autoHiding = (typeof(autoHiding) != 'undefined' && autoHiding.length > 0) ? autoHiding.split(',').map(Number) : []; jQuery.each(displayRows, function(index, rowNum) { var cells = rows[rowNum].anCells; rowNums[cells[first].getAttribute('data-y')] = rowNum; for(var i = 0; i < cells.length; i++) { if(cells[i].getAttribute('data-hide') == "true" && (autoHiding.length <= i || autoHiding[i] == 1)) { jQuery(cells[i]).css('display', ''); } cells[i].setAttribute('rowspan', 1); cells[i].setAttribute('colspan', 1); } }); jQuery.each(mergedData, function(index, value) { var firstRow = Number(value.row) + 1, lastRow = firstRow + Number(value.rowspan) - 1, colspan = Number(value.colspan), firstCol = Number(value.col) + first, lastCol = firstCol + colspan - 1, rowspan = 0; for(var r = firstRow; r <= lastRow; r++) { if(r in rowNums) { if(rowspan == 0) { firstRow = r; } for(var c = firstCol + (firstRow == r ? 1 : 0); c <= lastCol; c++) { var cell = rows[rowNums[r]].anCells[c]; if (typeof cell !== "undefined" && typeof cell.style !== "undefined" && typeof cell.style.display !== "undefined") { cell.style.display = 'none'; } if(autoHiding[c] === 0) { colspan--; } } rowspan++; } } if(rowspan > 0) { var mergedCell = rows[rowNums[firstRow]].anCells[firstCol]; if(rowspan > 1) { mergedCell.setAttribute('rowspan', rowspan); } if(colspan > 1) { mergedCell.setAttribute('colspan', colspan); } } }); } return this; }; } if (typeof jQuery.fn.dataTableExt.oSort !== "undefined") { jQuery.extend( jQuery.fn.dataTableExt.oSort, { "natural-asc": function ( a, b ) { return naturalSort(a,b,true); }, "natural-desc": function ( a, b ) { return naturalSort(a,b,true) * -1; }, "natural-nohtml-asc": function( a, b ) { return naturalSort(a,b,false); }, "natural-nohtml-desc": function( a, b ) { return naturalSort(a,b,false) * -1; }, "natural-ci-asc": function( a, b ) { a = a.toString().toLowerCase(); b = b.toString().toLowerCase(); return naturalSort(a,b,true); }, "natural-ci-desc": function( a, b ) { a = a.toString().toLowerCase(); b = b.toString().toLowerCase(); return naturalSort(a,b,true) * -1; }, "natural-nohtml-ci-asc": function( a, b ) { a = a.toString().toLowerCase(); b = b.toString().toLowerCase(); return naturalSort(a,b,false); }, "natural-nohtml-ci-desc": function( a, b ) { a = a.toString().toLowerCase(); b = b.toString().toLowerCase(); return naturalSort(a,b,false) * -1; } } ); } reinit = typeof reinit != 'undefined' ? reinit : {}; addInstance = typeof addInstance != 'undefined' ? addInstance : true; var self = this, $table = (table instanceof $ ? table : jQuery(table)), features = $table.data('features'), config = {}, responsiveMode = $table.data('responsive-mode'), searchingSettings = $table.data('searching-settings'), tableInstance = {}, defaultFeatures = { autoWidth: false, info: false, ordering: false, paging: false, responsive: false, searching: false, stateSave: false, bJQueryUI: true, api: true, retrieve: true, processing: true, initComplete: callback, headerCallback: function(thead, data, start, end, display) { jQuery(thead).closest('thead').find('th').each(function() { self.setStylesToCell(this); }); }, footerCallback: function(tfoot, data, start, end, display) { jQuery(tfoot).closest('tfoot').find('th').each(function() { self.setStylesToCell(this); }); }, // order param disable the default table sorting. // it should be here because of Woocommerce addon: // it has no hidden header for tables without header // and in triggers an error during initializing. // order param should be disabled later during sorting activation order: [] }; g_stbServerSideProcessing = $table.data('server-side-processing') && $table.data('server-side-processing') == 'on'; // Fix for searching by merged cells $table.find('tbody td[data-colspan], tbody td[data-rowspan]').each(function(index, item) { var cell = jQuery(item), cellData = cell.html(); // prevent of copy cell data if it contains tags with id attribute - it must be unique on page if (!cellData.toString().match(/<.*?id=['|"].*?['|"].*?>/g)) { var cellOrValue = cell.data('original-value'), cellFormula = cell.data('formula'), cellOrder = cell.data('order'), table = cell.parents('table:first'), colIndex = cell.index(), rowIndex = cell.parents('tr:first').index(), colspan = cell.data('colspan'), rowspan = cell.data('rowspan'); for (var i = rowIndex + 1; i <= rowIndex + rowspan; i++) { for (var j = colIndex + 1; j <= colIndex + colspan; j++) { var hiddenCell = table.find('tbody tr:nth-child(' + i + ') td:nth-child(' + j + ')'); if (hiddenCell.data('hide') && !$table.data('merged')) { hiddenCell.html(cellData); hiddenCell.data('original-value', cellOrValue); hiddenCell.attr('data-original-value', cellOrValue); hiddenCell.data('order', cellOrder); hiddenCell.attr('data-order', cellOrder); if (cellFormula) { hiddenCell.data('formula', cellFormula); hiddenCell.attr('data-formula', cellFormula); } } } } } }); // Set features jQuery.each(features, function() { var featureName = this.replace(/[-_]([a-z])/g, function(g) { return g[1].toUpperCase(); }); config[featureName] = true; }); if ($table.data('search-value') && !config['searching']) { config['searching'] = true; } if (!config['searching'] && (typeof this.setTableAddSearching === 'function')) { config['searching'] = this.setTableAddSearching($table); } if (toeInArray('searching', features) != -1 && searchingSettings) { if (searchingSettings.minChars > 0 || searchingSettings.resultOnly || searchingSettings.strictMatching ) { jQuery.fn.dataTable.ext.search.push(function(settings, data) { var $searchInput = jQuery(settings.nTableWrapper).find('.dataTables_filter input'), searchValue = $searchInput.val(); if (searchingSettings.resultOnly && searchValue.length === 0) { if (searchingSettings.showTable) { return false; } return false; } if (searchingSettings.strictMatching) { searchValue = jQuery.fn.dataTable.util.escapeRegex(searchValue); var regExp = new RegExp('^' + searchValue, 'i'); for (var i = 0; i < data.length; i++) { var words = data[i].replace(/\s\s+/g, ' ').split(' '); for (var j = 0; j < words.length; j++) { if (words[j].match(regExp)) { return true; } } } return false; } else { return data.join(' ').toLowerCase().indexOf(searchValue.toLowerCase()) !== -1 } }); $table.on('init.dt', function(event, settings) { if (!settings) { return; } var $tableWrapper = jQuery(settings.nTableWrapper), $tableSearchInput = $tableWrapper.find('.dataTables_filter input'), $customInput = $tableSearchInput.clone(); $tableSearchInput.replaceWith($customInput); $customInput.on('input change', function() { if (!searchingSettings.showTable) { if (searchingSettings.resultOnly && searchingSettings.minChars && (this.value.length < searchingSettings.minChars || !this.value.length)) { $table.hide(); $table.parent().find('.dataTables_paginate').hide(); } else { $table.show(); $table.parent().find('.dataTables_paginate').show(); } } if (searchingSettings.minChars && (this.value.length < searchingSettings.minChars && this.value.length !== 0)) { event.preventDefault(); return false; } $table.api().draw(); }); if (searchingSettings.resultOnly && !searchingSettings.showTable) { $table.hide(); $table.parent().find('.dataTables_paginate').hide(); } }); } if (searchingSettings.columnSearch) { var inputTop = (searchingSettings.columnSearchPosition && searchingSettings.columnSearchPosition == 'top'), tPosition = inputTop ? 'thead' : 'tfoot'; if (!$table.find('.stbColumnsSearchWrapper').length) { var headerRow = $table.find('thead tr:first').find('th'); if (headerRow.length) { var searchRow = '', func = inputTop ? 'prepend' : 'append'; for (var i = 0; i < headerRow.length; i++) { var cellItem = jQuery(headerRow[i]), cellClass = '', cellStyle = ''; if (!g_stbServerSideProcessing) { cellStyle = cellItem.is(':visible') ? '' : 'style="display: none;"'; } if (cellItem.hasClass('invisibleCell')) { cellClass = ' class="invisibleCell"' } searchRow += ''; } searchRow += ''; if ($table.find(tPosition).length == 0) { $table.append(jQuery('<' + tPosition + '>')); } $table.find(tPosition)[func](searchRow); } } if ($table.data('auto-index') !== 'off') { jQuery('.stbColumnsSearchWrapper th:first-child input').css({ 'visibility': 'hidden' }); } } } if (toeInArray('ordering', features) != -1) { var sortingEnable = ['_all'], sortingDisable = [], aaSorting = [], multipleSorting = $table.data('multiple-sorting'), disableSorting = $table.data('disable-sorting'); if (!$table.data('head')) { sortingDisable = ['_all']; } if (disableSorting && disableSorting.length) { sortingDisable = disableSorting; } if (multipleSorting && multipleSorting.length) { aaSorting = multipleSorting; } else { var columnsCount = $table.find('tr:first th').length, sortColumn = $table.data('sort-column') || 0, sortOrder = $table.data('sort-order') || 'asc', columnNumber = sortColumn - 1; if (columnNumber >= 0 && columnNumber < columnsCount) { aaSorting.push([columnNumber, sortOrder]); } } // config.aoColumnDefs = [ // { type: 'natural-nohtml-ci', targets: '_all' }, // { "sortable": false, "targets": sortingDisable }, // { "sortable": true, "targets": sortingEnable } // ]; config.aoColumnDefs = {}; config.aaSorting = aaSorting; delete defaultFeatures.order; } if ($table.data('pagination-length')) { var paginationLength = String($table.data('pagination-length')); config.aLengthMenu = []; config.aLengthMenu.push(paginationLength.replace('All', -1).split(',').map(Number)); config.aLengthMenu.push(paginationLength.split(',')); } if ($table.data('auto-index') && $table.data('auto-index') !== 'off') { $table.on('draw.dt', function() { var isFirst = true, index = 1; $table.api().column(0).nodes().each(function(cell, i) { var style = window.getComputedStyle(cell); if (isFirst) { index = i + 1; isFirst = false; } if (style.display !== 'none' && !cell.classList.contains('invisibleCell')) { cell.innerHTML = index; index++; } }); }); } // Set responsive mode if (responsiveMode == 0) { // Responsive Mode: Standart Responsive Mode var labelStyles = ''; $table.append(labelStyles); jQuery(window).on('load resize orientationchange', $table, function(event) { event.preventDefault(); clearTimeout($table.data('resizeTimer')); $table.data('resizeTimer', setTimeout(function() { $table.removeClass('oneColumn oneColumnWithLabels'); $table.css('width', '100%'); var tableWidth = $table.width(), wrapperWidth = $table.closest('.supsystic-tables-wrap').width(); if (tableWidth > wrapperWidth || jQuery(window).width() <= 475) { $table.addClass('oneColumn'); if ($table.data('head') == 'on') { $table.addClass('oneColumnWithLabels'); } } }, 150)); if (g_stbServerSideProcessing) { $table.find('td').each(function() { jQuery(this).css({ 'width': '', 'min-width': '' }); }); } }); } else if (responsiveMode === 1) { // Responsive Mode: Automatic Column Hiding config.responsive = { details: { renderer: function(api, rowIdx, columns) { var $table = jQuery(api.table().node()), $subTable = jQuery(''); jQuery.each(columns, function(i, col) { if (col.hidden) { var $cell = jQuery(api.cell(col.rowIndex, col.columnIndex).node()).clone(), markup = ''; if ($table.data('head') == 'on') { var tableHeadTr = jQuery(api.table().header()).find('tr:not(.stbColumnsSearchWrapper)').eq(0); var $headerContent = tableHeadTr.find('th').eq(col.columnIndex).html(); markup += ''; } markup += ''; $cell.after( jQuery('
    '; if ($headerContent) { markup += $headerContent; } markup += '
    ') .addClass('collapsed-cell-holder') .attr('data-cell-row', col.rowIndex) .attr('data-cell-column', col.columnIndex) .hide() ); $subTable.append(jQuery(markup).append($cell.addClass('collapsed').show())); } }); return $subTable.is(':empty') ? false : $subTable; } } }; $table.on('responsive-resize.dt', function(event, api, columns) { if (typeof api == 'undefined' || typeof columns == 'undefined') { var tbl = jQuery(this), instance = vendor[appName].getTableInstanceById(tbl.data('id')); if (instance) { api = typeof api != 'undefined' ? api : instance.api(); columns = typeof columns != 'undefined' ? columns : instance.api().columns(); } } var autoHiding = [], searchColumn = $table.find('.stbColumnsSearchWrapper input.search-column'); for (var i = 0, len = columns.length; i < len; i++) { autoHiding[i] = columns[i] ? 1 : 0; } $table.find('th input.search-column').each(function() { var th = jQuery(this).parents('th:first'), i = th.index(); if (columns.length > i) { th.css('display', columns[i] ? '' : 'none'); } }); if (typeof columns[0] == 'boolean') { $table.attr('data-auto-hiding', autoHiding.join()); } if ($table.width() > $table.parent().width()) { $table.css('width', '100%'); $table.css('max-width', '100%'); api.responsive.recalc(); return; } for (var i = 0, len = columns.length; i < len; i++) { if (columns[i]) { $table.find('tr > td.collapsed-cell-holder[data-cell-column="' + i + '"]').each(function(index, el) { var $this = jQuery(this); var $cell = jQuery(api.cell( $this.data('cell-row'), $this.data('cell-column') ).node()); if ($cell.hasClass('collapsed')) { $cell.removeClass('collapsed'); $this.replaceWith($cell); } }); } } if ($table.data('merged')) { // if has merged cells remove them, with autohidding they not working $table.find('td[data-hide]').show(); $table.find('td[data-rowspan]').attr({ 'data-rowspan': 1, rowspan: 1, 'data-colspan': 1, colspan: 1 }); } }); } else if (responsiveMode === 2) { // Responsive Mode: Horizontal Scroll config.scrollX = true; config.bAutoWidth = false; var firstRow = $table.find('tbody tr:first-child td'); if (firstRow.length) { var cntCols = firstRow.length; $table.find('thead tr:first-child th').each(function(i, th) { if (cntCols > i && jQuery(th).css('width')) { firstRow.eq(i).css('width', jQuery(th).css('width')); } }); } } if (responsiveMode === 2 || responsiveMode === 3) { // Responsive Mode: 2 - Horizontal Scroll, 3 - Disable Responsivity var fixedHead = $table.data('head') && $table.data('fixed-head'), fixedFoot = $table.data('foot') && $table.data('fixed-foot'), fixedLeft = $table.data('fixed-left'), fixedRight = $table.data('fixed-right'); // TODO: correct the code to set fixed header and fixed footer in the standard way // TODO: https://datatables.net/extensions/fixedheader/#Features //config.fixedHeader = { // header: false, // footer: false //}; //if (fixedHead) { // config.fixedHeader.header = true; //} //if (fixedFoot) { // config.fixedHeader.footer = true; //} if (fixedHead || fixedFoot) { config.scrollY = $table.data('fixed-height'); config.scrollCollapse = true; } if ($table.data('fixed-cols')) { config.fixedColumns = { leftColumns: fixedLeft ? parseInt(fixedLeft) : 0, rightColumns: fixedRight ? parseInt(fixedRight) : 0 }; config.scrollX = true; } } //$table.find('.invisibleCell').siblings('td').addClass('invisibleCell'); // Add translation var langData = typeof g_stbTblLangData != 'undefined' ? JSON.parse(g_stbTblLangData) : $table.data('translation'), translation = langData || {}, override = $table.data('override'); if (typeof translation != 'object') { translation = {}; // for just to be sure that it is object } jQuery.each(override, function(key, value) { if (value.length) { if (key == 'previous' || key == 'next') { if (typeof translation['paginate'] === "undefined") { translation['paginate'] = {}; } translation['paginate'][key] = value; } translation[key] = value; // We need to support old DT format, cuz some languages use it translation['s' + key.charAt(0).toUpperCase() + key.substr(1)] = value; } }); config.language = translation; var ajaxSource = {}; if (g_stbServerSideProcessing) { var nonce = (typeof DTGS_NONCE !== "undefined") ? DTGS_NONCE : DTGS_NONCE_FRONTEND; var route = { "action": "getPageRows", "module": "tables", "nonce": nonce }, loadedRows = [], loadedCells = [], headerRowsCount = ($table.data('head') == 'on' ? $table.data('head-rows-count') : 0), footerRowsCount = ($table.data('foot') == 'on' ? $table.data('foot-custom-rows-count') : 0); ajaxSource = { processing: true, serverSide: true, ajax: { url: window.ajaxurl ? window.ajaxurl : ajax_obj.ajaxurl, type: 'POST', data: { action: "supsystic-tables", route: route, id: $table.data('id'), searchParams: searchingSettings, searchValue: function() { var input = jQuery('#' + $table.attr('id') + '_filter.dataTables_filter').find('input'); return (input.length ? input.val() : ''); }, header: headerRowsCount, footer: footerRowsCount, beforeSend: function() { g_stbServerSideProcessingIsActive = true; } }, dataFilter: function(data) { var json = jQuery.parseJSON(data), rows = jQuery(json.rows).find('tr'), aData = []; loadedRows = []; loadedCells = []; for (var i = 0; i < rows.length; i++) { var row = rows[i]; loadedRows.push(row.attributes); var cells = jQuery(row).find('td'), attrs = [], vals = []; for (var j = 0; j < cells.length; j++) { var cell = cells[j]; attrs.push(cell.attributes); vals.push(cell.innerHTML); } loadedCells.push(attrs); aData.push(vals); } json.rows = ''; json.data = aData; g_stbServerSideProcessingIsActive = false; return JSON.stringify(json); } }, createdRow: function(row, data, dataIndex) { if (typeof(loadedRows[dataIndex]) != 'undefined') { jQuery(loadedRows[dataIndex]).each(function() { jQuery(row).attr(this.name, this.value); }); } } }; if (typeof(config.aoColumnDefs) == 'undefined' || jQuery.isEmptyObject(config.aoColumnDefs)) { config.aoColumnDefs = []; } config.aoColumnDefs.push({ targets: '_all', cellType: 'td', createdCell: function(td, cellData, rowData, row, col) { if (typeof(loadedCells[row][col]) != 'undefined') { var rowspan = 1, colspan = 1; jQuery(loadedCells[row][col]).each(function() { if (this.name == 'data-rowspan' && this.value > 1) { rowspan = this.value; } if (this.name == 'data-colspan' && this.value > 1) { colspan = this.value; } }); if (rowspan > 1 || colspan > 1) { var stopRow = row + parseInt(rowspan), stopCol = col + parseInt(colspan), startRow = colspan > 1 ? row : row + 1, hide; if (stopRow >= loadedCells.length) { stopRow = loadedCells.length; } if (stopCol >= loadedCells[row].length) { stopCol = loadedCells[row].length; } for (i = startRow; i < stopRow; i++) { if (i > row) { hide = document.createAttribute('data-hide'); hide.value = 'true'; loadedCells[i][col].setNamedItem(hide); } for (j = col + 1; j < stopCol; j++) { hide = document.createAttribute('data-hide'); hide.value = 'true'; loadedCells[i][j].setNamedItem(hide); } } } jQuery(loadedCells[row][col]).each(function() { //if(this.name != 'data-formula') { jQuery(td).attr(this.name, this.value); //} }); } } }); } window.table = $table; $table.trigger('beforeInitializeTable', $table); var dateFormat = $table.data('date-format'); // if (typeof $table.dataTable.moment !== "undefined") { $table.dataTable.moment(dateFormat); // } // if (typeof jQuery.fn.dataTable.ext.order.intl !== "undefined") { jQuery.fn.dataTable.ext.order.intl(); // } tableInstance = $table.dataTable(jQuery.extend({}, defaultFeatures, config, extraConfig, ajaxSource, reinit)); tableInstance.table_id = $table.data('id'); tableInstance.table_view_id = $table.data('view-id'); if (typeof tableInstance.fnFakeRowspan !== "undefined") { tableInstance.fnFakeRowspan(); } self._checkOnClickPopups($table); window.table = $table; if ($table.data('remove-rows')) { jQuery(function() { jQuery.contextMenu({ selector: '.dataTable td', animation: { duration: 250, show: 'fadeIn', hide: 'fadeOut' }, callback: function(key, options) { var m = "clicked: " + key; }, items: { "remove_row": { name: "Remove row", callback: function(itemKey, opt, e) { contextMenuAction(this, 'remove_row'); } }, "add_row_before": { name: "Add row before", callback: function(itemKey, opt, e) { contextMenuAction(this, 'add_row', 'before'); } }, "add_row_after": { name: "Add row after", callback: function(itemKey, opt, e) { contextMenuAction(this, 'add_row', 'after'); } }, "sep1": "---------", "quit": { name: "Quit" } } }); function contextMenuAction(e, action, second) { var coltext = e.text(); var colvindex = e.parent().children().index(e); var colindex = jQuery('table.dataTable thead tr th:eq(' + colvindex + ')').data('column-index'); /* Global var for counter */ var giCount = 1; switch (action) { case "remove_row": $table.fnDeleteRow(e.parent('tr')); $table.fnUpdate(); break; case "add_row": var tr = e.parent('tr').clone(true, true); tr.find('td').html('').addClass('menu-injected').addClass('editable').addClass('justCloned'); tr.find('td').data('original-value', '').attr('data-original-value', ''); var order = tr.find('td').data('order'); if (second == 'before') { order = order - 1; tr.find('td').data('order', order).attr('data-order', order); } else { order = order + 1; tr.find('td').data('order', order).attr('data-order', order); } tr.find('td').data('cell-type', 'text').attr('data-cell-type', 'text'); tr.find('td').data('cell-format-type', '').attr('data-cell-format-type', ''); $table.append(tr); $table.fnAddData(tr, true); tr.find('td.justCloned').data('y', '9999').attr('data-y', '9999').removeClass('justCloned'); // $table.fnUpdate(); // $table.trigger('draw.dt'); break; } } }); } if (g_stbServerSideProcessing) { jQuery('.dataTables_processing').css('z-index', '10'); } else { self.setColumnSearch($table); } $table.on('draw.dt', function() { var searching = $table.data('searching-settings'); if (searching && ('columnSearch' in searching) && searching.columnSearch == 'on') { self.setColumnSearch($table); } if (!g_stbServerSideProcessing && $table.data('merged')) { tableInstance.fnResetFakeRowspan(); } self.initShortcodesInTable($table); }); if (responsiveMode === 1) { $table.on('responsive-resize.dt', function(event, api, columns) { if (!g_stbServerSideProcessing && $table.data('merged')) { tableInstance.fnResetFakeRowspan(); } }); } if (typeof $table.data('fixed-cols') !== 'undefined') { tableInstance.api().fixedColumns().update(); } if (addInstance) { this.setTableInstance(tableInstance); } return typeof finalCallback == "function" ? finalCallback(tableInstance) : tableInstance; }); /** Callback for displaying table after initializing * @param {object} settings - DataTables settings object * @param {object} json - JSON data retrieved from the server if the ajax option was set. Otherwise undefined. */ vendor[appName].showTable = (function(settings, json) { var self = vendor[appName], // it is callback so "this" does not equal vendor[appName] object $table = this instanceof $ ? this : settings, // for compatibility with old pro versions $tableWrap = $table.closest('.supsystic-tables-wrap'), tableSelector = '#supsystic-table-' + $table.data('view-id') + ' #supsystic-table-' + $table.data('id'), afterTableLoadedScriptString = $table.attr('data-after-table-loaded-script'), _ruleJS = self.setRuleJSInstance($table), responsiveMode = $table.data('responsive-mode'), fixedHeader = $table.data('fixed-head') == 'on', fixedFooter = $table.data('fixed-foot') == 'on', fixedColumns = $table.data('fixed-right') > 0 || $table.data('fixed-left') > 0, viewId = $table.data('view-id'); // Apply custom CSS styles, which have been set through the table editor $table.find('th, td').each(function() { self.setStylesToCell(this); }); $table.bind('column-visibility.dt draw.dt', function(e) { jQuery(this).find('th, td').each(function() { self.setStylesToCell(this); }); }); // Remove sorting visual elements from the tags if there is no header on table if (!$table.data('head')) { $table.find('th').removeClass('sorting sorting_asc sorting_desc sorting_disabled'); } // Calculate formulas _ruleJS.init(); // Set formats self.formatDataAtTable($table, true); // Apply shortcode param "search" if ($table.data('search-value')) { $table.api().search($table.data('search-value')).draw(); } // Show comments on tap if ('ontouchstart' in window || navigator.msMaxTouchPoints) { $table.parents('.supsystic-tables-wrap:first').find('td, th').on('click', self.applyMobileTableComments); } // Prepare Contact Form by Supsystic buttons $table.parents('.supsystic-tables-wrap:first').find('th, td').each(self._contactFormBtnCellClb); // Page change callback $table.on('page.dt', function() { if (g_stbServerSideProcessing) { g_stbServerSideProcessingIsActive = true; } var table = jQuery(this), tableSelector = '#supsystic-table-' + table.data('view-id') + ' #supsystic-table-' + table.data('id'); self.applyTableEventClb(self.pageEvent, 50, tableSelector); if ($table.data('pagination-scroll') == 'on') { jQuery('html, body').animate({ scrollTop: table.closest('.dataTables_wrapper').offset().top }, 100); } if (typeof(self.setImgLightbox) == 'function') { self.setImgLightbox($table); } }); // Frontend fields if (typeof(self.createEditableFields) == 'function') { // for compatibility with old pro versions var $editableFields = $tableWrap.find('.editable'), $editfileFields = $tableWrap.find('.editfile'), $selectableFields = $tableWrap.find('.selectable'), $tableId = $table.data('id'), useEditableFields = typeof(useEdit) != 'undefined' && typeof(useEdit[$tableId]) != 'undefined' ? useEdit[$tableId] : false; if (useEditableFields || (SDT_DATA.isAdmin && SDT_DATA.isPro)) { if (typeof(self.setFrontendFields) == 'function') { self.setFrontendFields($table); } else if (typeof(self.setAllFields) == 'function') { self.setAllFields($table, $editableFields, $selectableFields); } else { self.createEditableFields($table, $editableFields); self.createEditableFileFields($table, $editfileFields); } $table.on('init.dt', function() { $table.on('responsive-resize.dt responsive-display.dt draw.dt', function() { $editableFields.off('click.sup'); // for compatibility with old pro versions $editfileFields.off('click.sup'); self.updateAfterRedraw($table); }); }); } } if (typeof(self.setImgLightbox) == 'function') { self.setImgLightbox($table); } // apply page.dt event by change table pagination via select var paginationSelect = $tableWrap.find('.dataTables_length select'); if (paginationSelect.length) { paginationSelect.on('change', function() { $table.trigger('page.dt'); }); } self.applyTableEventClb(self.fixHeaderOfHiddenColumns, 50, tableSelector); $table.trigger('beforeShowTable', $table); // Show table $tableWrap.prev('.supsystic-table-loader').hide(); $tableWrap.css('visibility', 'visible'); self.fixSortingForMultipleHeader($table); if (responsiveMode === 2 || fixedHeader || fixedFooter) { // Responsive Mode: Horizontal Scroll jQuery(window).on('load resize orientationchange', $table, function(event) { var tBody = $tableWrap.find('.dataTables_scrollBody'), tBodyTable = tBody.find('.supsystic-table'); if (tBody.width() > tBodyTable.width() || $tableWrap.width() > tBodyTable.width()) { tBody.width(tBodyTable.width()); $tableWrap.find('.dataTables_scrollHead, .dataTables_scrollFoot, .dataTables_scrollBody').width(tBodyTable.width() + 1); /* var scrollTables = $tableWrap.find('.dataTables_scrollHead, .dataTables_scrollFoot'); scrollTables.width(tBodyTable.width() + 1); scrollTables.find('table').width(tBodyTable.width() + 1);*/ } if (tBody.isHorizontallyScrollable()) { tBody.css({ 'border-bottom': 'none' }); } else { tBody.removeStyle('border-bottom'); } var table = self.getTableInstanceById($table.data('id')); if (typeof table.fnAdjustColumnSizing == 'function') { setTimeout(function() { table.fnAdjustColumnSizing(false); }, 350); } }); // need resize twice to get better frontend view var tBody = $tableWrap.find('.dataTables_scrollBody'), tBodyTable = tBody.find('.supsystic-table'); if (tBodyTable.is(":visible")) { setTimeout(function() { jQuery(window).trigger('load'); }, 200); } var $tHeadTable = $tableWrap.find('.dataTables_scrollHead .supsystic-table'); if ($tHeadTable.length) { self.formatDataAtTable($tHeadTable, true); } var $tFootTable = $tableWrap.find('.dataTables_scrollFoot .supsystic-table'); if ($tFootTable.length) { self.formatDataAtTable($tFootTable, true); } } // Correct width of fixed header / footer if (fixedHeader || fixedFooter) { $table.api().fixedHeader.adjust(); var i = 1; setTimeout(function() { var flag = fixedHeader, el = fixedHeader ? $tableWrap.find('.dataTables_scrollHead table thead tr:first-child th') : $tableWrap.find('.dataTables_scrollFoot table tfoot tr:first-child th'); el.each(function() { var thWidth = $tableWrap.find('.dataTables_scrollBody table tbody tr:first-child td:nth-child(' + i + ')'); jQuery(this).css({ 'width': thWidth.outerWidth(), 'min-width': thWidth.outerWidth(), 'box-sizing': 'border-box' }); if (fixedFooter && flag) { var footerEl = $tableWrap.find('.dataTables_scrollFoot table tfoot tr:first-child th:nth-child(' + i + ')'); footerEl.css({ 'width': thWidth.outerWidth(), 'min-width': thWidth.outerWidth(), 'box-sizing': 'border-box' }); } i++; }); }, 200); } // Correct width of fixed columns if (fixedColumns) { $table.api().fixedColumns().relayout(); //var tableCaption = jQuery('.dataTables_scrollHead caption'); // //if(tableCaption.length) { //self._fixTableCaption(tableCaption.height(), viewId, 10); //} } /* Fix for Horizontal scroll responsive mode if table has different width for one column in header and body */ if (!fixedHeader && !fixedFooter && responsiveMode === 2 && toeInArray('auto_width', $table.data('features')) == -1) { $tableWrap.find('.dataTables_scrollBody table thead tr:first-child th').each(function() { var tableWidth = $table.width(), tableWrapWidth = $tableWrap.width(); if (tableWrapWidth > tableWidth) { $tableWrap .find('.dataTables_scrollHeadInner, .dataTables_scrollBody, .dataTables_scrollFootInner') .addClass('fit-content'); } }); } // Load user custom scripts if (afterTableLoadedScriptString !== undefined) { afterTableLoadedScriptString = afterTableLoadedScriptString.substring(1, afterTableLoadedScriptString.length - 1); var afterTableLoadedScript = b64DecodeUnicode(afterTableLoadedScriptString).replace(/"/g, "'"), executeScript = new Function(afterTableLoadedScript); if (typeof executeScript === "function") { setTimeout(function() { executeScript(); }, 1000); } } if (g_stbServerSideProcessing) { $table.on('draw.dt', function(e) { var searching = $table.data('searching-settings'); if (searching && ('columnSearch' in searching) && searching.columnSearch == 'on') { self.setColumnSearch($table); } self.getTableInstanceByViewId(viewId).fnFakeRowspan(); if (responsiveMode === 0 || responsiveMode === 2) { jQuery(window).trigger('load'); } }).trigger('draw.dt'); } var tblEditLink = 'g_stbTblEditLink_' + $table.data('id'), showTblEditLink = eval("typeof " + tblEditLink) !== 'undefined' ? jQuery(window.atob(eval(tblEditLink))) : false; if (showTblEditLink && jQuery(tableSelector).closest('.supsystic-tables-wrap').find('.tblEditLink').length === 0) { jQuery(tableSelector).closest('.supsystic-tables-wrap').append(showTblEditLink); } function b64DecodeUnicode(str) { return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); } }); vendor[appName].applyTableEventClb = (function(clb, timeout) { // Callback for applying events' actions and other functions to tables with server side processing (SSP) timeout = timeout ? timeout : 0; var self = this, args = Array.from(arguments); if (g_stbServerSideProcessing && g_stbServerSideProcessingIsActive) { setTimeout(function() { self.applyTableEventClb.apply(self, args); }, 50); } else { if (typeof clb == 'function') { args = args.slice(2); setTimeout(function() { clb.apply(self, args); }, timeout); } } }); vendor[appName].pageEvent = (function(tableSelector) { var table = jQuery(tableSelector), tableWrapper = table.parents('.supsystic-tables-wrap:first'); this.getRuleJSInstance(table).init(); this.formatDataAtTable(table, true); this.fixHeaderOfHiddenColumns(table); if ('ontouchstart' in window || navigator.msMaxTouchPoints) { tableWrapper.find('td, th').on('click', this.applyMobileTableComments); } tableWrapper.find('td, th').each(this._contactFormBtnCellClb); this.initShortcodesInTable(table); }); vendor[appName].fixHeaderOfHiddenColumns = (function($table) { $table = $table instanceof $ ? $table : jQuery($table); var tableWrapper = $table.parents('.supsystic-tables-wrap:first'); if (!$table.data('head')) { tableWrapper.find('thead').each(function() { var thead = jQuery(this); thead.find('th').each(function(iter, item) { var th = jQuery(this), itemIndex = iter + 1, columnAllTd = thead.parents('table:first').find('tbody td:nth-child(' + itemIndex + ')'), columnInvTd = columnAllTd.filter('.invisibleCell'), hidden = columnAllTd.length > 0 && columnAllTd.length == columnInvTd.length; if (hidden) { // Fix of correct displaying of tables with hidden rows / columns for tables without headers th.addClass('invisibleCell'); } }); }); } }); vendor[appName].applyMobileTableComments = (function(e) { var $elem = jQuery(this), title = $elem.attr('title'); if (title) { var tableViewId = $elem.parents('table.supsystic-table:first').data('view-id'), cellId = $elem.data('cell-id'), comment = jQuery('.stbMobileComment[data-table="' + tableViewId + '"][data-cell="' + cellId + '"]'); if (!comment.length) { comment = jQuery('