gerd
11/8/2016 - 1:38 PM

manage_peer_group.js

/**
 * This object will handle all the Manage Peer Group functionalities
 * 
 * @class lexisnexis.component.ManagePeerGroup
 */

jQuery.namespace('lexisnexis.component');
lexisnexis.component.managepeergroup = lexisnexis.component.Table.extend({

    /**
	 * initialize the table and register for functionality
	 * 
	 * @method ready
	 */
	data :{
		  searchText : "",
		  searchFieldId : '#ln_manage_peergroup_search',
		  previousVal: '',
		  createdBySearchText : "",
		  specialtySearchText : "",
		  columnsArray : ["pgm_name","pgm_specialty","pgm_providerCount","pgm_subClient","pgm_DateCreated","pgm_CreatedBy"],
		delay : (function(){
			  var timer = 0;
			  return function(callback, ms){
				  clearTimeout (timer);
				  timer = setTimeout(callback, ms);
			  };
			})() 
	},
    ready : function() {
        var cs = this;
        cs.InitAvailPeerGroupTable();
        cs.registerPeerGroupSearch();
        cs.populatePeerGroupSpcialty();
        cs.populatePeerGroupCreatedBy();
        cs.registerCreatedBySearch();
        cs.registerSpecialtySearch();
        cs.registerCreatePeerGroupBtn();
        //cs.adjustTableBodyHeight();
   	   $("#copy_peer_group").on('show.bs.modal',function(e) {  
   		$('#peerGroupSave').prop("disabled",false);
			
		});
   	   $("#ln_manage_peergroup_search").val('');
     },
          
     registerCreatedBySearch : function() {
    	 var cs = this;
    	 $("#ln_topmenu_ln_createdBy").on("click","li a",	function() {
    		 $("#ln_peerGrpCreatedBy").html($(this).text());
    		 $("#ln_peerGrpCreatedBy").attr("data-key",	 $(this).attr("data-key"));
    		 cs.data.createdBySearchText = $(this).attr("data-key");
    		 if ((cs.data.createdBySearchText == '#CURRENTUSER#') && ($(this).text() == 'MY PEER GROUPS')) {
    			 cs.data.createdBySearchText = $('#current_user_val').val(); 
    		 }
    		$('#availablepgtable').DataTable().ajax.reload();
          	 
		});
	},
	registerSpecialtySearch : function() {
   	 var cs = this;
   	 $("#ln_topmenu_ln_Specialty").on("click","li a",	function() {
   		 $("#ln_peerGrpSpecialty").html($(this).text());
   		 $("#ln_peerGrpSpecialty").attr("data-key",
   		 $(this).attr("data-key"));
   		 cs.data.specialtySearchText = $(this).attr("data-key");
   		 if(cs.data.specialtySearchText =="-1"){
   			cs.data.specialtySearchText = "";
   		 }
   		if(cs.data.specialtySearchText =="NO SPECIALTY"){
   			cs.data.specialtySearchText = "NO SPECIALTY";
   		 }
         $('#availablepgtable').DataTable().ajax.reload();
         	 
		});
	},
    populatePeerGroupCreatedBy : function(){
			var cs=this;
 	        $.ajax({
					'url' : LN.getContextPath() + '/getPeerGroupCreatedBy',
						'dataType' : 'json',
						'method' : 'POST',
						'data' : {
							"selDataSet":$('#ln_topmenu_dataset').attr('datasetkey'),
							'selBenchMark' : $('#ln_benchid').attr("data-key")
						},
						'beforeSend' : function(xhr) {
							xhr.setRequestHeader('X-TransactionID', LN.getPage().getTransactionID());
						},
						'success' : function(data, textStatus, jqXHR) {
							
							$('#ln_topmenu_ln_createdBy').empty();
							var object = JSON.stringify(data);
							$.each($.parseJSON(object), function(idx, obj) {
								
								var createdBy = obj.split("@")[0];
								var newliOption = "<li><a href='#' data-key='"+idx+"'>"+createdBy+"</a>";
								$('#ln_topmenu_ln_createdBy').append(newliOption);
								
							});
							
				},
				'complete' : function(data, textStatus, jqXHR) {
					
				}
			});
       	
		},
		populatePeerGroupSpcialty : function(){
			var cs=this;
 	        $.ajax({
					'url' : LN.getContextPath() + '/getPeerGroupSpecialty',
						'dataType' : 'json',
						'method' : 'POST',
						'data' : {
							"selDataSet":$('#ln_topmenu_dataset').attr('datasetkey'),
							'selBenchMark' : $('#ln_benchid').attr("data-key")
						},
						'beforeSend' : function(xhr) {
							xhr.setRequestHeader('X-TransactionID', LN.getPage().getTransactionID());
						},
						'success' : function(data, textStatus, jqXHR) {
							
							$('#ln_topmenu_ln_Specialty').empty();
							var object = JSON.stringify(data);
							
							$.each($.parseJSON(object), function(idx, obj) {
								
								var specialty = obj;
								var newliOption = "<li><a href='#' data-key='"+specialty.specialty+"'>"+specialty.specialtyDesc+"</a>";
								$('#ln_topmenu_ln_Specialty').append(newliOption);
								
							});
							
				},
				'complete' : function(data, textStatus, jqXHR) {
					
				}
			});
       	
		},
		
    registerPeerGroupDetail : function(){
    	$('.peerGroupDetail').bind('click', function(e){
            if($(this).attr('peerGroupKey')){
            	 cs.data.peerGroupKey = $(this).attr('peerGroupKey');
            }
            if($(this).attr('peerGroupKey')){
           	 cs.data.showIcons = $(this).attr('showIcons');
           }
            $('#error').css("display", "none");                  
            e.preventDefault();
            $.ajax({
				url : LN.getContextPath()+'/updatepeergroupkey',
				data : {
					"peerGroupKey" : cs.data.peerGroupKey,
					"showIcons" : cs.data.showIcons
				},
				type : "POST",
				success : function(data) {
					location.href=LN.getContextPath()+'/managepeergroupdetail';
				}
			  });
    	});
    },
    
    registerCopyPeerGroup : function(){
    	var cs= this;
    	$('.copyPeerGroup').on("click" ,function(e){
    		$('#peerGroupSave').unbind('click');
    		var peerGroupName = $(this).attr('peerGroupName');
    		var peergroupKey = $(this).attr('peergroupkey');
    		$('#ln-errorMsgSavePeer').html("");
    		$('#peerGroupSaveName').val(peerGroupName);
    		cs.data.delay(function(){
    			$('#peerGroupSaveName').on('keyup',function (e) {
    			var peerName= $('#peerGroupSaveName').val().trim();
     		if(LN.containsSpecialCharacters(peerName)){
 				$('#ln-errorMsgSavePeer').html("You are only allowed to use the following special characters: . (Space) _ , - $");
 			}else{
  				$('#ln-errorMsgSavePeer').html("");
  				$('#peerGroupSave').prop("disabled",false);
  			}
     		});
    		}, 1000 );
   		 $('#copy_peer_group').modal({
	    		 backdrop : 'static',
	    			keyboard: 'false'
    		});
    		
    		cs.savePeerGroup(peergroupKey, peerGroupName);
    	});
    },

    registerCreatePeerGroupBtn : function(){
    	var cs= this;
    	$('.createPeerGroup').on("click" ,function(e){
    		sessionStorage.CreatePeerGroupFlag="true";
    		sessionStorage.CPCreatePeerGroupFlag="false";
    		sessionStorage.EditPeerGroupName="";    		
    		sessionStorage.EditPeerGroupKey=0;    		
     		btnQuickSubmit('createpeergroup');
     	});
    },
    
    registerEditPeerGroupBtn : function(){
    	var cs= this;
    	$('.editPeerGroup').on("click" ,function(e){
    		var peerGroupName = $(this).attr('peerGroupName');
    		var peerGroupKey = $(this).attr('peerGroupKey');
    		sessionStorage.CreatePeerGroupFlag="false";
    		sessionStorage.EditPeerGroupKey=peerGroupKey;
    		sessionStorage.EditPeerGroupName=peerGroupName;    		
    		
     		if(LN.containsSpecialCharacters(peerGroupName)){
 				$('#ln-errorMsgSavePeer').html("You are only allowed to use the following special characters: . (Space) _ , - $");
 			}else{
  				$('#ln-errorMsgSavePeer').html("");
  	     		btnQuickSubmit('createpeergroup');
  			}     		
     	});
    },
    
    savePeerGroup : function(peergroupKey, peerGroupName){
    	var cs = this;
    	$('#peerGroupSave').on("click", function(e){
    		this.disabled = true;
    		var newPeerGroupName ="";
    		 var token = $(window.location).attr('search');
    		 var ajaxUrl =LN.getContextPath()+'/savePeerGroup';
    		 newPeerGroupName = $('#peerGroupSaveName').val().trim();
    		 if(LN.containsSpecialCharacters(newPeerGroupName)){
  				return ;
  			}
    		 var checkLowerName = newPeerGroupName.toLowerCase();
				if (checkLowerName == 'unassigned')
				{
					 $( "#ln-errorMsgSavePeer" ).html("Invalid Peer Group Name - System Peer Group Name is not allowed.");		
		           	 return;						 
				}
    		 if (newPeerGroupName.length > 0) {
    		     	 if (newPeerGroupName.length <= 32) {
    		     			$.ajax({
    							url : ajaxUrl + token,
    							type : "POST",
    							data : {
    								'selDataSet':$('#ln_topmenu_dataset').attr('datasetkey'),
                                    'selDataSetRangeBegin':  $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
                    				'selDataSetRangeEnd':  $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
                    				'selSubClientIds' : $('#ln_subClient_id').attr("data-key"),
                    				'selBenchMark' : $('#ln_benchid').attr("data-key"),
                    				'selDataSetRangeRiskColumnName':  $('#ln_topmenu_dataset_range_id').attr("riskColumnName"),
                    				'peergroupName' : peerGroupName,
                    				'peergroupKey'  : peergroupKey,
    								'newPeerGroupName' : newPeerGroupName
    								
    							},
    							success : function(data){
    								
    								$('#ln-errorMsgSavePeer').html("");
    								if(data == 1){
    									$('#ln-errorMsgSavePeer').html("Peer group name  already exists.");
    								}
    								else{
    									$('#peerGroupSave').prop("disabled",false);
    		    		     			$('#copy_peer_group').modal('hide');
    									$('#availablepgtable').DataTable().ajax.reload();
    									
    									}
    								}
    							
    						});
    					 } else {
    						$('#ln-errorMsgSavePeer').html("Please enter a peer group name  not to exceed 32 characters.");
    					 } 
    				} else {
    						$('#ln-errorMsgSavePeer').html("Please enter a Peer group name.");
    						
    				}
    	});
    	
    },

    registerDeletePeerGroup : function(){
    	var cs= this;
    	$('.deletePeerGroup').on("click" ,function(e){
    		$('#delpeerGroupOK').unbind('click');
    		var peerGroupName = $(this).attr('peerGroupName');
    		var peerGroupId = $(this).attr('peerGroupKey');
    		$('#del_PeerGroupName').html(peerGroupName);
   		 $('#del_peer_group').modal({
    		 backdrop : 'static',
    			keyboard: 'false'
     	 });
   		 cs.deletePeerGroup(peerGroupId);
		});
   },
   
   deletePeerGroup : function(peerGroupId){
	   $('#delpeerGroupOK').on("click",function(e){
		   $.ajax({
               url: "ppmDeletePeerGroup",
               type : "POST",
               data: {
               	"peerGroupKey" : peerGroupId
               },
               success:  function(data){
               	$("div#del_peer_group").modal("hide");
                   if(data==0) {
                	   $('#availablepgtable').DataTable().ajax.reload();
                   } else {
                       $.growl({
                            title : "",
                            message : "Error Occured! Template Not Deleted"
                       });
                   }
               },
               error:  function(data){
               	    $.growl({
                       title : "",
                       message : "Error Occured! Template Not Deleted"
                   });
               }
           });
		   
	   });
	   
	},
   registerPeerGroupSearch: function() {
     	var cs=this;
     	$(cs.data.searchFieldId).on('keyup',function (e) {
    		var isValidSearch=true;
    		if (!isValidateSearch(e,cs.data.searchFieldId,false)) {
    			isValidSearch= false;
    			cs.data.previousVal = $(cs.data.searchFieldId).val();
			}
 			var searchText = $("#ln_manage_peergroup_search").val().toUpperCase();
          	cs.data.searchText = searchText;
 			cs.data.delay(function(){
 				if(isValidSearch && isValidTextLength(cs,$(cs.data.searchFieldId).val(),3)){
               	 $('#availablepgtable').DataTable().ajax.reload();
               	}
		 	}, 1000 );
     	});   
     },
     
     
     adjustTableBodyHeight: function(tableID){   
     	var cs=this;            	
     	var heightOffset=2;
     	if(!cs.isIE()){
     		heightOffset = 0.5;
     	}

 		var tableBody=$(tableID+"_wrapper "+".dataTables_scrollBody");

 		var divheight;
 		//var foo = tableBody.css("width");
 		if(tableBody.css("height")){
 			divheight=parseInt(tableBody.css("height").split("px")[0]);	  
 		}	        	      	
         if(divheight && divheight<300){
         	var newdivheight = divheight+heightOffset+"px";
         	tableBody.css("min-height",newdivheight);
         	if (divheight < 50) {
         		divheight = divheight + 10;
         		var newdivheight = divheight+heightOffset+"px";
	            	tableBody.css("min-height",newdivheight);
         	// $(tableID+"_wrapper table").css("border-bottom","none");
         	}
         }       	
     },
     
    
 InitAvailPeerGroupTable: function() {
	 	var contextPath=LN.getContextPath();
    	var cs=this;
    	$('#availablepgtable').dataTable().fnDestroy();
    	var table = $('#availablepgtable')
    	.dataTable({
        	"dom": 'rt<"bottom"ilp>',
        	"scrollY" : "310px",
            "sScrollX" : "100%",
            "scrollXInner": "100%",
            "scrollCollapse": true,
            "bFilter" : false,
            "pageLength": 10,
        	"processing" : false,
            "serverSide" : true,
            "iTotalRecords" : "dataTableModel.iTotalRecords",
            "iDisplayLength" : 100,
            "searching": false,
        	"paging":   true,
        	"pagingType": "simple_numbers",
        	
            //"bResponsive" :false,     
        	
            "bDeferRender" : true,
            
            //"autoWidth": false,
            
            "language": {
                "emptyTable":     "No Peer Group Exists"
            },
            "ajax" : {
                "cache": false,
                "url" : 'getManagePeerGroupPopulation',
                "type" : "POST",
                "dataType" : "json",
                "data" : function ( d ) {
                    return $.extend( {}, d, {
                    	"columnNames":cs.data.columnsArray,
         				'searchPeerGrpName':cs.data.searchText,
         				'createdBySearchText' : cs.data.createdBySearchText,
         				'specialtySearchText' : cs.data.specialtySearchText,
         				"selDataSet":$('#ln_topmenu_dataset').attr('datasetkey'),
                        'selDataSetRangeBegin':  $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
        				'selDataSetRangeEnd':  $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
        				'selSubClientIds' : $('#ln_subClient_id').attr("data-key"),
        				'selBenchMark' : $('#ln_benchid').attr("data-key"),
        				'selDataSetRangeRiskColumnName':  $('#ln_topmenu_dataset_range_id').attr("riskColumnName")
                    } ); },
                
                'beforeSend': function(xhr) {
                	cs.handleBeforeAjaxLoad("#availablepgtable");
                    cs.data.defaultStartingRowPatients = -1;                                    
                	xhr.setRequestHeader('X-TransactionID', LN.TRANSACTION_ID);

                },
                'complete' : function() {
                   cs.handleAfterAjaxLoad("#availablepgtable");
                   
                   setTimeout(function(){
                	   table.fnAdjustColumnSizing(false);
                    },200);
                   
                },
                "dataFilter" : function(json,type){
                	var obj = jQuery.parseJSON(json);
                	return json;
                } 
            },
            "order" : [
                       [0,"asc" ]
                       ],       
			"columnDefs": [
			               
                           { "targets": [0, 1, 5], 
                        	  "sClass": 'text-left text-nowrap' 
                           },
                           
                           {
                               "targets": [2, 3, 4, 6, 7, 8],
                               "sClass": 'text-center'
                           },
                           {
                               "render": function (data, type, row) {
                            	  var cmp = row[6];
                              	  var currUser = $('#current_user_val').val();
                              	  if(cmp == currUser){
                              		return '<a href="javascript:void(0);" class ="peerGroupDetail" showIcons ="block" peerGroupKey=' + row[0] +'>' + row[1] + '</a>';
                              	  }else{
                                   return '<a href="javascript:void(0);" class ="peerGroupDetail" showIcons ="none" peerGroupKey=' + row[0] +'>' + row[1] + '</a>';
                              	  }
                               }, "targets": [0],
                               	"searchable": true
                               
                           },
                           {
                        	 "targets": [1], 
                             "render": function (data, type, row) {
                               return row[2] ;
                             } 
                           },
                           {
                               "render": function (data, type, row) {
                                   return row[3] ;
                               }, 
                               "targets": [2]
                               
                           },
                           {
                               "render": function (data, type, row) {
                                   return row[4] ;
                               }, 
                               "targets": [3]
                              
                               
                           },
                           {
                               "render": function (data, type, row) {
                                   return row[5] ;
                               }, 
                               "targets": [4]
                              
                               
                           },
                           
                           {
                               "render": function (data, type, row) {
                                   return row[6].split("@")[0];
                               }, "targets": [5]
                              
                           },
                           {
                               "render": function (data, type, row) {
                            	 return '<a href="javascript:void(0);" class="copyPeerGroup" peerGroupName="'+ row[1]+'" peerGroupKey=' + row[0] +'><img src="'+contextPath+'/resources/default/images/copy.png" width="20" /></a>';
                            	}, "targets": [6],
                               "sortable":false
                           },
                           {
                               "render": function (data, type, row) {
                            	 var cmp = row[6];
                            	 var curr_User = $('#current_user_val').val();
                             	 if(cmp == curr_User){
                             		 return '<a href="javascript:void(0);" class="editPeerGroup" peerGroupName="'+ row[1]+'" peerGroupKey=' + row[0] +'><img src="'+contextPath+'/resources/default/images/edit.png" width="15" /></a>';
                             	  }else{
                             		 return '<a href="javascript:void(0);"></a>';                             	  
                             	  }
                               }, "targets": [7],
                               "sortable":false
                           },
                           {
                               "render": function (data, type, row) {
                            	  var cmp = row[6];
                             	  var currUser = $('#current_user_val').val();
                             	  if(cmp == currUser){
                                   return '<a href="javascript:void(0);" class="deletePeerGroup" peerGroupName="'+ row[1]+'" peerGroupKey=' + row[0] +'><img src="'+contextPath+'/resources/default/images/delete.png" width="16" /></a>';
                             	  }else{
                             		 return '<a href="javascript:void(0);"></a>';                             	  
                             		}
                               }, "targets": [8],
                               "sortable":false
                           }
                           
                       ],
                       'fnDrawCallback' : function(oSettings ) {
                    	cs.addGotoPageComponentPPM("availablepgtable","availablepgtable_gotobtn","availablepgtable_gototxt","availablepgtable_gotoerror");
           	        	cs.registerCopyPeerGroup();
           	        	cs.registerDeletePeerGroup();
           	        	cs.registerPeerGroupDetail();
           	        	cs.registerEditPeerGroupBtn();
           	        	cs.adjustTableBodyHeight("#availablepgtable");
           	        	
           	         },
           	         "fnPreDrawCallback" : function(oSettings) {
           	        	 if (oSettings.aaSorting[0] && oSettings.aaSorting[0][0] !== 1 ) {
                        		cs.data.manualsort = true;
                        		}
                           	return true;
                     }
           	         
          });
    }
   	
   	
});