From 25f12d74cabe0c79e3663764f4af88087b26a59c Mon Sep 17 00:00:00 2001 From: satish <satish.dvnk@vtiger.com> Date: Tue, 28 Mar 2017 11:43:44 +0530 Subject: [PATCH] Inline edit is not working for percentage fields --- layouts/v7/modules/Vtiger/resources/Field.js | 204 ++++++++++--------- 1 file changed, 106 insertions(+), 98 deletions(-) diff --git a/layouts/v7/modules/Vtiger/resources/Field.js b/layouts/v7/modules/Vtiger/resources/Field.js index f85545dea..c8fce927a 100644 --- a/layouts/v7/modules/Vtiger/resources/Field.js +++ b/layouts/v7/modules/Vtiger/resources/Field.js @@ -14,18 +14,18 @@ jQuery.Class("Vtiger_Field_Js",{ * @param moduleName module for which Instance should be created * @return Instance of field class */ - getInstance : function(data,moduleName){ + getInstance : function(data,moduleName){ if(typeof moduleName == 'undefined'){ var moduleName = app.getModuleName(); } - var moduleField = moduleName+"_Field_Js"; + var moduleField = moduleName+"_Field_Js"; var moduleFieldObj = window[moduleField]; - if (typeof moduleFieldObj != 'undefined'){ + if (typeof moduleFieldObj != 'undefined'){ var fieldClass = moduleFieldObj; }else{ - var fieldClass = Vtiger_Field_Js; - } - var fieldObj = new fieldClass(); + var fieldClass = Vtiger_Field_Js; + } + var fieldObj = new fieldClass(); if(typeof data == 'undefined'){ data = {}; @@ -41,7 +41,7 @@ jQuery.Class("Vtiger_Field_Js",{ * @return false if field is not mandatory */ isMandatory : function(){ - return this.get('mandatory'); + return this.get('mandatory'); }, @@ -50,12 +50,12 @@ jQuery.Class("Vtiger_Field_Js",{ * @return value for the passed key */ - get : function(key){ + get : function(key){ if(key in this.data){ return this.data[key]; } - return ''; - }, + return ''; + }, /** @@ -99,11 +99,11 @@ jQuery.Class("Vtiger_Field_Js",{ * Function to set data attribute of the class * @return Instance of the class */ - setData : function(fieldInfo){ - this.data = fieldInfo; + setData : function(fieldInfo){ + this.data = fieldInfo; return this; - }, - + }, + getModuleName : function() { return app.getModuleName(); }, @@ -121,24 +121,24 @@ jQuery.Class("Vtiger_Field_Js",{ var BasicUiTypeClassName = window["Vtiger_"+ typeClassName + "_Field_Js"]; if(typeof moduleUiTypeClassName != 'undefined') { - var instance = new moduleUiTypeClassName(); + var instance = new moduleUiTypeClassName(); return instance.setData(this.getData()); }else if (typeof BasicUiTypeClassName != 'undefined') { - var instance = new BasicUiTypeClassName(); + var instance = new BasicUiTypeClassName(); return instance.setData(this.getData()); } return this; }, /** - * Funtion to get the ui for the field - generally this will be extend by the child classes to + * Funtion to get the ui for the field - generally this will be extend by the child classes to * give ui type specific ui * return <String or Jquery> it can return either plain html or jquery object */ getUi : function() { var html = '<input class="inputElement" type="text" name="'+ this.getName() +'" data-label="'+this.get('label')+'" data-rule-'+this.getType()+'=true />'; html = jQuery(html).val(app.htmlDecode(this.getValue())); - return jQuery(html); + return this.addValidationToElement(html); }, /** @@ -157,68 +157,68 @@ jQuery.Class("Vtiger_Field_Js",{ addValidationToElement : function(element) { var element = jQuery(element); var addValidationToElement = element; - var elementInStructure = element.find('[name="'+this.getName()+'"]'); - if(elementInStructure.length > 0){ - addValidationToElement = elementInStructure; + var elementInStructure = element.find('[name="'+this.getName()+'"]'); + if(elementInStructure.length > 0){ + addValidationToElement = elementInStructure; } if(this.isMandatory()) { - addValidationToElement.attr('data-rule-required', 'true'); + addValidationToElement.attr('data-rule-required', 'true'); var type = this.getType(); if (type == 'reference') { addValidationToElement.attr('data-rule-reference_required', 'true'); } } addValidationToElement.attr('data-fieldinfo',JSON.stringify(this.getData())).attr('data-specific-rules',JSON.stringify(this.getData().specialValidator)); - return element; + return element; }, - + getNewFieldInfo : function() { return this.get('newfieldinfo'); }, - + }) Vtiger_Field_Js('Vtiger_Reference_Field_Js',{},{ - - getReferenceModules : function(){ - return this.get('referencemodules'); - }, - - getUi : function(){ - var referenceModules = this.getReferenceModules(); - var value = this.getValue(); - var html = '<div class="referencefield-wrapper'; - if(value){ - html += ' selected'; - } else { - html += '"'; - } - html += '">'; - html += '<input name="popupReferenceModule" type="hidden" value="'+referenceModules[0]+'"/>'; - html += '<div class="input-group ">' - html += '<input class="autoComplete inputElement sourceField" type="search" data-fieldtype="reference" name="'+this.getName()+'"'; - var reset = false; - if(value){ - html += ' value="'+value+'" disabled="disabled"'; - reset = true; - } - html += '/>'; - - if(reset){ - html += '<a href="#" class="clearReferenceSelection"> X </a>'; - }else { - html += '<a href="#" class="clearReferenceSelection hide"> X </a>'; - } - //popup search element - html += '<span class="input-group-addon relatedPopup cursorPointer" title="'+referenceModules[0]+'">'; - html += '<i class="fa fa-search"></i>'; - html += '</span>'; - - html += '</div>'; - html += '</div>'; - return this.addValidationToElement(html); - } - + + getReferenceModules : function(){ + return this.get('referencemodules'); + }, + + getUi : function(){ + var referenceModules = this.getReferenceModules(); + var value = this.getValue(); + var html = '<div class="referencefield-wrapper'; + if(value){ + html += ' selected'; + } else { + html += '"'; + } + html += '">'; + html += '<input name="popupReferenceModule" type="hidden" value="'+referenceModules[0]+'"/>'; + html += '<div class="input-group ">' + html += '<input class="autoComplete inputElement sourceField" type="search" data-fieldtype="reference" name="'+this.getName()+'"'; + var reset = false; + if(value){ + html += ' value="'+value+'" disabled="disabled"'; + reset = true; + } + html += '/>'; + + if(reset){ + html += '<a href="#" class="clearReferenceSelection"> X </a>'; + }else { + html += '<a href="#" class="clearReferenceSelection hide"> X </a>'; + } + //popup search element + html += '<span class="input-group-addon relatedPopup cursorPointer" title="'+referenceModules[0]+'">'; + html += '<i class="fa fa-search"></i>'; + html += '</span>'; + + html += '</div>'; + html += '</div>'; + return this.addValidationToElement(html); + } + }); @@ -237,12 +237,12 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{ * @return - select element and chosen element */ getUi : function() { - //added class inlinewidth + //added class inlinewidth var html = '<select class="select2 inputElement inlinewidth" name="'+ this.getName() +'" id="field_'+this.getModuleName()+'_'+this.getName()+'">'; var pickListValues = this.getPickListValues(); var selectedOption = app.htmlDecode(this.getValue()); - - if(typeof pickListValues[' '] == 'undefined' || pickListValues[' '].length <= 0) { + + if(typeof pickListValues[' '] == 'undefined' || pickListValues[' '].length <= 0 || pickListValues[' '] != 'Select an Option') { html += '<option value="">Select an Option</option>'; } for(var option in pickListValues) { @@ -299,16 +299,16 @@ Vtiger_Field_Js('Vtiger_Multipicklist_Field_Js',{},{ getPickListValues : function() { return this.get('picklistvalues'); }, - - getSelectedOptions : function(selectedOption){ - var valueArray = selectedOption.split('|##|'); - var selectedOptionsArray = []; - for(var i=0;i<valueArray.length;i++){ - selectedOptionsArray.push(valueArray[i].trim()); - } - return selectedOptionsArray; - }, - + + getSelectedOptions : function(selectedOption){ + var valueArray = selectedOption.split('|##|'); + var selectedOptionsArray = []; + for(var i=0;i<valueArray.length;i++){ + selectedOptionsArray.push(valueArray[i].trim()); + } + return selectedOptionsArray; + }, + /** * Function to get the ui * @return - select element and chosen element @@ -318,7 +318,7 @@ Vtiger_Field_Js('Vtiger_Multipicklist_Field_Js',{},{ var pickListValues = this.getPickListValues(); var selectedOption = app.htmlDecode(this.getValue()); var selectedOptionsArray = this.getSelectedOptions(selectedOption); - + for(var option in pickListValues) { html += '<option value="'+option+'" '; if(jQuery.inArray(option,selectedOptionsArray) != -1){ @@ -341,7 +341,7 @@ Vtiger_Field_Js('Vtiger_Boolean_Field_Js',{},{ */ isChecked : function() { var value = this.getValue(); - if(value==1 || value == '1' || value.toLowerCase() == 'on' || value.toLowerCase() == 'yes'){ + if(value==1 || value == '1' || (value && (value.toLowerCase() == 'on' || value.toLowerCase() == 'yes'))){ return true; } return false; @@ -376,10 +376,10 @@ Vtiger_Field_Js('Vtiger_Date_Field_Js',{},{ * @return - input text field */ getUi : function() { - //wrappig with another div for consistency + //wrappig with another div for consistency var html = '<div class="referencefield-wrapper"><div class="input-group date">'+ - '<input class="inputElement dateField form-control" type="text" data-rule="date" data-format="'+ this.getDateFormat() +'" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ - '<span class="input-group-addon"><i class="fa fa-calendar"></i></span>'+ + '<input class="inputElement dateField form-control" type="text" data-rule-date="true" data-format="'+ this.getDateFormat() +'" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ + '<span class="input-group-addon"><i class="fa fa-calendar"></i></span>'+ '</div></div>'; var element = jQuery(html); return this.addValidationToElement(element); @@ -396,10 +396,10 @@ Vtiger_Field_Js('Vtiger_Currency_Field_Js',{},{ }, getUi : function() { - //wrappig with another div for consistency + //wrappig with another div for consistency var html = '<div class="referencefield-wrapper"><div class="input-group">'+ - '<span class="input-group-addon" id="basic-addon1">'+this.getCurrencySymbol()+'</span>'+ - '<input class="inputElement" type="text" name="'+ this.getName() +'" data-rule-currency="true" value="'+ this.getValue() + '" />'+ + '<span class="input-group-addon" id="basic-addon1">'+this.getCurrencySymbol()+'</span>'+ + '<input class="inputElement" type="text" name="'+ this.getName() +'" data-rule-currency="true" value="'+ this.getValue() + '" />'+ '</div></div>'; var element = jQuery(html); return this.addValidationToElement(element); @@ -445,7 +445,7 @@ Vtiger_Date_Field_Js('Vtiger_Datetime_Field_Js',{},{ }); Vtiger_Field_Js('Vtiger_Time_Field_Js',{},{ - + /** * Function to get the user date format */ @@ -459,8 +459,8 @@ Vtiger_Field_Js('Vtiger_Time_Field_Js',{},{ */ getUi : function() { var html = '<div class="referencefield-wrapper">'+'<div class="input-group time">'+ - '<input class="timepicker-default form-control" type="text" data-format="'+ this.getTimeFormat() +'" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ - '<span class="input-group-addon"><i class="fa fa-clock-o"></i></span>'+ + '<input class="timepicker-default form-control inputElement" type="text" data-format="'+ this.getTimeFormat() +'" name="'+ this.getName() +'" value="'+ this.getValue() + '" />'+ + '<span class="input-group-addon"><i class="fa fa-clock-o"></i></span>'+ '</div>'+'</div>'; var element = jQuery(html); return this.addValidationToElement(element); @@ -474,7 +474,7 @@ Vtiger_Field_Js('Vtiger_Text_Field_Js',{},{ * @return - input text field */ getUi : function() { - var html = '<textarea class="input-xxlarge form-control inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" style="max-width:80%; height:200px;">'+ this.getValue() + '</textarea>'; + var html = '<textarea class="input-xxlarge form-control inputElement" name="'+ this.getName() +'" value="'+ this.getValue() + '" >'+ this.getValue() + '</textarea>'; var element = jQuery(html); return this.addValidationToElement(element); } @@ -487,8 +487,8 @@ Vtiger_Field_Js('Vtiger_Percentage_Field_Js',{},{ * @return - input percentage field */ getUi : function() { - var html = '<div class="input-group">'+ - '<input type="number" class="form-control" min="0" max="100" name="'+this.getName() +'" value="'+ this.getValue() + '" step="any"/>'+ + var html = '<div class="input-group percentage-input-group">'+ + '<input type="text" class="form-control inputElement percentage-input-element" name="'+this.getName() +'" value="'+ this.getValue() + '" step="any" data-rule-'+this.getType()+'=true/>'+ '<span class="input-group-addon">%</span>'+ '</div>'; var element = jQuery(html); @@ -528,21 +528,21 @@ Vtiger_Field_Js('Vtiger_Recurrence_Field_Js',{},{ }); Vtiger_Field_Js('Vtiger_Email_Field_Js',{},{ - + /** * Funtion to get the ui for the email field * return <String or Jquery> it can return either plain html or jquery object */ getUi : function() { - var html = '<input class="inputElement" type="text" name="'+ this.getName() +'" data-label="'+this.get('label')+'" data-rule-email="true" data-rule-illegal="true"/>'; + var html = '<input class="inputElement" type="text" name="'+ this.getName() +'" data-label="'+this.get('label')+'" data-rule-email="true" data-rule-illegal="true"/>'; html = jQuery(html).val(app.htmlDecode(this.getValue())); - var element = jQuery(html); - return this.addValidationToElement(element); + this.addValidationToElement(html); + return jQuery(html); } }); Vtiger_Field_Js('Vtiger_Image_Field_Js',{},{ - + /** * Funtion to get the ui for the Image field * return <String or Jquery> it can return either plain html or jquery object @@ -551,4 +551,12 @@ Vtiger_Field_Js('Vtiger_Image_Field_Js',{},{ var html = ''; return jQuery(html); } -}); \ No newline at end of file +}); + +Vtiger_Field_Js('Vtiger_Integer_Field_Js',{},{ + getUi : function() { + var html = '<input class="inputElement" type="text" name="'+ this.getName() +'" data-label="'+this.get('label')+'" data-rule-'+this.getType()+'=true />'; + html = jQuery(html).val(app.htmlDecode(this.getValue())); + return this.addValidationToElement(html); + } +}); -- GitLab