Criando componentes customizados para WEB2PY

Criando componentes customizados para WEB2PY

Bom amigos estou adotando o Web2py para desenvolver a maioria dos meus sistemas, o Web2py é um framework bastante ágil e full-stack, o que significa que não vou precisar de biblioteca de terceiros (pelo menos em sua maioria) para fazer o que preciso.

A template engine do framework nos dá alguns Helpers para fazermos desde uma simples tag HTML até tabelas com consulta e paginação prontas com formulários embutidos. Show de bola.

Porém a medida que a coisa vai crescendo se faz necessário criar seus próprios componentes, então temos duas opções, ou aproveitamos os recursos do Web2py ou fazemos tudo na unha.

Fazer tudo na unha é uma boa opção se quisermos usar o que fizemos com outros frameworks, se tivermos tempo e paciência isto não é tão mal. Mas....

Se utilizarmos os recursos do Web2py podemos simplesmente copiar a biblioteca de Helpers do Web2py para onde queremos e fazer o que bem entendermos, já que eles foram projetados para serem reaproveitados e portados.

Mão na massa.

Em um arquivo de módulo ou em seu arquivo de bibliotecas digite o código abaixo.

NOTA: É possível fazer isto de forma orientada a objetos, mas no meu caso não tinha muito tempo e fui fazendo em forma de funções, que podem ser reutilizadas depois.



def btn_acao(nome='',acao=None,target=None,data_target=None,tipo='default',role='button',titulo='default'):
    
    tipos = {'default':'btn-default','edit':'btn-success','del':'btn-danger'
    ,'view':'btn-warning','search':'btn-info','refresh':'btn-default','add':'btn-primary'
    ,'save':'btn-primary','close':'btn-danger','confirm':'btn-success'}
    
    icones = {'default':'','edit':'glyphicon glyphicon-edit'
    ,'del':'glyphicon glyphicon-trash','search':'glyphicon glyphicon-search'
    ,'refresh':'glyphicon glyphicon-refresh','view':'glyphicon glyphicon-zoom-in'
    ,'add':'glyphicon glyphicon-plus','save':'glyphicon glyphicon-save'
    ,'close':'glyphicon glyphicon-remove','confirm':'glyphicon glyphicon-ok'}

    titulos = {'default':'','edit':'Editar','del':'Excluir','view':'Visualizar'
    ,'search':'Pesquisar','refresh':'Atualisar','add':'Adicionar','save':'Salvar'
    ,'close':'Fechar','confirm':'Confirmar'}
    
    click = acao

    return TAG.button(
        TAG.span(_class=icones[tipo]) if tipo != 'default' else ''
        ,nome
        ,_class='btn ' + tipos[tipo] or 'btn-default'
        ,_type=role
        ,_title=titulos[tipo] if tipo != 'default' else ''
        , _onClick=click
        ,**{"_data-target":data_target,"_target":target}
    )

btn_acao(nome="Cancelar", acao=A(_href=URL(...)), tipo="close", titulo="Cancelar")

Disponível em github: https://github.com/attiquetecnologia/python_librarys/blob/master/web2py/custom_helpers.py

Comentários

Postagens mais visitadas deste blog

Web2py com NGINX

Configurar o web2py no Apache e Ubuntu LTS

API RESTFul no web2py