mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
import { ImageSummary } from 'docker-types/generated/1.41';
 | 
						|
 | 
						|
import { PortainerResponse } from '@/react/docker/types';
 | 
						|
 | 
						|
export type ImageId = ImageSummary['Id'];
 | 
						|
export type ImageName = string;
 | 
						|
 | 
						|
/**
 | 
						|
 * Partial copy of ImageSummary
 | 
						|
 */
 | 
						|
export class ImageViewModel {
 | 
						|
  Id: ImageId;
 | 
						|
 | 
						|
  Created: ImageSummary['Created'];
 | 
						|
 | 
						|
  RepoTags: ImageSummary['RepoTags'];
 | 
						|
 | 
						|
  Size: ImageSummary['Size'];
 | 
						|
 | 
						|
  Labels: ImageSummary['Labels'];
 | 
						|
 | 
						|
  // internal
 | 
						|
 | 
						|
  NodeName: string;
 | 
						|
 | 
						|
  Used: boolean = false;
 | 
						|
 | 
						|
  constructor(data: PortainerResponse<ImageSummary>, used: boolean = false) {
 | 
						|
    this.Id = data.Id;
 | 
						|
    // this.Tag = data.Tag; // doesn't seem to be used?
 | 
						|
    // this.Repository = data.Repository; // doesn't seem to be used?
 | 
						|
    this.Created = data.Created;
 | 
						|
    this.RepoTags = data.RepoTags;
 | 
						|
    if ((!this.RepoTags || this.RepoTags.length === 0) && data.RepoDigests) {
 | 
						|
      this.RepoTags = [];
 | 
						|
      data.RepoDigests.forEach((digest) => {
 | 
						|
        const repository = digest.substring(0, digest.indexOf('@'));
 | 
						|
        this.RepoTags.push(`${repository}:<none>`);
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    this.Size = data.Size;
 | 
						|
    this.NodeName = data.Portainer?.Agent?.NodeName || '';
 | 
						|
    this.Labels = data.Labels;
 | 
						|
    this.Used = used;
 | 
						|
  }
 | 
						|
}
 |