Uploaded image for project: 'Click'
  1. Click
  2. CLK-612

Better user experience with DateField (and CalendarField).

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.1.0, 2.1.0 RC1
    • None
    • None
    • None

    Description

      Current DateField.validate() is too strict.

      My suggestion is:

      Add two properties:
      1) String prop similarDelimiters:

      its format: [oldChar1][newChar1] [oldChar2][newChar2].... if odd then ignore last char.

      2) boolean prop lenientValidation //def false

      3) Modify setValue (not tested):

      public void setValue(String value) {
      if (value != null && value.length() > 0) {
      value = value.trim();

      if (similarDelimiters != null && similarDelimiters.length > 0) {
      for (int i=0; i<similarDelimiters.length-1; i+=2)

      { value = value.replace(similarDelimiters.charAt(i), similarDelimiters.charAt(i+1)); }

      //f
      }//i

      try

      { Date parsedDate = getDateFormat().parse(value); // Cache date for subsequent retrievals date = new Date(parsedDate.getTime()); }

      catch (ParseException pe)

      { date = null; }

      } else

      { date = null; }

      super.setValue(value);
      }//setValue

      Because people in Russia use different characters (ex: /,-, .(dot)) as date delimiters, not one.

      So I will set similarDelimiters to "-/
      /./" and pattern to dd/MM/yyyy - and it will work.

      4) Modify validate()
      dateFormat.setLenient(lenientValidation);

      Attachments

        Activity

          People

            Unassigned Unassigned
            andreyrybin Andrew Fink
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: