From 74948ccc6e7d3808a64334bcbeeeb69a34aa83c6 Mon Sep 17 00:00:00 2001 From: patel-jeel92 Date: Sat, 20 Jan 2024 15:37:17 -0500 Subject: [PATCH 1/9] Add layout setting --- src/Configuration.ts | 13 ++++++++++++- src/SettingsModal.svelte | 16 +++++++++++++++- src/components/HourlyDetails.svelte | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/Configuration.ts b/src/Configuration.ts index 8f3d16f..a7ab0b1 100644 --- a/src/Configuration.ts +++ b/src/Configuration.ts @@ -21,6 +21,11 @@ export enum AutoExpand { None, } +export enum Layout { + Horizontal, + Vertical, +} + export interface Configuration { providerFactory: ProviderFactory; providerParams: { [key: string]: string }; @@ -31,6 +36,7 @@ export interface Configuration { refreshInterval: number; showHourlyPrecipitation: boolean; showHourlyWind: boolean; + layout: Layout; } const DEFAULT_CONFIGURATION: Configuration = { @@ -43,6 +49,7 @@ const DEFAULT_CONFIGURATION: Configuration = { refreshInterval: 2 * 3600, showHourlyPrecipitation: true, showHourlyWind: true, + layout: Layout.Horizontal, }; function decodeConfiguration(params: { [key: string]: string }): Configuration { @@ -63,6 +70,7 @@ function decodeConfiguration(params: { [key: string]: string }): Configuration { const showHourlyPrecipitation = params['hourly_precipitation'] === undefined ? DEFAULT_CONFIGURATION.showHourlyPrecipitation : params['hourly_precipitation'] === 'true' ? true : false; const showHourlyWind = params['hourly_wind'] === undefined ? DEFAULT_CONFIGURATION.showHourlyWind : params['hourly_wind'] === 'true' ? true : false; + const layout = params['layout'] === 'vertical' ? Layout.Vertical : Layout.Horizontal; return { providerFactory, @@ -74,6 +82,7 @@ function decodeConfiguration(params: { [key: string]: string }): Configuration { refreshInterval, showHourlyPrecipitation, showHourlyWind, + layout, }; } @@ -107,7 +116,9 @@ function encodeConfiguration(configuration: Configuration): object { if (configuration.showHourlyWind !== DEFAULT_CONFIGURATION.showHourlyWind) { params['hourly_wind'] = configuration.showHourlyWind.toString(); } - + if (configuration.layout !== DEFAULT_CONFIGURATION.layout) { + params['layout'] = configuration.layout.toString(); + } return params; } diff --git a/src/SettingsModal.svelte b/src/SettingsModal.svelte index c3bf738..493704c 100644 --- a/src/SettingsModal.svelte +++ b/src/SettingsModal.svelte @@ -4,7 +4,7 @@ import { ProviderFactories } from './providers'; import { Location } from './providers/Location'; - import { Units, AutoExpand, loadConfiguration, storeConfiguration } from './Configuration'; + import { Units, AutoExpand, loadConfiguration, Layout, storeConfiguration } from './Configuration'; import { Modal, Tabs, TabItem, Label, Select, Input, Hr, Button, ButtonGroup, Spinner, Radio, Checkbox } from 'flowbite-svelte'; import Icon from '@iconify/svelte'; @@ -29,6 +29,7 @@ let showHourlyPrecipitation: boolean; let showHourlyWind: boolean; let valid: boolean; + let layout: Layout; /* Loading State for location */ let locationLoading: boolean = false; @@ -51,6 +52,7 @@ title = currentConfiguration.title; showHourlyPrecipitation = currentConfiguration.showHourlyPrecipitation; showHourlyWind = currentConfiguration.showHourlyWind; + layout = currentConfiguration.layout; updateProviderParams(); @@ -88,6 +90,7 @@ refreshInterval: currentConfiguration.refreshInterval, showHourlyPrecipitation, showHourlyWind, + layout, }; storeConfiguration(configuration); @@ -203,6 +206,17 @@ bind:value={autoexpand} /> +
+ +