gerd
11/8/2016 - 1:36 PM

LN_EpisodeSummary.js

/**
 * This object will handle the patient list table
 * @class lexisnexis.component.PatientList
 */
/**
 * @author <a href="mailto:balaji.ranjan@lexisnexis.com">Balaji Ranjan</a>
 */
/**
 * @extends lexisnexis.component.Table
 */
//jQuery.namespace('lexisnexis.component');
lexisnexis.component.EpisodeSummary = lexisnexis.component.Table
        .extend({
            data : {
                defaultOrder : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ],
                resetInfo : 'The table preferences have been reset. The page will reload in 5 seconds to update the table',
                resetTitle : 'Information',
                saveInfo : 'The table preferences have been saved.',
                saveTitle : 'Information',
                AJAX_URL : "#",
		        dataSetId : '#dataSet',
		        tableId : '#ln_episode_summary_list',
		        saveId : '#episodeSummaryTable_save',
		        resetId : '#episodeSummaryTable_reset',
		        USER_PREF_URL : '<c:url value="/updateUserPref" />',
		        defaultSortColumn : "Patient Name",
		        secondarySortColumn : "Episode Description",
		        defaultSortOrder : "desc",
		        secondarySortOrder : "asc"
            },
            /**
             * initialize the table and register for functionality
             * @method ready
             */
            ready : function() {
                var cs = this;
                try {
                    cs.setDefaultColumnsPref();
                    // sets the order of the columns according to database
                    cs.setTableColumnOrder();
                    LN.debug("cs.data.tableOrder=" + cs.data.tableOrder);
                    cs.data.url=cs.getURL();
                    cs.initializeTable(cs.getURL());
                    cs.resetColReorder();
                    cs.fixColumns();
                    cs.displayLengthChange();
                    // Register for the dataset change event
                    LN.getPage().registerEvent(EVENT_TYPES.ON_DATASET_CHANGE,
                            cs, cs.onDataSetChange);
                    $(cs.data.tableId).DataTable();
                    $("#searchbox").on('keyup',function () {
                    	LN.debug(this.value);
                    	$(cs.data.tableId).DataTable()
                    	                  .column(1)
                    	                  .search('"'+this.value+'"')
                    	                  .draw();
                    });
                } catch (err) {
                	LN.debug("error "+err);
                }
                $(cs.data.saveId).click(function(e) {
                    cs.saveColumnOrdering();
                });
            },
            
            fixColumns: function() {
            	var cs=this;
            	LN.debug("Fix columns called");
            	var table = $(cs.data.tableId).DataTable();
            	/*var fc = new $.fn.dataTable.FixedColumns(table, {
            	        leftColumns: 4
            	    });
            	fc.fnUpdate();*/
            	var columns = table.columns('.ln-firstHeaderRow-table:not(.ln-display-none)');
            	var headers = columns.header();
            	var i = 0;
            	for (;i<headers.length;i++) {
            		$(headers[i]).css('padding-right','0em');
            	}
            	$(headers[i-1]).css('padding-right','3.5em');
            	$('.DTFC_LeftHeadWrapper').css('top','4px');
                $('.DTFC_LeftHeadWrapper table').css('margin-top','-88px');
                $('.dataTables_scrollHeadInner table').css('margin-top','-88px');
            	$('#ln_episode_summary_list').dataTable().fnAdjustColumnSizing();
            },
            displayLengthChange:function(){
           	 $('#tenResults').click( function () {
           		 currentTable.iDisplayStart = 10;
           	     currentTable.fnDraw();
           	    });
            	 $('#thirtyResults').click( function () {
            		currentTable.iDisplayStart = 30;
        	        currentTable.fnDraw();
        	    });
            	 $('#fiftyResults').click( function () {
            		currentTable.iDisplayStart = 50;
         	        currentTable.fnDraw();
         	    });
            	 $('#hunderedResults').click( function () {
             		currentTable.iDisplayStart = 100;
          	        currentTable.fnDraw();
          	    });
           },
            
            /**
             * initializes the table
             * @method initializeTable
             */
            initializeTable : function() {
                var cs = this;
                LN.debug("initializeTable called ");
                LN.debug(cs.data.url);
                var prevColumnNamesArray=cs.getCurrentColumnNamesArray();
                $(cs.data.tableId).dataTable().fnDestroy();
                var currentTable = $(cs.data.tableId).dataTable(
                                {
                                    "dom" : 'Rlfrt',
                                    "scrollY" : "100px",
                                    "sScrollX" : "100%",
                                    "sScrollXInner" : "150%",
                                    //Dataset change makes scrollY disappear
                                    "bScrollCollapse" : false,
                                    "bFilter" : false,
                                    "iTotalRecords" : "dataTableModel.iTotalRecords",
                                    "iDisplayLength" : 10,
                                    "processing" : false,
                                    "serverSide" : false,
                                    "bAutoWidth" : false,
                                    "bLengthChange" : false,
                                    /*"ajax" : {
                                        "cache": false,
                                        "url" :cs.data.url.replace(/\?id=[^\?]*&$/,''),
                                        "type" : "POST",
                                        "dataType" : "json",
                                        "data" : function(d) {
                                            var columnNamesArray=cs.getCurrentColumnNamesArray();
                                            LN.debug("data called");
                                            return $
                                                    .extend(
                                                            {},
                                                            d,
                                                            {
                                                                "columnNames":columnNamesArray.length>0?columnNamesArray:prevColumnNamesArray
                                                            });
                                        },
                                        'beforeSend': function(xhr) {
                                        	xhr.setRequestHeader('X-TransactionID', LN.TRANSACTION_ID);
                                            cs.handleBeforeAjax(cs);
                                        },
                                        'complete' : function() {
                            				$.fn.DataTable.ext.pager.numbers_length = 5;
                                            cs.handleAfterComplete(cs);
                                            cs.addGotoPageComponent("providerDetailsTableId","providerDetailsTable_gotobtn","providerDetailsTableId_gototxt");
                                             // Fix for DE940-Start
                                            cs.data.table.fnAdjustColumnSizing(false);
                                             // Fix for DE940-End
                                        },
                                        "dataFilter" : function(json,type){
                                        	var obj = jQuery.parseJSON(json);
                                        	return json;
                                        }
                                    },*/
                                    "aoColumns":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
                                    "bDeferRender" : true,
                                    "oColReorder": {
                                        //Exclude first column from colreorder
                                        "iFixedColumns": 4,
                                        "order" :cs.data.tableOrder,
                                        "fnReorderCallback" : function() {
                                        	var table = $(cs.data.tableId).DataTable();
                                        	var columns = table.columns('.ln-firstHeaderRow-table:not(.ln-display-none)');
                                        	var headers = columns.header();
                                        	var i = 0;
                                        	for (;i<headers.length;i++) {
                                        		$(headers[i]).css('padding-right','0em');
                                        	}
                                        	$(headers[i-1]).css('padding-right','3.5em');
                                        }
                                    },
                                    "order" : [
                                            [
                                                    cs
                                                            .getIndex(cs.data.defaultSortColumn),
                                                    "desc" ],
                                            [
                                                    cs
                                                            .getIndex(cs.data.secondarySortColumn),
                                                    "asc" ] ],
                                    
                                    "columnDefs" : [
                                            {
                                            	 "targets" : [3, 4, 5, 6],
                                                 "sClass":'text-center'
                                            },
                                            {
                                                // The `data` parameter refers
                                                // to the data for the cell
                                                // (defined by the
                                                // `data` option, which defaults
                                                // to the column being worked
                                                // with,
                                                "mRender" : function(data, type,
                                                        row) {
                                                    
                                                	return data;
                                                },
                                                "targets" : [ 7, 8],
                                                "sClass":'text-center'
                                            },
                                            {                                            	
                                                "mRender" : function(data, type,
                                                    row) {
                                                	
                                                	return data;
                                                },   
                                                "targets" : [9],
                                                "sClass":'text-center'
                                            },
                                            {

                                                "targets" : [ 1 ],
                                                "searchable" : true,
                                                "sortable": true,
                                                "mRender" : function(data,type,row) {
                                                	return data;
                                                }
                                            },
                                            {
                                                "render": function ( data, type, row ) {
                                                        return '<input type="checkbox" class="activeChkBox"' + ' value=' + data +'>';
                                                },
                                                "targets": [0],
                                                "sortable": false
                                            },
                                            {
                                            	"fnCreatedCell": function (td, sData, oData, iRow, iCol) {
                                                },  
                                                "sClass":'text-center'
                                            }
                                            ]
                                }
                            );
                var fc = new $.fn.dataTable.FixedColumns( currentTable,{
                	leftColumns : 4
                } );
                $('#ln_episode_summary_list').dataTable().fnAdjustColumnSizing();
            }
          });

escapeStr = function(str) {
    str = escape(str);
    return str;
};