Jump to content

[Module Preview] ProcessDataTables (Beta): The Swiss Army Knife for ProcessWire Data Visualization


Recommended Posts

Hey ProcessWire Community,

I’m excited to announce a new module currently in beta: ProcessDataTables – designed as a universal “Swiss Army knife” for backend data visualization. Before the development of the ProcessUserDataTable module we developed a sleek module for a client called ProcessDataTable (singular), which featured the same guided, user-friendly install process with select/multiselect configuration fields but the possibility to handle the column display with small PHP templates. It was also designed for using it with a single table. But we saw the need for a truly flexible solution that can handle an unlimited number of tables in the ProcessWire admin.

ProcessDataTables (plural) is aimed at more experienced ProcessWire developers who need a rapid, highly configurable, and reusable tool for building complex data overviews and admin dashboards. Unlike the original (still unreleased) single-table module, which focuses on ease of setup, this new version prioritizes scalability, customization, and extensibility. We are currently using it in combination with @bernhards incredible module RockCommerce to display E-Commerce related data for backend users.

Why ProcessDataTables?

  • Unlimited custom tables: Quickly define as many tables as you need for any data structure or ProcessWire template.

  • Advanced configuration: Control each table’s columns, data sources, selectors, and field-level output via PHP stubs.

  • Per-field templating: Every column can use its own output template for advanced formatting and presentation.

  • Global module config: Set date/currency/number formatting, labels, and output options from a central settings screen.

  • Built for developers: Configuration is more open and flexible, allowing you to create advanced dashboards and reporting interfaces for any ProcessWire installation.

Differences to the (yet unreleased) ProcessDataTable Module

The original ProcessDataTable (singular) module was focused on single-table use cases and offered a more beginner-friendly installation process:

  • Guided setup: Selection of templates and fields through select/multiselect inputs in the config screen

  • Quicker onboarding: Suitable for smaller projects or less technical users when only one data table is needed

Status

  • ProcessDataTables is currently in beta – feedback, ideas, and bug reports are highly appreciated!

  • Looking for real-world use cases and input from the community to help shape the roadmap.

Screenshots & Example Workflow

In the README of the module you find example screenshots of the module config, adding tables, and customizing table columns)

Get it here: 

https://processwire.com/modules/process-data-tables/

https://github.com/frameless-at/ProcessDataTables


If you have ideas, feature requests, or want to help test or contribute, please reply below or DM me! 
Looking forward to your feedback and suggestions!

  • Like 11
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Mikel said:

We are currently using it in combination with @bernhards incredible module RockCommerce to display E-Commerce related data for backend users.

So happy to hear that, thank you 😍 Would be great to see what you built!!

Link to comment
Share on other sites

On 5/23/2025 at 1:10 PM, bernhard said:

So happy to hear that, thank you 😍 Would be great to see what you built!!

@bernhard As its an ongoing project visualizing real customer data, I am not able to show any real Screenshots, but in a nutshell we are making heavy use of the meta data objects in RockCommerce and manipulate and aggregate data from there to show backend users useful insights. Still a lot room for improvement, but I come to that later on...  

On 5/26/2025 at 10:56 AM, Torsten Baldes said:

This looks great! 

Is there a way to add some admin actions (e.g. edit, clone, delete) to a column, or would that be done via a custom column template?

@Torsten Baldes You can do anything you like inside the column templates, but for what you mentioned there are better tools out there I believe: Maybe Ryans ListerPro Module or Bernhards RockGrid Module. We aimed the module more on  data visualization than manipulation. But the use cases are endless. For example a colleague of mine quickly created a DataTable with product data for assisting newsletter authors with useful page links, images and copy texts. Exactly the data he needed in a sortable table overview with modal windows that show complete data if needed.

  • Like 1
Link to comment
Share on other sites

The latest additions/improvements of the module [v0.5.0]:

  • Template file structure

    • Stubs are now namespaced into subfolders per DataTable (column_templates/<table>/<slug>.column.php) instead of a flat directory.
    • TemplateGenerator::getTemplateFilePath() and createTemplateFile() updated to build and create these subdirectories automatically.
       
  • Legacy-stub upgrade

    • loadColumnTemplates() now checks each stub for a return function(...) signature.
    • If missing, it archives the old stub (prefixing its filename with _) before regenerating a new closure-based stub.
       
  • Page-property handling

    • Unified list of core properties driven by getStandardPropertyLabels() (including status).
    • All Page-property stubs now use return …; inside closures and map bitmask flags (status) to human-readable labels.

 

