mirror of https://github.com/portainer/portainer
90 lines
3.1 KiB
JavaScript
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);
|