import {Feature} from '../feature'; import Dom from '../dom'; export class AlternateRows extends Feature { /** * Alternating rows color * @param {Object} tf TableFilter instance */ constructor(tf) { super(tf, 'alternateRows'); var config = this.config; //defines css class for even rows this.evenCss = config.even_row_css_class || 'even'; //defines css class for odd rows this.oddCss = config.odd_row_css_class || 'odd'; } /** * Sets alternating rows color */ init() { if(this.initialized){ return; } this.processAll(); // Subscribe to events this.emitter.on(['row-processed', 'row-paged'], (tf, rowIndex, arrIndex, isValid)=> this.processRow(rowIndex, arrIndex, isValid)); this.emitter.on(['column-sorted'], ()=> this.processAll()); this.initialized = true; } processAll() { if(!this.isEnabled()){ return; } var tf = this.tf; var validRowsIndex = tf.getValidRows(true); var noValidRowsIndex = validRowsIndex.length === 0; //1st index var beginIndex = noValidRowsIndex ? tf.refRow : 0; // nb indexes var indexLen = noValidRowsIndex ? tf.nbFilterableRows+beginIndex : validRowsIndex.length; var idx = 0; //alternates bg color for(var j=beginIndex; j this.processRow(rowIndex, arrIndex, isValid)); this.emitter.off(['column-sorted'], ()=> this.processAll()); this.initialized = false; } }