mirror of
https://github.com/portainer/portainer.git
synced 2025-07-25 16:29:44 +02:00
* feat(docker/stacks): add creation and update dates * feat(docker/stacks): put ownership column as the last column * feat(docker/stacks): fix the no stacks message * refactor(docker/stacks): make external stacks helpers more readable * feat(docker/stacks): add updated and created by * feat(docker/stacks): toggle updated column * refactor(datatable): create column visibility component Co-authored-by: alice groux <alice.grx@gmail.com>
99 lines
3 KiB
JavaScript
99 lines
3 KiB
JavaScript
angular.module('portainer.app').controller('StacksDatatableController', [
|
|
'$scope',
|
|
'$controller',
|
|
'DatatableService',
|
|
'Authentication',
|
|
function ($scope, $controller, DatatableService, Authentication) {
|
|
angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));
|
|
|
|
this.filters = {
|
|
state: {
|
|
open: false,
|
|
enabled: false,
|
|
showActiveStacks: true,
|
|
showUnactiveStacks: true,
|
|
},
|
|
};
|
|
|
|
this.columnVisibility = {
|
|
state: {
|
|
open: false,
|
|
},
|
|
columns: {
|
|
updated: {
|
|
label: 'Updated',
|
|
display: false,
|
|
},
|
|
},
|
|
};
|
|
|
|
this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);
|
|
function onColumnVisibilityChange(columns) {
|
|
this.columnVisibility.columns = columns;
|
|
DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);
|
|
}
|
|
|
|
/**
|
|
* Do not allow external items
|
|
*/
|
|
this.allowSelection = function (item) {
|
|
if (item.External && item.Type === 2) {
|
|
return false;
|
|
}
|
|
|
|
return !(item.External && !this.isAdmin);
|
|
};
|
|
|
|
this.applyFilters = applyFilters.bind(this);
|
|
function applyFilters(stack) {
|
|
const { showActiveStacks, showUnactiveStacks } = this.filters.state;
|
|
return (stack.Status === 1 && showActiveStacks) || (stack.Status === 2 && showUnactiveStacks) || stack.External;
|
|
}
|
|
|
|
this.onFilterChange = onFilterChange.bind(this);
|
|
function onFilterChange() {
|
|
const { showActiveStacks, showUnactiveStacks } = this.filters.state;
|
|
this.filters.state.enabled = !showActiveStacks || !showUnactiveStacks;
|
|
DatatableService.setDataTableFilters(this.tableKey, this.filters);
|
|
}
|
|
|
|
this.$onInit = function () {
|
|
this.isAdmin = Authentication.isAdmin();
|
|
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();
|
|
|
|
var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);
|
|
if (storedColumnVisibility !== null) {
|
|
this.columnVisibility = storedColumnVisibility;
|
|
}
|
|
};
|
|
},
|
|
]);
|