Lets look a little closer at the switch to closures for the column templates and an export/import feature.

We planned this from the beginning and now switched over to a slightly different approach for the tiny template files used to display the data in your columns. The mechanism of those templates remains the same, but the performance gain is huge. Especially when dealing with lots of columns and rows:

OLD:

    echo htmlspecialchars((string)$value);

NEW:

  return function($value, $config = []) {
      return htmlspecialchars($value);
  };

Anyone who tried to create a DataTable gets column templates automatically created. They support the most common field types in ProcessWire and format the output initially in a simple but (hopefully) useful way. If you then tailor the output exactly to your needs, sometimes it would be handy to just save those micro templates for further use.

Well, we are just developing export/import features for that purpose: Just export your global and dataTable settings as JSON and your column templates as ZIP and reuse it, manipulate them, share them 😉 and then use for migrating or easy duplication of tables. Here are some screenshots showing its (yet rather ugly) interface in action. We assume you want to port existing dataTables to another processWire site using the same data structure.

Well start with a fresh install of the module 

1207355273_Bildschirmfoto2025-05-26um15_53_10.thumb.png.d2514f980b37853fe031ef842ce76707.png

We upload our exported JSON file, that contains data like this:

{
    "moduleConfig": {
        "checkboxYesLabel": "Yes",
        "checkboxNoLabel": "No",
   		...
    },
    "dataTables": [
        {
            "name": "orders",
            "title": "Orders",
            "data_template": "rockcommerce_order",
            "data_selector": "",
            "columns": [
                "rockcommerce_paymentid",
                "status=rockcommerce_paymentstatus",
                "rockcommerce_paymentdate",
                "order=meta",
                "rockcommerce_net",
                "total=rockcommerce_net"
				 ...

After importing we immiatly see the result of the import displayed as DataTable with, at the moment, default fieldtype templates as column templates:

1119359446_Bildschirmfoto2025-05-26um15_54_16.thumb.png.852e1bfa3918ae66adaad1b2b800755a.png

 

But at the bottom of each DataTable there is more:2067629629_Bildschirmfoto2025-05-26um15_56_20.thumb.png.b13648f778a4cda2ac83b60bf1801abf.png

SO in the next step we import our prior fine-tuned column templates and immediately get a much better result:

293768976_Bildschirmfoto2025-05-26um15_56_59.thumb.png.f63c087939b49550b959b61eb820c3b7.png

 

Under the hood the "old" default column templates that were created after importing the JSON config are not deleted, the get prefixed with an underscore in case you already made some adjustments before importing other column templates. Of course one can also manually copy column template files from one install to another but we found it more practical to let the module handle this. Especially when building new sites or testing, be aware that an  uninstall of the module always wipes out the entire column_templates directory. So you better export before uninstalling! 

We are still working on the interface because it hurts my designer sensibilities to look at the UI  of the import/export section. 😉 What do you think? What could be further improvements? Cheers to all of you and have a productive week!

 

  • Like 5
Link to comment
Share on other sites

  • 2 weeks later...

Hello everyone,

I would like to give you an overview of the recent changes and improvements that have been incorporated into the ProcessDataTables module since version 0.6.0. Maybe there is something interesting for you! As we are testing the brand new UIKit style the screenshots are made using that theme.

From 0.6.0, the UI for import/export is now clearly structured, visually improved and much more user-friendly.

1102454166_Bildschirmfoto2025-06-09um18_44_03.thumb.png.012de1029fc3857527880a6e1cb0bdb8.png

The new pagination (from 0.6.2) ensures better performance and overview for large data records. The value for the rows per page for DataTables is defined in the config area.

261343096_Bildschirmfoto2025-06-09um18_44_42.thumb.png.4bbd23d6996c70a527a5fc4ef18fe38d.png

Before this version there was no native pagination, i.e. all data records were loaded at once - problematic with large amounts of data. Now the navigation is performant and user-friendly, large tables are divided into pages.

1738747_Bildschirmfoto2025-06-09um18_45_55.thumb.png.557b08d128d406a4f1c1c6a903e91446.png

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Hello again!

We have made some small bugfixes in the last few days, 2 of which are worth mentioning:

  1. All labels and texts of the module can now be translated.
  2. From version 0.6.5 column templates are saved in /site/asstes/. This has the advantage that you no longer have to remember to export your column templates before upgrading the module.

ATTENTION: Before upgrading to this version, be sure to create an export of your column templates! 😉

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...