group-based-policy-ui/gbpui/static/dashboard/gbpui/transfer-table-bridge/d-table.directive.js

91 lines
3.2 KiB
JavaScript

/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
(function () {
angular
.module('gbpui.transfer-table-bridge')
.directive('dTable', ['gbpui.basePath', function(basePath){
return {
restrict: 'E',
scope: true,
templateUrl: basePath +
"transfer-table-bridge/transfer-table-bridge.html",
transclude: true,
link: function($scope, $elem, $attrs, $ctrl, $transclude) {
var initial = [];
var available = [];
var transcluded = $transclude();
transcluded.each(function(index, element) {
if(element.localName=="option") {
var val = {
'id': $(element).attr('value'),
'name': $(element).text()
};
available.push(val);
if($(element).prop('selected')) {
initial.push(val);
}
}
});
$scope.initial = initial;
var allocated = [];
$scope.tableData = {
available: available,
allocated: allocated,
displayedAvailable: [],
displayedAllocated: [],
minItems: -1
};
var maxAllocation = "maxItems" in $attrs
? Number($attrs["maxItems"])
: -1;
$scope.tableLimits = {
maxAllocation: maxAllocation
};
$scope.tableHelpText = {
allocHelpText: $attrs['allocatedHelpText'],
availHelpText: $attrs['availableHelpText'],
noAllocText: $attrs['noAllocatedText'],
noAvailText: $attrs['noAvailableText']
};
$scope.facets = [{
label: gettext("Name"),
name: "name",
singleton: true
}];
if("addItemLink" in $attrs) {
$scope.addItemLink = $attrs["addItemLink"];
}
if("allocatedFilter" in $attrs) {
$scope.allocatedFilter = true;
}
$scope.id = $attrs["id"];
$scope.name = $attrs["name"];
}
}
}])
})();