QBit Customizable Table Views provides table personalization capabilities for QQQ applications, allowing users to customize which fields and widgets they see based on their roles and permissions.
Role-Based Table Customization - This QBit enables fine-grained control over table presentation without modifying application code. Users see different fields and widgets based on their assigned roles, providing a personalized experience while maintaining security and data integrity.
This QBit is 100% open source - you have complete ownership and control:
User-defined saved views for QQQ dashboard tables.
For: QQQ developers who want users to save and share custom table configurations
Status: Stable
Different users need different views of the same data. Sales wants to see orders by region. Operations wants orders by status. Each applies different filters, sorts columns differently, and hides irrelevant fields.
This QBit lets users save these configurations as named views. Create a view, adjust columns and filters, save it, and switch between views instantly. Views can be private or shared with the team.
- Saved Views - Store filter, sort, and column configurations
- Column Visibility - Show/hide columns per view
- Column Order - Reorder columns with drag-and-drop
- Filter Presets - Save complex filter combinations
- View Sharing - Share views with roles or all users
- Default Views - Set a view as the default for a table
- QQQ application (v0.35.0+)
- QQQ dashboard deployed
- Database backend configured
Add to your pom.xml:
<dependency>
<groupId>com.kingsrook.qbits</groupId>
<artifactId>qbit-customizable-table-views</artifactId>
<version>0.3.0</version>
</dependency>public class AppMetaProvider extends QMetaProvider {
@Override
public void configure(QInstance qInstance) {
new CustomizableTableViewsQBit().configure(qInstance);
}
}new QTableMetaData()
.withName("order")
.withCustomViewsEnabled(true);Users interact with views through the dashboard:
- Navigate to a table
- Adjust columns, filters, and sorting
- Click "Save View"
- Name the view and set visibility (private/shared)
- Switch views from the dropdown
new QSavedViewMetaData()
.withName("pendingOrders")
.withTable("order")
.withLabel("Pending Orders")
.withFilter(new QQueryFilter()
.withCriteria("status", Operator.EQUALS, "pending"))
.withColumns("orderNumber", "customerName", "total", "createdDate")
.withSortBy("createdDate", SortOrder.DESC)
.withSharedWithRoles("sales", "operations");Set a view as the default for all users or specific roles:
new QSavedViewMetaData()
.withName("activeCustomers")
.withTable("customer")
.withIsDefault(true)
.withFilter(new QQueryFilter()
.withCriteria("status", Operator.EQUALS, "active"));Create views that extend others:
new QSavedViewMetaData()
.withName("myPendingOrders")
.withExtendsView("pendingOrders")
.withAdditionalFilter(new QQueryFilter()
.withCriteria("assignedToUserId", Operator.EQUALS, "${currentUserId}"));The QBit creates these tables:
| Table | Purpose |
|---|---|
saved_view |
View definitions |
saved_view_column |
Column configurations |
saved_view_share |
Sharing permissions |
new CustomizableTableViewsQBit()
.withMaxViewsPerUser(50)
.withMaxSharedViewsPerTable(20);Stable and production-ready.
- View folders/categories
- View usage analytics
- Export/import view configurations
- Fork the repository
- Create a feature branch
- Run tests:
mvn clean verify - Submit a pull request
Proprietary - QRun.IO