-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Request] Allow table data be sorted / filtered by column headings #191
Comments
That's definitely out of the intended scope of the plugin. However, I've purposely put many hooks into the existing code to allow for just these kinds of things. I don't think I've documented this one in the wiki yet, but there's a hook right where the table template is called: require apply_filters( 'm_chart_table_template', $template, $library, $post->ID ); You could use that hook to return the path of a different table template inside of your theme and then do whatever you want in there. The default table template looks like this: <table class="<?php echo esc_attr( $classes ); ?>">
<?php
$set_name = '';
if ( $multiple ) {
$set_name = ': ' . $post_meta['set_names'][ $set ];
}
if ( isset( m_chart()->parse()->value_labels['first_row'] ) ) {
$first_row = m_chart()->parse()->value_labels['first_row'];
$labels = m_chart()->parse()->value_labels['first_column'];
$row_column = false;
if ( count( $first_row ) == count( m_chart()->parse()->set_data[0] ) ) {
$row_column = true;
}
?>
<tr><th colspan="<?php echo count( $first_row ) + 1; ?>"><?php echo get_the_title( $post_id ) . $set_name; ?></th></tr>
<tr>
<th></th>
<?php
foreach ( $first_row as $label ) {
?>
<th><?php echo esc_html( $label ); ?></th>
<?php
}
?>
</tr>
<?php
foreach ( $labels as $row => $label ) {
?>
<tr>
<th><?php echo esc_html( $label ); ?></th>
<?php
foreach ( $first_row as $column => $label ) {
if ( $row_column ) {
$value = m_chart()->parse()->set_data[ $row ][ $column ];
} else {
$value = m_chart()->parse()->set_data[ $column ][ $row ];
}
if ( is_numeric( $value ) ) {
$value = number_format_i18n( $value, strlen( substr( strrchr( $value, '.'), 1 ) ) );
$value = '' != $value ? m_chart()->parse()->data_prefix . $value . m_chart()->parse()->data_suffix : '';
}
?>
<td><?php echo esc_html( $value ); ?></td>
<?php
}
?>
</tr>
<?php
}
} else {
$first_row = m_chart()->parse()->value_labels;
?>
<tr><th colspan="<?php echo count( $first_row ); ?>"><?php echo get_the_title( $post_id ) . $set_name; ?></th></tr>
<tr>
<?php
foreach ( $first_row as $label ) {
?>
<th><?php echo esc_html( $label ); ?></th>
<?php
}
?>
</tr>
<tr>
<?php
$row_count = 1;
$total_rows = count( m_chart()->parse()->set_data ) / count( $first_row );
foreach ( m_chart()->parse()->set_data as $key => $value ) {
if ( is_numeric( $value ) ) {
$value = number_format_i18n( $value, strlen( substr( strrchr( $value, '.'), 1 ) ) );
$value = '' != $value ? m_chart()->parse()->data_prefix . $value . m_chart()->parse()->data_suffix : '';
}
?>
<td><?php echo esc_html( $value ); ?></td>
<?php
if ( ( $key + 1 ) / ( count( $first_row ) * $row_count ) == 1 ) {
$row_count++;
if ( $row_count <= $total_rows ) {
?>
</tr><tr>
<?php
}
}
}
?>
</tr>
<?php
}
?>
</table> You could use that as a starting point to build alternate versions of table output that include whatever features you like. And there are many javascript libraries out there for adding sorting features to HTML tables. |
Thanks. A bit beyond my basic skills. But I know a developer who might help out. |
Happy to help them along/point them in the right direction when the time comes. |
An option to allow site visitors to sort (filter?) table data by clicking on a column heading would be helpful for our project.
(Providing this feature for visitors is the only reason we are currently using Ninja Tables alongside M Chart).
https://ripcounties.ie/the-national-picture/
The text was updated successfully, but these errors were encountered: