diff --git a/app/docker/components/container-capabilities/container-capabilities.controller.js b/app/docker/components/container-capabilities/container-capabilities.controller.js new file mode 100644 index 000000000..a743f5a50 --- /dev/null +++ b/app/docker/components/container-capabilities/container-capabilities.controller.js @@ -0,0 +1,23 @@ +export default class ContainerCapabilitiesController { + /* @ngInject */ + constructor($scope) { + this.$scope = $scope; + + this.oldCapabilities = []; + } + + createOnChangeHandler(capability) { + return (checked) => { + this.$scope.$evalAsync(() => { + capability.allowed = checked; + }); + }; + } + + $doCheck() { + if (this.oldCapabilities.length !== this.capabilities.length) { + this.oldCapabilities = this.capabilities; + this.capabilitiesOnChange = Object.fromEntries(this.capabilities.map((cap) => [cap.capability, this.createOnChangeHandler(cap)])); + } + } +} diff --git a/app/docker/components/container-capabilities/container-capabilities.js b/app/docker/components/container-capabilities/container-capabilities.js index bd8aa6463..aa13b5ac8 100644 --- a/app/docker/components/container-capabilities/container-capabilities.js +++ b/app/docker/components/container-capabilities/container-capabilities.js @@ -1,6 +1,9 @@ +import controller from './container-capabilities.controller'; + angular.module('portainer.docker').component('containerCapabilities', { templateUrl: './containerCapabilities.html', bindings: { capabilities: '=', }, + controller, }); diff --git a/app/docker/components/container-capabilities/containerCapabilities.html b/app/docker/components/container-capabilities/containerCapabilities.html index fdfd25a83..d2e0e47b2 100644 --- a/app/docker/components/container-capabilities/containerCapabilities.html +++ b/app/docker/components/container-capabilities/containerCapabilities.html @@ -1,18 +1,15 @@