bitsystem/searchpro

Este es una libreria que te permite listar las tablas de una base de datos. Pueden mostrar tablas relacionadas y filtrarlas entre multiples valores. Pagina los resultados y puedes asignar el numero de resultados por pagina

1.0.0 2018-07-26 09:58 UTC

This package is not auto-updated.

Last update: 2024-10-13 05:24:04 UTC


README

Libreria adaptada para symfony 3.x, 4.x Recorta imagenes que se obtienen desde los ficheros temporales(/tmp) del servidor.En esta carpeta se suele guardar los datos pasados por formularios, etc. Recorta las miniaturas de la imagen centrada segun los parametros que se le pase y retorna un array con la ruta donde se guardaron y genera minuaturas. Estas imagenes son guardadas en una carpeta alojada en "/web" o "/public".

Índice

SearchGloom

¿Como funciona?

  • Primero: Obtienes la ruta donde se encuentra la imagen temporal.
  • Segundo: Instancia la clase Imagen()
  • Tercero: Inserta el nombre de la imagen con el metodo setName()
  • Cuardo: Inserta la imagen temporal, el nombre de la carpeta donde se guarda y el callBack donde llamar las funciones de Thumbnail
  • Quinto: save() retorna un array con los datos meta de la imagen guardada.

Llama la libreria

use Bitsystem\Backend\Image;
//Obtiene la imagen pasada por un formulario
$imageBinary = $request->files->get('image', FALSE);

//Instancia la clase
$image = new Image();
$image->setName($request->request->get('name', NULL));
$image->insertImage($imageBinary, 'course',function($e){
    $e->thumbnail(40,40);
    $e->thumbnail(364,205);
    $e->thumbnail(1080,720);
});

//Retorna un array
$imageSave = $image->save();

//Recorre el array para obtener el path de la imagen
foreach ($imageSave['thumbnails'] as $value){
    $value['route'];
    $value['width'];
    $value['height'];
}

Search Pro

Search pro es una libreria pensada para mostrar las tablas de una base de datos nombrando la tabla y las columnas que necesitamos visualizar. Ademas puedes filtrar las tablas por las columnas. Incluye un sistema de paginacion que busca los resultados de la tabla por Ajax segun los filtros seleccionados.

Índice

¿Como funciona?

Accedemos a la terminal y instalamos con composer la libreria en el composer.json de nuestro proyecto Symfony

composer require bitsystem/searchpro

Twig

Necesitamos agregar primero el select2.js necesario para poder visualizar los filtros de la tabla. Despues tableList.js al final.

{{ blocks javascripts }}
    //Dependencias
    <script type="text/javascript" src="{{ asset('assets/select2/dist/js/select2.min.js') }}"></script>
    //Plugin para generar la tabla
    <script src="{{asset('js/tableList.js')}}"></script>
{{ endblocks }}

Php

Primero incluimos la libreria en el controlador.

use Bitsystem\SearchPro\Search as Search;

Recogemos el texto a buscar y el filtro a buscar. Instancion la clase y usas los metodos que necesites para mostrar las columnas.

//Campo de busqueda
$textSearch = $request->request->get('q','');

//Parametros del filtro
$filter = $request->request->get('filter','');
$search = new Search($this->getDoctrine()->getManager(), $request);
$result = $search->setTable('Clientes')
    ->addColum([
                'id' => 'id',
                'nombre' => 'nombre'
    ])
    ->selectRow([	1 => 1,
                    10 => [ 10, true ],
                    20 => 20,
                    30 => 30,
                    40 => 40,
                    'Todo' => 'all'
                ])
    ->search('nombre',$textSearch)
    ->getResult();
    return $result;

Parametros

Paginación

Si necesitamos ocultar la paginacion de la tabla solo tenemos que añadir la opcion paging. Por defecto el valor de paging es TRUE

paging: false

Numero de resultados

El numero de resultados totales de columnas de la tabla se muestra debajo de la paginacion. Por defecto el valor de info es TRUE Si necesitamos ocultar la informacion solo tenemos que añadir la opcion info.

info: false

addColum

->addColum([
            'nombre variable' => 'Nombre columna Tabla'
])

Metodo encargado de obtener el nombre de la tabla principal para poder hacer las consultas. La tabla principal se relaciona con otras tablas con los metodos addColumForeignKey() , addColumForeignKey()

->setTable('Nombre tabla')

->addColumForeignKey([
          'POPULATION' => [
                          'type' => 'select',
                          'table' => 'MUNICIPALITY',
                          'columReference' => 'MUNICIPALITY',
                          'colum' => 'POPULATION'
                      ]
     ])

Para implementarlo necesitamos insertar en nuestro controlador y en la vista twig algunos archivos necesarios.

Estructura basica html

<div class="search-pro">
    <div class="card">
        <div class="card-body">
            
            <div class="row">
                <div class="col-xl-10 col-sm-10">
                    <label>Buscar:</label>
                    <input type="search" id="find" class="form-control">
                </div>  
                <div class="col-xl-2 col-sm-2">
                    <button id="find-ajax" class="btn btn-primary waves-effect waves-light">Buscar</button> 
                </div>
            </div>
            <div class="row">
               
            </div>

            <div class="table-rep-plugin">
                <div class="table-responsive">
                    <table class="table table-condensed m-b-none">
                        <thead></thead>
                        <tbody></tbody>
                    </table>
                    <h6 class="text-center info-count"></h6>                    
                </div>
            </div>
        </div>
    </div>
</div>
$("#search-pro").search({
    textSend: $('#find'),
    buttonSend: $('#find-ajax'),
    paging: false,
    info: false,
    colums: ['Id','Nombre'],
    tableRow: function(data){
        var row = "";
        $.each(data.result, function(k, v){
            row += "<tr data-href='"+v.id+"'>\
                        <th>"+v.id+"</th>\
                            <th>\
                            <a>"+v.nombre+"</a>\
                        </th>\
                    </tr>";
        });
        return row;
    }
});

npm install

NOTA

Esta librera utiliza los metodos GET y POST debemos asegurarnos de que tenemos habilitada la request de ellas

Resultado

Vista de como se ve la tabla segun los parametros indicados

tabla

Give the example

And repeat

until finished

End with an example of getting some data out of the system or using it for a little demo

Running the tests

Explain how to run the automated tests for this system

Break down into end to end tests

Explain what these tests test and why

Give an example

And coding style tests

Explain what these tests test and why

Give an example

Deployment

Add additional notes about how to deploy this on a live system

Built With

  • Dropwizard - The web framework used
  • Maven - Dependency Management
  • ROME - Used to generate RSS Feeds

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Autor

Consulte también la lista de colaboradores que participaron en este proyect.

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el LICENSE.md archivo para detalles

Inspirado