Advanced Windows Store App Development using C# Jump Start

Depois de Programming in C# Jump StartEssentials of Developing Windows Store Apps using C# Jump Start, vem aí Advanced Windows Store App Development using C# Jump Start.

Dia e hora do curso em João Pessoa: quinta-feira, 23 de Maio de 2013, 13:00:00. A exemplo dos outros, o treinamento muito provavelmente será gravado, então não precisa se preocupar em assistir ao vivo.

Programming C# – Jump Start

Treinamento em vídeo voltado para a prova de certificação Programming C#.

Windows 8 – Menu esquerda/direita

Se você, assim como eu, usa seu tablet como principal computador em um monitor externo, deve ter estranho que, por padrão, o Windows 8 exibe o menu para o lado esquerdo, e não para o lado direito como estamos acostumados.

Isso acontece porque o tablet foi pensado para ser usado com touch/pen e não com mouse/teclado. E é mais comum que essa caneta esteja na sua mão direita. Por isso, o Windows, por padrão, no tablet, exibe o menu para a esquerda, para que sua mão não fique em cima do menu.

Felizmente isso pode ser alterado na janela Tablet PC Settings conforme figura abaixo.

Tablet PC Settings

Visual Studio 2012 Update 2 – Blue

Novo tema Visual Studio 20122 - Blue

Novo tema Visual Studio 2012.2 – Blue

Visual Studio 2012 Update 2

Chamada AJAX, carregando e outras coisas

Quero compartilhar nesse post como tenho feito para trabalhar com requisições Ajax nas minhas aplicações usando Web API.

Criando o método NS.util.ajaxCall

O primeiro ponto é que, não sei por qual motivo, tive que deixar bem explícito na requisição que o formato que estou enviando é JSON. Do contrário o Web API não consegue receber os parâmetros. Para facilitar, criei uma função genérica que faz essas requisições especificando que o formato é JSON (ver linha 18).

NS.util = (function () {
    var self = this;

    self.ajaxCall = function (options) {
        var defaultOptions = {
            url: '/',
            type: 'GET'
        }
        if (typeof options == 'object') {
            options = $.extend(defaultOptions, options);
        } else {
            options = defaultOptions;
        }
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: options.success,
            error: options.error,
            complete: options.complete
        });
    }

    return self;
})();

Por exemplo, digamos que eu queira enviar um POST para uma determinada URL. Seria assim:

(...)
NS.util.ajaxCall({
    type: 'POST',
    url: '/clientes',
    data: self.getData(),
    success: function (data) {
        self.items.add(data);
    }
});
(...)

Ainda não existe nada de muito especial nesse encapsulamento, no entanto, criar esse wrapper irá nos ajudar bastante mais a frente.

Criando o método NS.carregando.[exibir|ocultar]

Vamos agora implementar um método que exiba uma mensagem para o usuário toda vez que uma requisição Ajax é feita. Se a forma para dar esse ‘feedback’ ao usuário for a mesma para todas as chamadas, como controlar que todas as requisições acabaram? Resolvi esse problema encapsulando a exibição da mensagem e usando um contador. Toda vez que o método recebe uma chamada para exibir a mensagem o contador é incrementado, do contrário o contador é decrementado. Quando o valor chega em zero a mensagem é ocultada. Veja como ficou:

NS.carregando = (function ($) {
    var count = 0;
    function exibir() {
        $('.loading').fadeIn('fast');
        count++;
    }
    function ocultar() {
        count--;
        if (count <= 0) {
            count = 0;
            $('.loading').fadeOut('fast');
        }
    }
    return {
        exibir: exibir,
        ocultar: ocultar
    };
})(jQuery);

Juntando as duas coisas

Se sabemos que é possível exibir uma mensagem de ‘feedback’ (carregando) toda vez que uma chamada Ajax é feita, porque não adicionar isso ao método ajaxCall (linha 13)? Note algo importante, não passamos mais o método “complete” direto para o jQuery, chamamos o código para ocultar a ‘feedback’, e só depois chamamos o método complete (linhas 22 a 27).

NS.util = (function () {
    var self = this;
    self.ajaxCall = function (options) {
        var defaultOptions = {
            url: '/',
            type: 'GET'
        }
        if (typeof options == 'object') {
            options = $.extend(defaultOptions, options);
        } else {
            options = defaultOptions;
        }
        NS.carregando.exibir();
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: options.success,
            error: options.error,
            complete: function () {
                NS.carregando.ocultar();
                if ($.isFunction(options.complete)) {
                    options.complete();
                }
            }
        });
    }
    return self;
})();

É importante fazermos isso no método complete e não no success, pois queremos que o método NS.carregando.ocultar() seja chamado independente da requisição funcionar ou dar algum erro.

É isso, feliz 2013.

Como marcar a prova de certificação em HTML5

Segue abaixo um passo a passo de como marcar a prova de certificação em HTML5 da Microsoft.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 194 other followers

%d bloggers like this: