1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-23 16:52:26 +02:00
TableFilter/dist/core.js

10 lines
96 KiB
JavaScript
Raw Normal View History

2014-11-01 12:52:59 +01:00
/*------------------------------------------------------------------------
- TableFilter v3.0.0 by Max Guglielmi
- build date: Sat Nov 01 2014 22:27:26
- http://tablefilter.free.fr
- Copyright (c) 2014, Licensed under the MIT License
------------------------------------------------------------------------*/
function TF(){}define(function(require){function TableFilter(a){if(0!==arguments.length){if(this.id=a,this.version="3.0",this.year=(new Date).getFullYear(),this.tbl=TF.id(a),this.startRow=null,this.refRow=null,this.headersRow=null,this.fObj=null,this.nbFilterableRows=null,this.nbRows=null,this.nbCells=null,this.hasGrid=!1,this.enableModules=!1,!this.tbl||"table"!==str.lower(this.tbl.nodeName)||0===this.GetRowsNb())throw new Error("Could not instantiate TF object: table not found.");if(arguments.length>1)for(var b=0;b<arguments.length;b++){var c=arguments[b],d=typeof c;switch(str.lower(d)){case"number":this.startRow=c;break;case"object":this.fObj=c}}var e=this.fObj||{};this.refRow=null===this.startRow?2:this.startRow+1;try{this.nbCells=this.GetCellsNb(this.refRow)}catch(f){this.nbCells=this.GetCellsNb(0)}this.basePath=void 0!==e.base_path?e.base_path:"TableFilter/",this.fltTypeInp="input",this.fltTypeSlc="select",this.fltTypeMulti="multiple",this.fltTypeCheckList="checklist",this.fltTypeNone="none",this.fltCol=[];for(var g=0;g<this.nbCells;g++){var h=e["col_"+g],i=h?str.lower(h):this.fltTypeInp;this.fltCol.push(i),this["col"+g]=i}this.publicMethods=void 0!==e.public_methods?e.public_methods:!1,this.fltGrid=e.grid===!1?!1:!0,this.gridLayout=e.grid_layout?!0:!1,this.hasGridWidthsRow=!1,this.gridColElms=[],this.sourceTblHtml=null,this.gridLayout&&(void 0===this.tbl.outerHTML&&setOuterHtml(),this.sourceTblHtml=this.tbl.outerHTML),this.filtersRowIndex=e.filters_row_index||0,this.headersRow=e.headers_row_index||(0===this.filtersRowIndex?1:0),this.gridLayout&&(this.headersRow>1?this.filtersRowIndex=this.headersRow+1:(this.filtersRowIndex=1,this.headersRow=0)),this.fltCellTag="th"!==e.filters_cell_tag||"td"!==e.filters_cell_tag?"td":e.filters_cell_tag,this.fltIds=[],this.fltElms=[],this.searchArgs=null,this.tblData=[],this.validRowsIndex=null,this.fltGridEl=null,this.isFirstLoad=!0,this.infDiv=null,this.lDiv=null,this.rDiv=null,this.mDiv=null,this.contDiv=null,this.infDivCssClass=e.inf_div_css_class||"inf",this.lDivCssClass=e.left_div_css_class||"ldiv",this.rDivCssClass=e.right_div_css_class||"rdiv",this.mDivCssClass=e.middle_div_css_class||"mdiv",this.contDivCssClass=e.content_div_css_class||"cont",this.stylesheet=e.stylesheet||this.basePath+"filtergrid.css",this.stylesheetId=this.id+"_style",this.fltsRowCssClass=e.flts_row_css_class||"fltrow",this.enableIcons=e.enable_icons===!1?!1:!0,this.alternateBgs=e.alternate_rows===!0?!0:!1,this.hasColWidth=e.col_width===!0?!0:!1,this.colWidth=this.hasColWidth?e.col_width:null,this.fixedHeaders=e.fixed_headers===!0?!0:!1,this.tBodyH=isNaN(e.tbody_height)?200:e.tbody_height,this.fltCssClass=e.flt_css_class||"flt",this.fltMultiCssClass=e.flt_multi_css_class||"flt_multi",this.fltSmallCssClass=e.flt_small_css_class||"flt_s",this.singleFltCssClass=e.single_flt_css_class||"single_flt",this.isStartBgAlternate=!0,this.rowBgEvenCssClass=e.even_row_css_class||"even",this.rowBgOddCssClass=e.odd_row_css_class||"odd",this.enterKey=e.enter_key===!1?!1:!0,this.isModFilterFn=e.mod_filter_fn===!0?!0:!1,this.modFilterFn=this.isModFilterFn?e.mod_filter_fn:null,this.onBeforeFilter=types.isFn(e.on_before_filter)?e.on_before_filter:null,this.onAfterFilter=types.isFn(e.on_after_filter)?e.on_after_filter:null,this.matchCase=e.match_case===!0?!0:!1,this.exactMatch=e.exact_match===!0?!0:!1,this.refreshFilters=e.refresh_filters===!0?!0:!1,this.disableExcludedOptions=e.disable_excluded_options===!0?!0:!1,this.activeFlt=null,this.activeFilterId=null,this.hasColOperation=e.col_operation===!0?!0:!1,this.colOperation=null,this.hasVisibleRows=e.rows_always_visible===!0?!0:!1,this.visibleRows=this.hasVisibleRows?e.rows_always_visible:[],this.searchType=e.search_type||"include",this.isExternalFlt=e.external_flt_grid===!0?!0:!1,this.externalFltTgtIds=e.external_flt_grid_ids||null,this.externalFltEls=[],this.execDelay=isNaN(e.exec_delay)?100:parseInt(e.exec_delay,10),this.status=e.status===!0?!0:!1,this.onFiltersLoaded=types.isFn(e.on_filters_loaded)?e.on_filters_loaded:null,this.singleSearchFlt=e.single_search_filter===!0?
else{b.ClearSelections();var e=c.cellIndex,f=a.tbl.rows[d];"both"===b.defaultSelection&&b.Selection.SelectRowByIndex(d),f&&b.Selection.SelectCell(f.cells[e])}if(a.validRowsIndex.length!==a.GetRowsNb()){var g=a.tbl.rows[d];g&&g.scrollIntoView(!1),i&&(i.cellIndex===a.GetCellsNb()-1&&a.gridLayout?a.tblCont.scrollLeft=1e8:0===i.cellIndex&&a.gridLayout?a.tblCont.scrollLeft=0:i.scrollIntoView(!1))}}}},f=function(b,c){var d="row"!==b.defaultSelection?c.parentNode:c;if(a.paging&&a.nbPages>1){b.nbRowsPerPage=a.pagingLength;var e=a.validRowsIndex,f=e.length,g=parseInt(a.startPagingRow,10)+parseInt(a.pagingLength,10),h=d.rowIndex;h===e[f-1]&&a.currentPageNb!=a.nbPages?a.SetPage("last"):h==e[0]&&1!==a.currentPageNb?a.SetPage("first"):h>e[g-1]&&h<e[f-1]?a.SetPage("next"):h<e[a.startPagingRow]&&h>e[0]&&a.SetPage("previous")}};if(a.paging&&(a.onAfterChangePage=function(a){var b=a.ezEditTable,c=b.Selection.GetActiveRow();c&&c.scrollIntoView(!1);var d=b.Selection.GetActiveCell();d&&d.scrollIntoView(!1)}),"row"===c.default_selection){var g=c.on_before_selected_row;c.on_before_selected_row=function(){f(arguments[0],arguments[1],arguments[2]),g&&g.call(null,arguments[0],arguments[1],arguments[2])};var h=c.on_after_selected_row;c.on_after_selected_row=function(){e(arguments[0],arguments[1],arguments[2]),h&&h.call(null,arguments[0],arguments[1],arguments[2])}}else{var i=c.on_before_selected_cell;c.on_before_selected_cell=function(){f(arguments[0],arguments[1],arguments[2]),i&&i.call(null,arguments[0],arguments[1],arguments[2])};var j=c.on_after_selected_cell;c.on_after_selected_cell=function(){e(arguments[0],arguments[1],arguments[2]),j&&j.call(null,arguments[0],arguments[1],arguments[2])}}}if(a.editable){var k=c.on_added_dom_row;if(c.on_added_dom_row=function(){a.nbFilterableRows++,a.paging?(a.nbRows++,a.nbVisibleRows++,a.nbFilterableRows++,a.paging=!1,a.RemovePaging(),a.AddPaging(!1)):a.RefreshNbRows(),a.alternateBgs&&a.SetAlternateRows(),k&&k.call(null,arguments[0],arguments[1],arguments[2])},c.actions&&c.actions["delete"]){var l=c.actions["delete"].on_after_submit;c.actions["delete"].on_after_submit=function(){a.nbFilterableRows--,a.paging?(a.nbRows--,a.nbVisibleRows--,a.nbFilterableRows--,a.paging=!1,a.RemovePaging(),a.AddPaging(!1)):a.RefreshNbRows(),a.alternateBgs&&a.SetAlternateRows(),l&&l.call(null,arguments[0],arguments[1])}}}try{a.ezEditTable=new EditTable(a.id,c,b),a.ezEditTable.Init()}catch(m){console.log(c.err)}},SetPaging:function(){if((this.hasGrid||this.isFirstLoad)&&this.paging&&(this.isPagingRemoved||this.isFirstLoad)){var a=this.fObj;this.pagingTgtId=a.paging_target_id||null,this.pagingLength=isNaN(a.paging_length)?10:a.paging_length,this.resultsPerPageTgtId=a.results_per_page_target_id||null,this.pgSlcCssClass=a.paging_slc_css_class||"pgSlc",this.pgInpCssClass=a.paging_inp_css_class||"pgNbInp",this.resultsSlcCssClass=a.results_slc_css_class||"rspg",this.resultsSpanCssClass=a.results_span_css_class||"rspgSpan",this.nbVisibleRows=0,this.nbHiddenRows=0,this.startPagingRow=0,this.nbPages=0,this.btnNextPageText=a.btn_next_page_text||">",this.btnPrevPageText=a.btn_prev_page_text||"<",this.btnLastPageText=a.btn_last_page_text||">|",this.btnFirstPageText=a.btn_first_page_text||"|<",this.btnNextPageHtml=a.btn_next_page_html||(this.enableIcons?'<input type="button" value="" class="'+this.btnPageCssClass+' nextPage" title="Next page" />':null),this.btnPrevPageHtml=a.btn_prev_page_html||(this.enableIcons?'<input type="button" value="" class="'+this.btnPageCssClass+' previousPage" title="Previous page" />':null),this.btnFirstPageHtml=a.btn_first_page_html||(this.enableIcons?'<input type="button" value="" class="'+this.btnPageCssClass+' firstPage" title="First page" />':null),this.btnLastPageHtml=a.btn_last_page_html||(this.enableIcons?'<input type="button" value="" class="'+this.btnPageCssClass+' lastPage" title="Last page" />':null),this.pageText=a.page_text||" Page ",this.ofText=a.of_text||" of ",this.nbPgSpanCssClass=a.nb_pages_css_class||"nbpg",this.hasPagingBtns=a.paging_btns===!1?!1:!0,this.pagingBtnEvents=null,this.pageSelecto
for(var b=0;b<this.nbCells;b++){var c,d=this.tbl.rows[this.gridHeadRowIndex].cells[b];c=""!==d.width?d.width:""!==d.style.width?parseInt(d.style.width,10):this.gridDefaultColWidth,this.colWidth[b]=c}this.hasColWidth=!0}this.SetColWidths(this.gridHeadRowIndex);var e;e=""!==this.tbl.width?this.tbl.width:""!==this.tbl.style.width?parseInt(this.tbl.style.width,10):this.tbl.clientWidth,this.tblMainCont=dom.create("div",["id",this.prfxMainTblCont+this.id]),this.tblMainCont.className=this.gridMainContCssClass,this.gridWidth&&(this.tblMainCont.style.width=this.gridWidth),this.tbl.parentNode.insertBefore(this.tblMainCont,this.tbl),this.tblCont=dom.create("div",["id",this.prfxTblCont+this.id]),this.tblCont.className=this.gridContCssClass,this.gridWidth&&(this.tblCont.style.width=this.gridWidth),this.gridHeight&&(this.tblCont.style.height=this.gridHeight),this.tbl.parentNode.insertBefore(this.tblCont,this.tbl);var f=this.tbl.parentNode.removeChild(this.tbl);this.tblCont.appendChild(f),""===this.tbl.style.width&&(this.tbl.style.width=(this.__containsStr("%",e)?this.tbl.clientWidth:e)+"px");var g=this.tblCont.parentNode.removeChild(this.tblCont);this.tblMainCont.appendChild(g),this.headTblCont=dom.create("div",["id",this.prfxHeadTblCont+this.id]),this.headTblCont.className=this.gridHeadContCssClass,this.gridWidth&&(this.headTblCont.style.width=this.gridWidth),this.headTbl=dom.create("table",["id",this.prfxHeadTbl+this.id]);for(var h=dom.create("tHead"),i=this.tbl.rows[this.gridHeadRowIndex],j=[],k=0;k<this.nbCells;k++){var l=i.cells[k],m=l.getAttribute("id");m&&""!==m||(m=this.prfxGridTh+k+"_"+this.id,l.setAttribute("id",m)),j.push(m)}var n=dom.create("tr");if(this.gridEnableFilters&&this.fltGrid){this.externalFltTgtIds=[];for(var o=0;o<this.nbCells;o++){var p=this.prfxFlt+o+this.prfxGridFltTd+this.id,q=dom.create(this.fltCellTag,["id",p]);n.appendChild(q),this.externalFltTgtIds[o]=p}}for(var r=0;r<this.gridHeadRows.length;r++){var s=this.tbl.rows[this.gridHeadRows[0]];h.appendChild(s)}this.headTbl.appendChild(h),0===this.filtersRowIndex?h.insertBefore(n,i):h.appendChild(n),this.headTblCont.appendChild(this.headTbl),this.tblCont.parentNode.insertBefore(this.headTblCont,this.tblCont);var t=TF.tag(this.tbl,"thead");t.length>0&&this.tbl.removeChild(t[0]),this.headTbl.style.width=this.tbl.style.width,this.headTbl.style.tableLayout="fixed",this.tbl.style.tableLayout="fixed",this.headTbl.cellPadding=this.tbl.cellPadding,this.headTbl.cellSpacing=this.tbl.cellSpacing,this.headTblCont.style.width=this.tblCont.clientWidth+"px",this.SetColWidths(),this.tbl.style.width="",TF.isIE&&(this.headTbl.style.width="");var u=this;if(this.tblCont.onscroll=function(){u.headTblCont.scrollLeft=this.scrollLeft;var a=this;if(!u.isPointerXOverwritten)try{TF.Evt.pointerX=function(b){b=b||global.event;var c=tf_StandardBody().scrollLeft+a.scrollLeft;return b.pageX+a.scrollLeft||b.clientX+c},u.isPointerXOverwritten=!0}catch(b){u.isPointerXOverwritten=!1}},a.sort!==!1&&(this.sort=!0,this.sortConfig.asyncSort=!0,this.sortConfig.triggerIds=j),this.gridEnableColResizer&&(this.hasExtensions?this.__containsStr("colsresizer",str.lower(this.extensions.src.toString()))||(this.extensions.name.push("ColumnsResizer_"+this.id),this.extensions.src.push(this.gridColResizerPath),this.extensions.description.push("Columns Resizing"),this.extensions.initialize.push(function(a){a.SetColsResizer("ColumnsResizer_"+a.id)})):(this.extensions={name:["ColumnsResizer_"+this.id],src:[this.gridColResizerPath],description:["Columns Resizing"],initialize:[function(a){a.SetColsResizer("ColumnsResizer_"+a.id)}]},this.hasExtensions=!0)),a.col_resizer_cols_headers_table=this.headTbl.getAttribute("id"),a.col_resizer_cols_headers_index=this.gridHeadRowIndex,a.col_resizer_width_adjustment=0,a.col_enable_text_ellipsis=!1,u.tblHasColTag=TF.tag(u.tbl,"col").length>0?!0:!1,!TF.isIE){var v=function(a){if(a){for(var b=a.nbCells-1;b>=0;b--){var c=dom.create("col",["id",a.id+"_col_"+b]);a.tbl.firstChild.parentNode.insertBefore(c,a.tbl.firstChild),c.style.width=a.colWidth[b],a.gridColElms[b]=c}a.tblHasColTag=!
},IncludeFile:function(a,b,c,d){var e=d?d:"script",f=isImported(b,e);if(!f){var g,h=this,i=!1,j=TF.tag(doc,"head")[0];g="link"===str.lower(e)?dom.create("link",["id",a],["type","text/css"],["rel","stylesheet"],["href",b]):dom.create("script",["id",a],["type","text/javascript"],["src",b]),g.onload=g.onreadystatechange=function(){i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(i=!0,"function"==typeof c&&c.call(null,h))},g.onerror=function(){throw new Error("TF script could not load:\n"+this.src)},j.appendChild(g)}},HasGrid:function(){return this.hasGrid},GetFiltersId:function(){return this.hasGrid?this.fltIds:void 0},GetValidRowsIndex:function(a){if(this.hasGrid){if(!a)return this.validRowsIndex;this.validRowsIndex=[];for(var b=this.refRow;b<this.GetRowsNb(!0);b++){var c=this.tbl.rows[b];this.paging?("true"===c.getAttribute("validRow")||null===c.getAttribute("validRow"))&&this.validRowsIndex.push(c.rowIndex):"none"!==this.GetRowDisplay(c)&&this.validRowsIndex.push(c.rowIndex)}return this.validRowsIndex}},GetFiltersRowIndex:function(){return this.hasGrid?this.filtersRowIndex:void 0},GetHeadersRowIndex:function(){return this.hasGrid?this.headersRow:void 0},GetStartRowIndex:function(){return this.hasGrid?this.refRow:void 0},GetLastRowIndex:function(){return this.hasGrid?this.nbRows-1:void 0},GetHeaderElement:function(a){for(var b,c=this.gridLayout?this.headTbl:this.tbl,d=TF.tag(this.tbl,"thead"),e=0;e<this.nbCells;e++)if(e===a){0===d.length&&(b=c.rows[this.headersRow].cells[e]),1===d.length&&(b=d[0].rows[this.headersRow].cells[e]);break}return b},GetConfigObject:function(){return this.fObj},GetFilterableRowsNb:function(){return this.GetRowsNb(!1)}},TableFilter}),TF.id=function(a){return document.getElementById(a)},TF.tag=function(a,b){return a.getElementsByTagName(b)},TF.isIE=/msie|MSIE/.test(navigator.userAgent);