import _ from 'lodash-es'; angular.module('portainer.docker') .controller('NetworksDatatableController', ['$scope', '$controller', 'NetworkHelper', 'DatatableService', function ($scope, $controller, NetworkHelper, DatatableService) { angular.extend(this, $controller('GenericDatatableController', {$scope: $scope})); this.disableRemove = function(item) { return NetworkHelper.isSystemNetwork(item); }; this.state = Object.assign(this.state, { expandedItems: [] }) /** * Do not allow system networks to be selected */ this.allowSelection = function(item) { return !this.disableRemove(item); } this.$onInit = function() { this.setDefaults(); this.prepareTableFromDataset(); this.state.orderBy = this.orderBy; var storedOrder = DatatableService.getDataTableOrder(this.tableKey); if (storedOrder !== null) { this.state.reverseOrder = storedOrder.reverse; this.state.orderBy = storedOrder.orderBy; } var textFilter = DatatableService.getDataTableTextFilters(this.tableKey); if (textFilter !== null) { this.state.textFilter = textFilter; this.onTextFilterChange(); } var storedFilters = DatatableService.getDataTableFilters(this.tableKey); if (storedFilters !== null) { this.filters = storedFilters; } if (this.filters && this.filters.state) { this.filters.state.open = false; } var storedSettings = DatatableService.getDataTableSettings(this.tableKey); if (storedSettings !== null) { this.settings = storedSettings; this.settings.open = false; } this.onSettingsRepeaterChange(); }; this.expandItem = function(item, expanded) { item.Expanded = expanded; }; this.itemCanExpand = function(item) { return item.Subs.length > 0; } this.hasExpandableItems = function() { return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length; }; this.expandAll = function() { this.state.expandAll = !this.state.expandAll; _.forEach(this.state.filteredDataSet, (item) => { if (this.itemCanExpand(item)) { this.expandItem(item, this.state.expandAll); } }); }; } ]);