{
  "$schema": "../../../presentation/common/Ruleset.schema.json",
  "id": "ui-framework/Categories",
  "rules": [
    {
      "ruleType": "RootNodes",
      "subConditions": [
        {
          "condition": "GetVariableStringValue(\"ViewType\") = \"3d\"",
          "specifications": [
            {
              "specType": "InstanceNodesOfSpecificClasses",
              "classes": [
                {
                  "schemaName": "BisCore",
                  "classNames": [
                    "SpatialCategory"
                  ]
                }
              ],
              "arePolymorphic": true,
              "instanceFilter": "this.HasRelatedInstance(\"BisCore:GeometricElement3dIsInCategory\", \"Backward\", \"BisCore:Element\")",
              "groupByClass": false,
              "groupByLabel": false
            }
          ]
        },
        {
          "condition": "GetVariableStringValue(\"ViewType\") = \"2d\"",
          "specifications": [
            {
              "specType": "InstanceNodesOfSpecificClasses",
              "classes": [
                {
                  "schemaName": "BisCore",
                  "classNames": [
                    "DrawingCategory"
                  ]
                }
              ],
              "arePolymorphic": true,
              "instanceFilter": "this.HasRelatedInstance(\"BisCore:GeometricElement2dIsInCategory\", \"Backward\", \"BisCore:Element\")",
              "groupByClass": false,
              "groupByLabel": false
            }
          ]
        }
      ]
    },
    {
      "ruleType": "ChildNodes",
      "condition": "ParentNode.IsOfClass(\"Category\", \"BisCore\") ANDALSO ParentNode.ECInstance.GetRelatedInstancesCount(\"BisCore:CategoryOwnsSubCategories\", \"Forward\", \"BisCore:SubCategory\") > 1",
      "specifications": [
        {
          "specType": "RelatedInstanceNodes",
          "relationships": {
            "schemaName": "BisCore",
            "classNames": [
              "CategoryOwnsSubCategories"
            ]
          },
          "relatedClasses": {
            "schemaName": "BisCore",
            "classNames": [
              "SubCategory"
            ]
          },
          "requiredDirection": "Forward",
          "groupByClass": false,
          "groupByLabel": false
        }
      ]
    },
    {
      "ruleType": "LabelOverride",
      "condition": "this.IsOfClass(\"Category\", \"BisCore\")",
      "description": "this.Description"
    }
  ]
}
