mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
import _ from 'lodash-es';
 | 
						|
 | 
						|
export default class KubeCustomTemplatesViewController {
 | 
						|
  /* @ngInject */
 | 
						|
  constructor($async, $state, Authentication, CustomTemplateService, FormValidator, ModalService, Notifications) {
 | 
						|
    Object.assign(this, { $async, $state, Authentication, CustomTemplateService, FormValidator, ModalService, Notifications });
 | 
						|
 | 
						|
    this.state = {
 | 
						|
      selectedTemplate: null,
 | 
						|
      formValidationError: '',
 | 
						|
      actionInProgress: false,
 | 
						|
    };
 | 
						|
 | 
						|
    this.currentUser = {
 | 
						|
      isAdmin: false,
 | 
						|
      id: null,
 | 
						|
    };
 | 
						|
 | 
						|
    this.isEditAllowed = this.isEditAllowed.bind(this);
 | 
						|
    this.getTemplates = this.getTemplates.bind(this);
 | 
						|
    this.validateForm = this.validateForm.bind(this);
 | 
						|
    this.confirmDelete = this.confirmDelete.bind(this);
 | 
						|
    this.selectTemplate = this.selectTemplate.bind(this);
 | 
						|
  }
 | 
						|
 | 
						|
  selectTemplate(template) {
 | 
						|
    this.$state.go('kubernetes.deploy', { templateId: template.Id });
 | 
						|
  }
 | 
						|
 | 
						|
  isEditAllowed(template) {
 | 
						|
    // todo - check if current user is admin/endpointadmin/owner
 | 
						|
    return this.currentUser.isAdmin || this.currentUser.id === template.CreatedByUserId;
 | 
						|
  }
 | 
						|
 | 
						|
  getTemplates() {
 | 
						|
    return this.$async(async () => {
 | 
						|
      try {
 | 
						|
        this.templates = await this.CustomTemplateService.customTemplates(3);
 | 
						|
      } catch (err) {
 | 
						|
        this.Notifications.error('Failed loading templates', err, 'Unable to load custom templates');
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  validateForm(accessControlData, isAdmin) {
 | 
						|
    this.state.formValidationError = '';
 | 
						|
    const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);
 | 
						|
 | 
						|
    if (error) {
 | 
						|
      this.state.formValidationError = error;
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  confirmDelete(templateId) {
 | 
						|
    return this.$async(async () => {
 | 
						|
      const confirmed = await this.ModalService.confirmDeletionAsync('Are you sure that you want to delete this template?');
 | 
						|
      if (!confirmed) {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
 | 
						|
      try {
 | 
						|
        var template = _.find(this.templates, { Id: templateId });
 | 
						|
        await this.CustomTemplateService.remove(templateId);
 | 
						|
        this.Notifications.success('Template successfully deleted', template && template.Title);
 | 
						|
        _.remove(this.templates, { Id: templateId });
 | 
						|
      } catch (err) {
 | 
						|
        this.Notifications.error('Failure', err, 'Failed to delete template');
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  $onInit() {
 | 
						|
    this.getTemplates();
 | 
						|
 | 
						|
    this.currentUser.isAdmin = this.Authentication.isAdmin();
 | 
						|
    const user = this.Authentication.getUserDetails();
 | 
						|
    this.currentUser.id = user.ID;
 | 
						|
  }
 | 
						|
}
 |