quarta-feira, 30 de janeiro de 2013

Argumentos opcionais em Javascript

Ás vezes precisamos alterar uma função que já existe, adicionando mais parâmetros.
Pra não quebrar a compatibilidade com outras partes do sistema que estejam usando a função, e pra não precisar revisar tudo pra encontrar as chamadas à tal função,  o jeito é criar os novos parâmetros como opcionais.

 function war(enemy,reason) {  
      if(!enemy) { //The mandatory argument is not present - die with error(no pun intended)  
           alert("Please choose an enemy before starting a war");  
           return false;  
      }  
      if(!reason) { //If the optional argument is not there, create a new variable with that name.  
           var reason = "They have Nukes!";  
      }  
      /* ...Do what you want with the arguments... */  
 }  
Fonte: http://www.openjs.com/articles/optional_function_arguments.php

quinta-feira, 24 de janeiro de 2013

quarta-feira, 23 de janeiro de 2013

terça-feira, 22 de janeiro de 2013

#4

4. Lei de Thoreau

Se alguém aproximar-se de você com a intenção declarada de lhe fazer o bem, é melhor correr para salvar sua vida.

#3

3. Lei de Sevareid

A principal causa dos problemas são as soluções.

#2

2. Lei de Mencken

Para cada problema na humanidade existe uma solução simples e clara, e esta será sempre a solução errada.

#1

Se você não perde cabeça quando todos ao redor já perderem, talvez você apenas não esteja entendendo a situação.

Operações com datas em PHP do jeito quase certo

Há uns 2 meses atrás, fiz uma função que somava 10 dias em uma certa data.
Fiz assim:
 (date('d')+10).date('/m/Y');  

É até vergonhoso ver que fiz algo de um jeito tão jurássico, há apenas 2 meses. Só percebi o problema porque um dos vendedores tentou cadastrar um orçamento com a data 32/01/2013...

Como agora tem toda essa história de 'php do jeito certo', decidi ver qual o jeito certo de se fazer, que é mais ou menos o seguinte:
 $hoje = date_create();  
 date_add($hoje, date_interval_create_from_date_string('10 days'));  
 echo $hoje->format('d/m/Y');  


Mas, ao testar em produção, deu erro, porque a versão do php do servidor está desatualizada (novidade...), e a função date_add só existe a partir da versão 5.3.0. Aí tive que tentar o segundo jeito certo, que é algo assim:

 $date = date_create();  
 date_modify($date, '+10 day');  
 echo date_format($date, 'd/m/Y');  

sexta-feira, 18 de janeiro de 2013

jQuery hasAttr

Um plugin simples para utilizar a função hasAttr com jQuery, que funciona do mesmo jeito que hasClass.

$.fn.hasAttr = function(name) { return this.attr(name) !== undefined; };

sexta-feira, 11 de janeiro de 2013

Exportando tabelas para excel e acertando o formato dos campos

Como 'gerar' um arquivo excel com php, todo mundo já sabe:

$arquivo = "export".date("dmY_His").".xls";
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"$arquivo\";"); 
Mas como fazer com que as colunas fiquem com os tipos de dados certos, como por exemplo, os campos de data?

Simples: Criando o seguinte css:
.date {
  mso-number-format:"Short Date";
}
E aplicando este estilo na célula da tabela que contém o valor que deve ser formatado.

Aqui tem os formatos aceitos:

http://cosicimiento.blogspot.com.br/2008/11/styling-excel-cells-with-mso-number.html

Fonte:
http://cosicimiento.blogspot.com.br/2008/11/styling-excel-cells-with-mso-number.html
http://stackoverflow.com/questions/354476/html-to-excel-how-can-tell-excel-to-treat-columns-as-numbers

sexta-feira, 4 de janeiro de 2013

Colocando um elemento dentro de outro com Javascript

1:      $.each($('input.check_red'), function(index, elemento){  
2:        var id_rand = Math.floor((Math.random()*1000)+1);  
3:        var id_rand2 = Math.floor((Math.random()*1000)+1);  
4:        var id_span = "span_"+id_rand+'_'+id_rand2;  
5:        $(elemento).before('<span class="check_red" id="'+id_span+'" title="Espaço do Corretor"></span>');  
6:        $(elemento).prependTo($('#'+id_span));  
7:      })  

1: Seleciona os elementos que serão inseridos dentro do novo elemento criado
2: Gera um número aleatório para criar o ID do novo elemento
3: Gera outro número aleatório(porque, como é aleatório, pode acontecer de gerar duas vezes o mesmo número. Claro que é possível que os dois numeros aleatórios sejam iguais...
4: Concatena os dois números gerados para criar o id do elemento novo
5: Cria o novo elemento antes do elemento que será 'arrastado'
6: Arrasta o elemento para dentro do novo elemento

Só pra lembrar

Before - Antes
After - Depois

Eixo X - Horizontal
Eixo Y - Vertical

quarta-feira, 2 de janeiro de 2013

Acessando a página 'mãe' com javascript

Dentro da página que foi aberta (pop-up):

window.opener

Um exemplo, para 'atualizar' a página que chamou o pop-up:

window.opener.location = 'pagina_mae.html';

Outro exemplo, pra popular um campo na página mãe com o valor de um campo na página filha:

window.opener.document.getElementById('campo1').value = document.getElementById('campo1').value;

Sowilo Rune

Lord Summerisle: "Now, those children out there, they're jumping through the flames in the hope that the god of the fire will make them fruitful. Really, you can't blame them. After all, what girl would not prefer the child of a god to that of some acne-scarred artisan?"

Sergeant Howie: "And you encourage them in this?"

Lord Summerisle: "Actively! It's most important to teach new generation born of Summerisle be made aware that here the old gods aren't dead."

Sergeant Howie: "And what of the true God? To whose glory churches and monasteries have been built on these islands for generations past? Now shall what of Him?"

Lord Summerisle: "Oh, He's dead. He can't complain. He had his chance and in modern parlance. Blew it."