gerd
11/7/2016 - 6:21 PM

createtemplatepatients_udf.js

/**
 * This js will handle all the Create template UDF functionalities
 */

lexisnexis.component.CreateTemplatePatientUDF = lexisnexis.component.JSTreeSingleNodes
.extend({
	data : {
		getPatientsUDFsURL : '/getPatientsUDFValues',
		availableDiv : '#availablePatientUDFList',
		selectedDiv : '#selectedPatientUDFList',
		searchUDFInputBox : '#udfPatientSearch',
		udfMoveRightBtn : '#udf-patient-move-right',
		udfMoveLeftBtn : '#udf-patient-move-left',
		udfSelectAllAvailableCheckBox : '#udfPatientSelectAllAvailable',
		udfSelectAllSelectedCheckBox : '#udfPatientSelectAllSelected',
		GET_PROVIDER_COUNT_UDFs: "getPatientsCountForUDFs",
		selectedListPlaceHolder :"#udf-patient-Selected-list-placeholder",
		availableListPlaceholder : "#udf-patient-Avail-list-placeholder",
		udfClassification : "#udfPatientClassification",
		udfClassDefault : "#udfPatientClassDefault",
		noMatchFound : "#udf-Patient-No-Match-Result",
		selPatientUDFsDataSet : [],
		udffilteredContent : [],
		maxRecordCount : LN.THRESHOLD_LIMIT,
		selectedItemsCountMsgDivID : "#selectedItemsCountMsgDiv",
		selectedMaxOutMessage : "You have exceeded the " +  LN.THRESHOLD_LIMIT + " maximum number of user defined fields that " +
    "you may add to the Selected List. Please uncheck <UNCHECK_COUNT> name(s) from the Available List",	
		searchKey : '',
		timerObj : ''
	},
	ready : function() {
		var cs = this;	
		cs.setupJSTree();
		cs.onChangeOfClassification();
		cs.onChangeOfSelectAllBox();
		cs.setupPatientUDFJSSearch();
		cs.registerMoveRightButton();
		cs.registerMoveLeftButton();
		LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK, cs, cs.onDataSetChange);
	},
	  /*
	   *Method creates Available and selected Js trees 
	   */
	  setupJSTree : function(){
	    var cs = this;
	    var patientUDF = $("#udfPatientClassDefault").data("default");
	    var params = JSON.stringify({
	      'selDataSet' : $('#ln_topmenu_dataset').attr("dataSetkey"),
	      'patientUDF' : $(cs.data.udfClassification).val(),
	      'searchKey' : $(cs.data.searchUDFInputBox).val(),
	      'availableDataRequred' : true
	    });

	    LN.ajaxPostJSON($(cs.data.availableDiv).parent(), LN.getContextPath() + cs.data.getPatientsUDFsURL, params, cs.setupJSTreeCallBack, cs); 
	  },
	  /**
	   * Method would be called by setupJSTree function
	   */
	  setupJSTreeCallBack : function(cs, data){
	    cs.updateOutOfStockNodes(cs, data.rightPanel);
	    cs.setupAvailableJsTree(cs, data, cs.data.availableDiv);
	    cs.setupSelectedJsTree(cs, data, cs.data.selectedDiv);
	  },
	  /**
	   * Method would get called when user changes the 
	   * classification drop down
	   */
	  onChangeOfClassification : function(){
	    var cs = this;
	    $(cs.data.udfClassification).on('change', function() {
	    	$(cs.data.udfClassDefault).html($(this).text());
	    	var params = JSON.stringify({
	        'selDataSet' : $('#ln_topmenu_dataset').attr("dataSetkey"),
	        'patientUDF' : $(cs.data.udfClassification).val(),
	        'searchKey' : $(cs.data.searchUDFInputBox).val(),
	        'availableDataRequred' : false
	    });
	      $('#udfPatientSelectAllAvailable').prop('checked', false);
	      LN.ajaxPostJSON($(cs.data.availableDiv).parent(), LN.getContextPath() + cs.data.getPatientsUDFsURL, params, cs.reloadAvailableJsTree, cs);
	    });
	  },

	  
	  /**
	   * Reload left panel when you change classification drop box
	   */
	  reloadAvailableJsTree : function(cs, data){
	    var availableJsTree = $(cs.data.availableDiv);
	    availableJsTree.jstree("destroy");
	    cs.setupAvailableJsTree(cs, data, $(cs.data.availableDiv));
	  },
	  setupPatientUDFJSSearch : function(){
	    var cs = this;
	    cs.setupJSSearch($(cs.data.searchUDFInputBox));
	    // Search
	    $(cs.data.searchUDFInputBox).keyup(function(e) {
	      e.preventDefault();
	      clearTimeout(cs.data.timerObj);
	      cs.data.timerObj = setTimeout(function() {
	        if(cs.data.searchKey != $(cs.data.searchUDFInputBox).val() 
	                && $(cs.data.searchUDFInputBox).val().length >= 3 || ($(cs.data.searchUDFInputBox).val().length == 2 && cs.data.searchKey.length == 3)
	                || $(cs.data.searchUDFInputBox).val().length == 0){
	          var params = JSON.stringify({
	            'selDataSet': $('#ln_topmenu_dataset').attr("dataSetkey"),
	            'patientUDF' : $(cs.data.udfClassDefault).text(),
	            'searchKey' : $(cs.data.searchUDFInputBox).val().length >= 3 ? $(cs.data.searchUDFInputBox).val() : "",
	            'availableDataRequred' : false
	          });
	          cs.data.searchKey = $.parseJSON(params).searchKey;
	          LN.ajaxPostJSON($(cs.data.availableDiv).parent(), LN.getContextPath() + cs.data.getPatientsUDFsURL, params, cs.searchJsTreeCallBack, cs);
	        }
	      },1000);
	    });
	  },
	  searchJsTreeCallBack : function(cs, data){
	    var availableJsTree = $(cs.data.availableDiv);
	    availableJsTree.jstree("destroy");
	    cs.setupAvailableJsTree(cs, data, $(cs.data.availableDiv));
	  },
	  //Method to move nodes from left to right
	  registerMoveRightButton : function(){
	    var cs = this;
	    $(cs.data.udfMoveRightBtn).click(function(e) {
	      //LN.showAjaxIndicator($(cs.data.availableDiv).parent());
	      cs.moveNodesToRight(cs.data.availableDiv, cs.data.selectedDiv, $(cs.data.udfClassification).val(), cs);
	    });
	  },
	  //Method to move node right to left
	  registerMoveLeftButton : function(){
	    var cs = this;
	    $(cs.data.udfMoveLeftBtn).click(function(e){
	      //LN.showAjaxIndicator($(cs.data.availableDiv).parent());
	      cs.moveNodesToLeft(cs.data.availableDiv, cs.data.selectedDiv, $(cs.data.udfClassification).val(), cs);
	    });
	  },
	  /*
	   * Method will get called when user changes dataset
	   */
	  onDataSetChange : function(cs){
	    var params = JSON.stringify({
	      'selDataSet' : $('#ln_topmenu_dataset').attr("dataSetkey"),
	      'patientUDF' : $(cs.data.udfClassification).val(),
	      'searchKey' : $(cs.data.searchUDFInputBox).val(),
	      'availableDataRequred' : true
	    });

	    LN.ajaxPostJSON($(cs.data.availableDiv).parent(), LN.getContextPath() + cs.data.getPatientsUDFsURL, params, cs.dataSetChangeCallBack, cs); 
	  },
	  
	  /**
	   * Method would get fired when selectAll check box are changed 
	   */
	  onChangeOfSelectAllBox : function(){
	    var cs = this;
	    //Left panel
	    $(cs.data.udfSelectAllAvailableCheckBox).on('change', function() {
	      if($(cs.data.udfSelectAllAvailableCheckBox).is(':checked')){
	        $(cs.data.availableDiv).jstree("select_all");   
	      }
	      else{
	        $(cs.data.availableDiv).jstree("deselect_all");
	      }
	    });
	    //Right panel
	    $(cs.data.udfSelectAllSelectedCheckBox).on('change', function() {
	      if($(cs.data.udfSelectAllSelectedCheckBox).is(':checked')){
	        $(cs.data.selectedDiv).jstree("select_all");
	      } 
	      else{
	        $(cs.data.selectedDiv).jstree("deselect_all");
	      }
	    });
	  }
	});