Skip to main content

Spark TextInput for Currency values

In my project, I wanted to have an spark TextInput to show currency values.
While formatting it should show unformatted number.
The way I did it is by creating a new CurrencyTextInput class extending spark TextInput.
Code for the component is (CurrencyTextInput.as):

package com.abcd.component
{
    import flash.events.Event;
    import flash.events.FocusEvent;

    import spark.components.TextInput;
    import spark.formatters.CurrencyFormatter;

    public class CurrencyTextInput extends TextInput
    {
        public function CurrencyTextInput()
        {
            super();
            formatter = new CurrencyFormatter();
            formatter.currencySymbol = "£";
            formatter.fractionalDigits = 2;
            formatter.useGrouping = true;
            formatter.useCurrencySymbol = true;
            formatter.negativeCurrencyFormat = 1;
            formatter.trailingZeros = true;
        }

        public var formatter:CurrencyFormatter = null;

        public var formatterRegExp:RegExp = /[,£ ]/g;

        [Inspectable(category = "General", defaultValue = "")]
        override public function get text():String
        {
            return super.text.replace(formatterRegExp, "");
        }

        [Bindable("change")]
        [Bindable("textChanged")]
        [CollapseWhiteSpace] // Compiler will strip leading and trailing whitespace from text string.
        override public function set text(value:String):void
        {
            super.text = formatter.format(value);

            // Trigger bindings to textChanged.
            dispatchEvent(new Event("textChanged"));
        }

        /**
         * Flush out [,] and currency symbol characters before getting focus
         * @param    event
         */
        override protected function focusInHandler(event:FocusEvent):void
        {
            super.focusInHandler(event);
            if (this.focusEnabled)
                super.text = text.replace(formatterRegExp, "");
        }

        /**
         * Format data before lost focus event happen
         * @param    event
         */
        override protected function focusOutHandler(event:FocusEvent):void
        {
            super.focusOutHandler(event);
            super.text = formatter.format(text);
        }
    }
}

The way to use this component is:

<fx:declarations>
    <s:currencyformatter
        currencysymbol="{resourceManager.getString(ApplicationConstants.RESOURCE_BUNDLE_NAME, 'currency.symbol')}"
        fractionaldigits="2"
        id="currencyFormatter"
        negativecurrencyformat="1"
        trailingzeros="true"
        usecurrencysymbol="true"
        usegrouping="true"/>
</fx:declarations>
<fx:Script>
   <![CDATA[
   [Bindable]
       public var currencyFormatterRegExp:RegExp = new RegExp('[,' + resourceManager.getString(ApplicationConstants.RESOURCE_BUNDLE_NAME, 'currency.symbol') + ' ]', 'g');
   ]]>
</fx:Script>
   
<component:CurrencyTextInput
    width="217"
    fontWeight="bold"
    textAlign="right"
    text="@{billingValue}"
    formatterRegExp="{currencyFormatterRegExp}"
    formatter="{currencyFormatter}" restrict="0-9"/>

Comments

Popular posts from this blog

wget and curl behind corporate proxy throws certificate is not trusted or certificate doesn't have a known issuer

If you try to run wget or curl in Ununtu/Debian behind corporate proxy, you might receive errors like: ERROR: The certificate of 'apertium.projectjj.com' is not trusted. ERROR: The certificate of 'apertium.projectjj.com' doesn't have a known issuer. wget https://apertium.projectjj.com/apt/apertium-packaging.public.gpg ERROR: cannot verify apertium.projectjj.com's certificate, issued by 'emailAddress=proxyteam@corporate.proxy.com,CN=diassl.corporate.proxy.com,OU=Division UK,O=Group name,L=Company,ST=GB,C=UK': Unable to locally verify the issuer's authority. To connect to apertium.projectjj.com insecurely, use `--no-check-certificate'. To solution is to install your company's CA certificate in Ubuntu. In Windows, open the first part of URL in your web browser. e.g. open https://apertium.projectjj.com in web browser. If you inspect the certifcate, you will see the same CN (diassl.corporate.proxy.com), as reported by the error above ...

Kafka performance tuning

Performance Tuning of Kafka is critical when your cluster grow in size. Below are few points to consider to improve Kafka performance: Consumer group ID : Never use same exact consumer group ID for dozens of machines consuming from different topics. All of those commits will end up on the same exact partition of __consumer_offsets , hence the same broker, and this might in turn cause performance problems. Choose the consumer group ID to group_id+topic_name . Skewed : A broker is skewed if its number of partitions is greater that the average of partitions per broker on the given topic. Example: 2 brokers share 4 partitions, if one of them has 3 partitions, it is skewed (3 > 2). Try to make sure that none of the brokers is skewed. Spread : Brokers spread is the percentage of brokers in the cluster that has partitions for the given topic. Example: 3 brokers share a topic that has 2 partitions, so 66% of the brokers have partitions for this topic. Try to achieve 100% broker spread...

ElasticSearch Curator

Curator is a tool from Elastic to help manage your ElasticSearch cluster. For certain logs/data, we use one ElasticSearch index per year/month/day and might keep a rolling 7 day window of history. This means that every day we need to create, backup, and delete some indices. Curator helps make this process automated and repeatable. Installation Curator is written in Python , so will need pip to install it: pip install elasticsearch-curator curator --config ./curator_cluster_config.yml curator_actions.yml --dry-run Configuration Create a file curator_cluster_config.yml with following contents: --- # Remember, leave a key empty if there is no value. None will be a string, not a Python "NoneType" client: hosts: - "es_coordinating_01.singhaiuklimited.com" port: 9200 url_prefix: use_ssl: True # The certificate file is the CA certificate used to sign all ES node certificates. # Use same CA certificate to generate and sign the certificate running ...