<li ng-repeat="sc in statcats | orderBy:['owner().name()','name()']" ng-if="statcat_visible(sc.owner().id())">
<div class="bg-info"><label>{{sc.owner().name() }} : {{ sc.name()}}</label></div>
<div ng-class="{'bg-success': working.statcats[sc.id()] !== undefined}">
- <select class="form-control" ng-disabled="!defaults.statcats"
- ng-change="statcatUpdate(sc.id())"
- ng-model="working.statcats[sc.id()]"
- ng-options="e.id() as e.value() for e in sc.entries()"
- ng-required="sc.required() == 't' && !working.statcats_multi[sc.id()]">
- <option value="">
- {{ !working.statcats_multi[sc.id()] ? '[% l('<NONE>') %]' : '[% l('<MULTIPLE>') %]' }}
- </option>
- </select>
+ <eg-basic-combo-box list="sc.sc_entry_values" class="form-control" selected="sc.sc_selected_text" on-select="statcatUpdate(sc.id())">
+ </eg-basic-combo-box>
</div>
<div ng-if="hasMulti()"> </div>
</li>
}
$scope.statcatUpdate = function (id) {
- var newval = $scope.working.statcats[id];
+ var newval;
+
+ // use sc_selected_text to find the selected stat cat's id and update the working.statcats object with that id
+ angular.forEach($scope.statcats, function(statcat) {
+ if (statcat.id() === id) {
+ angular.forEach(statcat.entries(), function (entry) {
+ if (entry.value() === statcat.sc_selected_text) {
+ newval = entry.id();
+ $scope.working.statcats[id] = entry.id();
+ }
+ })
+ }
+ })
if (typeof newval != 'undefined') {
if (angular.isObject(newval)) { // we'll use the pkey
if (!none && Object.keys(value_hash).length == 1) {
$scope.working.statcats[sc.id()] = value_hash[Object.keys(value_hash)[0]];
+ // populate stat cat combo-box with correct text
+ angular.forEach(item.stat_cat_entries(), function (entry) {
+ if (entry.id() === $scope.working.statcats[sc.id()]) {
+ sc.sc_selected_text=entry.value();
+ }
+ });
$scope.working.statcats_multi[sc.id()] = false;
} else if (item_list.length > 1 && Object.keys(value_hash).length > 0) {
$scope.working.statcats[sc.id()] = undefined;
if (!$scope.in_item_select) {
$scope.working.statcats[s.id()] = undefined;
}
+ s.sc_entry_values = s.entries().map(entry => {
+ return entry.value();
+ });
+ if (!s.sc_selected_text) s.sc_selected_text = '';
createStatcatUpdateWatcher(s.id());
});
$scope.in_item_select = false;