gerd
11/8/2016 - 1:55 PM

templateaction.js

/**
 * This object will handle all the Create template save,cancel,run actions
 * 
 * @class lexisnexis.component.CreateTemplateAction
 * 
 */
lexisnexis.component.CreateTemplateAction = lexisnexis.component.Component.extend({
	data : {
		saveTemplateId : '#saveTemplateModalBtn',
		renameSaveTemplateId :'#ln_saveTemplate',
		saveTemplateUrl : '',
		cancelTemplateId : '#cancelTemplateBtn',
		checkTemplateStatusURL : 'checkTempFilterStatus',
		cancelFilterURL : 'cancelFilters',
		clearFiltersMsgDivId : '#clearFiltersMsgDiv',
		clearFiltersBtnId: '#clearFiltersBtn',
		redirect:false,
		valid: true
	},
	
	/**
	 * register all the action handlers
	 *
	 * @method ready
	 */
	ready : function() {
		var cs = this;
		cs.registerSaveTemplateAction();
		cs.registerRenameSaveTemplateAction();
		//cs.registerCancelTemplateAction();
		cs.CancelTemplateAction();
		cs.registerClearTemplateAction();
		cs.hideRenameSaveErrorMsgAction();
		//cs.cancelRenameOnClickAction();
		 cs.renameTemplateAction(cs);
		 cs.cancelRenameRemplateAction();
		 cs.changeSaveAsAction();
		 cs.registerSaveAsCreateTemplateAction();
		 cs.saveTemplateConfirmation(cs);
		 cs.registerSaveButtonClickedOnModel();
		 cs.validateCreateTemplateName();
	},
	
	validateCreateTemplateName: function(){
		$('#templateNameSaveTxt').on('keyup', function(e) {
			if (!isValidateSearch(e,'#templateNameSaveTxt', false)) {
				cs.data.valid = false;
			}else{
				cs.data.valid = true;
			}
		});
		$('#templateReNameSaveAsTxt').on('keyup', function(e) {
			$('#ln-errorMsgRenameSaveAsTemp').html(""); // Removing the error message for each initial pop up load
			if (!isValidateSearch(e,'#templateReNameSaveAsTxt', false)) {
				cs.data.valid = false;
			}else{
				cs.data.valid = true;
			}
		});
/*		$('#renameTxt').on('keyup', function(e) {
			if (!isValidateSearch(e,'#renameTxt')) {
				cs.data.valid = false;
			}else{
				cs.data.valid = true;
			}	
		});*/
		
	},
	
	goToRefererPage: function(){
		if(LN.REFERERPAGE){
     	   window.location.href = LN.REFERERPAGE;
        }
	},
			
	/**
	 *  Handle "Cancel Template for unsaved filters" on the Create /Edit template page
	 *  
	 * @method CancelTemplateAction
	 */
	CancelTemplateAction : function() {
		var cs = this;
		$(cs.data.cancelTemplateId).click(function(e) {
			$.ajax({ url : cs.data.checkTemplateStatusURL,
                type : "POST",
                success : function(data, textStatus, jqXHR) {
                       if (data.isTempFilterApplied) {
                              $('#cancelTemplateMsgDialog').modal('show');
                              $("button#cancelTemplateMsgYes").click(function(e) {  
                                     $('#cancelTemplateMsgDialog').modal('hide');
                                     cs.trimTemplateName(".ln-template-title-ellip", 30);
                                     cs.saveTemplate(true);
                              });
                             
                              $("button#cancelTemplateMsgNo").click(function(e) {
                                     LN.debug("running no button click ajax");
                                     $.ajax({
                                            url : cs.data.cancelFilterURL,
                                            type : "POST",
                                            success : function() {
                                                   LN.debug("inside success of no click");
                                                   $("div#cancelTemplateMsgDialog").modal("hide");
                                                   cs.trimTemplateName("#ln_template_activeName", 30);
                                                   cs.goToRefererPage();                                                   
                                            }
                                     });
                              });
                       }else{
                    	   cs.goToRefererPage();
                       }
                }
          });
		});
	},
	
	/**
	 * register for save button click and save the template
	 * 
	 * @method registerSaveTemplateAction
	 */
	registerSaveTemplateAction : function() {
		var cs = this;
		$(cs.data.saveTemplateId).click(function(e) {
			e.preventDefault();
			/* Sending redirect is false, Once saved need be on same page*/
			LN.debug("registerSaveTemplateAction ..."); 
			LN.getPage().registerEvent(EVENT_TYPES.COMPARISON_PEER_GROUP_SUCCESS,
                    cs, function(){
				$("#templateNameSaveTxt").val(''); //1043
				cs.saveTemplate(false);
			},true);
			LN.getPage().validateSelectedComparisonPeerGroup();
		});
	},
	
	registerRenameSaveTemplateAction : function() {
		var cs = this;
		$(cs.data.renameSaveTemplateId).click(function(e) {
			e.preventDefault();
			/* Sending redirect is false, Once saved need be on same page*/
			LN.debug("registerRenameSaveTemplateAction ...");
			LN.getPage().registerEvent(EVENT_TYPES.COMPARISON_PEER_GROUP_SUCCESS,
                    cs, function(){
				cs.renameSaveTemplate();
			},true);
			LN.getPage().validateSelectedComparisonPeerGroup();

		});
	},
	
	/**
	 * function to reload the page after reload
	 */
	reloadPage : function(type) {
		$.ajax({
			url : LN.getContextPath()+'/clearFilters?type='+type,
			type : "POST",
			success : function() {
				location.reload();
			}
		});	
	},
	
	/**
	 * Handle "Clear Template" on the Create /Edit template page
	 * 
	 * @method registerClearTemplateAction
	 */
	registerClearTemplateAction : function() {
		var cs = this;
	    
		$('#CreateTemplateClearAll').click(function(e) {
			var type = "clearAllFilters";    
			cs.reloadPage(type);
		});
	    $('#CreateTemplateClearPageOnly').click(function(e) {
	    	  var type = "clearPageFilter";              		
	    	  cs.reloadPage(type);
	    });
	    $(cs.data.clearFiltersBtnId).click(function(e) {
	    	$(cs.data.clearFiltersMsgDivId).modal();
	    });
	},
	
	/**
	 * Handle "Save Template" on the Create /Edit template page
	 * 
	 * @method saveTemplate
	 */
	saveTemplate : function() {
		var cs = this;
		var templateId = $("#createTemplateIdHid").val();
		if(templateId == 0){
			$('#saveTemplateModal').modal({
						backdrop: 'static',
						keyboard: 'false'
			}); 
			$('#ln-errorMsgSaveTemp').html("");// Removing the error message for each initial pop up load
			$('#templateNameSaveTxt').parent().next(".error").remove();
		} else {
			
			var existingTemplateName = $("#ln_renameLbl").text().trim(); // $('#renameTxt').val().trim();
			
			$('#existingTemplateName_saveAs').html(existingTemplateName); // Setting the existing template name in save as modal
			
			$('#renameSaveTemplateModal').modal({
						backdrop: 'static',
						keyboard: 'false'
						}	
			); 
			
			$('.saveAs_OldTemp').prop('checked',true);
			
			$('#templateReNameSaveAsTxt').val('');
			$('#templateReNameSaveAsTxt').parent().next(".error").remove();
			if($('.saveAs_OldTemp').is(':checked')){
				$("#saveAs_TemplateName").hide();
			}
			
			$('#ln-errorMsgRenameSaveTemp').html(""); // Removing the error message for each initial pop up load
			$('#ln-errorMsgRenameSaveAsTemp').html("");
			
		}
	   
	},
	// save button clicked on Model
	registerSaveButtonClickedOnModel : function(){
		var cs = this;
		var regex = new RegExp("^[\.\,a-zA-Z0-9\b$_-\\s]+$");
		$("#createTemplateSave").click(function(e) {
		//	if($('#templateNameSaveTxt').val().match(regex)){
			var templateName = $("#saveTemplateModal #templateNameSaveTxt").val().trim();
			var allProvidersRegex = /^[a][l][l][\s]*[p][r][o][v][i][d][e][r][s]$/;
/*			if(LN.containsSpecialCharacters(templateName)){
				$('#ln-errorMsgSaveTemp').html("Special characters are not allowed");
				return;
			}*/
//			if(templateName.length > 0 && (!$('#saveTemplateModal #templateNameSaveTxt').val().match(regex))){
			if(templateName.length > 0 && (!templateName.match(regex))){
				return false;
			}else if(templateName != "" && templateName.toLowerCase().match(allProvidersRegex)){
				$('#ln-errorMsgSaveTemp').html("All Providers is a protected system template name.");
				return;
			}else {
				$('#ln-errorMsgSaveTemp').html("");
			}
			var templateId = $("#createTemplateIdHid").val();
			var templateVersion;
			/*Need remove after ajax prefilter function started working */
			var token = $(window.location).attr('search');
			if (templateName.length > 0) {
				if (templateName.length <= 60) {
					LN.getPage().registerEvent(EVENT_TYPES.COMPARISON_PEER_GROUP_SUCCESS,
		                    cs, function(){
							$.ajax({
								url : cs.data.saveTemplateUrl + token,
								type : "POST",
								data : {
									"templateName" : templateName,
									"templateId" : templateId,
									"templateVersion" : templateVersion
								},
								success : function(data) {	
									LN.debug("inside success of save template");
									// Checking template name already exists or not
									if (data['templateId'] == 0) {
										$('#ln-errorMsgSaveTemp').html("Template name already exists.");
									} else {
										sessionStorage.SHOW_UNSAVED_MODAL === 'false' ;
										$("div#saveTemplateModal").modal('hide');
										
		
										//window should not scroll when pop up is visible
										if ( $('#ln_topNav ul .ln-selected a').text() == 'Home' ) {
											$("#ln_renameLbl").html('All Providers');
										} else {
											$("#ln_renameLbl").html(templateName);  // Added to display the template name after save.
											cs.trimTemplateName("#ln_template_activeName", 30);
											$(".ln_renameBtn").css("display","inline");
										}
		
										// Saving template name, id and version
										$("#createTemplateIdHid").val(data['templateId']);
										$("#createTemplateNameHid").val(data['templateName']);
										$("#templateVersionHid").val(data['templateVersionId']);
										$("#save-TemplateName").html(templateName);
										$("#saveTemplateConfirmModal").modal('show');
										
		
									}// if (data['templateId'] == 0)
								},
								error : function(data) {
									$.growl({title : "",message : "Error Occured! Template not saved"});
								}	
							});// end outer ajax
							
					},true);
					LN.getPage().validateSelectedComparisonPeerGroup();
				} else {
					$('#ln-errorMsgSaveTemp').html("Please enter a template name not to exceed 60 characters.");
				} // if (templateName.length <= 60)
			} else {
				$('#ln-errorMsgSaveTemp').html("Please enter a template name.");
			} 	
			
			// End of save new template....

		//}
		});


	},
	renameSaveTemplate: function(){
		var cs = this;
		var existingTemplateName = $("#ln_renameLbl").text().trim(); // $('#renameTxt').val().trim();
		
		var templateId= $("#createTemplateIdHid").val();
		
		var updatetemplateReName ='';
		var templateVersion = $("#templateVersionHid").val().trim();
		var token = $(window.location).attr('search');
		var ajaxUrl = '';
		$('#ln-errorMsgRenameSaveTemp').html(""); // Removing the error message
		 
       	updatetemplateReName = $('#renameTxt').val().trim();
        templateId= $("#createTemplateIdHid").val();
        ajaxUrl="renameTemplate";
        var allProvidersRegex = /^[a][l][l][\s]*[p][r][o][v][i][d][e][r][s]$/;
        var regex = new RegExp("^[\.\,a-zA-Z0-9\b$_-\\s]+$");
        if (updatetemplateReName.length > 0) {
       	 if (updatetemplateReName.length <= 60) {
       		 if(updatetemplateReName!="" && updatetemplateReName.toLowerCase().match(allProvidersRegex)){
       			$.growl({
		             title : "",
		             message : "All Providers is a protected system template name."
		           });
       			$("#ln_renameLbl").html(existingTemplateName);  // Added to display the template name after save.
				$("#ln_renameLbl").css('display', 'inline');
				$(".ln_renameBtn").show();
				
				$('.ln_saveBtn').hide(); // Hide save and cancel once rename template completes
				$('.renameTxt').hide(); // Hide the text box
				
				$("#createTemplateIdHid").val(templateId);
				$("#createTemplateNameHid").val(existingTemplateName);
				$("#templateVersionHid").val(templateVersion);
       			 return false;
       		 }
       			if(!updatetemplateReName.match(regex)){
       			$.growl({
		             title : "",
		             message : "You are only allowed to use the following special characters: . (Space) _ , - $"
		           });
       			/*$("#ln-errorMsgRenameSaveTemp").html("You are only allowed to use the following special characters: . (Space) _ , - $");*/
      			$("#ln_renameLbl").html(existingTemplateName);  // Added to display the template name after save.
				$("#ln_renameLbl").css('display', 'inline');
				$(".ln_renameBtn").show();
				
				$('.ln_saveBtn').hide(); // Hide save and cancel once rename template completes
				$('.renameTxt').hide(); // Hide the text box
				
				$("#createTemplateIdHid").val(templateId);
				$("#createTemplateNameHid").val(existingTemplateName);
				$("#templateVersionHid").val(templateVersion);
      			 return false;
       		 }
				$.ajax({
					url : ajaxUrl + token,
					type : "POST",
					data : {
						"templateName" : updatetemplateReName,
						"templateId" : templateId,
						"templateVersion" : templateVersion
					},
					
					success : function(data){
						LN.debug("Inside rename - save as new template");
						if(data['templateId'] == 0){
							//$('#ln-errorMsgRenameSaveTemp').html("Template name already exists.")
							$.growl({
					             title : "",
					             message : "Template name already exists."
					           });
							
							
							$("#ln_renameLbl").html(existingTemplateName);  // Added to display the template name after save.
							$("#ln_renameLbl").css('display', 'inline');
							$(".ln_renameBtn").show();
							
							$('.ln_saveBtn').hide(); // Hide save and cancel once rename template completes
							$('.renameTxt').hide(); // Hide the text box
							
							$("#createTemplateIdHid").val(templateId);
							$("#createTemplateNameHid").val(existingTemplateName);
							$("#templateVersionHid").val(templateVersion);
							
						}else{
							
							if ( $('#ln_topNav ul .ln-selected a').text() == 'Home' ) {
								$("#ln_renameLbl").html('All Providers');
							} else {
								$("#ln_renameLbl").html(updatetemplateReName);  // Added to display the template name after save.
								$('#ln_renameLbl').css('display', 'inline');
								$(".ln_renameBtn").show();
								
								$('.ln_saveBtn').hide(); // Hide save and cancel once rename template completes
								$('.renameTxt').hide(); // Hide the text box
								
								$("#createTemplateIdHid").val(data['templateId']);
								$("#createTemplateNameHid").val(updatetemplateReName);
								$("#templateVersionHid").val(data['templateVersionId']);
								//$(".ln-template-title-ellip").ellipsis({lines: 1});
								cs.trimTemplateName(".ln-template-title-ellip", 30);
								
								 $.growl({
						             title : "",
						             message : "Your template <b>" + updatetemplateReName + "</b> has renamed successfully."
						           });
							}
						}
						
						$("#createTemplateForm :input").removeAttr('disabled');
						$("#ln_filter-container :input").removeAttr('disabled');
						//Defect 600. Disable Run after Renaming template if provider count is zero
						LN.debug("Provider Count = "+$('#ln_providerCount').text());
						if ($('#ln_providerCount').text() != '0') {
							$("#ln_saveTemplateWrapper :input").removeAttr('disabled');
						} else {
							$('#saveTemplateModalBtn').removeAttr('disabled');
							$('#clearFiltersBtn').removeAttr('disabled');
							$('#cancelTemplateBtn').removeAttr('disabled');
						}
					}
					
				});// end of ajax	
			 } else {
				//$('#ln-errorMsgRenameSaveTemp').html("Please enter a template name not to exceed 60 characters.");
			 } // if (templateName.length <= 60)
		} else {
				$('#ln-errorMsgRenameSaveTemp').html("<br/>Please enter a template name.");
		}
		
	},
	
	hideRenameSaveErrorMsgAction : function(){
		
		$("#renameTxt").focus(function() {
			//$("#ln_renameTxt").html("");
			$('#ln-errorMsgRenameSaveTemp').html("");
		}); 
		
	},
	
	cancelRenameOnClickAction : function(){
		
		
		$('#ln_Providers_Count_Panel_down_arrow').on('click',function(e){ 
			$('#ln_cancelTemplate').click();
		});
		
		$('.fa-question').on('click',function(e){ 
			$('#ln_cancelTemplate').click();
		});
		
		$('#ln_ppm_layout').on('click',function(e){
			LN.debug("inside the document click");
			if(e.target.id == 'ln_saveTemplate' ||e.target.id == 'renameTemplate' ||e.target.id == 'renameTxt' ||e.target.id == 'ln_cancelTemplate'  ){
				return false;
			}else{
				LN.debug("document click removed");
				$('#ln_ppm_layout').off('click');
				$('#ln_cancelTemplate').click();				
			}

			});
	},
	
	renameTemplateAction : function(cs){
		
		$('#renameTemplate').bind('click', function() {
			$("#renameTxt").val($("#ln_renameLbl").text().trim());
			$('.renameTxt').css('display', 'inline');
			$('#ln_renameLbl').css('display', 'none');
			$('.ln_renameBtn').css('display', 'none');
			$('.ln_saveBtn').css('display', 'inline');
			
			//$("#createTemplateForm :input").prop('disabled', true);
			//$("#ln_saveTemplateWrapper :input").prop('disabled', true);
			//$("#ln_filter-container :input").prop('disabled', true);
			//$("#ln_topmenu_dataset_list").css('display', 'inline');
			//$('#ln_topmenu_dataset_list').css("visibility", "hidden");
			
			$('[data-toggle="dropdown"]').parent().removeClass('open'); 
			
			
			//LN.showOpaqueAjaxIndicator('#quick-dataset');
			cs.cancelRenameOnClickAction();

		});
	},
	
	cancelRenameRemplateAction : function(){
	 $('#ln_cancelTemplate').bind('click',function(){
		 	$('#ln_renameLbl').css('display', 'inline');
			$('.renameTxt').css('display', 'none');
			$('.ln_renameBtn').css('display', 'inline');
			$('.ln_saveBtn').css('display', 'none');
			
			//$("#createTemplateForm :input").removeAttr('disabled');
			if ($('#ln_providerCount').text() != '0') {
				$("#ln_saveTemplateWrapper :input").removeAttr('disabled');
			} else {
				$('#saveTemplateModalBtn').removeAttr('disabled');
				$('#clearFiltersBtn').removeAttr('disabled');
				$('#cancelTemplateBtn').removeAttr('disabled');
			}
			//$("#ln_filter-container :input").removeAttr('disabled');
			$('#ln-errorMsgRenameSaveTemp').html("");
	 });
	},
	
	changeSaveAsAction : function(){
		
	 $(".saveAs_NewTemp").change(function(){
		 $("#saveAs_TemplateName").show();
	 });
			
	  $(".saveAs_OldTemp").change(function(){
	  	$("#saveAs_TemplateName").hide();
	  	$('#ln-errorMsgRenameSaveAsTemp').html("");
	  });
	},
	
	registerSaveAsCreateTemplateAction : function(){
		 $('#createTemplateSaveAs').click(function(e){
			 LN.debug("how many times....");
			 var updatetemplateReName ='';
			 var templateVersion = $("#templateVersionHid").val().trim();
			 var token = $(window.location).attr('search');
			 var ajaxUrl="saveTemplate";
			 $('#ln-errorMsgRenameSaveAsTemp').html(""); // Removing the error message
			 //$("#templateReNameSaveAsTxt").parent().next(".error").remove();	 
             if($('.saveAs_OldTemp').is(':checked')){
            	 updatetemplateReName = $('#ln_renameLbl').text().trim();
                 templateId= $("#createTemplateIdHid").val();
             }else{
            	 updatetemplateReName = $("#templateReNameSaveAsTxt").val().trim();
            	 templateId = 0;
            	 var allProvidersRegex = /^[a][l][l][\s]*[p][r][o][v][i][d][e][r][s]$/;
/*		    	if(LN.containsSpecialCharacters(updatetemplateReName)){
   				   $('#ln-errorMsgRenameSaveAsTemp').html("Special characters are not allowed");
   				   valid=false;
   				   return;
   			     }*/
     			if(updatetemplateReName.length > 0 && (!$('#templateReNameSaveAsTxt').val().match(regex))){
    				return false;
    			}else if(updatetemplateReName.toLowerCase().match(allProvidersRegex)){
     				$('#ln-errorMsgRenameSaveAsTemp').html("All Providers is a protected system template name.");
       				return;
       			 }else {
   			    	$('#ln-errorMsgRenameSaveAsTemp').html("");
   			     }
             }
            	 if (updatetemplateReName.length > 0) {
                	 if (updatetemplateReName.length <= 60) {
                		 LN.getPage().registerEvent(EVENT_TYPES.COMPARISON_PEER_GROUP_SUCCESS,
     		                    cs, function(){
	                		 $.ajax({
	         					url : ajaxUrl + token,
	    						type : "POST",
	    						data : {
	    							"templateName" : updatetemplateReName,
	    							"templateId" : templateId,
	    							"templateVersion" : templateVersion
	    						},
	    						
	    						success : function(data){
	    							if(data['templateId'] == 0){
	    								$('#ln-errorMsgRenameSaveAsTemp').html("Template name already exists.");
	    							}else{
	    								sessionStorage.SHOW_UNSAVED_MODAL = 'false' ; 
	    								$('#renameSaveTemplateModal').modal('hide');
	    								
	    								if ( $('#ln_topNav ul .ln-selected a').text() == 'Home' ) {
	    									$("#ln_renameLbl").html('All Providers');
	    								} else {
	    									$("#ln_renameLbl").html(data['templateName']);  // Added to display the template name after save.
	    									$('#ln_renameLbl').css('display', 'inline');
	    									$(".ln_renameBtn").show();
	    									
	    									$('.ln_saveBtn').hide(); // Hide save and cancel once rename template completes
	    									$('.renameTxt').hide(); // Hide the text box
	    									
	    									$("#createTemplateIdHid").val(data['templateId']);
	    									$("#createTemplateNameHid").val(updatetemplateReName);
	    									$("#templateVersionHid").val(data['templateVersionId']);
	    									
	    									$("#save-TemplateName").html(data['templateName']);
	    									$("#confirm-title").html("Save As New Template");
	    									$("#saveTemplateConfirmModal").modal('show');
	    									cs.trimTemplateName(".ln-template-title-ellip", 30);
	    									
	    								}
	    							}
	    						}
	         					
	         				});// end of ajax	
                		 },true);
                		 LN.getPage().validateSelectedComparisonPeerGroup();
         			 } else {
        				$('#ln-errorMsgRenameSaveAsTemp').html("Please enter a template name not to exceed 60 characters.");
        			 } // if (templateName.length <= 60)
        		} else {
        				$('#ln-errorMsgRenameSaveAsTemp').html("Please enter a template name.");
        		}
             
		});
	},
	
	saveTemplateConfirmation: function(cs){
		$("button#createTemplateOK").click(function(e) {	
			if(cs.data.redirect){
				$.ajax({
					url : cs.data.cancelFilterURL,
					type : "POST",
					success : function() {
						LN.debug("inside success of OK confirmation redirect");
						$("div#saveTemplateConfirmModal").modal('hide');
						cs.goToRefererPage();
					}
				});// ajax
			} else {
				$("div#saveTemplateConfirmModal").modal('hide');
			}// if redirect
			cs.trimTemplateName(".ln-template-title-ellip", 30);
		});
	}
					
}); // END CLASS