You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Piotr Zarzycki <pi...@gmail.com> on 2017/04/17 06:01:57 UTC
Re: [5/6] flex-asjs git commit: Bead to dead with simple date formats. Doesn’t support time zones, some foreign date formats, month names and a lot of other things.
Hi Justin,
Nice bead. I like it. :) One thought I think "textChanged" event shouldn't
be dispatched through the bead. It should happen through the model or
strand.
Piotr
On Mon, Apr 17, 2017, 06:24 <jm...@apache.org> wrote:
> Bead to dead with simple date formats. Doesn’t support time zones, some
> foreign date formats, month names and a lot of other things.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/edd27839
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/edd27839
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/edd27839
>
> Branch: refs/heads/develop
> Commit: edd27839eefc8d2352dad8ee997142e3979418f8
> Parents: 4842fa7
> Author: Justin Mclean <jm...@apache.org>
> Authored: Mon Apr 17 14:24:16 2017 +1000
> Committer: Justin Mclean <jm...@apache.org>
> Committed: Mon Apr 17 14:24:16 2017 +1000
>
> ----------------------------------------------------------------------
> .../html/accessories/SimpleDateFormatBead.as | 222 +++++++++++++++++++
> 1 file changed, 222 insertions(+)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/edd27839/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/accessories/SimpleDateFormatBead.as
> ----------------------------------------------------------------------
> diff --git
> a/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/accessories/SimpleDateFormatBead.as
> b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/accessories/SimpleDateFormatBead.as
> new file mode 100644
> index 0000000..f2548a7
> --- /dev/null
> +++
> b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/accessories/SimpleDateFormatBead.as
> @@ -0,0 +1,222 @@
>
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +// Licensed to the Apache Software Foundation (ASF) under one or more
> +// contributor license agreements. See the NOTICE file distributed with
> +// this work for additional information regarding copyright ownership.
> +// The ASF licenses this file to You under the Apache License, Version
> 2.0
> +// (the "License"); you may not use this file except in compliance with
> +// the License. You may obtain a copy of the License at
> +//
> +// http://www.apache.org/licenses/LICENSE-2.0
> +//
> +// Unless required by applicable law or agreed to in writing, software
> +// distributed under the License is distributed on an "AS IS" BASIS,
> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> +// See the License for the specific language governing permissions and
> +// limitations under the License.
> +//
>
> +////////////////////////////////////////////////////////////////////////////////
> +package org.apache.flex.html.accessories
> +{
> + import org.apache.flex.core.IBead;
> + import org.apache.flex.core.IDateChooserModel;
> + import org.apache.flex.core.IFormatBead;
> + import org.apache.flex.core.IStrand;
> + import org.apache.flex.core.IStrandWithModel;
> + import org.apache.flex.events.Event;
> + import org.apache.flex.events.EventDispatcher;
> +
> + /**
> + * The DateFormatBead class formats the display of a DateField
> using a format.
> + *
> + * @flexjsignoreimport org.apache.flex.core.IStrandWithModel
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public class SimpleDateFormatBead extends EventDispatcher
> implements IBead, IFormatBead
> + {
> + /**
> + * constructor.
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function SimpleDateFormatBead()
> + {
> + }
> +
> + private var _format:String;
> + private var _seperator:String;
> + private var _propertyName:String;
> + private var _eventName:String;
> + private var _formattedResult:String;
> +
> + /**
> + * The name of the property on the model holding the
> value to be formatted.
> + * The default is selectedDate.
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function get propertyName():String
> + {
> + if (_propertyName == null) {
> + return "selectedDate";
> + }
> + return _propertyName;
> + }
> + public function set propertyName(value:String):void
> + {
> + _propertyName = value;
> + }
> +
> + /**
> + * The name of the event dispatched when the property
> changes. The
> + * default is selectedDateChanged.
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function get eventName():String
> + {
> + if (_eventName == null) {
> + return propertyName+"Changed";
> + }
> + return _eventName;
> + }
> +
> + public function set eventName(value:String):void
> + {
> + _eventName = value;
> + }
> +
> + /**
> + * The format of the date string.
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function get format():String
> + {
> + if (_format == null) {
> + _format = "YYYY/MM/DD";
> + _seperator = "/";
> + }
> + return _format;
> + }
> +
> + public function set format(value:String):void
> + {
> + if (_format != value) {
> + _format = value;
> +
> + var length:int = _format.length;
> +
> + for (var i:int = 0; i < length; i++) {
> + var letter:String =
> _format.charAt(i);
> + // assumes a single separator
> + if (letter != 'M' && letter != 'Y' && letter != 'D') {
> + _seperator = letter;
> + break;
> + }
> + }
> + _format = value;
> + }
> + }
> +
> + /**
> + * The formatted result.
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function get formattedString():String
> + {
> + return _formattedResult;
> + }
> +
> + private var _strand:IStrand;
> +
> + /**
> + * @copy org.apache.flex.core.IBead#strand
> + *
> + * @flexjsignorecoercion org.apache.flex.core.IStrandWithModel
> + *
> + * @langversion 3.0
> + * @playerversion Flash 10.2
> + * @playerversion AIR 2.6
> + * @productversion FlexJS 0.8
> + */
> + public function set strand(value:IStrand):void
> + {
> + _strand = value;
> +
> + var model:IDateChooserModel =
> IStrandWithModel(_strand).model as IDateChooserModel;
> +
> model.addEventListener(propertyName+"Changed",handleTextChange);
> + }
> +
> + /**
> + * @private
> + *
> + * @flexjsignorecoercion org.apache.flex.core.IStrandWithModel
> + */
> + private function handleTextChange(event:Event):void
> + {
> + var model:IDateChooserModel =
> IStrandWithModel(_strand).model as IDateChooserModel;
> +
> + var selectedDate:Date = model.selectedDate;
> + if (selectedDate != null) {
> + var month:String =
> String(selectedDate.getMonth()+1);
> + var day:String =
> String(selectedDate.getDate());
> + var year:String =
> String(selectedDate.getFullYear());
> + var tokens:Array =
> _format.split(_seperator);
> + var length:int = tokens.length;
> +
> + _formattedResult = "";
> +
> + for (var i:int = 0; i < length; i++) {
> + switch (tokens[i]) {
> + case "YYYY":
> + _formattedResult += year;
> + break;
> + case "YY":
> + _formattedResult
> += year.slice(2,3);
> + break;
> + case "MM":
> + if (Number(month) < 10)
> + month = "0" + month;
> + case "M":
> + _formattedResult
> += month;
> + break;
> + case "DD":
> + if (Number(day) < 10)
> + day = "0" + day;
> + case "D":
> + _formattedResult
> += day;
> + break;
> + }
> +
> + if (i <= length - 2) {
> + _formattedResult +=
> _seperator;
> + }
> + }
> +
> + dispatchEvent(new Event("formatChanged") );
> + }
> + }
> +
> + }
> +}
>
>
Re: [5/6] flex-asjs git commit: Bead to dead with simple date formats. Doesn’t support time zones, some foreign date formats, month names and a lot of other things.
Posted by piotrz <pi...@gmail.com>.
Ohh..Ok, so we have to check. Maybe that's something from the past and there
will not be breakages.
I will check it tomorrow if won't bead me earlier. :)
Thanks,
Piotr
-----
Apache Flex PMC
piotrzarzycki21@gmail.com
--
View this message in context: http://apache-flex-development.2333347.n4.nabble.com/Re-5-6-flex-asjs-git-commit-Bead-to-dead-with-simple-date-formats-Doesn-t-support-time-zones-some-fo-tp61144p61146.html
Sent from the Apache Flex Development mailing list archive at Nabble.com.
Re: [5/6] flex-asjs git commit: Bead to dead with simple date formats. Doesn’t support time zones, some foreign date formats, month names and a lot of other things.
Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,
> Nice bead. I like it. :) One thought I think "textChanged" event shouldn't
> be dispatched through the bead. It should happen through the model or
> strand.
That was in the original code not something I changed, so I’m not sure of the exact consequences of changing that.
Basically I fixed a couple of bugs, added the format and separator properties and changed the contents of handleTextChange to be non US / format specific.
Thanks,
Justin