-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Open
Labels
BugSomething isn't workingSomething isn't workingCommunity Reportedissues reported by community membersissues reported by community membersMediumIssues that frustrate users due to poor UXIssues that frustrate users due to poor UXNeeds TriagingNeeds attention from maintainers to triageNeeds attention from maintainers to triageProduction
Description
Is there an existing issue for this?
- I have searched the existing issues
Description
Appsmith Table Component Calculated Column Filtering Bug Report
Issue Summary
In Appsmith v1.8.0, the Table component's calculated columns exhibit inconsistent behavior when using the does not contain filter, while the contains filter consistently works correctly.
Environment Information
- Appsmith Version: v1.8.0
- Component: Table
- Issue Type: Data filtering functionality anomaly
Reproduction Steps
Test Data
// TableData data source
[{
"id": 21319,
"project_id": 1109,
"project_name": "Platform Security",
"is_from_bcp_code": "2603",
"is_real_delivery": true
}]Scenario 1: Calculated Column Displaying Converted Value
- Set the calculated display value for the
is_from_bcp_codecolumn in the Table component:{{ currentRow.is_from_bcp_code === '2603' ? 'Manual Entry' : currentRow.is_from_bcp_code }}
- The interface displays: "Manual Entry"
- Attempt to use
does not containfiltering:- Filter keyword: "Manual Entry" → Does not work
- Filter keyword: "2603" → Does not work
Scenario 2: Calculated Column Displaying Combined Value
- Modify the calculated display value:
{{ currentRow.is_from_bcp_code === '2603' ? 'Manual Entry[2603]' : currentRow.is_from_bcp_code }}
- The interface displays: "Manual Entry[2603]"
- Attempt to use
does not containfiltering:- Filter keyword: "2603" → Works ✓
- Filter keyword: "Manual Entry" → Does not work ✗
Scenario 3: contains Filter (Control Group)
Regardless of display value settings:
contains "Manual Entry"→ Always works ✓contains "2603"→ Always works ✓
Expected Behavior
- The
does not containfilter should operate based on the displayed value - Filtering behavior should be consistent between
containsanddoes not contain - Filtering with the same keyword should behave consistently regardless of how the display value is calculated
Actual Behavior
does not containfiltering handles calculated column display values inconsistently- The filtering logic appears to be based on the original value in some cases and the displayed value in others
- There is an asymmetry between
containsanddoes not containfiltering logic
Impact Scope
- Table components using calculated columns that require
does not containfiltering functionality - Data display interfaces relying on precise filtering capabilities
Suggested Temporary Workarounds
Currently available temporary solutions:
- Pre-calculate display values at the data source level rather than relying on the Table component's calculated column functionality
- Use
containsfiltering combined with reverse logic instead ofdoes not contain - Consider using JS functions for custom filtering
Additional Information
- Issue confirmed in Appsmith v1.8.0
- Similar issues may exist in other versions
- No error logs in the console
- Filters are client-side JS filtering and do not involve API requests
Reproduction Environment Requirements
- Appsmith v1.8.0
- Table component containing calculated columns
- Use of
does not containfiltering functionality
Tags: bug, table-component, filtering, calculated-columns
Priority: Medium
Component: Table Widget
Related Features: Column Filtering, Calculated Columns, Data Display
Steps To Reproduce
Steps to Reproduce
Prerequisites
- Appsmith instance version v1.8.0
- Table widget configured with sample data
- Access to Table widget properties
Step 1: Configure Basic Setup
- Create a new page in your Appsmith application
- Drag a Table widget onto the canvas
- Configure Table Data with the following JSON:
[{
"id": 21319,
"project_id": 1109,
"project_name": "Henan Zhengzhou Platform Security",
"is_from_bcp_code": "2603",
"is_real_delivery": true
}]Step 2: Configure Calculated Column (Scenario 1)
- Select the Table widget
- Open the column settings for
is_from_bcp_codecolumn - Change column type to "Custom"
- Set Computed Value to:
{{ currentRow.is_from_bcp_code === '2603' ? 'Manual Entry' : currentRow.is_from_bcp_code }}- Confirm the column now displays "Manual Entry" instead of "2603"
Step 3: Test Filtering Behavior (Scenario 1)
- Enable column filtering for the
is_from_bcp_codecolumn - Set filter to "does not contain" with value "Manual Entry"
- Expected: Row should be filtered out (hidden)
- Actual: Row remains visible ❌
- Change filter value to "2603"
- Expected: Row should be filtered out (hidden)
- Actual: Row remains visible ❌
Step 4: Modify Calculated Column (Scenario 2)
- Update Computed Value to:
{{ currentRow.is_from_bcp_code === '2603' ? 'Manual Entry[2603]' : currentRow.is_from_bcp_code }}- Confirm the column now displays "Manual Entry[2603]"
Step 5: Test Filtering Behavior (Scenario 2)
- Set filter to "does not contain" with value "2603"
- Expected: Row should be filtered out (hidden)
- Actual: Row IS filtered out ✓
- Change filter value to "Manual Entry"
- Expected: Row should be filtered out (hidden)
- Actual: Row remains visible ❌
Step 6: Test "contains" Filter (Scenario 3)
- Set filter to "contains" with value "Manual Entry"
- Result: Row remains visible (filter works correctly) ✓
- Change filter value to "2603"
- Result: Row remains visible (filter works correctly) ✓
- Repeat with both display formats from Step 2 and Step 4
- Observation: "contains" filter works consistently in all cases
Step 7: Additional Verification
- Add more rows with different
is_from_bcp_codevalues:
[
{"id": 21319, "is_from_bcp_code": "2603"},
{"id": 21320, "is_from_bcp_code": "2604"},
{"id": 21321, "is_from_bcp_code": "2605"}
]- Test filtering with mixed data
- Verify the issue persists across multiple rows
Step 8: Document the Issue
- Take screenshots of:
- Table configuration
- Filter settings
- Actual vs expected results
- Check browser console for any JavaScript errors
- Confirm filtering is client-side (no network requests)
Note: All filtering tests should be performed with the Table's built-in filter feature, not through queries or external filtering mechanisms. The issue is specific to the Table widget's UI filtering functionality when applied to calculated columns.
Public Sample App
No response
Environment
Production
Severity
Medium (Frustrating UX)
Issue video log
No response
Version
Self Host v1.8.0
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BugSomething isn't workingSomething isn't workingCommunity Reportedissues reported by community membersissues reported by community membersMediumIssues that frustrate users due to poor UXIssues that frustrate users due to poor UXNeeds TriagingNeeds attention from maintainers to triageNeeds attention from maintainers to triageProduction