You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
4.2 KiB

export class City {
private _name: string;
private _latitude: number;
private _longitude: number;
constructor(name: string, latitude: number, longitude: number) {
this._name = name;
this._latitude = latitude;
this._longitude = longitude;
}
get name(): string {
return this._name;
}
set name(value: string) {
this._name = value;
}
get latitude(): number {
return this._latitude;
}
set latitude(value: number) {
this._latitude = value;
}
get longitude(): number {
return this._longitude;
}
set longitude(value: number) {
this._longitude = value;
}
}
export class Weather {
private _at: string;
private _visibility: number;
private _weatherType: string;
private _weatherDescription: string;
private _temperature: number;
private _temperatureFeelsLike: number;
private _humidity: number;
private _windSpeed: number;
private _pressure: number;
private _city: City;
constructor(at: string, visibility: number, weatherType: string, weatherDescription: string, temperature: number, temperatureFeelsLike: number, humidity: number, windSpeed: number, pressure: number, city: City) {
this._at = at;
this._visibility = visibility;
this._weatherType = weatherType;
this._weatherDescription = weatherDescription;
this._temperature = temperature;
this._temperatureFeelsLike = temperatureFeelsLike;
this._humidity = humidity;
this._windSpeed = windSpeed;
this._pressure = pressure;
this._city = city;
}
get at(): string {
return this._at;
}
set at(value: string) {
this._at = value;
}
get visibility(): number {
return this._visibility;
}
set visibility(value: number) {
this._visibility = value;
}
get weatherType(): string {
return this._weatherType;
}
set weatherType(value: string) {
this._weatherType = value;
}
get weatherDescription(): string {
return this._weatherDescription;
}
set weatherDescription(value: string) {
this._weatherDescription = value;
}
get temperature(): number {
return this._temperature;
}
set temperature(value: number) {
this._temperature = value;
}
get temperatureFeelsLike(): number {
return this._temperatureFeelsLike;
}
set temperatureFeelsLike(value: number) {
this._temperatureFeelsLike = value;
}
get humidity(): number {
return this._humidity;
}
set humidity(value: number) {
this._humidity = value;
}
get windSpeed(): number {
return this._windSpeed;
}
set windSpeed(value: number) {
this._windSpeed = value;
}
get pressure(): number {
return this._pressure;
}
set pressure(value: number) {
this._pressure = value;
}
get city(): City {
return this._city;
}
set city(value: City) {
this._city = value;
}
}
export const CITIES_DATA: City[] = [
new City("Paris", 48.866667, 2.333333),
new City("Clermont-Ferrand", 45.777222, 3.087025),
new City("Lyon", 45.764043, 4.835659),
new City("Marseille", 43.296482, 5.36978),
new City("Bruxelles", 50.85034, 4.35171),
];
export const FAVORITE_CITY_DATA =
new City("Clermont-Ferrand", 45.777222, 3.087025);
export const DEFAULT_SELECTED_CITY_DATA: City =
new City("Paris", 48.866667, 2.333333);
export const WEATHER_DATA: Weather[] = [
new Weather("2023-01-22 09:55:59", 10000, "Nuageux",
"couvert", 0.52, -4.34,
82, 5.14, 1032,
new City("Paris", 48.866667, 2.333333)
),
new Weather("2023-01-22 09:55:59", 10000, "Nuageux",
"couvert", 0.52, -4.34,
82, 5.14, 1032,
new City("Clermont-Ferrand", 45.777222, 3.087025)
),
new Weather("2023-01-22 09:55:59", 10000, "Nuageux",
"couvert", 0.52, -4.34,
82, 5.14, 1032,
new City("Lyon", 45.764043, 4.835659)
),
new Weather("2023-01-22 09:55:59", 10000, "Nuageux",
"couvert", 0.52, -4.34,
82, 5.14, 1032,
new City("Marseille", 43.296482, 5.36978)
),
new Weather("2023-01-22 09:55:59", 10000, "Nuageux",
"couvert", 0.52, -4.34,
82, 5.14, 1032,
new City("Bruxelles", 50.85034, 4.35171)
),
];
export const getCurrentWeather = (cityName: string) => {
if (cityName === undefined) return {};
return WEATHER_DATA.filter(elt => elt.city.name === cityName)[0];
}