mirror of https://github.com/portainer/portainer
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
import _ from 'lodash-es';
|
|
|
|
export class EdgeGroupFormController {
|
|
/* @ngInject */
|
|
constructor(EndpointService, $async, $scope) {
|
|
this.EndpointService = EndpointService;
|
|
this.$async = $async;
|
|
|
|
this.endpoints = {
|
|
state: {
|
|
limit: '10',
|
|
filter: '',
|
|
pageNumber: 1,
|
|
totalCount: 0,
|
|
},
|
|
value: null,
|
|
};
|
|
|
|
this.associateEndpoint = this.associateEndpoint.bind(this);
|
|
this.dissociateEndpoint = this.dissociateEndpoint.bind(this);
|
|
this.getDynamicEndpointsAsync = this.getDynamicEndpointsAsync.bind(this);
|
|
this.getDynamicEndpoints = this.getDynamicEndpoints.bind(this);
|
|
|
|
$scope.$watch(
|
|
() => this.model,
|
|
() => {
|
|
if (this.model.Dynamic) {
|
|
this.getDynamicEndpoints();
|
|
}
|
|
},
|
|
true
|
|
);
|
|
}
|
|
|
|
associateEndpoint(endpoint) {
|
|
if (!_.includes(this.model.Endpoints, endpoint.Id)) {
|
|
this.model.Endpoints = [...this.model.Endpoints, endpoint.Id];
|
|
}
|
|
}
|
|
|
|
dissociateEndpoint(endpoint) {
|
|
this.model.Endpoints = _.filter(this.model.Endpoints, (id) => id !== endpoint.Id);
|
|
}
|
|
|
|
getDynamicEndpoints() {
|
|
return this.$async(this.getDynamicEndpointsAsync);
|
|
}
|
|
|
|
async getDynamicEndpointsAsync() {
|
|
const { pageNumber, limit, search } = this.endpoints.state;
|
|
const start = (pageNumber - 1) * limit + 1;
|
|
const query = { search, types: [4, 7], tagIds: this.model.TagIds, tagsPartialMatch: this.model.PartialMatch };
|
|
|
|
const response = await this.EndpointService.endpoints(start, limit, query);
|
|
|
|
const totalCount = parseInt(response.totalCount, 10);
|
|
this.endpoints.value = response.value;
|
|
this.endpoints.state.totalCount = totalCount;
|
|
}
|
|
}
|