Server-side MVC frameworks usually have a built-in routing system that matches URLs with pre-defined routes, and then dispatches Controller Actions, parsing parameters, doing validation, and etc. This makes very easy to architect your app defining controllers and actions and having the routing engine solving the communication between parts.
Ext JS brings MVC to the client-side, providing a solid architecture for your application, but the only missing part is the routing system. That’s why Ext.ux.Router was created.
Ext.ux.Router was released a year ago, and today a new version is coming! It has a brand new routing engine that is extremely flexible and also provides route validation. It also ships with improved docs and examples, and test cases to ensure code quality.
The MVC Architecture for Ext JS and Touch provides a solid foundation for building large and scalable apps; but if you follow the guides and implement in the way described you’ll notice that controllers and views are highly coupled. Controllers associate listeners to view events using component queries, thus making them aware of how the view is composed. As result we have a MVC architecture where the view is very light and does nothing but define components, and controllers will do all the heavy lifting by responding to user gestures, updating the view, dealing with models, business logic and more. Continuar lendo →
Estou anunciando uma nova extensão aqui no ExtDesenv. Desenvolvemos aqui na Ellevo Soluções, eu e o Maicon Shelter, essa extensão que permite chamar a atenção de um usuário fazendo determinada aba de um Ext.TabPanel piscar em laranja. Basicamente criamos as imagens e na rotina fazemos uma transição entre a imagem normal e a imagem alterada. Ao ser alterada 10 vezes a imagem fica fixa no laranja. Caso o usuário ative a aba (evento “activate”) o efeito é cortado e o estado da aba retorna ao normal.
É importante dar retorno visual ao usuário quando uma ação que requer determinado tempo de espera acontece. Ao carregar um formulário, salvar um novo cadastro, ou até entrar em uma tela que demora para renderizar, toda espera tem que ser indicada ao usuário. Isso cria uma sensação muito melhor do que simplesmente deixá-lo encarar uma tela “congelada”.
Pensando nisso existe o método mask() da classe Ext.Element. Acontece que essa método somente cria uma máscara cinza transparente por cima do elemento, não adiciona texto nem aquele famoso ícone que indica carregamento. Pensando nisso publico mais uma funcionalidade presente em meu framework, o override de Ext.Element que cria o método setLoading().
O método setLoading() é mais dinâmico e permite criar máscaras personalizando o texto mostrado, e também controlar se a máscara será transparente ou opaca. Postei o código juntamente com um novo exemplo, aproveitem!
Estou postando só para publicar um novo exemplo disponível no portal. Demonstra como inserir um texto aonde o cursor está, em um TextArea. Consiste fundamentalmente de um override, que cria um método insertAtCursor para a classe Ext.form.TextArea.
Gostaria de me desculpar pela falta de posts, mas estou envolvido em diversos projetos e juntando forças no desenvolvimento do novo extdesenv. Modéstia a parte mais ta ficando show o novo layout, sem contar em alguns novos posts como uma cobertura completa do exemplo desktop. Aguardem!
Cansado sobre (o que parece ser) erros e restarts randômicos de animações flash em sua aplicação Ext? Dê uma olhada em Ext.ux.FlashControl – um controle que intermedia Ext.Container e Ext.FlashComponent
Por várias vezes precisei de um componente para selecionar somente mês e não pude satisfazer essa necessidade. Não até encontrar essa extensão: Ext.ux.MonthPicker. Estou publicando à vocês caso alguém também necessite porém não saiba de sua existência.
Essa dica vai para os amantes de HTML, que não deixam de criar suas tags mesmo o Ext podendo as criar automaticamente. No fórum americano o desenvolvedor @oracle criou uma nova forma de configurar os componentes do Ext:
var txt1 = new Ext.form.TextField({
renderTo: "component"
});