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