From 77eae1c8e897ece9512afd07d7cc0aaef0003e79 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 14 Jan 2024 23:20:06 +1100 Subject: [PATCH] Fix #4195. Forgot to add UI for contains selector. --- src/blenderbim/blenderbim/bim/prop.py | 2 ++ src/blenderbim/blenderbim/tool/search.py | 34 +++++++++++++----------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/prop.py b/src/blenderbim/blenderbim/bim/prop.py index 392bc330cb..9188d138d3 100644 --- a/src/blenderbim/blenderbim/bim/prop.py +++ b/src/blenderbim/blenderbim/bim/prop.py @@ -489,6 +489,8 @@ class BIMFacet(PropertyGroup): ("<=", "lesser than or equal to", ""), (">", "greater than", ""), ("<", "less than", ""), + ("*=", "contains", ""), + ("!*=", "does not contain", ""), ], ) diff --git a/src/blenderbim/blenderbim/tool/search.py b/src/blenderbim/blenderbim/tool/search.py index 0ae0f8991b..834b99304c 100644 --- a/src/blenderbim/blenderbim/tool/search.py +++ b/src/blenderbim/blenderbim/tool/search.py @@ -144,7 +144,7 @@ class ImportFilterQueryTransformer(lark.Transformer): new2.pset = arg["pset"] if "comparison" in arg: new2.comparison = arg["comparison"] -###################################################################### + def facet(self, args): return args[0] @@ -169,8 +169,7 @@ class ImportFilterQueryTransformer(lark.Transformer): def property(self, args): pset, prop, comparison, value = args - #return {"type": "property", "pset": pset, "name": prop, "value": f"{comparison}{value}"} - return {"type": "property", "pset": pset, "name": prop, "comparison" : comparison, "value": f"{value}"} + return {"type": "property", "pset": pset, "name": prop, "comparison": comparison, "value": f"{value}"} def classification(self, args): comparison, value = args @@ -189,19 +188,24 @@ class ImportFilterQueryTransformer(lark.Transformer): return {"type": "query", "name": keys, "value": f"{comparison}{value}"} def comparison(self, args): - if args[0].data == "equals": - return "=" - elif args[0].data == "morethanequalto": - return ">=" - elif args[0].data == "lessthanequalto": - return "<=" - elif args[0].data == "morethan": - return ">" - elif args[0].data == "lessthan": - return "<" + if args[0].data == "not": + comparison = args[1].data + is_not = "!" else: - return "!=" - #return "" if args[0].data == "equals" else "!=" + comparison = args[0].data + is_not = "" + + return ( + is_not + + { + "equals": "=", + "morethanequalto": ">=", + "lessthanequalto": "<=", + "morethan": ">", + "lessthan": "<", + "contains": "*=", + }[comparison] + ) def keys(self, args): return self.value(args)