Files
headup_app/src/app/core/models/jump.model.ts
T
2024-05-08 20:32:49 +02:00

321 lines
6.2 KiB
TypeScript

import { FormControl } from '@angular/forms';
import { Profile } from './profile.model';
import { PageLinks, PageMeta } from './shared.model';
export interface Jump {
slug: string;
date: string;
numero: number;
lieu?: string;
oaci?: string;
aeronef?: string;
imat?: string;
hauteur?: number;
deploiement?: number;
voile?: string;
taille?: number;
categorie?: string;
module?: string;
participants?: number;
sautants: Array<string>;
programme?: string;
accessoires?: string;
zone?: string;
dossier?: string;
video?: string;
files: Array<JumpFile>;
x2data: X2Data;
author: Profile;
createdAt: string;
updatedAt: string;
//isEdit?: boolean;
isSelected?: boolean;
}
export enum JumpFileType {
CSV = "csv",
IMAGE = "image",
KML = "kml",
VIDEO = "video",
}
export interface JumpFile {
slug: string;
name: string;
path: string;
type: JumpFileType;
}
export interface JumpForm {
date: FormControl<string>;
numero: FormControl<number>;
lieu: FormControl<string>;
oaci: FormControl<string>;
aeronef: FormControl<string>;
imat: FormControl<string>;
hauteur: FormControl<number>;
deploiement: FormControl<number>;
voile: FormControl<string>;
taille: FormControl<number>;
categorie: FormControl<string>;
module: FormControl<string>;
participants: FormControl<number>;
//sautants: FormControl<Array<string>>;
programme: FormControl<string>;
accessoires: FormControl<string>;
zone: FormControl<string>;
dossier: FormControl<string>;
video: FormControl<string>;
}
export interface JumpAddParams {
numeros: string;
date: string;
video: boolean;
}
export interface JumpByDate {
month: number;
year: number;
count: number;
}
export interface JumpByCategorie {
categorie: string;
count: number;
}
export interface JumpByDay {
jumps: Array<Partial<Jump>>;
count: number;
}
export interface JumpByModule {
categorie: string;
module: string;
count: number;
}
export interface JumpByDateByModule {
categorie: string;
module: string;
year: number;
month: number;
count: number;
}
export interface JumpYears {
year: number;
count: number;
}
export interface SkydiverIdJumps {
items: Array<X2Data>;
_links: PageLinks;
_meta: PageMeta;
}
export interface X2Data {
id: string;
name: string;
type: string;
description: string;
landingZone: string;
speed: {
freeFall: {
vertical: {
max: number;
avg: number;
};
horizontal: {
max: number;
avg: number;
};
};
underCanopy: {
vertical: {
max: number;
avg: number;
};
horizontal: {
max: number;
avg: number;
};
};
};
glideRatio: {
freeFall: {
max: number;
avg: number;
};
underCanopy: {
max: number;
avg: number;
};
};
duration: {
freeFall: number;
underCanopy: number;
};
distance: {
exitFromLandingZone: number;
totalFlying: number;
totalHorizontal: number;
};
altitude: {
exit: number;
deployment: number;
};
cutaway: string;
malfunctions:Array<
{
name: string;
type: string;
}
>;
date: string;
createdOn: string;
}
export interface JumpPageData {
jump: Jump;
prevJump: Jump;
nextJump: Jump;
_links: PageLinks;
_meta: PageMeta;
}
export interface JumpsPageData {
jumpsByCategory: Array<JumpByCategorie>;
jumpsByDate: Array<JumpByDate>;
jumpsByDateByModule: Array<JumpByDateByModule>;
jumpsByModule: Array<JumpByModule>;
jumpsByYears: Array<JumpYears>;
//jumpsFromSkydiverIdApi: SkydiverIdJumps;
lastjump: Jump;
/*yearsCount: number;
jumpsByCategoryCount: number;
jumpsByDateCount: number;
jumpsByModuleCount: number;*/
}
export interface ColumnDefinition {
key: string;
type: string;
label: string;
required?: boolean;
pattern?: string;
min?: number;
step?: number;
}
export const jumpColumns: Array<ColumnDefinition> = [
{
key: 'isSelected',
type: 'isSelected',
label: ''
},
{
key: 'date',
type: 'date',
label: 'Date',
required: true
},
{
key: 'numero',
type: 'numeric',
label: 'Numéro',
required: true,
min: 0,
step: 1
},
{
key: 'lieu',
type: 'text',
label: 'Lieu'
},
{
key: 'oaci',
type: 'text',
label: 'OACI'
},
{
key: 'aeronef',
type: 'text',
label: 'Aéronef'
},
{
key: 'imat',
type: 'text',
label: 'Imat.'
},
{
key: 'hauteur',
type: 'numeric',
label: 'Hauteur'
},
{
key: 'deploiement',
type: 'numeric',
label: 'Deploiement'
},
{
key: 'voile',
type: 'text',
label: 'Voile'
},
{
key: 'taille',
type: 'numeric',
label: 'Taille'
},
{
key: 'categorie',
type: 'text',
label: 'Categorie'
},
{
key: 'module',
type: 'text',
label: 'Module'
},
{
key: 'participants',
type: 'numeric',
label: 'Participants'
},
{
key: 'sautants',
type: 'text',
label: 'Sautants'
},
{
key: 'programme',
type: 'text',
label: 'Programme'
},
{
key: 'accessoires',
type: 'text',
label: 'Accessoires'
},
{
key: 'zone',
type: 'text',
label: 'Zone'
},
/*{
key: 'dossier',
type: 'text',
label: ''
},*/
{
key: 'video',
type: 'text',
label: 'Vidéo'
},
{
key: 'isEdit',
type: 'isEdit',
label: ''
}
];