[Rio-pm] Mojolicious - inserindo código HTML no template via rota

Bruno Buss bruno.buss em gmail.com
Domingo Setembro 9 05:53:22 PDT 2012


Você pode fazer o seu controller gerar e retornar esse map que é passado
para o new Highcharts.Chart().

E daí você faria algo do tipo:
$.getJSON('ajax/test.json', function(data) {
  chart = new Highcharts.Chart(data);
  ...
});

É só se lembrar que o seu código javascript é estático. A única coisa
dinâmica são os dados que você quer mostrar, os parametros necessários para
montar o seu gráfico bonitinho. E é isso que você precisa retornar no
request do getJSON.

[ ]'s

2012/9/8 Manoel Domingues Junior <manoel.domingues.junior em gmail.com>

> Oi,
>
> Não entendi muito bem.
> Eu faria um request para o servidor de forma a buscar os dados que serão
> exibidos?
>
> Então no código da página eu teria uma função em javascript que buscaria
> os dados em /widget_timeline, por exemplo? Tipo:
>
> $.getJSON("/widget_timeline",
>
>
>   {
>     time: "24"
>
>
>   },
>
> Que dados eu retornaria? Poderia retornar o objeto Highcharts.Chart (
> http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/line-basic/
> )
>
> Como eu faria para minha função em javascript acessar esses dados?
>
> Estou perdido...
>
> Abraços,
>
> Em 8 de setembro de 2012 17:10, Bruno Buss <bruno.buss em gmail.com>escreveu:
>
> Quase, mas ainda não.
>>
>> O ideal é que o seu código em Perl não "gere" o código em Javascript.
>> Deixe o código em Javascript na página e faça um request pro seu servidor
>> apenas para buscar os dados que serão exibidos (e isso você já pode arrumar
>> para que o JSON retornado seja enviado diretamente para a sua função em
>> Javascript.)
>>
>> Se você não tiver a menor ideia de como fazer isso, de uma olhada no
>> jQuery... os métodos básicos de ajax dele, são bem fáceis de usar :-)
>> http://api.jquery.com/jQuery.getJSON/
>>
>> [ ]'s
>>
>> 2012/9/8 Manoel Domingues Junior <manoel.domingues.junior em gmail.com>
>>
>>> Vou ir para essa estratégia então...
>>>
>>> Mas nesse caso eu criaria uma rota onde haveria esse render_json?
>>>
>>> Tipo, no meu frontend eu teria:
>>>
>>> <script src="/widget_timeline"></script>
>>>
>>> E no Mojolicious e teria:
>>>
>>>   get '/widget_timeline' => sub {
>>>     ...
>>>     $self->render_json($widget_timeline);
>>>   };
>>>
>>> Onde a variável $widget_timeline fosse uma estrutura em perl que seria
>>> traduzida para JSON.
>>>
>>> É isso?
>>>
>>>
>>> Abraços,
>>>
>>> Em 8 de setembro de 2012 00:24, breno <oainikusama em gmail.com> escreveu:
>>>
>>> Manoel, procure evitar escrever código JavaScript dentro do seu
>>>> backend. O mais adequado para dados mudando dinamicamente é passar
>>>> objetos JSON apenas, deixando que o JavaScript no frontend faça as
>>>> solicitações por estruturas diferentes conforme necessário.
>>>>
>>>> Pra esse tipo de solicitação o Mojolicious oferece o método
>>>> render_json(), que já transforma suas variáveis Perl em JSON.
>>>> https://metacpan.org/module/Mojolicious::Controller#METHODS
>>>>
>>>> []s
>>>>
>>>> -b
>>>>
>>>> 2012/9/8 Manoel Domingues Junior <manoel.domingues.junior em gmail.com>:
>>>> > Perfeito.
>>>> >
>>>> > Muito obrigado.
>>>> >
>>>> > Abraços,
>>>> >
>>>> > Em 7 de setembro de 2012 23:52, Renato Santos <renato.cron em gmail.com>
>>>> > escreveu:
>>>> >
>>>> >> Olá,
>>>> >>
>>>> >> você deve mudar sua view para:
>>>> >>
>>>> >> de <%= 'lalala' %>
>>>> >> para  <%== '<p>test</p>' %>
>>>> >>
>>>> >> vi no
>>>> >>
>>>> http://search.cpan.org/~sri/Mojolicious-3.36/lib/Mojolicious/Guides/Rendering.pod#Embedded_Perl
>>>> >> 2012/9/7 Manoel Domingues Junior <manoel.domingues.junior em gmail.com>
>>>> >>>
>>>> >>> Olá pessoal,
>>>> >>>
>>>> >>> Estou construindo mais uma aplicação web com mojolicious::lite e
>>>> estou
>>>> >>> enfrentando mais uma dificuldade.
>>>> >>> A minha aplicação irá gerar gráficos via javascript, mas preciso
>>>> enviar
>>>> >>> esses dados pre-formatados entre tags <script></script>.
>>>> >>>
>>>> >>> A ideia é colocar um grafico semenhante a esse:
>>>> >>> http://www.highcharts.com/demo/line-basic/gray
>>>> >>>
>>>> >>> Como verão, existe alguns <div>'s que devo colocar no template, mas
>>>> >>> também devo colocar um código javascript. Esse código muda, pois
>>>> realiza
>>>> >>> consultas no banco de dados para obter os valores, logo criei uma
>>>> funcão que
>>>> >>> gera ele.
>>>> >>>
>>>> >>> Essa função retorna uma string com todo o código ($widget_timeline)
>>>> e
>>>> >>> tento então passar o valor dessa string para o template, mas o
>>>> mojolicious
>>>> >>> faz a conversão para HTML, logo não aparece como código...
>>>> >>>
>>>> >>> Dentro da rota da minha aplicação coloquei um
>>>> >>> $self->stash(widget_timeline => $widget_timeline), acredito que
>>>> tenha que
>>>> >>> usar outra função para passar o código, ou então usar outra
>>>> abordagem...
>>>> >>>
>>>> >>> Sugestões?
>>>> >>>
>>>> >>> Abraços,
>>>> >>> --
>>>> >>> --
>>>> >>> Manoel Domingues Junior
>>>> >>> "Coletar dados é o primeiro passo para a sabedoria, mas compartilhar
>>>> >>> dados é o primeiro passo para a comunidade."
>>>> >>> IBM - Prodigy Linux
>>>> >>>
>>>> >>>
>>>> >>> _______________________________________________
>>>> >>> Rio-pm mailing list
>>>> >>> Rio-pm em pm.org
>>>> >>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>> >>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Saravá,
>>>> >> Renato CRON
>>>> >> http://www.renatocron.com/blog/
>>>> >> @renato_cron
>>>> >>
>>>> >>
>>>> >> _______________________________________________
>>>> >> Rio-pm mailing list
>>>> >> Rio-pm em pm.org
>>>> >> http://mail.pm.org/mailman/listinfo/rio-pm
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > --
>>>> > Manoel Domingues Junior
>>>> > "Coletar dados é o primeiro passo para a sabedoria, mas compartilhar
>>>> dados é
>>>> > o primeiro passo para a comunidade."
>>>> > IBM - Prodigy Linux
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > Rio-pm mailing list
>>>> > Rio-pm em pm.org
>>>> > http://mail.pm.org/mailman/listinfo/rio-pm
>>>> _______________________________________________
>>>> Rio-pm mailing list
>>>> Rio-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>>
>>>
>>>
>>>
>>> --
>>> --
>>> Manoel Domingues Junior
>>> "Coletar dados é o primeiro passo para a sabedoria, mas compartilhar
>>> dados é o primeiro passo para a comunidade."
>>> IBM - Prodigy Linux
>>>
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>>
>> --
>> Bruno C. Buss
>> http://www.brunobuss.net
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
>
> --
> --
> Manoel Domingues Junior
> "Coletar dados é o primeiro passo para a sabedoria, mas compartilhar dados
> é o primeiro passo para a comunidade."
> IBM - Prodigy Linux
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Bruno C. Buss
http://www.brunobuss.net
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120909/8c2712bc/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm