text: var duScrollDefaultEasing=function(e){"use strict";return e<.5?Math.pow(2*e,2)/2:1-Math.pow(2*(1-e),2)/2};angular.module("duScroll",["duScroll.scrollspy","duScroll.smoothScroll","duScroll.scrollContainer","duScroll.spyContext","duScroll.scrollHelpers"]).value("duScrollDuration",350).value("duScrollSpyWait",100).value("duScrollGreedy",!1).value("duScrollOffset",0).value("duScrollEasing",duScrollDefaultEasing),angular.module("duScroll.scrollHelpers",["duScroll.requestAnimation"]).run(["$window","$q","cancelAnimation","requestAnimation","duScrollEasing","duScrollDuration","duScrollOffset",function(e,t,n,r,o,l,i){"use strict";var u=angular.element.prototype,c=function(e){return"undefined"!=typeof HTMLDocument&&e instanceof HTMLDocument||e.nodeType&&e.nodeType===e.DOCUMENT_NODE},a=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e.nodeType&&e.nodeType===e.ELEMENT_NODE},s=function(e){return a(e)||c(e)?e:e[0]};u.scrollTo=function(t,n,r,o){var l;if(angular.isElement(t)?l=this.scrollToElement:r&&(l=this.scrollToAnimated),l)return l.apply(this,arguments);var i=s(this);return c(i)?e.scrollTo(t,n):(i.scrollLeft=t,void(i.scrollTop=n))};var d,f;u.scrollToAnimated=function(e,l,i,u){i&&!u&&(u=o);var c=this.scrollLeft(),a=this.scrollTop(),s=Math.round(e-c),p=Math.round(l-a),m=null,g=this,v="scroll mousedown mousewheel touchmove keydown",h=function(e){(!e||e.which>0)&&(g.unbind(v,h),n(d),f.reject(),d=null)};if(d&&h(),f=t.defer(),!s&&!p)return f.resolve(),f.promise;var y=function(e){null===m&&(m=e);var t=e-m,n=t>=i?1:u(t/i);g.scrollTo(c+Math.ceil(s*n),a+Math.ceil(p*n)),n<1?d=r(y):(g.unbind(v,h),d=null,f.resolve())};return g.scrollTo(c,a),g.bind(v,h),d=r(y),f.promise},u.scrollToElement=function(e,t,n,r){var o=s(this);angular.isNumber(t)&&!isNaN(t)||(t=i);var l=this.scrollTop()+s(e).getBoundingClientRect().top-t;return a(o)&&(l-=o.getBoundingClientRect().top),this.scrollTo(0,l,n,r)};var p={scrollLeft:function(t,n,r){if(angular.isNumber(t))return this.scrollTo(t,this.scrollTop(),n,r);var o=s(this);return c(o)?e.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft:o.scrollLeft},scrollTop:function(t,n,r){if(angular.isNumber(t))return this.scrollTo(this.scrollTop(),t,n,r);var o=s(this);return c(o)?e.scrollY||document.documentElement.scrollTop||document.body.scrollTop:o.scrollTop}};u.scrollToElementAnimated=function(e,t,n,r){return this.scrollToElement(e,t,n||l,r)},u.scrollTopAnimated=function(e,t,n){return this.scrollTop(e,t||l,n)},u.scrollLeftAnimated=function(e,t,n){return this.scrollLeft(e,t||l,n)};var m=function(e,t){return function(n,r,o){return r?t.apply(this,arguments):e.apply(this,arguments)}};for(var g in p)u[g]=u[g]?m(u[g],p[g]):p[g]}]),angular.module("duScroll.polyfill",[]).factory("polyfill",["$window",function(e){"use strict";var t=["webkit","moz","o","ms"];return function(n,r){if(e[n])return e[n];for(var o,l=n.substr(0,1).toUpperCase()+n.substr(1),i=0;i<t.length;i++)if(o=t[i]+l,e[o])return e[o];return r}}]),angular.module("duScroll.requestAnimation",["duScroll.polyfill"]).factory("requestAnimation",["polyfill","$timeout",function(e,t){"use strict";var n=0,r=function(e,r){var o=(new Date).getTime(),l=Math.max(0,16-(o-n)),i=t(function(){e(o+l)},l);return n=o+l,i};return e("requestAnimationFrame",r)}]).factory("cancelAnimation",["polyfill","$timeout",function(e,t){"use strict";var n=function(e){t.cancel(e)};return e("cancelAnimationFrame",n)}]),angular.module("duScroll.spyAPI",["duScroll.scrollContainerAPI"]).factory("spyAPI",["$rootScope","$timeout","scrollContainerAPI","duScrollGreedy","duScrollSpyWait",function(e,t,n,r,o){"use strict";var l=function(n){var l=!1,i=!1,u=function(){i=!1;var t=n.container,o=t[0],l=0;("undefined"!=typeof HTMLElement&&o instanceof HTMLElement||o.nodeType&&o.nodeType===o.ELEMENT_NODE)&&(l=o.getBoundingClientRect().top);var u,c,a,s,d,f;for(s=n.spies,c=n.currentlyActive,a=void 0,u=0;u<s.length;u++)d=s[u],f=d.getTargetPosition(),f&&f.top+d.offset-l<20&&f.top*-1+l<f.height&&(!a||a.top<f.top)&&(a={top:f.top,spy:d});a&&(a=a.spy),c===a||r&&!a||(c&&(c.$element.removeClass("active"),e.$broadcast("duScrollspy:becameInactive",c.$element)),a&&(a.$element.addClass("active"),e.$broadcast("duScrollspy:becameActive",a.$element)),n.currentlyActive=a)};return o?function(){l?i=!0:(u(),l=t(function(){l=!1,i&&u()},o,!1))}:u},i={},u=function(e){var t=e.$id,n={spies:[]};return n.handler=l(n),i[t]=n,e.$on("$destroy",function(){c(e)}),t},c=function(e){var t=e.$id,n=i[t],r=n.container;r&&r.off("scroll",n.handler),delete i[t]},a=u(e),s=function(e){return i[e.$id]?i[e.$id]:e.$parent?s(e.$parent):i[a]},d=function(e){var t,n,r=e.$element.scope();if(r)return s(r);for(n in i)if(t=i[n],t.spies.indexOf(e)!==-1)return t},f=function(e){for(;e.parentNode;)if(e=e.parentNode,e===document)return!0;return!1},p=function(e){var t=d(e);t&&(t.spies.push(e),t.container&&f(t.container)||(t.container&&t.container.off("scroll",t.handler),t.container=n.getContainer(e.$element.scope()),t.container.on("scroll",t.handler).triggerHandler("scroll")))},m=function(e){var t=d(e);e===t.currentlyActive&&(t.currentlyActive=null);var n=t.spies.indexOf(e);n!==-1&&t.spies.splice(n,1)};return{addSpy:p,removeSpy:m,createContext:u,destroyContext:c,getContextForScope:s}}]),angular.module("duScroll.scrollContainerAPI",[]).factory("scrollContainerAPI",["$document",function(e){"use strict";var t={},n=function(e,n){var r=e.$id;return t[r]=n,r},r=function(e){return t[e.$id]?e.$id:e.$parent?r(e.$parent):void 0},o=function(n){var o=r(n);return o?t[o]:e},l=function(e){var n=r(e);n&&delete t[n]};return{getContainerId:r,getContainer:o,setContainer:n,removeContainer:l}}]),angular.module("duScroll.smoothScroll",["duScroll.scrollHelpers","duScroll.scrollContainerAPI"]).directive("duSmoothScroll",["duScrollDuration","duScrollOffset","scrollContainerAPI",function(e,t,n){"use strict";return{link:function(r,o,l){o.on("click",function(o){if(l.href&&l.href.indexOf("#")!==-1){var i=document.getElementById(l.href.replace(/.*(?=#[^\s]+$)/,"").substring(1));if(i&&i.getBoundingClientRect){o.stopPropagation&&o.stopPropagation(),o.preventDefault&&o.preventDefault();var u=l.offset?parseInt(l.offset,10):t,c=l.duration?parseInt(l.duration,10):e,a=n.getContainer(r);a.scrollToElement(angular.element(i),isNaN(u)?0:u,isNaN(c)?0:c)}}})}}}]),angular.module("duScroll.spyContext",["duScroll.spyAPI"]).directive("duSpyContext",["spyAPI",function(e){"use strict";return{restrict:"A",scope:!0,compile:function(t,n,r){return{pre:function(t,n,r,o){e.createContext(t)}}}}}]),angular.module("duScroll.scrollContainer",["duScroll.scrollContainerAPI"]).directive("duScrollContainer",["scrollContainerAPI",function(e){"use strict";return{restrict:"A",scope:!0,compile:function(t,n,r){return{pre:function(t,n,r,o){r.$observe("duScrollContainer",function(r){angular.isString(r)&&(r=document.getElementById(r)),r=angular.isElement(r)?angular.element(r):n,e.setContainer(t,r),t.$on("$destroy",function(){e.removeContainer(t)})})}}}}}]),angular.module("duScroll.scrollspy",["duScroll.spyAPI"]).directive("duScrollspy",["spyAPI","duScrollOffset","$timeout","$rootScope",function(e,t,n,r){"use strict";var o=function(e,t,n){angular.isElement(e)?this.target=e:angular.isString(e)&&(this.targetId=e),this.$element=t,this.offset=n};return o.prototype.getTargetElement=function(){return!this.target&&this.targetId&&(this.target=document.getElementById(this.targetId)),this.target},o.prototype.getTargetPosition=function(){var e=this.getTargetElement();if(e)return e.getBoundingClientRect()},o.prototype.flushTargetCache=function(){this.targetId&&(this.target=void 0)},{link:function(l,i,u){var c,a=u.ngHref||u.href;a&&a.indexOf("#")!==-1?c=a.replace(/.*(?=#[^\s]+$)/,"").substring(1):u.duScrollspy&&(c=u.duScrollspy),c&&n(function(){var n=new o(c,i,-(u.offset?parseInt(u.offset,10):t));e.addSpy(n),l.$on("$destroy",function(){e.removeSpy(n)}),l.$on("$locationChangeSuccess",n.flushTargetCache.bind(n)),r.$on("$stateChangeSuccess",n.flushTargetCache.bind(n))},0,!1)}}}]);
  !function(e,t){"use strict";function n(){if("pageYOffset"in e)return{scrollTop:pageYOffset,scrollLeft:pageXOffset};var t,n,s=document,o=s.documentElement,i=s.body;return t=o.scrollLeft||i.scrollLeft||0,n=o.scrollTop||i.scrollTop||0,{scrollTop:n,scrollLeft:t}}function s(t,n){return t===e?"clientWidth"===n?e.innerWidth:e.innerHeight:t[n]}function o(t,s){return t===e?n()[s]:t[s]}function i(t,s,o){var i=t.getBoundingClientRect()[o?"left":"top"],l=s===e?0:s.getBoundingClientRect()[o?"left":"top"],r=i-l+(s===e?n():s)[o?"scrollLeft":"scrollTop"];return r}var l=navigator.appVersion.indexOf("Mac")!=-1,r="undefined"!=typeof e.onwheel?"wheel":"undefined"!=typeof e.onmousewheel?"mousewheel":"DOMMouseScroll",a=document.documentElement,c=a.matches?"matches":a.matchesSelector?"matchesSelector":a.webkitMatches?"webkitMatches":a.webkitMatchesSelector?"webkitMatchesSelector":a.msMatches?"msMatches":a.msMatchesSelector?"msMatchesSelector":a.mozMatches?"mozMatches":a.mozMatchesSelector?"mozMatchesSelector":null,f=t.element.prototype.closest||function(e){for(var n=this[0].parentNode;n!==document.documentElement&&null!=n&&!n[c](e);)n=n.parentNode;return n&&n[c](e)?t.element(n):t.element()},d=t.module("vs-repeat",[]).directive("vsRepeat",["$compile",function(n){return{restrict:"A",scope:!0,require:"?^vsRepeat",controller:["$scope",function(e){this.$scrollParent=e.$scrollParent,this.$fillElement=e.$fillElement}],compile:function(a){var c=a.children().eq(0),d=c.attr("ng-repeat")||c.attr("data-ng-repeat"),u=c[0].outerHTML,p=/^\s*(\S+)\s+in\s+([\S\s]+?)(track\s+by\s+\S+)?$/.exec(d),m=p[1],v=p[2],h=p[3],x="$vs_collection",$={vsRepeat:"elementSize",vsOffsetBefore:"offsetBefore",vsOffsetAfter:"offsetAfter",vsExcess:"excess"};return a.empty(),e.getComputedStyle&&"absolute"===e.getComputedStyle(a[0]).position||a.css("position","relative"),{pre:function(a,c,d,p){function S(e,n){if(!k||k.length<1)return a[x]=[],C=0,y(0),void(a.sizesCumulative=[0]);if(C=k.length,T){a.sizes=k.map(function(e){var n=a.$new(!1);t.extend(n,e),n[m]=e;var s=d.vsSize||d.vsSizeProperty?n.$eval(d.vsSize||d.vsSizeProperty):a.elementSize;return n.$destroy(),s});var s=0;a.sizesCumulative=a.sizes.map(function(e){var t=s;return s+=e,t}),a.sizesCumulative.push(s)}else I();w(n)}function I(){A&&a.$$postDigest(function(){if(c[0].offsetHeight||c[0].offsetWidth)for(var e=c.children(),t=0;t<e.length;){if(null!=e[t].attributes["ng-repeat"]||null!=e[t].attributes["data-ng-repeat"]){e[t][Y]&&(a.elementSize=e[t][Y],w(),A=!1,a.$root&&!a.$root.$$phase&&a.$apply());break}t++}else var n=a.$watch(function(){(c[0].offsetHeight||c[0].offsetWidth)&&(n(),I())})})}function g(e){var t=e.currentTarget;(t.scrollWidth>t.clientWidth||t.scrollHeight>t.clientHeight)&&R.css("display","block")}function z(){"undefined"!=typeof d.vsAutoresize&&(A=!0,I(),a.$root&&!a.$root.$$phase&&a.$apply()),P()&&(a.$apply(),a.$broadcast("vsSetOffset-refresh"))}function w(e){F=void 0,U=void 0,V=C,_=0,P(e),y(T?a.sizesCumulative[C]:a.elementSize*C),a.$evalAsync(function(){a.$broadcast("vsSetOffset-refresh")}),a.$emit("vsRepeatReinitialized",a.startIndex,a.endIndex)}function y(e){if(E){if(O.css({width:a.offsetBefore+e+a.offsetAfter+"px",height:"100%"}),p&&p.$fillElement){var t=p.$fillElement[0].parentNode.querySelector("[ng-repeat]");t&&p.$fillElement.css({width:t.scrollWidth+"px"})}}else O.css({height:a.offsetBefore+e+a.offsetAfter+"px",width:"100%"}),p&&p.$fillElement&&(t=p.$fillElement[0].parentNode.querySelector("[ng-repeat]"),t&&p.$fillElement.css({height:t.scrollHeight+"px"}));O.css({height:"0",width:"100%","min-height":"0","min-width":"100%"})}function M(){var e=s(H[0],D);e!==G&&(w(),a.$root&&!a.$root.$$phase&&(a.$apply(),a.$broadcast("vsSetOffset-refresh"))),G=e}function b(e){var t=!1;return void 0!==e&&"number"==typeof e&&(t=Math.max(e,0),H[0][X]!==t?(H[0][X]=t,L=!0):t=!1,a.$emit("vsRepeatScrolled",t)),t}function P(e){var t,n,l,r,f=o(H[0],X),d=s(H[0],D),u=c[0]===H[0]?0:i(c[0],H[0],E),p=!0,m=a.startIndex,v=a.endIndex;if(e&&void 0!==e.elementSize&&(a.elementSize=e.elementSize),e&&void 0!==e.scrollIndex){if("undefined"!=typeof a.scrollSettings&&(a.scrollSettings.scrollIndex=e.scrollIndex),T?(r=a.sizes[e.scrollIndex],l=a.sizesCumulative[e.scrollIndex]):(r=a.elementSize,l=e.scrollIndex*a.elementSize),void 0!==e.scrollIndexPosition)switch("undefined"!=typeof a.scrollSettings&&(a.scrollSettings.scrollIndexPosition=e.scrollIndexPosition),t=0,typeof e.scrollIndexPosition){case"number":t=e.scrollIndexPosition+a.offsetBefore;break;case"string":switch(e.scrollIndexPosition){case"top":t=a.offsetBefore;break;case"middle":t=(d-r)/2;break;case"bottom":t=d-r-a.offsetAfter;break;case"inview":case"inview#top":case"inview#middle":case"inview#bottom":case"inview#auto":H[0][X]<=l&&H[0][X]+d-r>=l?(p=!1,t=l-H[0][X]):("inview#top"!==e.scrollIndexPosition&&"inview"!==e.scrollIndexPosition||(t=a.offsetBefore),"inview#bottom"===e.scrollIndexPosition&&(t=d-r+a.offsetAfter),"inview#middle"===e.scrollIndexPosition&&(t=(d-r)/2),"inview#auto"===e.scrollIndexPosition&&(t=H[0][X]<=l?d-r+a.offsetAfter:a.offsetBefore));break;default:console.warn("Incorrect scrollIndexPosition string value")}break;default:console.warn("Incorrect scrollIndexPosition type")}else p=!1,t=T?a.sizesCumulative[e.scrollIndex]-H[0][X]:e.scrollIndex*a.elementSize-H[0][X];if(m=e.scrollIndex,T){for(;a.sizesCumulative[m]>a.sizesCumulative[e.scrollIndex]-t;)m--;for(n=Math.max(m,0),m=Math.max(Math.floor(m-a.excess/2),0),v=m;a.sizesCumulative[v]<a.sizesCumulative[n]-a.offsetBefore+d;)v++;v=Math.min(Math.ceil(v+a.excess/2),C)}else{for(;m*a.elementSize>e.scrollIndex*a.elementSize-t;)m--;n=Math.max(m,0),m=Math.max(Math.floor(m-a.excess/2),0),v=Math.min(m+Math.ceil(d/a.elementSize)+a.excess/2,C)}}else if(T){for(m=0;a.sizesCumulative[m]<f-a.offsetBefore-u;)m++;for(m>0&&m--,m=Math.max(Math.floor(m-a.excess/2),0),v=m;a.sizesCumulative[v]<f-a.offsetBefore-u+d;)v++;v=Math.min(Math.ceil(v+a.excess/2),C)}else m=Math.max(Math.floor((f-a.offsetBefore-u)/a.elementSize)-a.excess/2,0),v=Math.min(m+Math.ceil(d/a.elementSize)+a.excess,C);V=Math.min(m,V),_=Math.max(v,_),a.startIndex=q.latch?V:m,a.endIndex=q.latch?_:v,void 0!==e&&void 0!==e.scrollIndex&&void 0!==t&&p&&b(l-t);var h=!1;return null==F?h=!0:null==U&&(h=!0),h||(q.hunked?Math.abs(a.startIndex-F)>=a.excess/2||0===a.startIndex&&0!==F?h=!0:(Math.abs(a.endIndex-U)>=a.excess/2||a.endIndex===C&&U!==C)&&(h=!0):h=a.startIndex!==F||a.endIndex!==U),h&&(a.startIndex=a.startIndex==a.endIndex&&a.endIndex>0?0:a.startIndex,a[x]=k.slice(a.startIndex,a.endIndex),a.$emit("vsRepeatInnerCollectionUpdated",a.startIndex,a.endIndex,F,U),k.length==a.endIndex?a.$emit("vsRepeatCollectionCompletelyRendered",k.length):a.$emit("vsRepeatCollectionPartiallyRendered"),F=a.startIndex,U=a.endIndex),h}var C,R,O,B=t.element(u),k=[],E="undefined"!=typeof d.vsHorizontal,A=!d.vsRepeat,T=!!d.vsSize||!!d.vsSizeProperty,H=d.vsScrollParent?"window"===d.vsScrollParent?t.element(e):f.call(c,d.vsScrollParent):c,W=E?"left":"top",L=!1,q="vsOptions"in d?a.$eval(d.vsOptions):{},D=E?"clientWidth":"clientHeight",Y=E?"offsetWidth":"offsetHeight",X=E?"scrollLeft":"scrollTop";if(!("vsSize"in d)&&"vsSizeProperty"in d&&console.warn("vs-size-property attribute is deprecated. Please use vs-size attrubute which also accepts angular expressions."),0===H.length)throw"Specified scroll parent selector did not match any element";a.$scrollParent=H,T&&(a.sizesCumulative=[]),a.elementSize=+d.vsRepeat||s(H[0],D)||50,a.offsetBefore=0,a.offsetAfter=0,a.excess=2,a.scrollSettings={scrollIndex:0,scrollIndexPosition:"top"},a.$watch(d.vsScrollSettings,function(e){"undefined"!=typeof e&&(a.scrollSettings=e,w(a.scrollSettings))},!0),Object.keys($).forEach(function(e){d[e]&&d.$observe(e,function(t){a[$[e]]=+t,w()})}),a.$watchCollection(v,function(e){k=e||[],S()}),B.attr("ng-repeat",m+" in "+x+(h?" "+h:"")).addClass("vs-repeat-repeated-element");var N=T?"(sizesCumulative[$index + startIndex] + offsetBefore)":"(($index + startIndex) * elementSize + offsetBefore)";B.attr("vs-set-offset",N),B.attr("vs-set-offset-positioning-property",W),n(B)(a),c.append(B),O=t.element('<div class="vs-repeat-fill-element"></div>').css({position:"relative","min-height":"100%","min-width":"100%"}),c.append(O),n(O)(a),a.$fillElement=O;var j={};l&&"window"!==d.vsScrollParent&&(R=t.element('<div class="vs-repeat-wheel-helper"></div>').on(r,function(e){e.preventDefault(),e.stopPropagation(),e.originalEvent&&(e=e.originalEvent),H[0].scrollLeft+=e.deltaX||-e.wheelDeltaX,H[0].scrollTop+=e.deltaY||-e.wheelDeltaY}).on("mousemove",function(e){j.x===e.clientX&&j.y===e.clientY||t.element(this).css("display","none"),j={x:e.clientX,y:e.clientY}}).css("display","none"),O.append(R)),a.startIndex=0,a.endIndex=0,H.on("scroll",function(){L?L=!1:P()&&(a.$apply(),a.$broadcast("vsSetOffset-refresh"))}),l&&H.on(r,g),t.element(e).on("resize",z),a.$on("$destroy",function(){t.element(e).off("resize",z)}),a.$on("vsRepeatTrigger",S),a.$on("vsRepeatResize",function(){A=!0,I()});var F,U,V,_;a.$on("vsRenderAll",function(){q.latch&&setTimeout(function(){var e=C;_=Math.max(e,_),a.endIndex=q.latch?_:e,a[x]=k.slice(a.startIndex,a.endIndex),U=a.endIndex,a.$apply(function(){a.$emit("vsRenderAllDone")})})});var G;a.$watch(function(){"function"==typeof e.requestAnimationFrame?e.requestAnimationFrame(M):M()})}}}}}]).directive("vsSetOffset",[function(){return function(e,t,n){function s(){t.css(o,e.$eval(n.vsSetOffset)+"px")}var o=n.vsSetOffsetPositioningProperty;s(),e.$on("vsSetOffset-refresh",s)}}]);t.element(document.head).append(["<style>.vs-repeat-wheel-helper{position: absolute;top: 0;bottom: 0;left: 0;right: 0;z-index: 99999;background: rgba(0, 0, 0, 0);}.vs-repeat-repeated-element{position: absolute;z-index: 1;}</style>"].join("")),"undefined"!=typeof module&&module.exports&&(module.exports=d.name)}(window,window.angular);
  !function(){"use strict";var n=function(n,t){return{replace:!0,scope:{onChange:"&",jsonData:"=",options:"="},compile:function(o,r){var e=function(o,r,e){function i(){t(function(){try{var n=c.get();o.onChange({json:n})}catch(t){var n=c.getText();o.onChange({json:n})}})}var a={mode:"tree",change:i};a=angular.extend(a,o.options);var c=new n(r[0],a);o.$watch("jsonData",function(n){c.set(n)})};return e},template:'<div style="width: 100%; height: 100%;"></div>'}};angular.module("angular-json-editor",[]).provider("JSONEditor",function(){function n(t){return angular.forEach(arguments,function(o){o!==t&&angular.forEach(o,function(o,r){t[r]&&t[r].constructor&&t[r].constructor===Object?n(t[r],o):t[r]=o})}),t}var t={defaults:{options:{indentation:2,search:!1,name:"vxgrid",mode:"code"}}};this.configure=function(o){n(t,o)},this.$get=["$window",function(o){var r=o.JSONEditor;return n(r,t),o.JSONEditor}]}).directive("jsonEditor",["JSONEditor","$timeout",n])}();
  !function(){"use strict";function e(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"_"+e()}String.prototype.capitalizeFirstLetter=function(){return this.charAt(0).toUpperCase()+this.slice(1)},String.prototype.replaceAll=function(e,n){var t=new RegExp(e,"g");return this.replace(t,n)},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e,n){window.setTimeout(e,1e3/60)}}(),angular.module("vx.grid.modules",["ngSanitize","ui.bootstrap","vs-repeat","angular-json-editor","duScroll"]).directive("vxGrid",function(){return{restrict:"E",scope:{config:"=",scrollParent:"="},controller:["$scope","$uibModal","$sce","$timeout","$rootScope","$window","$filter","$q","$compile",function(n,t,i,o,l,r,d,a,f){function c(e){_.each(n.vxConfig.columnDefConfigs,function(n){n.id==e&&(n.filterLimit=n.filterLimit+2)}),"$apply"!=n.$root.$$phase&&"$digest"!=n.$root.$$phase&&n.$digest()}function v(e,n,t){var i=t+"_"+n+"_key_",o="string";return null==e.value?i+="null":null==e.value?i+="null":"object"!=typeof e.value?(i+=e.value.toString().replace(/\s+/g,"_"),o=e.type):(i+=JSON.stringify(e.value).replace(/\s+/g,"_"),o="object"),{key:i,type:o}}function u(){var e="scroll_up_"+n.vxConfig.id,t=document.getElementById(e);t&&(t.style.display="NONE"),e="scroll_down_"+n.vxConfig.id,t=document.getElementById(e),t&&1==n.vxConfig.noData?t.style.display="NONE":t.style.display="BLOCK"}function s(){var e="scroll_down_"+n.vxConfig.id,t=n.selfEle.find(".vxTableContainer.scrollTableContainer"),i=n.selfEle.find(".scrollTableContainer table.vxTable");document.getElementById(e)&&(document.getElementById(e).style.display="NONE"),"undefined"!=typeof t&&"undefined"!=typeof i&&null!=t&&null!=i&&i.height()>t.height()&&document.getElementById(e)&&(document.getElementById(e).style.display="BLOCK")}function g(){var e="scroll_up_"+n.vxConfig.id,t=n.selfEle.find(".vxTableContainer.scrollTableContainer"),i=n.selfEle.find(".scrollTableContainer table.vxTable"),o=document.getElementById(e);if(o&&(o.style.display="NONE"),"undefined"!=typeof t&&"undefined"!=typeof i&&null!=t&&null!=i&&i.height()>t.height()&&t.scrollTop()>48){var o=document.getElementById(e);o&&(o.style.display="BLOCK")}}n.vxColSettings={},n.posLeft=1,n.posTop=0;var x={},C=angular.element(r);n.getWindowDimensions=function(){return{h:C.height(),w:C.width()}},n.resetVxInstance=function(){x={},n.vxColSettings={primaryId:null,dropdDownEnabled:{},dropdDownLoaded:{},dropdDownOpen:{},dropDownSort:{},dropDownFilters:{},dropDownGroup:{},colFiltersStatus:{},colFilterPairs:{},colFiltersActivated:{},lastProcessedForFilters:{},multiSelected:[],multiSelColDependent:!1,reverseSettings:{},groupPredicate:{},groupByColActivated:{},rowSelected:{},vxRowClass:{},vxRowSelectionDisable:{},revealWrapRowData:!1,selectAllEnabled:!0,menu:!1,xsViewEnabled:!1,xsRowTitleTemplateAvailable:!1,xsSearch:"",searchToken:"",inlineEditState:{},colWithInlineEdits:[],groupKeys:{},allRowSelected:!1,allRowSelectionDisabled:!1,filterSearchToken:{},enteredSearchToken:{},saveInProgress:{}};var e=(new Date,new Date),t=new Date;1==n.config.hybrid?n.vxConfig=n.config:n.vxConfig=angular.copy(n.config),e=new Date,t=new Date;var i=_.find(n.vxConfig.columnDefConfigs,function(e){return 1==e.primary}),l="_uid";if("undefined"!=typeof i&&null!=i?(_.each(n.vxConfig.vxData,function(e,n){1!=e.fillEmptyElement&&(e[i.id]=e[i.id].toString(),e[l]=e[i.id]),e._vxCreated=(new Date).getTime()}),l=i.id):_.each(n.vxConfig.vxData,function(e,n){e[l]=n}),n.config.id=n.vxConfig.id="undefined"==typeof n.vxConfig.id?_.uniqueId("_vxUID_"):n.vxConfig.id,n.vxConfig.editRowID=n.vxConfig.id+"_edit_row",n.vxConfig.saveRowID=n.vxConfig.id+"_save_row",n.vxConfig.selectRowID=n.vxConfig.id+"_sel_row",n.vxColSettings.primaryId=l,1==n.vxConfig.inlineEditingEnabled&&1!=n.vxConfig.hybrid){var r=_.find(n.vxConfig.columnDefConfigs,function(e){return 0==e.id.localeCompare("inlinediting")});if("undefined"==typeof r||null==r||r=={}){var a={id:"inlinediting",columnName:"Edit",renderDefn:!0,renderHeadDefn:!0,ddSort:!1,ddGroup:!1,ddFilters:!1,width:"50",locked:!0,headTabIndex:-1,cellDefn:'<div class="vx-row-edit icon-container" tabindex="0" ax-key="editRow(VX_ROW_POINT)" ng-show="vxColSettings.inlineEditState[VX_ROW_POINT] == false && vxColSettings.saveInProgress[VX_ROW_POINT] != true" role="button" aria-labelledby="{{::vxConfig.editRowID}} vx_row_sel_{{::row[vxColSettings.primaryId]}}" ><i class="icon icon-edit"></i></div><div class="vx-row-edit icon-container" ax-disabled="vxConfig.invalidRows[row[vxColSettings.primaryId]]" tabindex="0" ax-key="saveRow(VX_ROW_POINT)" ng-show="vxColSettings.inlineEditState[VX_ROW_POINT] == true && vxColSettings.saveInProgress[VX_ROW_POINT] != true" role="button" aria-labelledby="{{::vxConfig.saveRowID}} vx_row_sel_{{::row[vxColSettings.primaryId]}}" ><i class="icon icon-save"></i></div><div class="vx-row-edit icon-container loader" tabindex="0" ng-show="vxColSettings.saveInProgress[VX_ROW_POINT] == true" role="button" aria-labelledby="{{::vxConfig.selectRowID}} vx_row_sel_{{::row[vxColSettings.primaryId]}}" ><img class="loader-row" src="/resource/loaderBlue30.GIF"></i></div>',inlineEditOnColumnEnabled:!1};n.vxConfig.columnDefConfigs.unshift(a)}_.each(n.vxConfig.vxData,function(e,t){var i=e[n.vxColSettings.primaryId];n.vxColSettings.inlineEditState[i]=n.config.allRowsInDefaultEdit||!1})}if(e=new Date,1==n.vxConfig.selectionEnabled){var r=_.find(n.vxConfig.columnDefConfigs,function(e){return 0==e.id.localeCompare("checkbox")});if("undefined"==typeof r||null==r||r=={}){var a={id:"checkbox",columnName:"Row Selection",columnIsRowSelect:!0,renderDefn:!0,renderHeadDefn:!0,ddSort:!1,ddGroup:!1,ddFilters:!1,width:"50",locked:!0,headTabIndex:-1,headerDefn:'<div class="vx-row-select"><input class="vx-row-select-toggle" type="checkbox" ng-disabled="vxConfig.noData == true" ng-model="vxColSettings.allRowSelected" ng-change="allRowSelectionChanged()" ng-disabled="vxColSettings.allRowSelectionDisabled" ng-if="vxConfig.allRowsSelectionEnabled" aria-label="Select All Rows "  /></div>',cellDefn:'<div class="vx-row-select"><input class="vx-row-select-toggle" type="checkbox" ng-model="vxColSettings.rowSelected[VX_ROW_POINT]" ng-change="rowSelectionChanged(row)" ng-disabled="vxColSettings.vxRowSelectionDisable[VX_ROW_POINT]" ng-attr-id="vx_row-sel_in{{::row[vxColSettings.primaryId]}}" aria-labelledby="{{::vxConfig.selectRowID}} vx_row_sel_{{::row[vxColSettings.primaryId]}}" /></div><span class="offscreen" style="visibility:collapse;" ng-attr-id="vx_row_sel_{{::row[vxColSettings.primaryId]}}">{{::row[vxConfig.ariaPrimary]}}</span>'};n.vxConfig.columnDefConfigs.unshift(a)}_.each(n.vxConfig.vxData,function(e,t){var i=e[n.vxColSettings.primaryId];n.vxColSettings.rowSelected[i]=!1,n.vxColSettings.vxRowSelectionDisable[i]=!1})}e=new Date,n.multiBoxFilters=[];var c=[{prop:"enableDropdownsInHeader",defValue:!1},{prop:"selectionEnabled",defValue:!1},{prop:"selectionAtMyRisk",defValue:!1},{prop:"preserveSelectionOnFilters",defValue:!1},{prop:"multiSelectionEnabled",defValue:!1},{prop:"showGridStats",defValue:!1},{prop:"showGridOptions",defValue:!1},{prop:"selectAllOnRenderAll",defValue:!1},{prop:"virtualization",defValue:!0},{prop:"pagination",defValue:!1},{prop:"pageLength",defValue:20},{prop:"data",defValue:[]},{prop:"vxFilteredData",defValue:[]},{prop:"xsRowTitleTemplate",defValue:'<div class="xsRowTemplate">{{row[vxColSettings.primaryId]}}</div>'},{prop:"inlineAddRowEnabled",defValue:!1},{prop:"inlineEditSyncEnabled",defValue:!1},{prop:"inlineDeletingEnabled",defValue:!1},{prop:"inlineSaveOverrideEnabled",defValue:!1},{prop:"inlineDeleteOverrideEnabled",defValue:!1},{prop:"allRowsInDefaultEdit",defValue:!1},{prop:"jsonEditorEnabled",defValue:!1},{prop:"allRowsSelectionEnabled",defValue:!1},{prop:"sortPredicate",defValue:n.vxColSettings.primaryId},{prop:"sortPredicateFn",defValue:null},{prop:"reverseSortDirection",defValue:!1},{prop:"emptyFill",defValue:"<span>No records to display ...</span>"},{prop:"caption",defValue:"sample vx grid table caption"},{prop:"loaderGifSrc",defValue:"/resource/loaderWhite36.GIF"},{prop:"ariaPrimary",defValue:n.vxColSettings.primaryId},{prop:"xsTemplate",defValue:!1},{prop:"bindOnce",defValue:!1},{prop:"hybrid",defValue:!1},{prop:"latchExcess",defValue:5}];if(_.each(c,function(e){"undefined"!==n.vxConfig[e.prop]&&null!=n.vxConfig[e.prop]&&n.vxConfig[e.prop]!={}||(n.vxConfig[e.prop]=e.defValue)}),"undefined"!=typeof n.vxConfig.sortPredicate&&null!=typeof n.vxConfig.sortPredicate&&typeof n.vxConfig.sortPredicate!={}&&("undefined"!=typeof n.vxConfig.sortPredicateFn&&null!=n.vxConfig.sortPredicateFn&&n.vxConfig.sortPredicateFn!={}||(n.vxConfig.sortPredicateFn=n.vxConfig.sortPredicate)),n.vxColSettings.vxRowClass=n.vxConfig.initialRowClasses||{},n.getWindowDimensions().w<768&&(n.vxColSettings.xsViewEnabled=n.vxConfig.xsTemplate,n.vxConfig.latchExcess=5),e=new Date,n.vxColSettings.selectAllOnRenderAll=n.vxConfig.selectAllOnRenderAll,_.each(n.vxConfig.columnDefConfigs,function(e){var t=[{prop:"renderDefn",defValue:!1},{prop:"renderHeadDefn",defValue:!1},{prop:"ddSort",defValue:!1},{prop:"ddGroup",defValue:!1},{prop:"ddFilters",defValue:!1},{prop:"ddFiltersWithSearch",defValue:!1},{prop:"dropDownEnabled",defValue:!1},{prop:"hidden",defValue:!1},{prop:"xsHidden",defValue:!1},{prop:"locked",defValue:!1},{prop:"primary",defValue:!1},{prop:"width",defValue:"200"},{prop:"headerDefn",defValue:""},{prop:"cellDefn",defValue:""},{prop:"filterCellDefn",defValue:""},{prop:"inlineEditOnColumnEnabled",defValue:!1},{prop:"inlineEditValidation",defValue:!1},{prop:"editDefn",defValue:null},{prop:"editDefnTemplate",defValue:null},{prop:"headTabIndex",defValue:0},{prop:"columnIsRowSelect",defValue:!1},{prop:"columnIsDate",defValue:!1},{prop:"columnDatePipe",defValue:"dd/MM/yyyy"},{prop:"renderHybridCellDefn",defValue:!1},{prop:"hybridCompile",defValue:!1},{prop:"filterLimit",defValue:10},{prop:"scopeIsRow",defValue:!1}];_.each(t,function(n){"undefined"!==e[n.prop]&&null!=e[n.prop]&&e[n.prop]!={}||(e[n.prop]=n.defValue)}),e.effectiveWidth=e.width,e.idCollection=[];var i=[{prop:"orderLocked",defValue:!1},{prop:"widthLocked",defValue:!1},{prop:"visbilityLocked",defValue:!1}];_.each(i,function(n){"undefined"===e[n.prop]||null==e[n.prop]||e[n.prop]=={}?e[n.prop]=e.locked:e[n.prop]=e.locked||e[n.prop]}),n.vxColSettings.reverseSettings[e.id]=!1,"undefined"!=typeof e.dropDownEnabled&&null!=e.dropDownEnabled&&1==e.dropDownEnabled&&1==n.vxConfig.enableDropdownsInHeader?n.vxColSettings.dropdDownEnabled[e.id]=!0:n.vxColSettings.dropdDownEnabled[e.id]=!1,n.vxColSettings.dropdDownLoaded[e.id]=!1,n.vxColSettings.dropdDownOpen[e.id]=!1,"undefined"!=typeof e.renderDefn&&null!=e.renderDefn&&e.renderDefn!={}&&1==e.renderDefn&&(e.cellDefn=e.cellDefn.replaceAll("VX_ROW_POINT","row[vxColSettings.primaryId]"),e.cellDefn=e.cellDefn.replaceAll("VX_DATA_POINT","row[header.id]"),e.cellDefn=e.cellDefn.replaceAll("VX_ROW","row"),e.cellDefn=e.cellDefn.replaceAll("VX_CONFIG","vxConfig")),1==e.inlineEditOnColumnEnabled&&1!=n.vxConfig.hybrid&&(""!=e.editDefn&&null!=e.editDefn||(e.editDefn='<input class="vx-edit-input form-control" ng-model="VX_DATA_POINT" />'),e.editDefn=e.editDefn.replaceAll("VX_ROW_POINT","row[vxColSettings.primaryId]"),e.editDefn=e.editDefn.replaceAll("VX_DATA_POINT","row[header.id]"),e.editDefn=e.editDefn.replaceAll("VX_ROW","row"),e.editDefn=e.editDefn.replaceAll("VX_CONFIG","vxConfig"),n.vxColSettings.colWithInlineEdits.push(e.id),e.editDefn.indexOf("vx-keep-watch")!=-1&&(e.editDefn=e.editDefn.replaceAll("vx-keep-watch",'vx-keep-watch-row-id="{{row[vxColSettings.primaryId]}}" vx-keep-watch-field="'+e.id+'" vx-keep-watch')),1==e.inlineEditValidation&&(n.vxConfig.invalidRows={},n.vxConfig.invalidRowFields={},_.each(n.vxConfig.vxData,function(e,t){var i=e[n.vxColSettings.primaryId];n.vxConfig.invalidRows[i]=!1,n.vxConfig.invalidRowFields[i]={}}),e.editDefn=e.editDefn.replaceAll("VX_INVALID_ROW","vxConfig.invalidRows[row[vxColSettings.primaryId]] == true"),e.editDefn=e.editDefn.replaceAll("VX_INVALID_FIELD_ROW","vxConfig.invalidRowFields[row[vxColSettings.primaryId]]."+e.id+" == true")))}),e=new Date,n.vxConfig.columnDefConfigs=n.calculateEffectiveWidths(n.vxConfig.columnDefConfigs),"undefined"!=typeof n.vxConfig.multiSelectionDependentCol&&null!=n.vxConfig.multiSelectionDependentCol&&n.vxConfig.multiSelectionDependentCol!={}&&""!=n.vxConfig.multiSelectionDependentCol&&(n.vxColSettings.multiSelColDependent=!0),"undefined"!=typeof n.vxConfig.xsRowTitleTemplate&&null!=n.vxConfig.xsRowTitleTemplate&&n.vxConfig.xsRowTitleTemplate!={}&&""!=n.vxConfig.xsRowTitleTemplate&&(n.vxColSettings.xsRowTitleTemplateAvailable=!0),1==n.vxConfig.inlineAddRowEnabled&&1!=n.vxConfig.hybrid&&("undefined"==typeof n.vxConfig.newRowTemplate||null==n.vxConfig.newRowTemplate||n.vxConfig.newRowTemplate=={}||""==n.vxConfig.newRowTemplate)){var v=angular.copy(n.vxConfig.data[0]);_.each(n.vxConfig.columnDefConfigs,function(e){switch(typeof n.vxConfig.newRowTemplate[e.id]){case"boolean":n.vxConfig.newRowTemplate[e.id]=!1;break;case"number":n.vxConfig.newRowTemplate[e.id]=0;break;case"string":n.vxConfig.newRowTemplate[e.id]="";break;default:n.vxConfig.newRowTemplate[e.id]=null}}),n.vxConfig.newRowTemplate=v}n.$watch("getWindowDimensions()",function(e,t){n.vxColSettings.xsViewEnabled=!1,n.vxConfig.columnDefConfigs=n.calculateEffectiveWidths(n.vxConfig.columnDefConfigs)},!0);C.bind("resize",function(){n.$apply()}),n.config.getVxCounts=function(){if("undefined"!=typeof n.vxConfig&&null!=n.vxConfig&&n.vxConfig!={}&&"undefined"!==n.vxConfig.id&&null!=n.vxConfig.id&&n.vxConfig.id!={}){var e={id:n.vxConfig.id,data:{vxAllDataLength:n.getAllRowLength(),vxFilteredDataLength:n.multiBoxFilters.length>0?1!=n.vxConfig.hybrid?n.vxConfig.vxFilteredData.length:n.vxConfig.vxData.length:0,vxSelectedDataLength:n.vxColSettings.multiSelected.length}};return e}},n.config.getAppliedFilters=function(){if("undefined"!=typeof n.vxConfig&&null!=n.vxConfig&&n.vxConfig!={}&&"undefined"!==n.vxConfig.id&&null!=n.vxConfig.id&&n.vxConfig.id!={}){var e=_.map(n.multiBoxFilters,function(e){return{column:e.col,label:e.label,key:e.key}});return e}},n.config.getData=function(){return n.vxConfig.data},n.config.getActiveDataSet=function(){return n.vxConfig.vxData},n.config.getFilteredDataSet=function(){return n.vxConfig.vxFilteredData},n.config.setRowFieldValidation=function(e,t,i){if("undefined"==typeof n.vxConfig.invalidRowFields[e]&&(n.vxConfig.invalidRows[e]=!1,n.vxConfig.invalidRowFields[e]={}),1==n.vxConfig.inlineEditSyncEnabled){var o=_.filter(n.vxColSettings.multiSelected,function(n){return 0==n.localeCompare(e)});"undefined"!=typeof o&&null!=o&&o.length>0&&_.each(n.vxColSettings.multiSelected,function(e){n.vxConfig.invalidRows[e]=!i,n.vxConfig.invalidRowFields[e][t]=!i})}n.vxConfig.invalidRows[e]=!i,n.vxConfig.invalidRowFields[e][t]=!i},n.config.getSelectedRows=function(){if(1==n.vxConfig.selectionAtMyRisk){n.vxColSettings.multiSelected=[];for(var e in n.vxColSettings.rowSelected)1==n.vxColSettings.rowSelected[e]&&"undefined"!=typeof e&&"undefined"!=e.toString()&&n.vxColSettings.multiSelected.push(e)}return n.vxColSettings.multiSelected},n.config.getRowsBeingEdited=function(){var e=[];if("undefined"!=typeof n.vxColSettings.inlineEditState&&null!=n.vxColSettings.inlineEditState)for(var t in n.vxColSettings.inlineEditState)1==n.vxColSettings.inlineEditState[t]&&e.push(t);return e},n.config.modifyRows=function(e,t){var i=[];return _.each(e,function(e){var o=e[n.vxColSettings.primaryId],l=_.find(n.vxConfig.vxData,function(e){return 0==e[n.vxColSettings.primaryId].localeCompare(o)}),r=_.find(n.vxConfig.data,function(e){return 0==e[n.vxColSettings.primaryId].localeCompare(o)});if("undefined"!=typeof l&&"undefined"!=typeof r){if("undefined"==typeof t||0==t.length)for(var d in e)0!=d.localeCompare(n.vxColSettings.primaryId)&&(l[d]=e[d],r[d]=e[d]);else t.length>0&&_.each(t,function(n){l[n]=e[n],r[n]=e[n]});i.push(r),1==n.vxConfig.hybrid&&n.hybridUpdateRows(i)}}),i},n.config.selectRows=function(e){var t=[];return _.each(e,function(e){var i=n.vxColSettings.rowSelected[e];if(("undefined"==typeof i||null==i||0==i)&&(n.vxColSettings.rowSelected[e]=!0,n.vxColSettings.multiSelected.push(e),t.push(e),1==n.vxConfig.hybrid)){var o=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof o&&null!=o&&o.length>0&&$(o).prop("checked",!0);var l=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof l&&null!=l&&l.length>0&&$(l).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}}),t},n.config.deselectRows=function(e){var t=[];return _.each(e,function(e){var i=n.vxColSettings.rowSelected[e];if("undefined"!=typeof i&&1==i){if(n.vxColSettings.rowSelected[e]=!1,n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(n){0==e.localeCompare(n)}),t.push(e),1==n.vxConfig.hybrid){var o=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof o&&null!=o&&o.length>0&&$(o).prop("checked",!1)}if(1==n.vxConfig.hybrid){var l=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof l&&null!=l&&l.length>0&&$(l).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}}}),t},n.config.sortByColumn=function(e,t){var i=_.find(n.vxConfig.columnDefConfigs,function(n){return 0==n.id.localeCompare(e)});"undefined"!=typeof i&&null!=i&&(n.vxConfig.sortPredicate=i.id,i.customSortEnabled?n.vxConfig.sortPredicateFn=i.customSortFn:n.vxConfig.sortPredicateFn=i.id,n.vxConfig.reverseSortDirection=t)},n.config.resetColumnFilters=function(e){_.each(e,function(e){n.vxColSettings.dropdDownLoaded[e]=!1,n.vxColSettings.colFilterPairs[e]={}})},n.config.removeRows=function(e){0==n.vxConfig.hybrid?(n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(t){return 1==_.contains(e,t[n.vxColSettings.primaryId])}),n.vxColSettings.multiSelected=_.difference(n.vxColSettings.multiSelected,e)):1==n.vxConfig.hybrid&&n.config.hybridDeleteRows(e)},n.buildFns(),n.config.changeRowClass=n.changeRowClass,n.$emit("vxGridSettingsBuilt",{id:n.vxConfig.id}),e=new Date;var p=null,S=null,m=48,h=n.vxConfig.latchExcess,y=0,w=!1,D=0;n.config.hybridDeleteRows=function(e){window.requestAnimFrame(function(){angular.forEach(e,function(e){var t=angular.element(document.getElementById(e));t.remove(),n.vxColSettings.inlineEditState[e]=!1,n.vxColSettings.rowSelected[e]=!1,n.vxColSettings.saveInProgress[e]=!1}),n._origData=_.reject(n._origData,function(t){return 1==_.contains(e,t[n.vxColSettings.primaryId])}),n.vxConfig.vxFilteredData=_.reject(n.vxConfig.vxFilteredData,function(t){return 1==_.contains(e,t[n.vxColSettings.primaryId])}),n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(t){return 1==_.contains(e,t[n.vxColSettings.primaryId])}),n.vxColSettings.multiSelected=_.difference(n.vxColSettings.multiSelected,e);var t=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2)),n.$$phase||n.$apply()})},n.hybridUpdateRows=function(e){angular.forEach(e,function(e){var t=n.hybridGetRowTmpl(e),i=angular.element(document.getElementById(t.rowId));i.empty(),i.replaceWith(t.rowTmpl),t.compile&&f(i.contents())(n)})},n.resetHybridGrid=function(){y=0,w=!1,D=0,n.prepHybrid()},n.prepHybrid=function(){p=angular.element(document.getElementById("_vxHybrid"+n.vxConfig.id)),S=angular.element(document.getElementById("_vxScrollContainer"+n.vxConfig.id)),p.empty();var e=S.height(),t=Math.ceil(e/m)+h,i=_.first(n.vxConfig.vxFilteredData,t);n.appendRows(i),y+=t,u(),S.on("scroll",function(){n.debPep()})},n.prepForScrollInsertion=function(){var e=p.height()-(S.height()+S.scrollTop());if(S.scrollTop()>D){if(e<0&&(e=0),e<m&&y<n.vxConfig.vxFilteredData.length){var t=h,i=_.rest(n.vxConfig.vxFilteredData,y),o=_.first(i,t);y+=t,n.appendRows(o),S.scrollTo(0,S.scrollTop()-48)}s()}else g();D=S.scrollTop()},n.debPep=_.debounce(n.prepForScrollInsertion,10),n.compileAppend=function(e,t,i){if(p&&p.append(e),i){var o=angular.element(document.getElementById(t));f(o.contents())(n)}},n.hybridGetRowTmpl=function(e){var t='<tr id="VX_ROW_ID" class="vxBodyRow vs-repeat-repeated-element VX_ROW_CLASSES ">VX_ALL_CELLS</tr>',i='<td class="vxBodyRowCell VX_TD_CLASS" scope="VX_CELL_SCOPE">VX_CELL_CONTENT</td>',o='<td colspan="VX_NON_HIDDEN_COL_LEN" style="padding-left:15px;"><span>VX_EMPTYFILL</span></td>',l='<span title="VX_CELL_TMPL">VX_CELL_TMPL</span>',r='<div class="vx-row-select"><input class="vx-row-select-toggle" rowid="VX_ROW_ID" type="checkbox" VX_ROW_SEL_VAL id="vx_row-sel_in_VX_ROW_ID" aria-labelledby="vx_row_sel_VX_ROW_ID" /><span class="offscreen" style="visibility:collapse;" id="vx_row_sel_VX_ROW_ID">Select row VX_ROW_ID</span></div>',a="",f="",c=e[n.vxColSettings.primaryId],v=!1;if(1!=n.config.noData)angular.forEach(n.vxConfig.columnDefConfigs,function(t){var o="",f=i,u="";if(1!=t.hidden){if(1!=t.renderHybridCellDefn&&1!=t.columnIsRowSelect&&1!=t.columnIsDate){var s="undefined"!=typeof e[t.id]&&null!=e[t.id]?e[t.id]:"";o=l,o=o.replaceAll("VX_CELL_TMPL",s)}else if(1!=t.renderHybridCellDefn&&1==t.columnIsDate){var s="undefined"!=typeof e[t.id]&&null!=e[t.id]?e[t.id]:null,g=d("date")(s,t.columnDatePipe);o=l,o=o.replaceAll("VX_CELL_TMPL","undefined"==typeof g||null==g?"":g)}else if(1!=t.renderHybridCellDefn&&1==t.columnIsRowSelect){var s="undefined"!=typeof e[t.id]&&null!=e[t.id]?e[t.id]:null,x=n.vxColSettings.rowSelected[c]||!1;o=r,o=o.replaceAll("VX_ROW_ID",c),o=o.replace("VX_ROW_SEL_VAL",1==x?"checked":"")}else 1==t.renderHybridCellDefn&&"function"==typeof n.vxConfig.hybridCellDefn&&(o=n.vxConfig.hybridCellDefn(e,t)||"",v=v||t.hybridCompile);f=1==t.scopeIsRow?f.replace("VX_CELL_SCOPE","row"):f.replace("VX_CELL_SCOPE",""),f=f.replace("VX_TD_CLASS",u),f=f.replace("VX_CELL_CONTENT",o),a+=f}});else{var u=n.getNonHiddenColCount();o=o.replace("VX_NON_HIDDEN_COL_LEN",u),o=o.replace("VX_EMPTYFILL",n.vxConfig.emptyFill),a=o}return"function"==typeof n.vxConfig.hybridCellDefn&&(f+=n.vxConfig.rowClassFn(e)),f=f+" "+("undefined"!=typeof n.vxColSettings.vxRowClass[c]?n.vxColSettings.vxRowClass[c]:""),f=f.trim(),t=t.replace("VX_ROW_CLASSES",f),t=t.replace("VX_ROW_ID",c),t=t.replaceAll("VX_ALL_CELLS",a),{rowTmpl:t,rowId:c,compile:v}},n.appendRows=function(e){if(angular.forEach(e,function(e){var t=n.hybridGetRowTmpl(e);n.compileAppend(t.rowTmpl,t.rowId,t.compile)}),1==n.vxConfig.selectionEnabled){var t=document.getElementsByClassName("vx-row-select-toggle");_.each(t,function(e){var t=angular.element(e);t.on("click",function(e){var t=$(e.target).attr("rowid");if("undefined"!=typeof t){var i=$(e.target).prop("checked");n.vxColSettings.rowSelected[t]=i;var o={key:t,value:n.vxColSettings.rowSelected[t],_pKey:t};if(1==n.vxConfig.selectionAtMyRisk){if(1==i){var l=_.find(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(t)});"undefined"!=typeof l&&null!=l||n.vxColSettings.multiSelected.push(t)}else 0==i&&(n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(t)}),n.vxColSettings.allRowSelected=!1);var r=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof r&&null!=r&&r.length>0&&$(r).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2)),"function"==typeof n.config.rowSelectionCallback&&n.config.rowSelectionCallback(o)}else n.rowSelectionChanged(t)}})})}},e=new Date,1==n.vxConfig.hybrid&&(e=new Date,"undefined"!=typeof n.vxConfig.sortPredicateFn&&null!=n.vxConfig.sortPredicateFn&&n.vxConfig.sortPredicateFn!={}?n.vxConfig.vxFilteredData=_.sortBy(n.vxConfig.vxData,n.vxConfig.sortPredicateFn)||[]:n.vxConfig.vxFilteredData=n.vxConfig.vxData||[],o(n.prepHybrid,100))},n.editRow=function(e){if(1==n.vxConfig.inlineEditSyncEnabled&&n.vxColSettings.multiSelected.length>0){var t=_.filter(n.vxColSettings.multiSelected,function(n){return 0==n.localeCompare(e)});"undefined"!=typeof t&&null!=t&&t.length>0&&_.each(n.vxColSettings.multiSelected,function(e){n.vxColSettings.inlineEditState[e]=!0})}n.vxColSettings.inlineEditState[e]=!0},n.editInProgressCount=function(){var e=0;if("undefined"!=typeof n.vxColSettings.inlineEditState&&null!=n.vxColSettings.inlineEditState)for(var t in n.vxColSettings.inlineEditState)e=1==n.vxColSettings.inlineEditState[t]?e+1:e;return e},n.$on("vxInlineEditFieldChange",function(e,t){if(1==n.vxConfig.inlineEditSyncEnabled){var i=_.filter(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(t.rowId)});"undefined"!=typeof i&&null!=i&&i.length>0&&_.each(n.vxColSettings.multiSelected,function(e){var i=_.find(n.vxConfig.vxData,function(t){return t[n.vxColSettings.primaryId]==e});"undefined"!=typeof i&&null!=i&&1==n.vxColSettings.inlineEditState[e]&&(i[t.field]=t.value)})}}),n.savingRows=function(e){var t=_.find(n.vxConfig.vxData,function(t){return t[n.vxColSettings.primaryId]==e});if("undefined"!=typeof t&&1==t.newRow)if(1==n.vxConfig.inlineSaveOverrideEnabled){n.vxColSettings.saveInProgress[e]=!0;var i=a.defer();i.promise.then(function(i){"undefined"!=typeof t.row&&1==i.save?(t.newRow=!1,_.each(n.vxConfig.columnDefConfigs,function(e){t[e.id]=i.row[e.id]})):n.vxConfig.data.unshift(t),n.vxColSettings.inlineEditState[e]="undefined"==typeof i.save||null==i.save||1!=i.save,n.$emit("vxGridRowSave",{id:n.vxConfig.id,data:t,save:!n.vxColSettings.inlineEditState[e]}),n.vxColSettings.saveInProgress[e]=!1},function(i){n.vxColSettings.saveInProgress[e]=!1,n.vxColSettings.inlineEditState[e]=!0,t.newRow=!0}),i.resolve(n.config.fnInlineSaveOverride(t,null))}else"undefined"!=typeof o?_.each(n.vxConfig.columnDefConfigs,function(e){o[e.id]=t[e.id]}):n.vxConfig.data.unshift(t),n.vxColSettings.inlineEditState[e]=!1,n.$emit("vxGridRowSaved",{id:n.vxConfig.id,data:t});else{var o=_.find(n.vxConfig.data,function(t){return t[n.vxColSettings.primaryId]==e});if("undefined"!=typeof t&&"undefined"!=typeof o&&1==n.vxConfig.inlineSaveOverrideEnabled){n.vxColSettings.saveInProgress[e]=!0;var i=a.defer();i.promise.then(function(i){"undefined"!=typeof i.row&&1==i.save&&_.each(n.vxColSettings.colWithInlineEdits,function(e){o[e]=i.row[e]}),n.vxColSettings.inlineEditState[e]="undefined"==typeof i.save||null==i.save||1!=i.save,n.$emit("vxGridRowSave",{id:n.vxConfig.id,data:t,save:!n.vxColSettings.inlineEditState[e]}),n.vxColSettings.saveInProgress[e]=!1},function(t){n.vxColSettings.saveInProgress[e]=!1,n.vxColSettings.inlineEditState[e]=!0}),i.resolve(n.config.fnInlineSaveOverride(t,o))}}},n.saveRow=function(e){var t=!1;if(1==n.vxConfig.inlineEditSyncEnabled){var i=_.filter(n.vxColSettings.multiSelected,function(n){return 0==n.localeCompare(e)});"undefined"!=typeof i&&null!=i&&i.length>0&&_.each(n.vxColSettings.multiSelected,function(e){n.savingRows(e),t=!0})}t||n.savingRows(e)},n.revertEdits=function(){if("undefined"!=typeof n.vxColSettings.multiSelected&&null!=n.vxColSettings.multiSelected&n.vxColSettings.multiSelected.length>0&&(_.each(n.vxColSettings.multiSelected,function(e){if(n.revertEditForRow(e),n.vxColSettings.rowSelected[e]=!1,1==n.vxConfig.hybrid){var t=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).prop("checked",!1)}}),n.vxColSettings.multiSelected=[],1==n.vxConfig.hybrid)){var e=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof e&&null!=e&&e.length>0&&$(e).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}},n.revertEditForRow=function(e){var t=_.find(n.vxConfig.vxData,function(t){return t[n.vxColSettings.primaryId]==e});if("undefined"!=typeof t&&1==t.newRow){if(n.vxColSettings.inlineEditState[e]=!1,n.vxColSettings.rowSelected[e]=!1,1==n.vxConfig.hybrid){var i=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof i&&null!=i&&i.length>0&&$(i).prop("checked",!1)}if(n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(n){0==e.localeCompare(n)}),n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(t){return 0==t[n.vxColSettings.primaryId].localeCompare(e)}),n.$emit("vxGridRowEditRevert",{id:n.vxConfig.id,data:t}),1==n.vxConfig.hybrid){var o=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof o&&null!=o&&o.length>0&&$(o).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}}else{var l=_.find(n.vxConfig.data,function(t){return t[n.vxColSettings.primaryId]==e});if("undefined"!=typeof t&&"undefined"!=typeof l){if(_.each(n.vxColSettings.colWithInlineEdits,function(e){t[e]=l[e]}),n.vxColSettings.inlineEditState[e]=!1,n.vxColSettings.rowSelected[e]=!1,1==n.vxConfig.hybrid){var i=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof i&&null!=i&&i.length>0&&$(i).prop("checked",!1)}if(n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(n){0==e.localeCompare(n)}),n.$emit("vxGridRowEditRevert",{id:n.vxConfig.id,data:l}),1==n.vxConfig.hybrid){var o=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof o&&null!=o&&o.length>0&&$(o).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}}}},n.addNewRow=function(){n.vxConfig.sortPredicate="_vxCreated",n.vxConfig.sortPredicateFn="_vxCreated",n.vxConfig.reverseSortDirection=!0;var t=angular.copy(n.vxConfig.newRowTemplate),i=e();t[n.vxColSettings.primaryId]=i,t.newRow=!0,t._vxCreated=(new Date).getTime(),n.vxColSettings.inlineEditState[i]=!0,n.vxConfig.vxData.unshift(t)},n.deleteRows=function(){if("undefined"!=typeof n.vxColSettings.multiSelected&&null!=n.vxColSettings.multiSelected&n.vxColSettings.multiSelected.length>0)if(1==n.vxConfig.inlineDeleteOverrideEnabled){_.each(n.vxColSettings.multiSelected,function(e){n.vxColSettings.saveInProgress[e]=!0});var e=a.defer(),t=angular.copy(_.filter(n.vxConfig.vxData,function(e){return 1==_.contains(n.vxColSettings.multiSelected,e[n.vxColSettings.primaryId])}));e.promise.then(function(e){if(e.rows.length>0){var t=_.map(e.rows,function(e){return e[n.vxColSettings.primaryId]});if(n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(e){return 1==_.contains(t,e[n.vxColSettings.primaryId])}),n.$emit("vxGridRowsDeleted",{id:n.vxConfig.id,data:t}),_.each(t,function(e){n.vxColSettings.inlineEditState[e]=!1,n.vxColSettings.rowSelected[e]=!1,n.vxColSettings.saveInProgress[e]=!1}),n.vxColSettings.multiSelected=_.difference(n.vxColSettings.multiSelected,t),1==n.vxConfig.hybrid){var i=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof i&&null!=i&&i.length>0&&$(i).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}}},function(e){}).then(function(){_.each(n.vxColSettings.multiSelected,function(e){n.vxColSettings.saveInProgress[e]=!1})}),e.resolve(n.config.fnInlineDeleteOverride(t))}else if(n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(e){return 1==_.contains(n.vxColSettings.multiSelected,e[n.vxColSettings.primaryId])}),n.$emit("vxGridRowsDeleted",{id:n.vxConfig.id,data:n.vxColSettings.multiSelected}),_.each(n.vxColSettings.multiSelected,function(e){n.vxColSettings.inlineEditState[e]=!1,n.vxColSettings.rowSelected[e]=!1}),n.vxColSettings.multiSelected=[],1==n.vxConfig.hybrid){var i=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof i&&null!=i&&i.length>0&&$(i).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}},n.activatePage=function(e){n.vxColSettings.activePage=e,n.vxColSettings.vxPageStartPosition=e>0?e*n.vxConfig.pageLength:0,n.vxColSettings.allRowSelected=!1},n.debouncedSearch=_.debounce(function(){n.vxColSettings.xsSearch=angular.copy(n.vxColSettings.searchToken)},50),n.keyUpSearch=function(e){
  13==e.keyCode?n.vxColSettings.xsSearch=angular.copy(n.vxColSettings.searchToken):8==e.keyCode&&""==n.vxColSettings.searchToken&&(n.vxColSettings.xsSearch=angular.copy(n.vxColSettings.searchToken))},n.filtTokenChange=function(e){n.vxColSettings.filterSearchToken[e]=n.vxColSettings.enteredSearchToken[e],_.each(n.vxConfig.columnDefConfigs,function(n){n.id==e&&(n.filterLimit=10,x[e]=0)})},n.debFiltTokenChange=_.debounce(n.filtTokenChange,10),n.filterTokenChnagedRapid=function(e){""==n.vxColSettings.enteredSearchToken[e]?(_.each(n.vxConfig.columnDefConfigs,function(n){n.id==e&&(n.filterLimit=10,x[e]=0)}),n.vxColSettings.filterSearchToken[e]=""):n.debFiltTokenChange(e)},n.filterAssignVar=function(e){var t=angular.element(document.getElementById(e+"_searchfilters_"+n.vxConfig.id));"undefined"!=typeof t&&t.length>0&&(n.vxColSettings.filterSearchToken[e]=t[0].value,_.each(n.vxConfig.columnDefConfigs,function(n){n.id==e&&(n.filterLimit=10,x[e]=0)}))},n.isValidHeaderName=function(e,n){return 0==e.renderHeadDefn&&"undefined"!=typeof n&&null!=n&&""!=n},n.headerClick=function(e,t){var i=!0,l=$(t.target);if("undefined"!=typeof l&&null!=l&l.length>0){var r=l.closest("ul.dropdown-menu");"undefined"!=typeof r&&null!=r&r.length>0&&(i=!1)}if(0!=i){var d=n.selfEle.find(".vxTableScrollContainer"),a=(n.selfEle.find(".vxHeadRowCell .dropdown ul.dropdown-menu"),n.getWindowDimensions().h/2);_.each(n.selfEle.find(".vxHeadRowCell .dropdown ul.dropdown-menu"),function(e){var n=Math.min(Math.floor(d.height())-48,a);$(e).css("max-height",n+"px")}),_.each(n.vxConfig.columnDefConfigs,function(t){0!=t.id.localeCompare(e.id)&&(n.vxColSettings.dropdDownOpen[t.id]=!1)});var f=_.find(n.vxConfig.columnDefConfigs,function(n){return 0==n.id.localeCompare(e.id)});if("undefined"!=typeof f&&null!=f)if(0==n.vxColSettings.dropdDownEnabled[f.id])n.sortClick(e);else{n.vxColSettings.dropdDownLoaded[f.id]=!1,n.vxColSettings.dropdDownOpen[f.id]=!n.vxColSettings.dropdDownOpen[f.id];var c=_.filter(n.multiBoxFilters,function(e){return 0!=e.col.localeCompare(f.id)}),u=c.length>0,s=!1;"undefined"!=typeof n.vxColSettings.colFilterPairs[f.id]&&null!=n.vxColSettings.colFilterPairs[f.id]&&n.vxColSettings.colFilterPairs[f.id]!={}&&n.vxColSettings.colFilterPairs[f.id].length>0&&(s=!0),0==u&&1==s?(n.vxColSettings.dropdDownLoaded[f.id]=!0,_.each(n.vxColSettings.colFilterPairs[f.id],function(e){e.disabled=!1})):o(function(){if(f.idCollection=[],1==f.ddSort&&(n.vxColSettings.dropDownSort[f.id]=!0,f.idCollection.push(n.vxConfig.id+"_"+f.id+"_sort")),1==f.ddGroup&&1!=n.vxConfig.hybrid&&(n.vxColSettings.dropDownGroup[f.id]=!0,f.idCollection.push(n.vxConfig.id+"_"+f.id+"_group"),f.idCollection.push(n.vxConfig.id+"_"+f.id+"_ungroup")),1==f.ddFilters){if(f.idCollection.push(n.vxConfig.id+"_"+f.id+"_clearfilters"),f.idCollection.push(f.id+"_searchfilters_"+n.vxConfig.id),f.idCollection.push(f.id+"_invokesearchfilters_"+n.vxConfig.id),0==s){n.vxColSettings.dropDownFilters[f.id]=!0,n.vxColSettings.colFilterPairs[f.id]=[];var t=[],i=_.uniq(_.map(n.vxConfig.vxData,function(e){var n={value:e[f.id],type:""};return"undefined"!=typeof n.value&&null!=n.value&&n.value!={}&&"object"!=typeof n.value&&"number"!=typeof n.value&&"boolean"!=typeof n.value?n.value=n.value.trim():"boolean"==typeof n.value?n.value=n.value.toString().trim():"[object Date]"===Object.prototype.toString.call(n.value)&&(n.value=n.value.getTime(),n.type="date"),n}),function(e){return e.value});i=_.reject(i,function(e){return"undefined"==typeof e.value||e.value=={}}),_.each(i.sort(),function(e,i){var o=v(e,f.id,"col"),l=o.key,r=o.type,d=""===e.value||" "===e.value?"< blank >":e.value;d=null==e.value?" < null >":d;var a={key:l,label:e.value,name:d,col:f.id,type:r,disabled:!1,action:"filter"};"undefined"!=typeof f.filterCellDefn&&null!=f.filterCellDefn&&f.filterCellDefn!={}&&""!=f.filterCellDefn?(a.filterDefn=f.filterCellDefn.replaceAll("VX_DATA_POINT","filter.name"),a.filterDefnAvailable=!0):a.filterDefnAvailable=!1,t.push(a),f.idCollection.push(n.vxConfig.id+"_"+f.id+"_filter_"+i),n.vxColSettings.colFiltersStatus[l]=!1}),t=_.sortBy(t,"label"),_.each(t,function(e){n.vxColSettings.colFilterPairs[f.id].push(e)}),n.vxColSettings.filterSearchToken[f.id]="",n.vxColSettings.colFiltersActivated[f.id]=!1}else{var i=_.uniq(_.map(n.vxConfig.vxFilteredData,function(e){return"[object Date]"===Object.prototype.toString.call(e[f.id])?e[f.id].getTime():"[object Boolean]"===Object.prototype.toString.call(e[f.id])?e[f.id].toString():e[f.id]}));_.each(n.vxColSettings.colFilterPairs[f.id],function(e){1!=_.contains(i,e.label)?e.disabled=!0:e.disabled=!1})}if(1==u){var o=_.last(n.multiBoxFilters),i=_.uniq(_.map(n.vxConfig.vxFilteredData,function(e){return"[object Date]"===Object.prototype.toString.call(e[f.id])?e[f.id].getTime():"[object Boolean]"===Object.prototype.toString.call(e[f.id])?e[f.id].toString():e[f.id]}));0!=o.col.localeCompare(f.id)&&_.each(n.vxColSettings.colFilterPairs[f.id],function(e){1!=_.contains(i,e.label)?e.disabled=!0:e.disabled=!1})}x[f.id]=0,e.filterLimit=10;var l=angular.element(document.getElementById(n.vxConfig.id+"-dropdwon-menu-"+f.id));l.on("scroll",function(e){var t=f.id,i=$(e.target).scrollTop();i>x[t]&&(n.debouncedIncrementFilter(t),x[t]=i)})}n.vxColSettings.dropdDownLoaded[f.id]=!0},500)}}},n.debouncedIncrementFilter=_.throttle(c,500),n.sortClick=function(e){var t=_.find(n.vxConfig.columnDefConfigs,function(n){return 0==n.id.localeCompare(e.id)});"undefined"!=typeof t&&null!=t&&t.ddSort&&(0!=n.vxConfig.sortPredicate.localeCompare(t.id)&&(n.vxConfig.sortPredicate=t.id,t.customSortEnabled?n.vxConfig.sortPredicateFn=t.customSortFn:n.vxConfig.sortPredicateFn=t.id),n.vxColSettings.reverseSettings[t.id]=!n.vxColSettings.reverseSettings[t.id],n.vxConfig.reverseSortDirection=n.vxColSettings.reverseSettings[t.id],1==n.vxConfig.hybrid&&(n.vxConfig.vxFilteredData=_.sortBy(n.vxConfig.vxFilteredData,n.vxConfig.sortPredicateFn),1==n.vxConfig.reverseSortDirection&&n.vxConfig.vxFilteredData.reverse(),n.resetHybridGrid()))},n.getVisibleHeaderCounts=function(){return _.filter(n.vxConfig.columnDefConfigs,function(e){return 1!=e.hidden}).length},n.groupClick=function(e){if(n.clearFilters(),1!=n.vxColSettings.groupByColActivated[e.id]){n.vxConfig.sortPredicate=null;var t=[],i=e.id,o=e.columnName,l=_.uniq(_.pluck(n.vxConfig.vxData,i)),r=_.groupBy(_.sortBy(n.vxConfig.vxData,i),i);n.vxColSettings.groupKeys[i]=[],_.each(l,function(e){var l=v(e,i,"groupcol").key;if(n.vxColSettings.groupKeys[i].push(l),r[e].length>0){n.vxColSettings.groupPredicate[l]=!1;var d={type:"groupRow",colName:o,col:i,value:e,groupId:l,cellDefn:'<div class="vx-row-select"><input class="vx-row-select-toggle" type="checkbox" ng-model="VX_ROW_POINT" ng-change="groupSelectionChanged(row)" /></div>'};d.cellDefn=d.cellDefn.replaceAll("VX_ROW_POINT","vxColSettings.groupPredicate[row.groupId]"),t.push(d),t=_.union(t,r[e])}}),n.vxConfig.vxData=t,n.vxColSettings.groupByColActivated[e.id]=!0}},n.unGroupClick=function(e){if(n.clearFilters(),1==n.vxColSettings.groupByColActivated[e.id]){var t=_.find(n.vxConfig.columnDefConfigs,function(n){return 0==n.id.localeCompare(e.id)});"undefined"!=typeof t&&null!=t&&(n.vxConfig.sortPredicate=t.id,t.customSortEnabled?n.vxConfig.sortPredicateFn=t.customSortFn:n.vxConfig.sortPredicateFn=t.id),n.vxConfig.vxData=_.reject(n.vxConfig.vxData,function(e){return"undefined"!=typeof e.type&&null!=e.type&&0==e.type.localeCompare("groupRow")}),n.vxColSettings.groupByColActivated[e.id]=!1}},n.getAllRowLength=function(){if(n.config.noData)return 0;if(1==n.vxConfig.hybrid)return n._origData.length;var e=_.filter(n.vxConfig.vxData,function(e){return"undefined"==typeof e.type||null==e.type||0!=e.type.localeCompare("groupRow")||1==e.fillEmptyElement}).length;return e},n.removeGroupings=function(){_.each(n.vxConfig.columnDefConfigs,function(e){n.unGroupClick(e)}),n.vxColSettings.groupPredicate={}},n.groupSelectionChanged=function(e){n.emitArray=[];var t=n.vxColSettings.groupPredicate[e.groupId],i=_.filter(n.vxConfig.vxFilteredData,function(n){return"groupRow"!=n.type&&0==n[e.col].localeCompare(e.value)});if(_.each(i,function(e){if(0==n.vxColSettings.multiSelColDependent||1==n.vxColSettings.multiSelColDependent&&0==e[n.vxConfig.multiSelectionDependentCol]){var i=e[n.vxColSettings.primaryId];if(n.vxColSettings.rowSelected[i]!=t){n.vxColSettings.rowSelected[i]=t;({key:e[n.vxConfig.onSelectionReturnCol],value:n.vxColSettings.rowSelected[i],_pKey:i});n.emitArray.push(i),t?n.vxColSettings.multiSelected.push(i):n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(i)})}}}),1==n.vxConfig.hybrid){var o=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof o&&null!=o&&o.length>0&&$(o).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}n.$emit("vxGridRwSelectionChange",{id:n.vxConfig.id,data:n.emitArray})},n.allRowSelectionChanged=function(){var e=n.vxColSettings.allRowSelected;if(1==e){if(_.each(n.vxConfig.vxFilteredData,function(t,i){var o=!0;if(1==n.vxConfig.pagination&&0==n.vxConfig.virtualization&&(i>=n.vxColSettings.vxPageStartPosition&&i<n.vxColSettings.vxPageStartPosition+n.vxConfig.pageLength||(o=!1)),1!=t.fillEmptyElement&&o){var l=t[n.vxColSettings.primaryId];if(0==n.vxColSettings.rowSelected[l]&&1==e&&(n.vxColSettings.rowSelected[l]=!0,n.vxColSettings.multiSelected.push(l),1==n.vxConfig.hybrid)){var r=angular.element(document.getElementById("vx_row-sel_in_"+l));"undefined"!=typeof r&&null!=r&&r.length>0&&$(r).prop("checked",!0)}}}),_.each(n.vxConfig.columnDefConfigs,function(e){1==n.vxColSettings.dropDownGroup[e.id]&&1==n.vxColSettings.groupByColActivated[e.id]&&_.each(n.vxColSettings.groupKeys[e.id],function(e){n.vxColSettings.groupPredicate[e]=!0})}),n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(e){return"undefined"==typeof e||null==e||e=={}}),1==n.vxConfig.hybrid){var t=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}n.$emit("vxGridRowAllSelectionChange",{id:n.vxConfig.id,data:{toggledTo:e,array:n.vxColSettings.multiSelected}})}else 0==e&&(n.clearSelection(),n.$emit("vxGridRowAllSelectionChange",{id:n.vxConfig.id,data:{toggledTo:e,array:n.vxColSettings.multiSelected}}));if(1==n.vxConfig.hybrid){var t=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}},n.rowSelectionChanged=function(e){var t=e,i=_.find(n.vxConfig.vxData,function(t){return t[n.vxColSettings.primaryId]==e}),o={key:i[n.vxConfig.onSelectionReturnCol],value:n.vxColSettings.rowSelected[t],_pKey:t},l=!0;if(1==n.vxColSettings.rowSelected[t]&&1==n.vxColSettings.multiSelColDependent){l=!1;var r=n.vxConfig.multiSelectionDependentCol;if(1==i[r]&&0==n.vxColSettings.multiSelected.length)l=!0;else if(0==i[r]&&n.vxColSettings.multiSelected.length>=1){var a=n.vxColSettings.multiSelected[0],f=_.find(n.vxConfig.vxData,function(e){return 0==e[n.vxColSettings.primaryId].localeCompare(a)});"undefined"!=typeof f&&null!=f&&f!={}&&1==f[r]?(l=!1,n.vxColSettings.rowSelected[t]=!1):l=!0}else 0==i[r]?l=!0:n.vxColSettings.rowSelected[t]=!1}else 0==n.vxColSettings.rowSelected[t]&&(n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(t)}),l=!1,n.vxColSettings.allRowSelected=!1,n.$emit("vxGridRowSelectionChange",{id:n.vxConfig.id,data:o}));if(l){var c=_.find(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(t)});"undefined"!=typeof c&&null!=c||n.vxColSettings.multiSelected.push(t),n.$emit("vxGridRowSelectionChange",{id:n.vxConfig.id,data:o}),0==n.vxConfig.multiSelectionEnabled&&(_.each(n.vxColSettings.multiSelected,function(e){0!=e.localeCompare(t)&&(n.vxColSettings.rowSelected[e]=!1)}),n.vxColSettings.multiSelected=_.reject(n.vxColSettings.multiSelected,function(e){return 0!=e.localeCompare(t)}))}if(1==n.vxConfig.hybrid){var v=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof v&&null!=v&&v.length>0&&$(v).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}},n.filterClick=function(e,t){0==n.vxConfig.preserveSelectionOnFilters&&n.clearSelection();var i=n.vxColSettings.colFiltersStatus[t.key];if(0==i){n.multiBoxFilters=_.reject(n.multiBoxFilters,function(e){return 0==e.key.localeCompare(t.key)});var o=_.find(n.multiBoxFilters,function(e){return 0==e.col.localeCompare(t.col)});"undefined"!=typeof o&&null!=o&&o!={}&&0!=o.length||(n.vxColSettings.colFiltersActivated[e.id]=!1)}else{var l=_.find(n.multiBoxFilters,function(e){return 0==e.key.localeCompare(t.key)});"undefined"!=typeof l&&null!=l&&l!={}||n.multiBoxFilters.push(t),n.vxColSettings.colFiltersActivated[e.id]=!0}1==n.vxConfig.hybrid&&(n.vxConfig.vxFilteredData=d("vxGridMultiBoxFilters")(n._origData,n.multiBoxFilters),n.resetHybridGrid())},n.filterClearClick=function(e){if(1==n.vxColSettings.colFiltersActivated[e.id]){n.clearSelection();var t=_.filter(n.multiBoxFilters,function(n){return 0==n.col.localeCompare(e.id)});t.length>0&&_.each(t,function(e){n.vxColSettings.colFiltersStatus[e.key]=!1}),n.multiBoxFilters=_.reject(n.multiBoxFilters,function(n){return 0==n.col.localeCompare(e.id)}),n.vxColSettings.colFiltersActivated[e.id]=!1,n.vxColSettings.filterSearchToken[e.id]=""}if(""!=n.vxColSettings.filterSearchToken[e.id]){n.vxColSettings.filterSearchToken[e.id]="";var i=angular.element(document.getElementById(e.id+"_searchfilters_"+n.vxConfig.id));"undefined"!=typeof i&&i.length>0&&(i[0].value="")}1==n.vxConfig.hybrid&&(n.vxConfig.vxFilteredData=d("vxGridMultiBoxFilters")(n._origData,n.multiBoxFilters),n.resetHybridGrid())},n.clearFilters=function(){n.multiBoxFilters.length>0&&_.each(n.vxConfig.columnDefConfigs,function(e){n.filterClearClick(e)}),n.multiBoxFilters=[]},n.selectAllFiltered=function(){n.vxColSettings.multiSelected.length>0&&n.clearSelection(),n.emitArray=[];var e="";1!=n.vxConfig.hybrid?e="vxFilteredData":(n.vxConfig.hybrid=!0)&&(e="vxFilteredData"),_.each(n.vxConfig[e],function(e){if(0==n.vxColSettings.multiSelColDependent||1==n.vxColSettings.multiSelColDependent&&0==e[n.vxConfig.multiSelectionDependentCol]){if(n.vxColSettings.rowSelected[e[n.vxColSettings.primaryId]]=!0,1==n.vxConfig.hybrid){var t=angular.element(document.getElementById("vx_row-sel_in_"+e[n.vxColSettings.primaryId]));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).prop("checked",!0)}var i=e[n.vxColSettings.primaryId],o={key:e[n.vxConfig.onSelectionReturnCol],value:n.vxColSettings.rowSelected[i],_pKey:i};if(n.emitArray.push(o),1==n.vxColSettings.rowSelected[i]){var l=_.find(n.vxColSettings.multiSelected,function(e){return 0==e.localeCompare(i)});"undefined"!=typeof l&&null!=l||n.vxColSettings.multiSelected.push(i)}}}),n.$emit("vxGridRowMultiSelectionChange",{id:n.vxConfig.id,data:n.emitArray})},n.clearSelection=function(){if(n.emitArray=[],_.each(n.vxColSettings.multiSelected,function(e){if(n.vxColSettings.rowSelected[e]=!1,1==n.vxConfig.hybrid){var t=angular.element(document.getElementById("vx_row-sel_in_"+e));"undefined"!=typeof t&&null!=t&&t.length>0&&$(t).prop("checked",!1)}var i=_.find(n.vxConfig.vxData,function(t){return"groupRow"!=t.type&&0==t[n.vxColSettings.primaryId].localeCompare(e)});if("undefined"!=typeof i&&null!=i){var o={key:i[n.vxConfig.onSelectionReturnCol],value:n.vxColSettings.rowSelected[e],_pKey:e};n.emitArray.push(o)}n.vxColSettings.multiSelected=[],n.vxColSettings.allRowSelected=!1,_.each(n.vxConfig.columnDefConfigs,function(e){1==n.vxColSettings.dropDownGroup[e.id]&&1==n.vxColSettings.groupByColActivated[e.id]&&_.each(n.vxColSettings.groupKeys[e.id],function(e){n.vxColSettings.groupPredicate[e]=!1})})}),1==n.vxConfig.hybrid){var e=angular.element(document.getElementById("_vxMulLength"+n.vxConfig.id));"undefined"!=typeof e&&null!=e&&e.length>0&&$(e).text(d("vxNumberFixedLen")(n.vxColSettings.multiSelected.length,2))}n.$emit("vxGridRowMultiSelectionChange",{id:n.vxConfig.id,data:n.emitArray})},n.upDownKeyDownHandlerHeaderMenu=function(e,t){if(40==e.keyCode||27==e.keyCode)if(40==e.keyCode){var i=$(e.target).siblings().find('[tabindex="0"]');i.length>0&&$(i[0]).focus()}else if(27==e.keyCode&&1==n.vxColSettings.dropdDownOpen[t]){n.vxColSettings.dropdDownOpen[t]=!1;var o=$(e.target).closest(".dropdown").find("button");o&&o.length>0&&$(o).focus()}},n.findIdToBeFocussed=function(e,n,t){var i=e;if(t)for(i+1==n.length&&(i=-1);i<=n.length;){var o=$("#"+n[i+1]);if($(o).is('[tabindex="0"]'))return n[i+1];i+=1}else if(!t)for(0==i&&(i=n.length);i>=1;){var o=$("#"+n[i-1]);if($(o).is('[tabindex="0"]'))return n[i-1];i-=1}return e},n.findFocussable=function(e,t,i){var o=$(e).attr("id"),l=_.find(n.vxConfig.columnDefConfigs,function(e){return e.id==t});if("undefined"!=typeof l&&null!=l){var r=l.idCollection,d=_.indexOf(r,o);return d!=-1&&d!=r.length&&1==i?n.findIdToBeFocussed(d,r,!0):d!=-1&&0==i?n.findIdToBeFocussed(d,r,!1):null}},n.shiftKeyPressed=!1,n.upDowKeyUpHandlerHeaderMenuItems=function(e,t){16==e.keyCode&&(n.shiftKeyPressed=!1)},n.upDowKeyDownHandlerHeaderMenuItems=function(e,t){var i=!1;if(16==e.keyCode&&(n.shiftKeyPressed=!0),40!=e.keyCode&&38!=e.keyCode&&27!=e.keyCode&&9!=e.keyCode)return!1;if(40==e.keyCode||9==e.keyCode&&0==n.shiftKeyPressed){var o=n.findFocussable($(e.target),t,!0);$("#"+o).is('[tabindex="0"]')&&$("#"+o).focus(),i=!0}else if(38==e.keyCode||9==e.keyCode&&1==n.shiftKeyPressed){var o=n.findFocussable($(e.target),t,!1);null==o?$(e.target).closest(".dropdown").find("button").focus():$("#"+o).is('[tabindex="0"]')&&$("#"+o).focus(),i=!0}else if(27==e.keyCode&&1==n.vxColSettings.dropdDownOpen[t]){n.vxColSettings.dropdDownOpen[t]=!1;var l=$(e.target).closest(".dropdown").find("button");l&&l.length>0&&$(l).focus()}i&&(e.stopPropagation(),e.preventDefault())},n.openManageColumns=function(){var e=t.open({templateUrl:"template/vx-grid/vx-grid-manage-columns-modal.html",windowClass:"vxGridManageColMod",controller:["$scope","$uibModalInstance","originalSettings",function(e,n,t){e.headerSelected=null,e.headerSelectedForVisChange=null,e.copyForWidthVisChange=t,_.each(e.copyForWidthVisChange,function(e,n){e.order=n,e.chars=Math.ceil((e.width-20)/7),e.selected=!1}),e.swapAbove=function(n){if(0==n.locked){var t=n.order,i=n.order,o=!0;do{i-=1,o=!0;var l=_.find(e.copyForWidthVisChange,function(e){return e.order==i&&0==e.orderLocked});"undefined"!=typeof l&&null!=l&&l!={}||(o=!1)}while(!o&&i>=0);if(o&&i>=0){var l=_.find(e.copyForWidthVisChange,function(e){return e.order==i&&0==e.orderLocked});"undefined"!=typeof l&&null!=l&&l!={}&&(l.order=t,n.order=i)}}},e.swapBelow=function(n){if(0==n.locked){var t=n.order,i=n.order,o=!0;do{i+=1,o=!0;var l=_.find(e.copyForWidthVisChange,function(e){return e.order==i&&0==e.orderLocked});"undefined"!=typeof l&&null!=l&&l!={}||(o=!1)}while(!o&&i<=e.copyForWidthVisChange.length-1);if(o&&i<=e.copyForWidthVisChange.length-1){var l=_.find(e.copyForWidthVisChange,function(e){return e.order==i&&0==e.orderLocked});"undefined"!=typeof l&&null!=l&&l!={}&&(l.order=t,n.order=i)}}},e.makeVisible=function(n){var t=_.find(e.copyForWidthVisChange,function(e){return 0==e.id.localeCompare(n.id)});"undefined"!=typeof t&&null!=t&&t!={}&&0==t.visbilityLocked&&(t.hidden=!1)},e.makeHidden=function(n){var t=_.find(e.copyForWidthVisChange,function(e){return 0==e.id.localeCompare(n.id)});"undefined"!=typeof t&&null!=t&&t!={}&&0==t.visbilityLocked&&(t.hidden=!0)},e.saveChangeInConfig=function(){var t=[];t=_.sortBy(e.copyForWidthVisChange,function(n){var t=_.find(e.copyForWidthVisChange,function(e){return 0==e.id.localeCompare(n.id)});return"undefined"!=typeof t&&null!=t&&t!={}?t.order:1}),n.close(t)},e.widthChanged=function(e){e.width=Math.ceil(7*e.chars)+20},e.selectHeader=function(n){1!=n.locked&&(n.selected=!n.selected,_.each(e.copyForWidthVisChange,function(e){0!=e.id.localeCompare(n.id)&&(e.selected=!1)}),1==n.selected?e.headerSelected=n:e.headerSelected=null)},e.cancelChangeInConfig=function(){n.dismiss()},e.upDownKeyPressHandler=function(n){var t=!1;38!=n.keyCode&&40!=n.keyCode||(t=e.upDownMovement(n)),t&&(n.stopPropagation(),n.preventDefault())},e.upDownMovement=function(e){var n=!1;if(38==e.keyCode){var t=$(e.target).prev();t.length>0&&$(t[0]).attr("tabindex")!=-1&&$(t)[0].focus(),n=!0}else if(40==e.keyCode){var t=$(e.target).next();t.length>0&&$(t[0]).attr("tabindex")!=-1&&$(t)[0].focus(),n=!0}return n}}],backdrop:"static",resolve:{originalSettings:function(){return angular.copy(n.vxConfig.columnDefConfigs)}}});e.result.then(function(e){e=n.calculateEffectiveWidths(e),n.vxConfig.columnDefConfigs=e,1==n.vxConfig.hybrid&&n.resetHybridGrid(),n.$emit("vxGridSettingsChanged",{id:n.vxConfig.id,data:e})},function(e){})},n.calculateEffectiveWidths=function(e){var t=_.reduce(e,function(e,n){var t=0;return 0==n.hidden&&(t=parseInt(n.width)),e+t},0),i=n.selfEle.find(".vxTableScrollContainer").width(),o=0;return _.each(e,function(e){if(i>t){var n=parseInt(e.width)/t*(i-t);e.effectiveWidth=parseInt(e.width)+n}else e.effectiveWidth=e.width;e.effectiveWidth=Math.floor(e.effectiveWidth),o+=e.effectiveWidth}),e},n.openJsonEditor=function(){var e=t.open({templateUrl:"template/vx-grid/vx-grid-json-editor-modal.html",windowClass:"vxGridManageColMod",controller:["$scope","$modalInstance","griddata",function(e,n,t){e.data=angular.copy(t),e.changeData=[],e.configuration={editable:!0,viewButtonClass:"btn-info",editButtonClass:"btn-success"},e.jsonOptions={mode:"code",modes:["tree","form","code","text"],history:!1},e.onChangeJSON=function(n){e.changeData=n},e.saveChangeInConfig=function(){n.close(e.changeData)},e.cancelChangeInConfig=function(){n.dismiss()}}],backdrop:"static",resolve:{griddata:function(){return angular.copy(n.vxConfig.vxData)}}});e.result.then(function(e){n.vxConfig.vxData=e,n.$emit("vxGridDataChanged",{id:n.vxConfig.id,data:e})},function(e){})},n.revealWrapToggle=function(){n.vxColSettings.revealWrapRowData=!n.vxColSettings.revealWrapRowData},n.xsReset=function(){n.vxColSettings.xsSearch=""},n.justScrollTop=function(){var e=n.selfEle.find(".vxTableContainer.scrollTableContainer");o(function(){$(e).animate({scrollTop:0},500)},10)},n.justScrollDown=function(){var e=n.selfEle.find(".vxTableContainer.scrollTableContainer"),t=$(e).scrollTop()||0;0==n.vxConfig.hybrid?o(function(){$(e).animate({scrollTop:t+96},33)},10):1==n.vxConfig.hybrid&&(n.prepForScrollInsertion(),o(function(){$(e).animate({scrollTop:t+100},300)},10))},n.outsideHeader=function(e){1==n.vxColSettings.dropdDownOpen[e.id]&&(n.vxColSettings.dropdDownOpen[e.id]=!1,n.$$phase||n.$apply())},n.$on("vsRepeatCollectionPartiallyRendered",function(e,t){n.$emit("vxPartiallyRendered",{id:n.vxConfig.id,data:t}),1==n.vxConfig.selectAllOnRenderAll&&(n.vxColSettings.selectAllEnabled=!1,n.$emit("vxPartiallyRenderedSelectAllDisabled",{id:n.vxConfig.id,data:t}))}),n.$on("vsRepeatCollectionCompletelyRendered",function(e,t){n.$emit("vxCompletelyRendered",{id:n.vxConfig.id,data:t}),1==n.vxConfig.selectAllOnRenderAll&&(n.vxColSettings.selectAllEnabled=!0,n.$emit("vxCompletelyRenderedSelectAllEnabled",{id:n.vxConfig.id,data:t}))}),n.buildFns=function(){var e=["openJsonEditor","openManageColumns","resetVxInstance","clearFilters","selectAllFiltered","clearSelection","revealWrapToggle"];_.each(e,function(e){var t="vxGrid"+e.capitalizeFirstLetter(),i=e+"()";n.$on(t,function(e,t){0==t.id.localeCompare(n.vxConfig.id)&&n.$eval(i)}),n.config[e]=function(){n.$eval(i)}})},n.$on("vxGridChangeRowClass",function(e,t){0==t.id.localeCompare(n.vxConfig.id)&&n.changeRowClass(t.data)}),n.changeRowClass=function(e){for(var t in e)n.vxColSettings.vxRowClass[t]=e[t];"$apply"!=n.$root.$$phase&&"$digest"!=n.$root.$$phase&&n.$apply()},n.$on("vxGridResetRowClass",function(e,t){0==t.id.localeCompare(n.vxConfig.id)&&(n.vxColSettings.vxRowClass={})}),n.$on("vxGridDisableRowSelection",function(e,t){0==t.id.localeCompare(n.vxConfig.id)&&_.each(t.data,function(e){n.vxColSettings.vxRowSelectionDisable[e.key]=e.value})}),n.$on("vxGridResetDisableRowSelection",function(e,t){if(0==t.id.localeCompare(n.vxConfig.id))for(var i in n.vxColSettings.vxRowSelectionDisable)n.vxColSettings.vxRowSelectionDisable[i]=!1})}],replace:!0,templateUrl:"template/vx-grid/vx-grid.html",link:function(e,n,t){e.selfEle=n,e.$watchCollection("config.data",function(n){n=n||[];var t=new Date;"undefined"!=typeof n&&0==n.length?(n=[{fillEmptyElement:!0}],e.config.noData=!0,1==e.config.hybrid&&"undefined"!=typeof e.vxConfig&&angular.element(document.getElementById("_vxHybrid"+e.vxConfig.id)).empty()):e.config.noData=!1,1==e.config.hybrid?(e.config.vxData=_.clone(n),e._origData=_.clone(n)):e.config.vxData=angular.copy(n),t=new Date,delete e.vxConfig,e.resetVxInstance()}),1!=e.config.hybrid&&e.$watchCollection("vxConfig.vxFilteredData",function(n){n.length>=0&&(1==e.vxConfig.pagination&&(e.vxColSettings.pages=_.range(Math.ceil(n.length/parseInt(e.vxConfig.pageLength))),e.vxColSettings.vxPageEnabled=e.vxColSettings.pages.length>1,e.vxColSettings.activePage=0,e.vxColSettings.vxPageStartPosition=0),console.log("watch changes"))}),e.getvxTableContainerWidth=function(){var n=0;return _.each(e.vxConfig.columnDefConfigs,function(e){0==e.hidden&&(n+=e.effectiveWidth)}),e.vxConfig.totalWidth=n+"px",e.vxConfig.totalWidth},e.getNonHiddenColCount=function(){var n=1;return"undefined"!=typeof e.vxConfig.columnDefConfigs&&e.vxConfig.columnDefConfigs.length>0&&(n=_.filter(e.vxConfig.columnDefConfigs,function(e){return 0==e.hidden}).length),n}}}}).directive("vxCompile",["$compile",function(e){return function(n,t,i){n.$watch(function(e){return e.$eval(i.vxCompile)},function(i){t.html(i),e(t.contents())(n)})}}]).directive("vxCompileCloneLink",["$compile",function(e){var n={},t={};return function(i,o,l){var r=null;l.vxCompileCloneLink in n?r=t[l.vxCompileCloneLink]:(t[l.vxCompileCloneLink]=i.$eval(l.vxCompileCloneLink),r=t[l.vxCompileCloneLink]);var d=null;r in n?d=n[r]:(n[r]=e(r),d=n[r]),d(i,function(e,n){o.append(e)})}}]).directive("vxEditFocusDisable",["$rootScope","$parse",function(e,n){var t={},i={},o=["input","select","button","textarea","object"];return{restrict:"AEC",link:function(e,l,r){var d=(n(r.vxEditFocusDisable),$(l).attr("id"));e.$watch(r.vxEditFocusDisable,function(e){if(e){i[d]={available:!0,stack:[]},_.each(o,function(e){var n=$(l).find(e);n.length>0&&_.each(n,function(e){var n=$(e).attr("id");"undefined"!=typeof n&&null!=n&&""!=n||($(e).attr("id",_.uniqueId("elemid")),n=$(e).attr("id")),i[d].stack.push(n)})});var n=$(l).find("[tabindex]");n.length>0&&_.each(n,function(e){var n=$(e).attr("tabindex");if(n!=-1&&0==_.contains(o,e.nodeName.toUpperCase())&&0==_.contains(i[d].stack,t)){var t=$(e).attr("id");"undefined"!=typeof t&&null!=t&&""!=t||($(e).attr("id",_.uniqueId("elemid")),t=$(e).attr("id")),i[d].stack.push(t)}}),_.each(i[d].stack,function(e){t[e]=$("#"+e).attr("tabindex")||0,$("#"+e).attr("tabindex",-1)})}else 0==e&&"undefined"!=typeof i[d]&&"undefined"!=typeof i[d].available&&1==i[d].available&&(_.each(i[d].stack,function(e){var n=t[e];$("#"+e).attr("tabindex",n)}),i[d].available=!1)})}}}]).directive("axKey",["$rootScope","$parse",function(e,n){return{restrict:"A",compile:function(t,i){var o=n(i.axKey);return function(n,t){function l(t){var i=function(){o(n,{$event:t})};e.$$phase?n.$evalAsync(i):n.$apply(i)}t.attr("role")||t.attr("role","button"),t.attr("tabindex")||t.attr("tabindex",0);var r=[],d=0;r.push(n.$watch(i.axDisabled||i.ngDisabled,function(e){e?(d=t.attr("tabindex"),t.attr("tabindex",-1),t.attr("aria-disabled",!0)):(t.attr("tabindex",0),t.attr("aria-disabled",!1))})),t.on("click",function(e){n.$eval(i.axDisabled)||n.$eval(i.ngDisabled)||l(e)}),t.on("keyup",function(e){n.$eval(i.axDisabled)||n.$eval(i.ngDisabled)||13!=e.keyCode&&32!=e.keyCode||l(e)}),n.$on("$destroy",function(){for(;r.length;)r.shift()()})}}}}]).directive("vxKeepWatch",function(){return{restrict:"AEC",link:function(e,n,t){var i=t.vxKeepWatch,o=!1;e.$watch(t[i],function(n){o?e.$emit("vxInlineEditFieldChange",{field:t.vxKeepWatchField,value:n,rowId:t.vxKeepWatchRowId}):o=!0})}}}).filter("vxGridMultiBoxFilters",function(){return function(e,n){if("undefined"!=typeof n&&null!=n&&n.length>0){var t=e,i=e,o=_.groupBy(n,"col");for(var l in o){var r=o[l],d=[];_.each(r,function(e){d=_.union(d,_.filter(i,function(n){return"undefined"!=typeof e.label&&null!=e.label&&e.label!={}&&"undefined"!=typeof n[e.col]&&null!=n[e.col]&&n[e.col]!={}?"date"==e.type?"undefined"!=typeof n[e.col]&&n[e.col]!={}&&null!=n[e.col]&&""!=n[e.col]&&n[e.col].getTime()==e.label:"object"==e.type?0==JSON.stringify(n[e.col]).localeCompare(JSON.stringify(e.label)):0==n[e.col].toString().trim().localeCompare(e.label):n[e.col]==e.label}))}),t=_.intersection(t,d)}return t}return e}}).directive("clickOutsideHeader",["$document","$parse",function(e,n){return{restrict:"A",link:function(t,i,o){var l=void 0!==o.outsideIfNot?o.outsideIfNot.replace(", ",",").split(","):[];void 0!==o.id&&l.push(o.id);var r=n(o.clickOutsideHeader);e.on("click",function(e){try{var n=$(e.target).closest("th.vxHeadRowCell");"undefined"!=typeof n&&null!=n&&0!=n.length||t.$eval(o.checkClickOutside)&&t.$eval(r)}catch(e){}})}}}]).filter("vxNumberFixedLen",function(){return function(e,n){var t=parseInt(e,10);if(n=parseInt(n,10),isNaN(t)||isNaN(n))return e;for(t=""+t;t.length<n;)t="0"+t;return t}}).filter("vxStartFrom",function(){return function(e,n){if(e){n=+n;var t=e.slice(n);return t}return[]}})}();
  !function(){"use strict";var e={vxGridTableStructure:'        <div class="vxH100 vx-grid-inner vx-grid-related " ng-class="{ \'vxXsViewEnabled\' : vxColSettings.xsViewEnabled == true}">            <div class="row hidden-xs">                <div class="col-xs-12">                    <div class="col-md-6 vsTableStats pull-left zeroPaddingLeft" ng-if="vxConfig.showGridStats">                        <p class="statTitle">All</p>                        <p class="statValue">{{getAllRowLength() | vxNumberFixedLen:2}}</p>                        <p class="statTitle" ng-class="{ \'disabled\' : multiBoxFilters.length == 0}">Filtered</p>                        <p class="statValue" ng-class="{ \'disabled\' : multiBoxFilters.length == 0}">                            <span ng-if="multiBoxFilters.length > 0">                                <span>{{vxConfig.vxFilteredData.length | vxNumberFixedLen:2}}</span>                            </span>                            <span ng-if="multiBoxFilters.length == 0">00</span>                        </p>                        <p class="statTitle" ng-class="{ \'disabled\' : vxColSettings.multiSelected.length == 0}">Selected</p>                        <p class="statValue" ng-class="{ \'disabled\' : vxColSettings.multiSelected.length == 0}" ng-if="vxConfig.hybrid == false">{{vxColSettings.multiSelected.length | vxNumberFixedLen:2}}</p>                        <p class="statValue" ng-class="{ \'disabled\' : vxColSettings.multiSelected.length == 0}" ng-if="vxConfig.hybrid == true" ng-attr-id="_vxMulLength{{vxConfig.id}}">00</p>                    </div>                    <div class="vxTableOperations pull-right zeroPaddingRight" ng-if="vxConfig.showGridOptions">                        <div class="search-container pull-left input-group">                            <input class="search form-control" type="search" ng-model="vxColSettings.searchToken" placeholder="Search" ng-keyup="keyUpSearch($event)" aria-label="search table">                        </div>                        <div class="icon-container pull-left" role="button" tabindex="0" ng-if="vxConfig.inlineEditingEnabled == true && vxConfig.inlineAddRowEnabled == true" ax-key="addNewRow()" aria-label="add new row">                            <i class="icon icon-add"></i>                        </div>                        <div class="icon-container pull-left" role="button" tabindex="{{editInProgressCount() == 0 ? -1 : 0}}" ng-if="vxConfig.inlineEditingEnabled == true && editInProgressCount() > 0" ng-class="{ \'disabled\' : editInProgressCount() == 0}" ax-key="revertEdits()" aria-label="revert edits" ax-disabled="editInProgressCount() == 0">                            <i class="icon icon-revert"></i>                        </div>                        <div class="icon-container pull-left" role="button" tabindex="0" ng-if="vxConfig.inlineEditingEnabled == true && vxConfig.inlineDeletingEnabled == true && vxColSettings.multiSelected.length > 0" ax-key="deleteRows()" aria-label="delete rows">                            <i class="icon icon-trash"></i>                        </div>                        <div class="icon-container pull-left" role="button" tabindex="{{vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true ? -1 : 0}}" ng-class="{ \'disabled\' :vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true}" ax-key="selectAllFiltered()" aria-label="select all filtered rows" ax-disabled="vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true">                            <i class="icon icon-openwith"></i>                        </div>                        <div class="icon-container pull-left" role="button" tabindex="{{vxColSettings.multiSelected.length == 0 ? -1 : 0 }}" ng-class="{ \'disabled\' : vxColSettings.multiSelected.length == 0}" ax-key="clearSelection()" aria-label="clear any row selections" ax-disabled="vxColSettings.multiSelected.length == 0">                            <i class="icon icon-clearselection"></i>                        </div>                        <div class="icon-container pull-left" ng-class="{\'active\' : vxColSettings.revealWrapRowData }" ax-key="revealWrapToggle()" aria-label="toggle row content reveal">                            <i class="icon icon-more"></i>                        </div>                        <div class="icon-container pull-left" role="button" tabindex="{{multiBoxFilters.length == 0 ? -1 : 0}}" ng-class="{ \'disabled\' : multiBoxFilters.length == 0}" ax-key="clearFilters()" aria-label="clear any filters applied" ax-disabled="multiBoxFilters.length == 0">                            <i class="icon icon-refresh"></i>                        </div>                        <div class="icon-container pull-left" ng-class="{\'active\' : vxColSettings.menu }" ax-key="openManageColumns()" aria-label="open manage columns modal">                            <i class="icon icon-repair"></i>                        </div>                        <div class="icon-container pull-left" title="JSON Editor" role="button" tabindex="0" ng-class="{\'active\' : vxColSettings.menu }" ax-key="openJsonEditor()" ng-if="vxConfig.jsonEditorEnabled" aria-label="open json editor">                            <i class="icon icon-edit"></i>                        </div>                    </div>                </div>            </div>            <div class="col-xs-12 vxTableScrollContainer" ng-class="{ \'attrPaneOpen\': vxConfig.showGridStats || vxConfig.showGridOptions,\'pageEnabled\': vxColSettings.vxPageEnabled}">                <div class="col-xs-12 vxTableContainer ms-datatable ang-dt zeroPadding scrollDupHeader scrollDupHeaderAdded" ng-class="{\'settingsMenuOpen\': vxColSettings.menu, \'attrPaneOpen\': vxConfig.showGridStats || vxConfig.showGridOptions}" ng-style="{\'min-width\':getvxTableContainerWidth()}" ng-if="vxColSettings.xsViewEnabled == false">                    <div class="row marg0" aria-labelledby="{{vxConfig.id}}_tablemenu" tabindex="0">                        <div class="col-xs-12 vxTableHolder pad0">                            <span class="offscreen" id="{{vxConfig.id}}_tablemenu">Column Operations Menu for the grid {{vxConfig.caption}}</span>                            <table class="vxTable" role="presentation">                                <thead class="vxHead">                                    <tr class="vxHeadRow">                                        <th class="vxHeadRowCell" ng-repeat="header in vxConfig.columnDefConfigs" title="{{header.columnName}}" ng-class="{ \'ddEnabled\' : vxColSettings.dropdDownEnabled[header.id] == true}" tabindex="-1" ng-attr-id="{{vxConfig.id}}_vxHeadSt_{{$index}}" ng-if="header.hidden == false && vxColSettings.xsViewEnabled == false" ng-style="{ \'width\' : header.effectiveWidth + \'px\' }">                                            <div class="dropdown" data-container="body" ng-if="::header.renderHeadDefn == false" ng-class="{ \'open\' : vxColSettings.dropdDownOpen[header.id] == true}">                                                                                                <button class="btn btn-default dropdown-toggle" ng-attr-id="{{vxConfig.id}}_ddMenu_{{::header.id}}" ng-attr-aria-expanded="{{vxColSettings.dropdDownOpen[header.id] == true}}" ng-attr-tabindex="{{vxConfig.noData == false ? header.headTabIndex : -1}}" ng-click="headerClick(header, $event)" click-outside-header="outsideHeader(header)" check-click-outside="vxColSettings.dropdDownOpen[header.id]" ng-disabled="vxConfig.data.length == 0" ng-keydown="upDownKeyDownHandlerHeaderMenu($event, header.id)">                                                    <span class="colTitle">{{::header.columnName}}</span>                                                    <span class="offscreen">Column Press enter or spacebar to <span ng-if="vxColSettings.dropdDownOpen[header.id] == true">collapse</span><span ng-if="vxColSettings.dropdDownOpen[header.id] == false">expand</span> menu </span>                                                    <span class="ddCaret" aria-hidden="true" ng-show="vxColSettings.colFiltersActivated[header.id] != true && vxColSettings.dropdDownEnabled[header.id] == true && vxConfig.data.length >= 1">                                                        <i class="icon icon-ScrollChevronDownLegacy white" ng-show="vxColSettings.dropdDownOpen[header.id] == false"></i>                                                        <i class="icon icon-ScrollChevronUpLegacy white" ng-show="vxColSettings.dropdDownOpen[header.id] == true"></i>                                                    </span>                                                    <span class="ddCaret" aria-hidden="true" ng-show="vxColSettings.colFiltersActivated[header.id] == true && vxColSettings.dropdDownEnabled[header.id] == true && vxConfig.data.length >= 1"><i class="icon icon-filter white"></i></span>                                                </button>                                                                                                <ul class="dropdown-menu" aria-labelledby="{{vxConfig.id}}_ddMenu_{{::header.id}}" data-container="body" du-scroll-container="" id="{{vxConfig.id}}-dropdwon-menu-{{::header.id}}" ng-keydown="upDowKeyDownHandlerHeaderMenuItems($event, header.id)" ng-keyup="upDowKeyUpHandlerHeaderMenuItems($event, header.id)">                                                    <li tabindex="-1" class="loader" ng-if="vxColSettings.dropdDownLoaded[header.id] == false">                                                        <img class="dropDownLoader" ng-src="{{vxConfig.loaderGifSrc}}" alt="dropdown addition in progress">                                                    </li>                                                    <li tabindex="0" class="sorter" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownSort[header.id] == true" ax-key="sortClick(header)" ng-attr-id="{{vxConfig.id}}_{{header.id}}_sort">                                                        <span class="sortIndicator" ng-show="vxColSettings.reverse == false && vxColSettings.predicate == header.id"><i class="icon icon-up white"></i></span>                                                        <span class="sortIndicator" ng-show="vxConfig.reverseSortDirection == true && vxConfig.sortPredicate == header.id"><i class="icon icon-down white"></i></span>Sort                                                        <span class="offscreen"> Press Enter or spacebar to sort on {{::header.columnName}} column</span>                                                    </li>                                                    <!-- UNSPPORTED IN HYBRID MODE-->                                                    <li tabindex="0" class="sorter" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownGroup[header.id] == true && vxColSettings.groupByColActivated[header.id] == false" ax-key="groupClick(header)" ng-attr-id="{{vxConfig.id}}_{{header.id}}_group">                                                        <span>Group</span>                                                        <span class="offscreen"> Press Enter or spacebar to group on {{::header.columnName}} column</span>                                                    </li>                                                    <!-- UNSPPORTED IN HYBRID MODE-->                                                    <li tabindex="0" class="sorter" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownGroup[header.id] == true && vxColSettings.groupByColActivated[header.id] == true" ax-key="unGroupClick(header)" ng-attr-id="{{vxConfig.id}}_{{header.id}}_ungroup">                                                        <span>Ungroup</span>                                                        <span class="offscreen"> Press Enter or spacebar to ungroup on {{::header.columnName}} column</span>                                                    </li>                                                    <li class="filterClear" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownFilters[header.id] == true && vxColSettings.colFilterPairs[header.id].length > 0" ng-class="{ \'disabled\': vxColSettings.colFiltersActivated[header.id] == false && vxColSettings.filterSearchToken[header.id] == \'\'}" ax-key="filterClearClick(header)" ng-attr-id="{{vxConfig.id}}_{{header.id}}_clearfilters" ax-disabled="vxColSettings.colFiltersActivated[header.id] == false && vxColSettings.filterSearchToken[header.id] == \'\'" ng-attr-aria-hidden="{{(vxColSettings.colFiltersActivated[header.id] == false && vxColSettings.filterSearchToken[header.id] == \'\') ? true : false}}">                                                        <span class="indicator"><i class="icon icon-filter white"></i></span><span class="offscreen">press enter or spacebar to</span> Clear All Filters <span class="offscreen"> on {{header.columnName}} column</span>                                                    </li>                                                    <li class="filter-search" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownFilters[header.id] == true && header.ddFiltersWithSearch == true">                                                        <!--<input class="search-input" tabindex="0" type="search" placeholder="Search In Filters" aria-label="search for filters in column {{::header.columnName}}" ng-model="vxColSettings.enteredSearchToken[header.id]" ng-attr-id="{{::header.id}}_searchfilters_{{vxConfig.id}}" ng-change="filterTokenChnagedRapid(header.id)" />-->                                                        <input class="search-input" tabindex="0" type="search" placeholder="Search In Filters" aria-label="search for filters in column {{::header.columnName}}" ng-attr-id="{{::header.id}}_searchfilters_{{vxConfig.id}}">                                                        <div class="icon-container filter-activator" ax-key="filterAssignVar(header.id)" ng-attr-id="{{::header.id}}_invokesearchfilters_{{vxConfig.id}}" aria-label="invoke column filter action for column {{header.columnName}}">                                                            <i class="icon icon-search"></i>                                                        </div>                                                    </li>                                                    <li class="filter" ng-if="vxColSettings.dropdDownLoaded[header.id] == true && vxColSettings.dropDownFilters[header.id] == true" ng-repeat="filter in ((vxColSettings.colFilterPairs[header.id] | filter:{\'disabled\': false} | filter:vxColSettings.filterSearchToken[header.id]) | limitTo:header.filterLimit )" ng-attr-fl="{{header.filterLimit}}">                                                        <input class="filter-toggle" tabindex="0" type="checkbox" ng-model="vxColSettings.colFiltersStatus[filter.key]" ng-change="filterClick(header, filter)" ng-attr-id="{{vxConfig.id}}_{{::header.id}}_filter_{{$index}}"><label class="filterItemTitle" ng-attr-for="{{vxConfig.id}}_{{::header.id}}_filter_{{$index}}"><span ng-if="filter.filterDefnAvailable == false"><span class="offscreen">{{::header.columnName}} filter </span> {{::filter.name}}</span><span ng-if="filter.filterDefnAvailable == true" vx-compile="filter.filterDefn"></span></label>                                                    </li>                                                </ul>                                            </div>                                            <div ng-if="header.renderHeadDefn == true" vx-compile="header.headerDefn"></div>                                        </th>                                    </tr>                                </thead>                            </table>                        </div>                    </div>                </div>                <div class="col-xs-12 vxTableContainer ms-datatable ang-dt zeroPadding scrollTableContainer" ng-class="{ \'settingsMenuOpen\': vxColSettings.menu, \'attrPaneOpen\': vxConfig.showGridStats || vxConfig.showGridOptions, \'pageEnabled\': vxColSettings.vxPageEnabled}" du-scroll-container="" style="margin-top:0;" ng-style="{\'min-width\':getvxTableContainerWidth()}" ng-attr-id="_vxScrollContainer{{vxConfig.id}}">                    <div class="row marg0">                        <div class="col-xs-12 vxTableHolder pad0">                            <table class="vxTable">                                <caption class="offscreen" ng-bind="vxConfig.caption"></caption>                                <thead class="vxHead">                                    <tr class="vxHeadRow">                                        <th class="vxHeadRowCell" ng-repeat="header in vxConfig.columnDefConfigs" ng-attr-id="{{vxConfig.id}}_vxHead_{{$index}}" ng-style="{ \'width\' : header.effectiveWidth + \'px\' }" ng-if="header.hidden == false && vxColSettings.xsViewEnabled == false" scope="col">                                            <span class="noDdTitle offscreen">{{::header.columnName}}</span>                                        </th>                                        <th class="vxHeadRowCell" ng-if="vxColSettings.xsViewEnabled == true">                                            <div class="search-container pull-left input-group">                                                <div class="searchSymb icon-container"><i class="icon icon-search"></i></div>                                                <input class="search form-control" type="search" ng-model="vxColSettings.xsSearch" placeholder="Search">                                            </div>                                            <div class="icon-container pull-right" role="button" tabindex="{{vxColSettings.xsSearch == \'\' ? -1 : 0}}" ng-class="{ \'disabled\' : vxColSettings.xsSearch == \'\'}" ax-key="xsReset()" ax-disabled="vxColSettings.xsSearch == \'\'">                                                <i class="icon icon-refresh"></i>                                            </div>                                            <div class="icon-container pull-right hidden-xs" role="button" tabindex="0" ng-class="{\'active\' : vxColSettings.menu }" ax-key="openManageColumns()">                                                <i class="icon icon-repair"></i>                                            </div>                                            <div class="icon-container pull-right" role="button" tabindex="{{vxColSettings.multiSelected.length == 0 ? -1 : 0 }}" ng-class="{ \'disabled\' : vxColSettings.multiSelected.length == 0}" ax-key="clearSelection()" ng-if="vxConfig.selectionEnabled" ax-disabled="vxColSettings.multiSelected.length == 0">                                                <i class="icon icon-clearselection"></i>                                            </div>                                            <div class="icon-container pull-right" role="button" tabindex="{{vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true ? -1 : 0}}" ng-class="{ \'disabled\' :vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true}" ax-key="selectAllFiltered()" ng-if="vxConfig.selectionEnabled" ax-disabled="vxColSettings.selectAllEnabled == false && vxConfig.multiSelectionEnabled == true">                                                <i class="icon icon-openwith"></i>                                            </div>                                        </th>                                    </tr>                                </thead>                                <tbody class="vxBody" vs-repeat="" vs-options="{latch: true}" vs-scroll-parent="{{scrollParent}}" vs-excess="{{vxConfig.latchExcess}}" ng-class="{ \'revealWrap\' : vxColSettings.revealWrapRowData }" ng-if="vxConfig.hybrid == false && vxConfig.bindOnce == false && vxConfig.virtualization == true">                                    <tr vx-edit-focus-disable="vxColSettings.saveInProgress[row[vxColSettings.primaryId]]" ng-attr-id="{{row[vxColSettings.primaryId]}}" class="{{vxColSettings.vxRowClass[row[vxColSettings.primaryId]]}} {{vxConfig.rowClassFn(row)}} vxBodyRow" ng-repeat="row in ( vxConfig.vxFilteredData = (vxConfig.vxData | filter:vxColSettings.xsSearch | vxGridMultiBoxFilters: multiBoxFilters | orderBy:vxConfig.sortPredicateFn:vxConfig.reverseSortDirection))" ng-init="rowId = row[vxColSettings.primaryId]" ng-class="{ \'vxRowSelected\' : vxColSettings.rowSelected[row[vxColSettings.primaryId]], \'inProgress\': vxColSettings.saveInProgress[row[vxColSettings.primaryId]]}" ng-include="\'template/vx-grid/vx-grid-row-tmpl.html\'"></tr>                                </tbody>                                <tbody class="vxBody" ng-class="{ \'revealWrap\' : vxColSettings.revealWrapRowData }" ng-if="vxConfig.hybrid == false && vxConfig.bindOnce == false && vxConfig.virtualization == false">                                    <tr vx-edit-focus-disable="vxColSettings.saveInProgress[row[vxColSettings.primaryId]]" ng-attr-id="{{row[vxColSettings.primaryId]}}" class="{{vxColSettings.vxRowClass[row[vxColSettings.primaryId]]}} {{vxConfig.rowClassFn(row)}} vxBodyRow" ng-repeat="row in ( vxConfig.vxFilteredData = (vxConfig.vxData | filter:vxColSettings.xsSearch | vxGridMultiBoxFilters: multiBoxFilters | orderBy:vxConfig.sortPredicateFn:vxConfig.reverseSortDirection) | vxStartFrom: vxColSettings.vxPageStartPosition | limitTo:vxConfig.pageLength )" ng-init="rowId = row[vxColSettings.primaryId]" ng-class="{ \'vxRowSelected\' : vxColSettings.rowSelected[row[vxColSettings.primaryId]], \'inProgress\': vxColSettings.saveInProgress[row[vxColSettings.primaryId]]}" ng-include="\'template/vx-grid/vx-grid-row-tmpl.html\'"></tr>                                </tbody>                                <!-- vxConfig.bindOnce == true -->                                <tbody class="vxBody" vs-repeat="" vs-options="{latch: true}" vs-scroll-parent="{{scrollParent}}" vs-excess="{{vxConfig.latchExcess}}" ng-class="{ \'revealWrap\' : vxColSettings.revealWrapRowData }" ng-if="vxConfig.hybrid == false && vxConfig.bindOnce == true && vxConfig.virtualization == true">                                    <tr vx-edit-focus-disable="vxColSettings.saveInProgress[row[vxColSettings.primaryId]]" ng-attr-id="{{::row[vxColSettings.primaryId]}}" class="{{vxColSettings.vxRowClass[row[vxColSettings.primaryId]]}} {{vxConfig.rowClassFn(row)}} vxBodyRow" ng-repeat="row in ( vxConfig.vxFilteredData = (vxConfig.vxData | filter:vxColSettings.xsSearch | vxGridMultiBoxFilters: multiBoxFilters | orderBy:vxConfig.sortPredicateFn:vxConfig.reverseSortDirection))" ng-class="{ \'vxRowSelected\' : vxColSettings.rowSelected[row[vxColSettings.primaryId]], \'inProgress\': vxColSettings.saveInProgress[row[vxColSettings.primaryId]]}" ng-init="rowId = row[vxColSettings.primaryId]" ng-include="\'template/vx-grid/vx-grid-row-tmpl-bindonce.html\'"></tr>                                </tbody>                                <tbody class="vxBody" ng-class="{ \'revealWrap\' : vxColSettings.revealWrapRowData }" ng-if="vxConfig.hybrid == false && vxConfig.bindOnce == true && vxConfig.virtualization == false">                                    <tr vx-edit-focus-disable="vxColSettings.saveInProgress[row[vxColSettings.primaryId]]" ng-attr-id="{{::row[vxColSettings.primaryId]}}" class="{{vxColSettings.vxRowClass[row[vxColSettings.primaryId]]}} {{vxConfig.rowClassFn(row)}} vxBodyRow" ng-repeat="row in ( vxConfig.vxFilteredData = (vxConfig.vxData | filter:vxColSettings.xsSearch | vxGridMultiBoxFilters: multiBoxFilters | orderBy:vxConfig.sortPredicateFn:vxConfig.reverseSortDirection) | vxStartFrom: vxColSettings.vxPageStartPosition | limitTo:vxConfig.pageLength)" ng-class="{ \'vxRowSelected\' : vxColSettings.rowSelected[row[vxColSettings.primaryId]], \'inProgress\': vxColSettings.saveInProgress[row[vxColSettings.primaryId]]}" ng-init="rowId = row[vxColSettings.primaryId]" ng-include="\'template/vx-grid/vx-grid-row-tmpl-bindonce.html\'"></tr>                                    <tr ng-attr-id="{{::row[vxColSettings.primaryId]}}" class="{{vxColSettings.vxRowClass[row[vxColSettings.primaryId]]}} {{vxConfig.rowClassFn(row)}} vxBodyRow"></tr>                                </tbody>                                <tbody class="vxBody" ng-class="{ \'revealWrap\' : vxColSettings.revealWrapRowData }" ng-if="vxConfig.hybrid == true" ng-attr-id="_vxHybrid{{vxConfig.id}}"></tbody>                            </table>                        </div>                    </div>                </div>            </div>            <div class="col-xs-12 vxTablePagination pad0" ng-if="vxColSettings.vxPageEnabled">                <div class="icon-container dirNumContainer" ax-key="activatePage(vxColSettings.activePage - 1)" ng-class="{ \'disabled\' :vxColSettings.activePage == 0}" ax-disabled="vxColSettings.activePage == 0">                    <i class="icon icon-previous" aria-hidden="true"></i><span class="offscreen">Previous Page</span>                </div>                <div class="icon-container dirNumContainer" ax-key="activatePage(vxColSettings.activePage + 1)" ng-class="{ \'disabled\' :vxColSettings.activePage == vxColSettings.pages.length - 1}" ax-disabled="vxColSettings.activePage == vxColSettings.pages.length - 1">                    <i class="icon icon-next" aria-hidden="true"></i><span class="offscreen">Next Page</span>                </div>                <div class="icon-container pageNumContainer" ng-repeat="pageNum in vxColSettings.pages" ax-key="activatePage(pageNum)" ng-class="{\'active\' : pageNum == vxColSettings.activePage}">                    <span class="offscreen">Page </span><i class="icon">{{pageNum + 1}}</i>                </div>            </div>            <div class="icon-container scrollAction up" role="button" tabindex="0" ax-key="justScrollTop()" ng-class="{\'pageEnabled\': vxColSettings.vxPageEnabled}" aria-label="Scroll Up" id="scroll_up_{{vxConfig.id}}" style="display:none;">                <i class="icon icon-up"></i>            </div>            <div class="icon-container scrollAction down" role="button" tabindex="0" ax-key="justScrollDown()" ng-class="{\'pageEnabled\': vxColSettings.vxPageEnabled}" aria-label="Scroll Down" id="scroll_down_{{vxConfig.id}}" style="display:none;">                  <i class="icon icon-up down"></i>            </div>            <div class="offscreen">                <span class="offscreen"> Region starts for adding offscreen labels to aid screen readers please ignore the labels</span>                <span class="offscreen" ng-attr-id="{{::vxConfig.editRowID}}"> Edit Row</span>                <span class="offscreen" ng-attr-id="{{::vxConfig.saveRowID}}"> Save Row</span>                <span class="offscreen" ng-attr-id="{{::vxConfig.selectRowID}}">Select Row</span>                <span class="offscreen"> Region for offscreen labels to aid screen readers ends</span>            </div>        </div>    ',vxGridManageColumnsModal:'        <div class="modal-body vx-grid-related ">            <div class="vxTableSettings">                <div class="vxSettingsHead">                    <p role="heading" aria-level="1" class="title">Manage Columns</p>                    <div class="icon-container" role="button" tabindex="0" ax-key="cancelChangeInConfig()" aria-label="Cancel Changes in Config">                        <i class="icon icon-close" aria-hidden="true"></i>                    </div>                </div>                <div class="vxSettingsBody">                    <div class="col-xs-12 zeroPadding vxH100 vxSettingsBodyContainer">                        <div class="col-xs-3 vxH100 visHideRows">                            <div class="row vxH100">                                <div class="col-xs-12 columns">                                    <p role="heading" aria-level="2" class="help">Available Columns</p>                                    <p class="helpText">To Select a column to change column Visbility, use the up and down arrows</p>                                    <div class="col-xs-12 colItem" tabindex="{{header.locked == false ? 0 : -1}}" ng-repeat="header in copyForWidthVisChange" ng-class="{ \'locked\': header.locked, \'selected\': header.id == headerSelected.id}" ax-key="selectHeader(header)" ng-if="header.hidden == true" ng-keydown="upDownKeyPressHandler($event)">                                        <div class="col-xs-2 col-sm-2 col-md-1">                                            <p class="colLabel xl" ng-if="header.visbilityLocked == true"><i class="icon icon-blockedLegacy" tooltip="Visbility Locked"></i></p>                                        </div>                                        <p class="col-xs-10 col-sm-10 col-md-10 colName">{{::header.columnName}}</p>                                        <span class="offscreen" ng-if="header.locked"> Column locked for all chnages </span>                                        <span class="offscreen" ng-if="header.visbilityLocked == true"> Column Visbility locked for changes </span>                                        <div class="clearfix"></div>                                    </div>                                    <div class="clearfix"></div>                                </div>                                <div class="clearfix"></div>                            </div>                        </div>                        <div class="col-xs-1 vxH100 visChangers">                            <div class="col-xs-12 visChangersContainer">                                <div class="col-xs-12 visChangersItem zeroPadding">                                    <div class="icon-container" role="button" tabindex="{{headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == false ? -1 : 0}}" ng-class="{\'disabled\' : headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == false}" ax-key="makeVisible(headerSelected)" ng-keydown="upDownKeyPressHandler($event)" ng-attr-aria-label="Make Column {{headerSelected.columnName}} Visible" ax-disabled="headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == false">                                        <i class="icon icon-right"></i>                                    </div>                                    <div class="icon-container" role="button" tabindex="{{headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == true ? -1 : 0}}" ng-class="{\'disabled\' : headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == true}" ax-key="makeHidden(headerSelected)" ng-keydown="upDownKeyPressHandler($event)" ng-attr-aria-label="Make Column {{headerSelected.columnName}} Hidden" ax-disabled="headerSelected.visbilityLocked || headerSelected == null || headerSelected.hidden == true">                                        <i class="icon icon-left"></i>                                    </div>                                </div>                                <div class="clearfix"></div>                            </div>                        </div>                        <div class="col-xs-7 vxH100">                            <div class="row orderChanger">                                <div class="col-xs-12 columns">                                    <p role="heading" aria-level="2" class="help">Selected Columns</p>                                    <p class="helpText">To Select a column to change  column order, use the up and down arrows</p>                                    <div class="col-xs-12 colItem" ng-repeat="header in copyForWidthVisChange | orderBy: \'order\'" ng-class="{ \'locked\': header.locked, \'selected\': header.id == headerSelected.id}" ng-if="header.hidden == false">                                        <div class="col-xs-12 col-sm-6 col-md-6 padA0L10R0" tabindex="{{header.locked == true || (header.locked == false && header.visbilityLocked == true && header.orderLocked == true) ? -1 : 0}}" ax-key="selectHeader(header)" ng-keydown="upDownKeyPressHandler($event)">                                            <div class="col-xs-12 col-sm-6 col-md-6 padA0L10R0">                                                <div class="col-xs-4 pad0">                                                    <p class="colLabel xl" ng-if="header.visbilityLocked == true" aria-hidden="true">                                                        <span class="icon icon-blockedLegacy red" tooltip="Visbility Locked" aria-hidden="true"></span>                                                    </p>                                                </div>                                                <div class="col-xs-4 pad0">                                                    <p class="colLabel xl" ng-if="header.orderLocked == true" aria-hidden="true">                                                        <span class="icon icon-unpin red" tooltip="Order Locked"></span>                                                    </p>                                                </div>                                                <div class="col-xs-4 pad0">                                                    <p class="colLabel xl" ng-if="header.widthLocked == true" aria-hidden="true">                                                        <span class="icon icon-trim red" tooltip="Width Locked"></span>                                                    </p>                                                </div>                                            </div>                                                                                        <p class="col-xs-12 col-sm-12 col-md-6 colName">{{::header.columnName}}</p>                                            <span ng-if="!(header.locked == true || (header.locked == false && header.visbilityLocked == true && header.orderLocked == true))">                                                <span class="offscreen" ng-if="header.id == headerSelected.id"> column selected to unselect press spacebar or enter</span>                                                <span class="offscreen" ng-if="header.id != headerSelected.id"> column press spacebar or enter to select column for changing visibility or order</span>                                            </span>                                                                                        <span class="offscreen" ng-show="header.locked"> Column locked for all changes</span>                                            <span class="offscreen" ng-if="header.visbilityLocked == true"> Column visibility locked for changes</span>                                            <span class="offscreen" ng-if="header.orderLocked == true"> Column Order locked for changes</span>                                            <span class="offscreen" ng-if="header.widthLocked == true"> Column Width locked for changes</span>                                        </div>                                        <div class="col-xs-12 col-sm-6 col-md-6">                                            <label class="colLabel" ng-attr-for="_mc_{{header.id}}">Width <span class="offscreen"> for column {{::header.columnName}} in approximate characters </span> <span aria-hidden="true"> (in approx. char)</span></label>                                            <input class="inputStyle colInput" ng-model="header.chars" ng-disabled="header.widthLocked" ng-change="widthChanged(header)" ng-attr-id="_mc_{{header.id}}">                                        </div>                                        <div class="clearfix"></div>                                    </div>                                    <div class="clearfix"></div>                                </div>                                <div class="clearfix"></div>                            </div>                        </div>                        <div class="col-xs-1 vxH100 visChangers">                            <div class="col-xs-12 visChangersContainer">                                <div class="col-xs-12 visChangersItem zeroPadding">                                    <div class="icon-container" role="button" tabindex="{{headerSelected.orderLocked || headerSelected.hidden || headerSelected == null ? -1 : 0}}" ng-class="{\'disabled\' : headerSelected.orderLocked || headerSelected.hidden || headerSelected == null}" ax-key="swapAbove(headerSelected)" ng-keydown="upDownKeyPressHandler($event)" ng-attr-aria-label="Move Column {{headerSelected.columnName}} Up" ax-disabled="headerSelected.orderLocked || headerSelected.hidden || headerSelected == null">                                        <i class="icon icon-up"></i>                                    </div>                                    <div class="icon-container" role="button" tabindex="{{headerSelected.orderLocked || headerSelected.hidden || headerSelected == null ? -1 : 0}}" ng-class="{\'disabled\' : headerSelected.orderLocked || headerSelected.hidden || headerSelected == null}" ax-key="swapBelow(headerSelected)" ng-keydown="upDownKeyPressHandler($event)" ng-attr-aria-label="Move Column {{headerSelected.columnName}} Down" ax-disabled="headerSelected.orderLocked || headerSelected.hidden || headerSelected == null">                                        <i class="icon icon-down"></i>                                    </div>                                </div>                                <div class="clearfix"></div>                            </div>                            <div class="clearfix"></div>                        </div>                    </div>                </div>                <div class="vxSettingsFooter">                    <button class="btn btn-primary vsTableButton active" ax-key="saveChangeInConfig()">Save</button>                    <button class="btn btn-primary vsTableButton" ax-key="cancelChangeInConfig()">Cancel</button>                    <div class="infoBtns" aria-hidden="true">                        <span class="icon icon-blockedLegacy"></span>                        <span class="infoLabel">Visbility Locked,</span>                        <span class="icon icon-unpin"></span>                        <span class="infoLabel">Order Locked,</span>                        <span class="icon icon-trim"></span>                        <span class="infoLabel">Width Locked</span>                    </div>                </div>            </div>        </div>    ',
  "vxGridJsonEditorModal vx-grid-related ":'        <div class="modal-body">            <div class="vxTableSettings">                <div class="vxSettingsHead">                    <label class="title">JSON editor for changing grid data</label>                    <div class="icon-container" role="button" tabindex="0" ax-key="cancelChangeInConfig()">                        <i class="icon icon-close"></i>                    </div>                </div>                <div class="vxSettingsBody">                    <div class="col-xs-12 zeroPadding vxH100">                        <div class="col-xs-12 vxH100 visHideRows">                            <json-editor on-change="onChangeJSON(json)" options="jsonOptions" json-data="data"></json-editor>                        </div>                    </div>                </div>                <div class="vxSettingsFooter">                    <button class="btn btn-primary vsTableButton active" ax-key="saveChangeInConfig()">Save</button>                    <button class="btn btn-primary vsTableButton" ax-key="cancelChangeInConfig()">Cancel</button>                </div>            </div>        </div>    ',vxGridRowTmpl:'        <td colspan="{{getNonHiddenColCount()}}" ng-if="row.fillEmptyElement == true" style="padding-left:15px;"><span ng-bind-html="vxConfig.emptyFill"></span></td>        <td class="vxBodyRowCell {{header.colClass}}" ng-class="{\'renderedDefn\': header.renderDefn == true}" ng-repeat="header in vxConfig.columnDefConfigs" ng-style="::{ \'width\' : header.effectiveWidth + \'px\' }" ng-if="header.hidden == false && row.type != \'groupRow\' && vxColSettings.xsViewEnabled == false && !(row.fillEmptyElement == true)" ng-attr-scope="{{header.scopeIsRow == true ? \'row\': \'\'}}">            <span ng-show="header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && ((header.renderDefn == false && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] != true) || (header.renderDefn == false && header.inlineEditOnColumnEnabled == false))" title="{{row[header.id]}}">{{row[header.id]}}</span>            <div ng-if="header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && ((header.renderDefn == true && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] != true) || (header.renderDefn == true && header.inlineEditOnColumnEnabled == false))" vx-compile-clone-link="header.cellDefn"></div>            <div ng-if="header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] == true && header.inlineEditOnColumnEnabled == true" vx-compile-clone-link="header.editDefn"></div>            <div ng-if="header.columnIsRowSelect == true">                <div class="vx-row-select">                    <input class="vx-row-select-toggle" type="checkbox" ng-model="vxColSettings.rowSelected[rowId]" ng-change="rowSelectionChanged(rowId)" ng-disabled="vxColSettings.vxRowSelectionDisable[rowId]" ng-attr-id="vx_row-sel_in{{rowId}}" aria-labelledby="vx_row_sel_{{rowId}}">                    <span class="offscreen" style="visibility:collapse;" ng-attr-id="vx_row_sel_{{rowId}}">Select Row {{rowId}}</span>                </div>            </div>            <div class="vx-row-edit-container" ng-if="header.columnIsRowEdit == true">                <div class="vx-row-edit icon-container" tabindex="0" ax-key="editRow(rowId)" ng-show="vxColSettings.inlineEditState[rowId] == false && vxColSettings.saveInProgress[rowId] != true" role="button" aria-labelledby="{{::vxConfig.editRowID}} vx_row_sel_{{rowId}}">                    <i class="icon icon-edit"></i>                </div>                <div class="vx-row-edit icon-container" ax-disabled="vxConfig.invalidRows[row[vxColSettings.primaryId]]" tabindex="0" ax-key="saveRow(rowId)" ng-show="vxColSettings.inlineEditState[rowId] == true && vxColSettings.saveInProgress[rowId] != true" role="button" aria-labelledby="{{::vxConfig.saveRowID}} vx_row_sel_{{rowId}}">                    <i class="icon icon-save"></i>                </div>                <div class="vx-row-edit icon-container loader" tabindex="0" ng-show="vxColSettings.saveInProgress[rowId] == true" role="button">                    <img class="loader-row" ng-src="{{vxConfig.loaderGifSrc}}">                </div>            </div>            <span ng-show="header.columnIsDate == true">{{row[header.id] | date : header.columnDatePipe}}</span>        </td>        <td class="vxBodyRowCell xsCell" ng-if="vxColSettings.xsViewEnabled == true && !(row.fillEmptyElement == true)" ng-class="{ \'rowSelectionEnabled\': vxConfig.selectionEnabled == true }">            <div class="xsSelectionHolder" vx-compile-clone-link="vxConfig.columnDefConfigs[0].cellDefn" ng-if="vxConfig.selectionEnabled"></div>            <div class="xsRowTitleHolder" ax-key="row.xsViewDetails = !row.xsViewDetails">                <span ng-if="vxColSettings.xsRowTitleTemplateAvailable == false">{{row[vxColSettings.primaryId]}}</span>                <div ng-if="vxColSettings.xsRowTitleTemplateAvailable == true" vx-compile="vxConfig.xsRowTitleTemplate"></div>            </div>            <div class="xsRowViewToggleHolder" ax-key="row.xsViewDetails = !row.xsViewDetails">                <div class="icon-container">                    <i class="icon icon-ScrollChevronUpLegacy" ng-show="row.xsViewDetails"></i>                    <i class="icon icon-ScrollChevronDownLegacy" ng-show="!row.xsViewDetails"></i>                </div>            </div>            <div class="col-xs-12 xsCellContentHolder" collapse="!row.xsViewDetails">                <div class="xsCellContent" ng-repeat="header in vxConfig.columnDefConfigs" ng-if="$index > 0 && header.xsHidden == false && row.type != \'groupRow\'">                    <div class="col-xs-12 xsCellHeader">{{header.columnName}}</div>                    <div class="col-xs-12 xsCellValue">                        <span ng-if="header.renderDefn == false">{{row[header.id]}}</span>                        <div ng-if="header.renderDefn == true" vx-compile-clone-link="header.cellDefn"></div>                    </div>                    <div class="clearfix"></div>                </div>            </div>        </td>    ',vxGridRowTmplBindonce:'        <td colspan="{{::getNonHiddenColCount()}}" ng-if="::row.fillEmptyElement == true" style="padding-left:15px;"><span ng-bind-html="vxConfig.emptyFill"></span></td>        <td class="vxBodyRowCell {{::header.colClass}}" ng-class="::{\'renderedDefn\': header.renderDefn == true}" ng-repeat="header in vxConfig.columnDefConfigs" ng-style="::{ \'width\' : header.effectiveWidth + \'px\' }" ng-if="::header.hidden == false && row.type != \'groupRow\' && vxColSettings.xsViewEnabled == false && !(row.fillEmptyElement == true)" ng-attr-scope="{{header.scopeIsRow == true ? \'row\': \'\'}}">            <span ng-show="::header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && ((header.renderDefn == false && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] != true) || (header.renderDefn == false && header.inlineEditOnColumnEnabled == false))" title="{{::row[header.id]}}">{{::row[header.id]}}</span>            <div ng-if="::header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && ((header.renderDefn == true && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] != true) || (header.renderDefn == true && header.inlineEditOnColumnEnabled == false))" vx-compile-clone-link="header.cellDefn"></div>            <div ng-if="::header.columnIsDate != true && header.columnIsRowSelect != true && header.columnIsRowEdit != true && vxColSettings.inlineEditState[row[vxColSettings.primaryId]] == true && header.inlineEditOnColumnEnabled == true" vx-compile-clone-link="header.editDefn"></div>            <div ng-if="::header.columnIsRowSelect == true">                <div class="vx-row-select">                    <input class="vx-row-select-toggle" type="checkbox" ng-model="vxColSettings.rowSelected[rowId]" ng-change="rowSelectionChanged(rowId)" ng-disabled="vxColSettings.vxRowSelectionDisable[rowId]" ng-attr-id="vx_row-sel_in{{::rowId}}" aria-labelledby="vx_row_sel_{{::rowId}}">                    <span class="offscreen" style="visibility:collapse;" ng-attr-id="vx_row_sel_{{rowId}}">Select row {{rowId}}</span>                </div>            </div>            <div class="vx-row-edit-container" ng-if="::header.columnIsRowEdit == true">                <div class="vx-row-edit icon-container" tabindex="0" ax-key="editRow(rowId)" ng-show="vxColSettings.inlineEditState[rowId] == false && vxColSettings.saveInProgress[rowId] != true" role="button" aria-labelledby="{{::vxConfig.editRowID}} vx_row_sel_{{::rowId}}">                    <i class="icon icon-edit"></i>                </div>                <div class="vx-row-edit icon-container" ax-disabled="vxConfig.invalidRows[row[vxColSettings.primaryId]]" tabindex="0" ax-key="saveRow(rowId)" ng-show="vxColSettings.inlineEditState[rowId] == true && vxColSettings.saveInProgress[rowId] != true" role="button" aria-labelledby="{{::vxConfig.saveRowID}} vx_row_sel_{{::rowId}}">                    <i class="icon icon-save"></i>                </div>                <div class="vx-row-edit icon-container loader" tabindex="0" ng-show="vxColSettings.saveInProgress[rowId] == true" role="button">                    <img class="loader-row" ng-src="{{::vxConfig.loaderGifSrc}}">                </div>            </div>            <span ng-show="::header.columnIsDate == true">{{::row[header.id] | date : header.columnDatePipe}}</span>        </td>        <td class="vxBodyRowCell groupCell" ng-if="::row.type == \'groupRow\' && !(row.fillEmptyElement == true)" colspan="1">            <div vx-compile="row.cellDefn"></div>        </td>        <td class="vxBodyRowCell groupCell" ng-if="::row.type == \'groupRow\'  && !(row.fillEmptyElement == true)" colspan="{{getVisibleHeaderCounts() - 1}}">            <span class="first">GROUPED BY {{row.colName}} : </span><span class="colname">{{row.value}}</span>        </td>    '};angular.module("vx.grid.modules").run(["$templateCache",function(i){i.put("template/vx-grid/vx-grid-json-editor-modal.html",e.vxGridJsonEditorModal),i.put("template/vx-grid/vx-grid-manage-columns-modal.html",e.vxGridManageColumnsModal),i.put("template/vx-grid/vx-grid.html",e.vxGridTableStructure),i.put("template/vx-grid/vx-grid-row-tmpl.html",e.vxGridRowTmpl),i.put("template/vx-grid/vx-grid-row-tmpl-bindonce.html",e.vxGridRowTmplBindonce)}])}();