      1 // ==========================================================================
      2 // Project:   The M-Project - Mobile HTML5 Application Framework
      3 // Copyright: (c) 2010 M-Way Solutions GmbH. All rights reserved.
      4 // Creator:   Sebastian
      5 // Date:      22.11.2010
      6 // License:   Dual licensed under the MIT or GPL Version 2 licenses.
      7 //            http://github.com/mwaylabs/The-M-Project/blob/master/MIT-LICENSE
      8 //            http://github.com/mwaylabs/The-M-Project/blob/master/GPL-LICENSE
      9 // ==========================================================================
     10
     11 m_require('core/datastore/validator.js')
     12
     13 /**
     14  * @class
     15  *
     16  * Validates if it represents a minus number. Works with numbers and strings containing just a number.
     17  *
     18  * @extends M.Validator
     19  */
     20 M.NotMinusValidator = M.Validator.extend(
     21 /** @scope M.NotMinusValidator.prototype */ {
     22
     23     /**
     24      * The type of this object.
     25      *
     26      * @type String
     27      */
     28     type: 'M.NotMinusValidator',
     29
     30     /**
     31      * Validation method. Distinguishes between type of value: number or string. Both possible. If number value is checked if less than zero,
     32      * if string value is checked if ^prefixed with a minus sign ( - ).
     33      *
     34      * @param {Object} obj Parameter object. Contains the value to be validated, the {@link M.ModelAttribute} object of the property and the model record's id.
     35      * @returns {Boolean} Indicating whether validation passed (YES|true) or not (NO|false).
     36      */
     37     validate: function(obj) {
     38
     39        if(typeof(obj.value) === 'number') {
     40            if(obj.value < 0) {
     41                 this.validationErrors.push({
     42                     msg: obj.value + ' is a minus value. This is not allowed.',
     43                     modelId: obj.modelId,
     44                     property: obj.property,
     45                     viewId: obj.viewId,
     46                     validator: 'NUMBER',
     47                     onSuccess: obj.onSuccess,
     48                     onError: obj.onError
     49                 });
     50                 return NO;
     51            }
     52            return YES;
     53        }
     54
     55        if(typeof(obj.value) === 'string') {
     56            var pattern = /-/;
     57            if(this.pattern.exec(obj.value)) {
     58                this.validationErrors.push({
     59                     msg: obj.value + ' is a minus value. This is not allowed.',
     60                     modelId: obj.modelId,
     61                     property: obj.property,
     62                     viewId: obj.viewId,
     63                     validator: 'NUMBER',
     64                     onSuccess: obj.onSuccess,
     65                     onError: obj.onError
     66                 });
     67                 return NO;
     68            }
     69            return YES;
     70        }
     71     }
     72 });