Adición de un analizador clasificador basado en muestra de datos de una columna de células

StackOverflow https://stackoverflow.com/questions/854241

  •  21-08-2019
  •  | 
  •  

Pregunta

Esta es la última parte de este proyecto, gracias a todos los que han ayudado con la corrección de sintaxis en otras partes. Estoy usando el plugin para jQuery tablesorter. Básicamente, lo que quiero lograr es para mi ordenación personalizada funcionan para escoger un encabezado de la tabla en función de si tiene o no tiene una clase, a saber, "SortableHeader". A continuación, tiene que decidir qué programa de análisis de metadatos para añadir a la cabecera de esa columna en particular sobre la base de los datos de esa columna. Me he tomado el enfoque más complejo y decidió tomar una muestra de los datos de una sola célula (digamos, la primera fila de la columna) y compararlo con diferentes patrones o expresiones regulares, el clasificador A continuación, añadir el programa de análisis de metadatos adecuado basado en el resultado de la comparación, por ejemplo, si coincide con el patrón de fecha, el clasificador se sumará el analizador fecha, si coincide con el patrón de URL, añade el analizador URL, etc. Tengo dos cuestiones:

  1. No puedo encontrar la manera de seleccionar una sola fila de una columna, no tengo intentado buscar, pero sólo encuentro tutoriales para recorrer todas las filas de una mesa, en contraposición a la selección de una una hilera de una columna sobre la base de la información del encabezado de la columna.

  2. No estoy seguro de cómo hacer patrones     y / o expresiones regulares en     jQuery. p.ej. ¿Cómo sería una fecha     expresión regular / patrón que     busca las fechas de la forma 2 de marzo     2009, busque en jQuery ??

Me he Actualmente siguiente esquema

    //Add parser to each table header that has a class="SortableHeader"
    $("th[class='SortableHeader']").each(function(column){
        //Take a sample of data from a single cell in this column 
        // compare it to various patterns to determine what type 
       //of data it contains in order to apply the appropriate parser   
    });

Una sección de encabezado de la muestra para realizar la búsqueda en especie sería la siguiente:

<table id="myTable" summary="Table is used to list available workshops"  cellspacing="0">
            <thead>
                <tr>
                    <th class="SortableHeader"><a rel = "Header" href="#" title="Sort title in decending order" class="">Title</a></th>
                    <th><a rel = "Header" href="#" title="Sort instructor in descending order" class="">Instructor</a></th>
                    <th class="SortableHeader"><a rel = "Header" href="#" title="Sort column in decending order" class="">Date</a></th>
                    <th>Start/End</th>
                    <th><a rel = "Header" href="#" title="Sort column in decending order" class="">Seats Available</a></th>
                    <th><a rel = "Header" href="#" title="Sort column in decending order" class="">Enrolled</a></th>
                    <th><a rel = "Header" href="#" title="Sort column in decending order" class="">Pre-Requisites</a></th>
                    <th>Workshop Actions</th>
                </tr>
            </thead>

La última pregunta que tengo es, ¿podría haber una manera mucho más sencilla de hacer esto ?? Calculo que sólo podía llevarse el título de la cabecera y basar el selector de programa de análisis en eso, pero quería evitar esto, ya que parece ser un poco menos flexible, que tendría que cadenas específicas de código difícil de comprobar el título de la cabecera y contra cualquier persona que está llevando a cabo esto sólo sería capaz de utilizar esas cadenas específicas como el título de cabecera no con el fin de aplicar programas de análisis de clasificación específicos. Quiero ot evitar esto, si puedo.

¿Fue útil?

Solución

  1. Utilice un selector que devuelve las columnas en la primera fila, y luego seleccione la columna que desea de eso.

    var firstColumn = $ ( "# myTable TBODY TR: primero TD") [0];

  2. Me gustaría tratar de coaccionar el valor de fecha y numéricas tipos, y entonces se puede obtener en subtipos y expresiones regulares cuando se está buscando en diferentes variaciones de tipo cadena (URL, etc ...)

  3. Si desea hacerlo más decarative, sólo añadiría otra clase para los títulos de las columnas que indican el comparador que desea utilizar en el género.

    ... ...

Al inicializar la clase se puede utilizar el método hasClass para ver si una columna tiene un tipo de fecha particular asociado con él.

$("#myTable THEAD TR:first TH").each(function(column) {
    if ($(this).hasClass("DataTypeDate")) {
        // ...
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top