diff --git a/schema/view.schema.json b/schema/view.schema.json index ad85dbb..39029b9 100644 --- a/schema/view.schema.json +++ b/schema/view.schema.json @@ -863,19 +863,19 @@ "type": "object", "properties": { "uiSelectionGroup": { - "description": "Name of the UI from which this view can be selected.", - "$ref": "#/definitions/name" + "description": "Name of the UI from which this view can be selected. You have to either specify uiSelectionGroup or uiSelectionGroups.", + "$ref": "#/definitions/name" }, "uiSelectionGroups": { - "description": "Name of multiple UI elements from which this view can be selected. Values specified here will be - added in addition to the value in 'uiSelectionGroup.'", + "description": "Name of multiple UI elements from which this view can be selected. You have to either specify uiSelectionGroup or uiSelectionGroups", "type": "array", "minItems": 1, "items": { - "$ref": "#/definitions/name" + "$ref": "#/definitions/name", + "minItems": 1 } - } + }, "isExclusive": { "type": "boolean", @@ -914,6 +914,9 @@ "$ref": "#/definitions/viewerTransform" } }, - "required": ["isExclusive", "uiSelectionGroup"], + "oneOf": [ + {"required": ["isExclusive", "uiSelectionGroup"]}, + {"required": ["isExclusive", "uiSelectionGroups"]} + ], "additionalProperties": false } diff --git a/specs/examples/single_source_view_selection_groups.json b/specs/examples/single_source_view_selection_groups.json new file mode 100644 index 0000000..2e60d60 --- /dev/null +++ b/specs/examples/single_source_view_selection_groups.json @@ -0,0 +1,91 @@ +{ + "default": { + "isExclusive": false, + "sourceDisplays": [ + { + "imageDisplay": { + "blendingMode": "sum", + "color": "r255-g255-b255-a255", + "contrastLimits": [ + 290, + 23000 + ], + "name": "em-overview", + "opacity": 1.0, + "sources": [ + "em-overview" + ] + } + } + ], + "sourceTransforms": [ + { + "affine": { + "name": "MapScaleMat", + "parameters": [ + -0.10198378825464686, + -0.9710562907353596, + 0.0, + 0.0, + -0.9846441741918877, + 0.11862126451903302, + 0.0, + 0.0, + 0.0, + 0.0, + 29.30832356389215, + 0.0 + ], + "sources": [ + "em-overview" + ] + } + }, + { + "affine": { + "name": "Translation", + "parameters": [ + 1.0, + 0.0, + 0.0, + 481.249, + 0.0, + 1.0, + 0.0, + 493.667, + 0.0, + 0.0, + 1.0, + 0.0 + ], + "sources": [ + "em-overview" + ] + } + }, + { + "affine": { + "name": "manual_shift_a3", + "parameters": [ + 1.0, + 0.0, + 0.0, + 1.7940359100750243, + 0.0, + 1.0, + 0.0, + -6.6635619517072655, + 0.0, + 0.0, + 1.0, + 0.0 + ], + "sources": [ + "em-overview" + ] + } + } + ], + "uiSelectionGroups": ["bookmark", "view"] + } +} diff --git a/test/test_schema.py b/test/test_schema.py index 7777216..5c25ff5 100644 --- a/test/test_schema.py +++ b/test/test_schema.py @@ -57,7 +57,9 @@ def test_source(self): jsonschema.validate(instance=source, schema=schema) def test_view(self): - examples = ["single_source_view.json", "grid_view.json", "advanced_fig2c.json"] + examples = [ + "single_source_view.json", "grid_view.json", "advanced_fig2c.json", "single_source_view_selection_groups.json" + ] self._test_schema("view", examples) def test_views(self):