1 /** 2 * @author Gillis Haasnoot <gillis.haasnoot@gmail.com> 3 * @package Banana.Controls 4 * @summary Equal validator 5 */ 6 7 goog.provide('Banana.Controls.Decorators.EqualValidator'); 8 9 goog.require('Banana.Controls.Decorators.Validator'); 10 11 /** @namespace Banana.Controls.Decorators.EqualValidator */ 12 namespace('Banana.Controls.Decorators').EqualValidator = Banana.Controls.Decorators.Validator.extend( 13 /** @lends Banana.Controls.Decorators.EqualValidator.prototype */ 14 { 15 16 /** 17 * Creates a equal validator 18 * Use setControlIdToMath to determine against which control the decorated control should match its data. 19 * Note that this control doesn't compare complex objects like arrays or objects. Use controls with string data only 20 * 21 * @param {Banana.Controls.InputControl} c 22 * @constructs 23 * @extends Banana.Controls.Decorators.Validator 24 */ 25 init : function(c) 26 { 27 this._super(c); 28 this.setInfoText('Fields should be equal'); 29 }, 30 31 /** 32 * sets the control id to match data on 33 * 34 * @param {String} controlId 35 * @return {this} 36 */ 37 setControlIdToMatch: function(controlId) 38 { 39 this.controlIdToMatch = controlId; 40 return this; 41 }, 42 43 /** 44 * sets the control id to match data on 45 * 46 * @param {Banana.Control} control 47 * @return {this} 48 */ 49 setControlToMatch : function(control) 50 { 51 this.controlIdToMatch = control.id; 52 return this; 53 }, 54 55 /** 56 * validates data 57 * 58 * @overrided 59 * @param {String} data 60 */ 61 validateData : function(data) 62 { 63 control = this.getPage().findControl(this.controlIdToMatch); 64 65 if (!control) 66 { 67 log.error("Control "+this.getDecoratedControl().id+ " Doesnt have control defined to check equality on"); 68 return; 69 } 70 71 if (data === control.getData()) 72 { 73 return true; 74 } 75 76 return false; 77 } 78 });