diff --git a/platform/commonUI/general/bundle.json b/platform/commonUI/general/bundle.json index bd94eaabdf..3dfc0c0447 100644 --- a/platform/commonUI/general/bundle.json +++ b/platform/commonUI/general/bundle.json @@ -88,6 +88,11 @@ { "key": "SplitPaneController", "implementation": "controllers/SplitPaneController.js" + }, + { + "key": "SelectorController", + "implementation": "controllers/SelectorController.js", + "depends": [ "objectService", "$scope" ] } ], "directives": [ @@ -185,6 +190,12 @@ "uses": [ "view" ] } ], + "controls": [ + { + "key": "selector", + "templateUrl": "templates/controls/selector.html" + } + ], "licenses": [ { "name": "Modernizr", diff --git a/platform/commonUI/general/res/templates/controls/selector.html b/platform/commonUI/general/res/templates/controls/selector.html index 7411f2ac10..070126e6c1 100644 --- a/platform/commonUI/general/res/templates/controls/selector.html +++ b/platform/commonUI/general/res/templates/controls/selector.html @@ -22,11 +22,11 @@
- > - < diff --git a/platform/commonUI/general/src/controllers/SelectorController.js b/platform/commonUI/general/src/controllers/SelectorController.js index 1ec4fcac46..7ef26cd2e6 100644 --- a/platform/commonUI/general/src/controllers/SelectorController.js +++ b/platform/commonUI/general/src/controllers/SelectorController.js @@ -28,7 +28,7 @@ define( // Get the value of the field being edited function getField() { - return $scope.ngModel[$scope.field]; + return $scope.ngModel[$scope.field] || []; } // Get the value of the field being edited @@ -65,7 +65,7 @@ define( } // Look up objects by id, then populate right-hand list - objectService.get(ids).then(updateSelectedObjects); + objectService.getObjects(ids).then(updateSelectedObjects); } // Reject attempts to select objects of the wrong type @@ -75,7 +75,7 @@ define( $scope.$watchCollection(getField, updateList); // Look up root object, then store it - objectService.get(ROOT_ID).then(storeRoot); + objectService.getObjects([ROOT_ID]).then(storeRoot); return { /** @@ -112,8 +112,17 @@ define( setField(list.filter(function (otherId) { return otherId !== id; })); + // Clear the current list selection + delete listModel.selectedObject; } }, + /** + * Get the currently-selected domain objects. + * @returns {DomainObject[]} the current selection + */ + selected: function () { + return selectedObjects; + }, // Expose tree/list model for use in template directly treeModel: treeModel, listModel: listModel