portainer/app/kubernetes/views/summary/summaryController.js

90 lines
3.1 KiB
JavaScript

import angular from 'angular';
import { KubernetesConfigurationFormValues } from 'Kubernetes/models/configuration/formvalues';
import { KubernetesResourcePoolFormValues } from 'Kubernetes/models/resource-pool/formValues';
import { KubernetesApplicationFormValues } from 'Kubernetes/models/application/formValues';
import { KubernetesResourceActions, KubernetesResourceTypes } from 'Kubernetes/models/resource-types/models';
import getApplicationResources from './resources/applicationResources';
import getNamespaceResources from './resources/namespaceResources';
import getConfigurationResources from './resources/configurationResources';
class KubernetesSummaryController {
/* @ngInject */
constructor($scope, LocalStorage, KubernetesResourcePoolService) {
this.LocalStorage = LocalStorage;
this.KubernetesResourcePoolService = KubernetesResourcePoolService;
this.toggleSummary = this.toggleSummary.bind(this);
this.generateResourceSummaryList = this.generateResourceSummaryList.bind(this);
// Deep-watch changes on formValues property
$scope.$watch(
'$ctrl.formValues',
(formValues) => {
this.state.resources = this.generateResourceSummaryList(formValues);
},
true
);
}
getArticle(resourceType, resourceAction) {
let article = 'a';
if (resourceAction === KubernetesResourceActions.CREATE) {
if (resourceType === KubernetesResourceTypes.INGRESS) {
article = 'an';
}
} else {
article = 'the';
}
return article;
}
/**
* toggleSummary toggles the summary panel state and persists it to browser localstorage
*/
toggleSummary() {
this.state.expandedTemplate = !this.state.expandedTemplate;
this.LocalStorage.storeKubernetesSummaryToggle(this.state.expandedTemplate);
}
/**
* generateResourceSummaryList maps formValues to custom object
* @param {object} formValues
* @returns {object} => { action: "string", kind: "string", name: "string" }
*/
generateResourceSummaryList(formValues) {
const oldFormValues = this.oldFormValues;
if (formValues instanceof KubernetesConfigurationFormValues) {
// Configuration
return getConfigurationResources(formValues);
} else if (formValues instanceof KubernetesResourcePoolFormValues) {
// Namespaces
return getNamespaceResources(formValues, oldFormValues);
} else if (formValues instanceof KubernetesApplicationFormValues) {
// Applications
// extract cpu and memory requests & limits for pod
this.state.limits = { cpu: formValues.CpuLimit, memory: formValues.MemoryLimit };
return getApplicationResources(formValues, oldFormValues);
}
return [];
}
$onInit() {
const toggleValue = this.LocalStorage.getKubernetesSummaryToggle();
const expanded = typeof toggleValue === 'boolean' ? toggleValue : true;
this.state = {
expandedTemplate: expanded,
resources: [],
limits: { cpu: null, memory: null },
};
}
}
export default KubernetesSummaryController;
angular.module('portainer.kubernetes').controller('KubernetesSummaryController', KubernetesSummaryController);