Rules based row filtering for attribute spreadsheet #86133

Closed
opened 2021-03-01 14:41:37 +01:00 by Dalai Felinto · 9 comments

See #86027 - need final mockup.

{F9914560, size=full}

When a rule row is complete, a new blank one is available.

Each rule is a set of:

  • column name
  • condition (e.g., larger than)
  • value

Conditions:

  • Equal
  • Larger Than
  • Smaller Than

The rules are AND conditions. So they don't add new rows, but only remove them.

If the column name is not available (e.g., the active object doesn't have attribute Mask), user should be aware of that. (e.g., warning icon, red background, ...). The other rules should still be applied though.

The column name should do string search/lookup with the columns names of the spreadsheet. Ideally this should work for scene data in the future.

Operators:

  • Reset (i.e., remove all rules)
  • Preset [good to have, not a requirement - need its own task]
See #86027 - need final mockup. {[F9914560](https://archive.blender.org/developer/F9914560/image.png), size=full} When a rule row is complete, a new blank one is available. Each rule is a set of: * column name * condition (e.g., larger than) * value Conditions: * `Equal` * `Larger Than` * `Smaller Than` The rules are AND conditions. So they don't add new rows, but only remove them. If the column name is not available (e.g., the active object doesn't have attribute Mask), user should be aware of that. (e.g., warning icon, red background, ...). The other rules should still be applied though. The column name should do string search/lookup with the columns names of the spreadsheet. Ideally this should work for scene data in the future. Operators: * Reset (i.e., remove all rules) * Preset [good to have, not a requirement - need its own task]
Author
Owner

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Owner

Added subscriber: @dfelinto

Added subscriber: @dfelinto
Author
Owner

The way phabricator handles rules is simple enough and I think it can be the focus of the initial implementation here:

{F9859851, size=full}

Besides we don't even need the "reset" button at first. It is super fast to click the remove button few times in a row. This is based on the phabricator experience. Once we have the basic in master we can reiterate on it.

The way phabricator handles rules is simple enough and I think it can be the focus of the initial implementation here: {[F9859851](https://archive.blender.org/developer/F9859851/phab.jpg), size=full} Besides we don't even need the "reset" button at first. It is super fast to click the remove button few times in a row. This is based on the phabricator experience. Once we have the basic in master we can reiterate on it.
Hans Goudey self-assigned this 2021-03-30 22:40:22 +02:00
Member

{F9915014 size=full}

branch: temp-spreadsheet-row-filter

The UI is basically implemented, it should be straightforward to move it wherever we want it. I just liked the idea of trying it in a popover first (I like it, though it means we won't be able to drag them : P)
Things I'm thinking about:

  • Specifying the data type is necessary because an attribute might have one data type on one object, another data type on another, etc.
    • We could set the data type automatically when you first type in the name (or choose it from a search?)
  • How are we going to deal with sorting by material_index but seeing the position values for example? They are separate data sets, so they don't really interact on the spreadsheet level?
    • Either this becomes a "geometry spreadsheet" level feature (rather than a feature for all spreadsheets), or we just require people to use the attribute convert node or something
  • "Equal To" needs a threshold, it's basically useless without it.
  • The original mockup in #86133 mixes up column filtering and row filtering (it puts them very close together). I think that's confusing
    • We're probably going to change that anyway when we use the "hide column", "unhide column" anyway?
{[F9915014](https://archive.blender.org/developer/F9915014/image.png) size=full} branch: `temp-spreadsheet-row-filter` The UI is basically implemented, it should be straightforward to move it wherever we want it. I just liked the idea of trying it in a popover first (I like it, though it means we won't be able to drag them : P) Things I'm thinking about: - Specifying the data type is necessary because an attribute might have one data type on one object, another data type on another, etc. - We could set the data type automatically when you first type in the name (or choose it from a search?) - How are we going to deal with sorting by material_index but seeing the position values for example? They are separate data sets, so they don't really interact on the spreadsheet level? - Either this becomes a "geometry spreadsheet" level feature (rather than a feature for all spreadsheets), or we just require people to use the attribute convert node or something - "Equal To" needs a threshold, it's basically useless without it. - The original mockup in #86133 mixes up column filtering and row filtering (it puts them very close together). I think that's confusing - We're probably going to change that anyway when we use the "hide column", "unhide column" anyway?
Author
Owner

Hi @HooglyBoogly I couldn't get this to work. Did you implement only the UI?

  1. I think we can do without the data type. The filters should map to the existing columns in the spreadsheet.

  2. That also means there no "Vector" data type since we are filtering the columns individually.

  3. "How are we going to deal with sorting by material_index but seeing the position values for example?
    We basically won't. Sorting (if implemented) is local to the current data-set.

  4. "They are separate data sets, so they don't really interact on the spreadsheet level?"
    Correct

  5. re: "Equal To".

In the original-original design all we had was a "Range".

image.png

Which we could use for floats. But the equal to ca be used for integers and booleans.

  1. Hiding individual columns or a global column filter is different. But anyways, this is not related to this task.
Hi @HooglyBoogly I couldn't get this to work. Did you implement only the UI? 1. I think we can do without the data type. The filters should map to the existing columns in the spreadsheet. 2. That also means there no "Vector" data type since we are filtering the columns individually. 3. "How are we going to deal with sorting by material_index but seeing the position values for example? We basically won't. Sorting (if implemented) is local to the current data-set. 4. "They are separate data sets, so they don't really interact on the spreadsheet level?" Correct 4. re: "Equal To". In the original-original design all we had was a "Range". ![image.png](https://archive.blender.org/developer/F9916693/image.png) Which we could use for floats. But the equal to ca be used for integers and booleans. 5. Hiding individual columns or a global column filter is different. But anyways, this is not related to this task.
Author
Owner

(also, the "property search" is important to be able to pick from the existing columns)

(also, the "property search" is important to be able to pick from the existing columns)
Member

Followup tasks:

  • #89273 ("Range" filter option for spreadsheet row filters)
  • #89272 (Visible column search for the spreadsheet)
Followup tasks: - #89273 ("Range" filter option for spreadsheet row filters) - #89272 (Visible column search for the spreadsheet)

This issue was referenced by f9aea19d98

This issue was referenced by f9aea19d98908be450f228a35bb6098e7e3e4b03
Author
Owner

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#86133
No description provided.