Ops... peguei um bug na implementação.

Nos métodos dropdown_changeHandler, dateGrid_changeHandler do DateField e
DateChooser respectivmente, trocar o código inteiro por:

            var selectedDateRef:Date = event.target.selectedDate;

            if (selectedDateRef && selectedDateRef.hours)
            {
                selectedDateRef.time += (24 - selectedDateRef.hours
)*60*60*1000;
            }

Senão dispara o evento 2 vezes e desmarca o dia...

Henrique F. Marino



On Nov 27, 2007 5:44 PM, Henrique <[EMAIL PROTECTED]> wrote:

>  Ok, deixando de lado a minha interpretação, que não foi a correta, vamos
> voltar ao assunto:
>
> Pesquisando mais sobre o problema do fuso horário e o comportamento do
> Date no Flash Player (Date é nativo), descobri que ao criar uma data, new
> Date(ano, mês, dia, 0, 0, 0) onde o ano, mês e dia representem o PRIMEIRO
> dia do horário de verão as 0hs 0min e 0s temos o seguinte comportamento:
>
>
>
> Ex. 06/11/2005 (este dia pode não ser o inicio do horário de verão para
> todos os computadores, depende do calendário do SO)
>
>                 var date:Date = new Date(2005, 10, 6, 0, 0, 0);
>
>                 trace(date) à Sat Nov 5 23:00:00 GMT-0300 2005
>
>
>
> Ou seja, quando criamos uma nova instancia de Date com o primeiro dia do
> horário de verão, o Flash player cria uma data que representa o ultimo dia
> antes do horário de verão. Pensando no comportamento de Data, não existe 0hs
> do primeiro dia de horário de verão pois depois das 23:59:59hs do dia
> anterior, adiantamos 1h no nosso relógio o que justifica não termos 0hs.
>
> Agora se pensarmos no comportamento do Date no Flash player, creio que
> este não seja o mais correto (a minha opinião é que a data correta seria Sun
> Nov 6 01:00:00 GMT-0200 2005, o mesmo comportamento do JAVA), e desta
> forma nunca conseguiremos criar a data 6/11/2005 usando o construtor
> Date(2005, 10, 6). E é exatamente isso que acontece ao selecionarmos o dia
> 6/11/2005 no nosso DateField!
>
> Ao meu ver temos realmente um bug, que não sei acontece em outras versões
> do Flash Player!
>
> Para solucionar o problema do DateField e do DateChooser ficou fácil, mais
> não consigo ver uma maneira fácil de mudar o comportamento do Date, já que
> este é nativo e não pode ser estendido.
>
> Uma possível solução, já dada aqui na lista, seria desativar o horário de
> verão no SO, o que seria possível em um ambiente corporativo totalmente
> controlado, mais não é o que ocorre na minha aplicação e que, como a do
> Daniel, depende muito do dia, já que se trata de um sistema financeiro.
>
>
>
> Acho que seria interessante todos que estão preocupados com esta questão
> de data tentar encontrar uma solução!
>
>
>
> Segue a minha solução para o DateField e DateChoser:
>
>
>
>
> _______________________________________________________________________________________
>
> MyDateField:
>
>
> ________________________________________________________________________________________
>
>
>
> *package*
>
> {
>
> *import* mx.controls.DateChooser;
>
> *import* mx.controls.DateField;
>
> *import* mx.core.mx_internal;
>
> *import* mx.events.CalendarLayoutChangeEvent;
>
>
>
> *use* *namespace* mx_internal;
>
>
>
> *public* *class* MyDateField *extends* DateField
>
> {
>
>       *private* *var* dropdownRef:DateChooser;
>
>
>
>       *override* *protected* *function* createChildren():*void*
>
>       {
>
>             *super*.createChildren();
>
>
>
>             dropdownRef = *this*.dropdown;
>
>             dropdownRef.addEventListener(CalendarLayoutChangeEvent.CHANGE,
> dropdown_changeHandler, *false*, 1);
>
>       }
>
>
>
>       *private* 
> *function*dropdown_changeHandler(event:CalendarLayoutChangeEvent):
> *void*
>
> {
>
>             selectedDate = event.target.selectedDate;
>
>             *if* (selectedDate)
>
>             {
>
>                   *if* (selectedDate.hours != 0)
>
>                   {
>
>                         selectedDate.time += (24 - selectedDate.hours
> )*60*60*1000;
>
>                   }
>
>             }
>
>
>
>             dropdownRef.selectedDate = selectedDate;
>
>       }
>
>
>
> }
>
> }
>
>
> ________________________________________________________________________________________________-
>
> MyDateChooser
>
>
> _________________________________________________________________________________________________
>
>
>
> *package*
>
> {
>
> *import* mx.controls.DateChooser;
>
> *import* mx.core.mx_internal;
>
> *import* mx.events.CalendarLayoutChangeEvent;
>
>
>
> *use* *namespace* mx_internal;
>
>
>
> *public* *class* MyDateChooser *extends* DateChooser
>
> {
>
>       *public* *function* MyDateChooser()
>
>       {
>
>             *super*();
>
>       }
>
>
>
>       *override* *protected* *function* createChildren():*void*
>
>       {
>
>             *super*.createChildren();
>
>             dateGrid.addEventListener(CalendarLayoutChangeEvent.CHANGE,
> dateGrid_changeHandler, *false*, 1);
>
>       }
>
>
>
>       *private* 
> *function*dateGrid_changeHandler(event:CalendarLayoutChangeEvent):
> *void*
>
>       {
>
>
>
>             selectedDate = event.target.selectedDate;
>
>             *if* (selectedDate)
>
>             {
>
>                   *if* (selectedDate.hours != 0)
>
>                   {
>
>                         selectedDate.time += (24 - selectedDate.hours
> )*60*60*1000;
>
>                   }
>
>             }
>
>       }
>
>
>
> }
>
> }
>
>
>
> []s,
>
>
>
> Henrique F. Marino
>
>
>
> *De:* flexdev@googlegroups.com [mailto:[EMAIL PROTECTED] *Em nome
> de *Tião da Obra
> *Enviada em:* segunda-feira, 26 de novembro de 2007 14:28
>
> *Para:* flexdev@googlegroups.com
> *Assunto:* [flexdev] Re: Bug no DateField?
>
>
>
> Mais moço deixe de bobagem, bora tocar o barco e seguir o processo. Se a
> resposta foi mal educada, peço desculpas, é que o pessoal daqui do "Goiás" é
> meio besta assim mesmo, é difícil saber quando estão bricando ou falando
> sério.
>
>
>
> Sobre a crítica, não era bem crítica não pelo o contrário. Deixa eu
> explicar a situação, eu nunca gostei de quem "Evangelizava" linguagens: "O
> Java é o melhor do mundo!", "O Delphi é o mais produtivo", "O .NET é bem
> mais rápido e mais maduro". Bom, o fato é que no final das contas fui eu
> quem pagou língua. Foi de um trabalho monstruoso analisar sistemas Gigantes
> e convencer o pessoal a passar para o Flex, quando descobriram que nós
> teríamos que duplicar as classes de negócio (POJO) do JAVA dentro do Flex
> pra fazer RemoteObject e outras integrações, aí que queriam arrancar nossos
> pescoços. Na história toda quem andou "Evangelizando" fomos nós da equipe
> Flex, inclusive acabamos de assistir à uma palestra sobre o Thermo, uauu...
> se funcionar da forma que eles mostraram, nem consigo imaginar.
>
>
>
> http://www.youtube.com/watch?v=lGdr3dCmxe4
>
> http://www.youtube.com/watch?v=d9IjZJ0D_bo&feature=related
>
> http://www.youtube.com/watch?v=lsfOe_MCEbg&feature=related
>
>
>
> É isso, grande abraço que façamos dessa lista um lugar de gente "madura" e
> disposta a resolver problemas reais.
>
> -Daniel
>
>
>
>
>
> ----- Original Message -----
>
>  *From:* Henrique <[EMAIL PROTECTED]>
>
> *To:* flexdev@googlegroups.com
>
> *Sent:* Monday, November 26, 2007 12:39 PM
>
> *Subject:* [flexdev] RES: [flexdev] Re: RES: [flexdev] Re: Bug no
> DateField?
>
>
>
> Caro Tião da Obra,
>
>
>
> Parabéns pela sua conquista de gerenciar um sistema que custa 1 milhão.
> Realmente vc deve ficar muito preocupado com os possíveis erros do seu
> sistema que causa um prejuízo de 5 mil a cada 10 min.
>
>
>
> Quanto as críticas da que fiz a vc, sempre que eu achar pertinente
> continuarei a criticar. Não irei te bloquear (obrigado pela sugestão, sei
> que seria bem mais fácil pra vc!). Não concordo com a sua ironia e
> principalmente pelo fato que ao invés de tentar propor uma solução para o
> POSSÍVEL bug vc prefere criticar! Não seria melhor tentar achar uma solução
> para o problema e assim evitar de tomar aquele preju do seu projeto de 1
> milhão?
>
>
>
> Boa Sorte!
>
>
>
> *De:* flexdev@googlegroups.com [mailto:[EMAIL PROTECTED] *Em nome
> de *Tião da Obra
> *Enviada em:* segunda-feira, 26 de novembro de 2007 11:51
> *Para:* flexdev@googlegroups.com
> *Assunto:* [flexdev] Re: RES: [flexdev] Re: Bug no DateField?
>
>
>
> Você gerencia um sistema que custa 1 milhão nas suas mãos? Um sistema que
> se ficar parado o prejuízo mínimo é de 5mil a cada 10 minutos?
>
>
>
> Guarde suas críticas pra você, se ficou ofendido, existe um recurso bom no
> Outlook ou em qualquer outro gerenciador de e-mail chamado Bloquear.
>
>
>
> Passar bem!
>
>  ----- Original Message -----
>
> *From:* Henrique <[EMAIL PROTECTED]>
>
> *To:* flexdev@googlegroups.com
>
> *Sent:* Monday, November 26, 2007 10:34 AM
>
> *Subject:* [flexdev] RES: [flexdev] Re: Bug no DateField?
>
>
>
> Tião da Obra  - Ao invés de vc ficar imaginando todas as possíveis
> perguntas que iram te fazer caso aconteça tal erro, pq vc não se preocupa em
> resolver? Talvez vc ache uma solução mais inteligente!
>
>
>
>
>
> Cassia Nino - Creio que esse problema possa ser resolvido estendendo o
> componente DataField e fazendo uma correção de data no momento da criação da
> data. Esse problema vai ocorrer sempre na mudança de horário normal para
> horário de verão.
>
>
>
> []s,
>
>
>
> Henrique Marino
>
> *De:* flexdev@googlegroups.com [mailto:[EMAIL PROTECTED] *Em nome
> de *Tião da Obra
> *Enviada em:* segunda-feira, 26 de novembro de 2007 08:54
> *Para:* flexdev@googlegroups.com
> *Assunto:* [flexdev] Re: Bug no DateField?
>
>
>
> Oba, já vou ligar pro suporte e pedir para eles desabilitarem o horário de
> verão, outra pergunta, o mesmo acontece com o Windows 98?
>
>
>
> Parabéns a todos,
>
> -Daniel
>
>  ----- Original Message -----
>
> *From:* Cassia Nino <[EMAIL PROTECTED]>
>
> *To:* flexdev@googlegroups.com
>
> *Sent:* Sunday, November 25, 2007 10:56 PM
>
> *Subject:* [flexdev] Re: Bug no DateField?
>
>
>
> Puxa vida... o problema é exatamente esse, Fabio... =P
>
>
> Obrigada!!
>
>
>
> Tchauzinho!
> Cassia
>
> Em 25/11/07, *Fabio Terracini* < [EMAIL PROTECTED]> escreveu:
>
>
> Cassia, isso é de certa forma procedente e reproduzível, mas até onde
> conheço, apenas em algumas situações, e não tem sua origem no SDK do
> Flex.
>
> Isso pode ocorrer se o computador estiver rodando sob determinadas
> versões do Windows com a opção "ajustar automaticamente para horário
> de verão". Assim, dia 05/11/2006 0:00 será automaticamente convertido
> para 04/11/2006 23:00, e por isso a data é apresentada errada. Esse
> comportamento, aliás, pode ocorrer em diversos softwares..
>
> No Windows é configurado que o horário de verão começa em determinado
> dia, mas no Brasil isso sempre é móvel, então o Windows não consegue
> acertar o dia.  Para estas situações a MS normalmente libera
> atualizações e fornece technotes para o assunto:
> http://support.microsoft.com/kb/914387/
>
> Se você desabilitar o recurso de ajuste automática (duplo clique no
> relógio do Windows, aba "fuso horário" e recarregar o SWF que contém o
> componente DateField, você selecionará corretamente as datas que
> outrora apresentavam problemas.
>
> []s
> Fabio Terracini
>
>
> On 11/24/07, Cassia Nino <[EMAIL PROTECTED]> wrote:
> >
> > Oi, pessoal!
> >
> > Usando o componente DateField percebi que alguns dias escolhidos no
> > DateChooser simplesmente não aparecem corretamente no campo ao lado.
> >
> > Por exemplo, tentem selecionar os seguintes dias:
> > 06/11/2005 (dom)
> > 05/11/2006 (dom)
> > 04/11/2007 (dom)
> > 02/11/2008 (dom)
> > 01/11/2009 (sáb)
> > 07/11/2010 (dom)
> > 06/11/2011 (dom)
> >
> > Qualquer um deles, se selecionado, não é exibido no campo.
> > O que aparece, na verdade, é um dia anterior...
> >
> > Mais alguém também encontra isso?
> >
> >
> >
> > Tchauzinho!
> > Cassia
> >
> > >
> >
>
>
>
>
> --
> …the Linux philosophy is 'laugh in the face of danger'. Oops. Wrong one.
> 'Do it yourself'. That's it.
> - Linus Torvalds<BR
>
> <BR
>
> <BR
> >
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a