src/modules/weather/weather-codes.helper.ts

Summary

Maintainability
A
3 hrs
Test Coverage
export class WeatherCodesHelper {
    public static codes = [
        {
            id: 0,
            icon: 'tornado',
            description: 'tornado',
            descriptionFa: 'توفانی'
        },
        {
            id: 1,
            icon: 'tropical-storm',
            description: 'tropical storm',
            descriptionFa: 'طوفان گرمسیری'
        },
        {
            id: 2,
            icon: 'tornado',
            description: 'hurricane',
            descriptionFa: 'تندباد'
        },
        {
            id: 3,
            icon: 'thunderstorms',
            description: 'severe thunderstorms',
            descriptionFa: 'رعد و برق شدید'
        },
        {
            id: 4,
            icon: 'thunderstorms',
            description: 'thunderstorms',
            descriptionFa: 'رعد و برق'
        },
        {
            id: 5,
            icon: 'mixed-rain-and-snow',
            description: 'mixed rain and snow',
            descriptionFa: 'برف و باران'
        },
        {
            id: 6,
            icon: 'mixed-rain-and-sleet',
            description: 'mixed rain and sleet',
            descriptionFa: 'باران و یخ'
        },
        {
            id: 7,
            icon: 'mixed-rain-and-sleet',
            description: 'mixed snow and sleet',
            descriptionFa: 'برف و بوران'
        },
        {
            id: 8,
            icon: 'snow-drizzle',
            description: 'freezing drizzle',
            descriptionFa: 'بارش نم‌نم یخ'
        },
        {
            id: 9,
            icon: 'drizzle',
            description: 'drizzle',
            descriptionFa: 'بارش نم‌نم'
        },
        {
            id: 10,
            icon: 'freezing-rain',
            description: 'freezing rain',
            descriptionFa: 'بارش باران یخ‌زده'
        },
        {
            id: 11,
            icon: 'showers',
            description: 'showers',
            descriptionFa: 'رگبار'
        },
        {
            id: 12,
            icon: 'showers',
            description: 'showers',
            descriptionFa: 'رگبار'
        },
        {
            id: 13,
            icon: 'flurries',
            description: 'snow flurries',
            descriptionFa: 'بارش برف پراکنده'
        },
        {
            id: 14,
            icon: 'flurries',
            description: 'light snow showers',
            descriptionFa: 'بارش برف سبک'
        },
        {
            id: 15,
            icon: 'snowflake',
            description: 'blowing snow',
            descriptionFa: 'وزش برف'
        },
        {
            id: 16,
            icon: 'snowflake',
            description: 'snow',
            descriptionFa: 'برفی'
        },
        {
            id: 17,
            icon: 'hail',
            description: 'hail',
            descriptionFa: 'تگرگ'
        },
        {
            id: 18,
            icon: 'sleet',
            description: 'sleet',
            descriptionFa: 'برف و باران'
        },
        {
            id: 19,
            icon: 'dust',
            description: 'dust',
            descriptionFa: 'گرد و خاک'
        },
        {
            id: 20,
            icon: 'foggy',
            description: 'foggy',
            descriptionFa: 'مه‌آلود'
        },
        {
            id: 21,
            icon: 'foggy',
            description: 'haze',
            descriptionFa: 'مه'
        },
        {
            id: 22,
            icon: 'foggy',
            description: 'smoky',
            descriptionFa: 'دود'
        },
        {
            id: 23,
            icon: 'windy',
            description: 'blustery',
            descriptionFa: 'پرباد'
        },
        {
            id: 24,
            icon: 'windy',
            description: 'windy',
            descriptionFa: 'وزش باد'
        },
        {
            id: 25,
            icon: 'thermometer',
            description: 'cold',
            descriptionFa: 'سرد'
        },
        {
            id: 26,
            icon: 'cloudy',
            description: 'cloudy',
            descriptionFa: 'ابری'
        },
        {
            id: 27,
            icon: 'cloudy-night',
            description: 'mostly cloudy (night)',
            descriptionFa: 'بیشتر ابری'
        },
        {
            id: 28,
            icon: 'cloudy-day',
            description: 'mostly cloudy (day)',
            descriptionFa: 'بیشتر ابری'
        },
        {
            id: 29,
            icon: 'cloudy-night',
            description: 'partly cloudy (night)',
            descriptionFa: 'کمی ابری'
        },
        {
            id: 30,
            icon: 'cloudy-day',
            description: 'partly cloudy (day)',
            descriptionFa: 'کمی ابری'
        },
        {
            id: 31,
            icon: 'night',
            description: 'clear (night)',
            descriptionFa: 'صاف'
        },
        {
            id: 32,
            icon: 'sunny',
            description: 'sunny',
            descriptionFa: 'آفتابی'
        },
        {
            id: 33,
            icon: 'night',
            description: 'fair (night)',
            descriptionFa: 'صاف'
        },
        {
            id: 34,
            icon: 'day',
            description: 'fair (day)',
            descriptionFa: 'صاف'
        },
        {
            id: 35,
            icon: 'freezing-rain',
            description: 'mixed rain and hail',
            descriptionFa: 'باران و تگرگ'
        },
        {
            id: 36,
            icon: 'sun-hot',
            description: 'hot',
            descriptionFa: 'داغ'
        },
        {
            id: 37,
            icon: 'thunderstorms-2',
            description: 'isolated thunderstorms',
            descriptionFa: 'رعد و برق محدود'
        },
        {
            id: 38,
            icon: 'thunderstorms-2',
            description: 'scattered thunderstorms',
            descriptionFa: 'رعد و برق پراکنده'
        },
        {
            id: 39,
            icon: 'thunderstorms-2',
            description: 'scattered thunderstorms',
            descriptionFa: 'رعد و برق پراکنده'
        },
        {
            id: 40,
            icon: 'windy-rainy',
            description: 'scattered showers',
            descriptionFa: 'رگبار پراکنده'
        },
        {
            id: 41,
            icon: 'mixed-rain-and-sleet',
            description: 'heavy snow',
            descriptionFa: 'برف شدید'
        },
        {
            id: 42,
            icon: 'sleet',
            description: 'scattered snow showers',
            descriptionFa: 'رگبار برف پراکنده'
        },
        {
            id: 43,
            icon: 'mixed-rain-and-sleet',
            description: 'heavy snow',
            descriptionFa: 'برف شدید'
        },
        {
            id: 44,
            icon: 'cloudy-day',
            description: 'partly cloudy',
            descriptionFa: 'کمی ابری'
        },
        {
            id: 45,
            icon: 'thunderstorms',
            description: 'thundershowers',
            descriptionFa: 'رگبار و رعد و برق'
        },
        {
            id: 46,
            icon: 'mixed-rain-and-sleet',
            description: 'snow showers',
            descriptionFa: 'رگبار برف'
        },
        {
            id: 47,
            icon: 'showers',
            description: 'isolated thundershowers',
            descriptionFa: 'رگبار و رعد و برق'
        },
        {
            id: 3200,
            icon: 'none',
            description: 'not available',
            descriptionFa: 'موجود نیست'
        }
    ];

    public static resolveCode(code: number, lang: string = 'fa'): string {
        const description: string = 'description' + (lang !== '' ? lang.charAt(0).toUpperCase() + lang.slice(1) : '');
        let output: string = '';
        WeatherCodesHelper.codes.forEach((item) => {
            if (item.id === code) {
                output = item[description];
            }
        });
        return output;
    }

    public static resolveIcon(code: number): string {
        let output: string = 'none';
        WeatherCodesHelper.codes.forEach((item) => {
            if (item.id === code) {
                output = item['icon'];
            }
        });
        return output;
    }
}