🐛 Fix some issues with change position modal

This commit is contained in:
Meierschlumpf
2022-12-19 19:55:42 +01:00
parent 25fd3a1594
commit f240d29f7e
8 changed files with 31 additions and 39 deletions

View File

@@ -44,10 +44,6 @@ export const ChangePositionModal = ({
onSubmit(form.values.x, form.values.y, form.values.width, form.values.height); onSubmit(form.values.x, form.values.y, form.values.width, form.values.height);
}; };
console.log(`Initial: (${form.values.width} / ${form.values.height})`);
console.log(widthData);
console.log(heightData);
return ( return (
<form onSubmit={form.onSubmit(handleSubmit)}> <form onSubmit={form.onSubmit(handleSubmit)}>
<Grid> <Grid>

View File

@@ -2,12 +2,11 @@ import { SelectItem } from '@mantine/core';
import { closeModal, ContextModalProps } from '@mantine/modals'; import { closeModal, ContextModalProps } from '@mantine/modals';
import { useConfigContext } from '../../../../config/provider'; import { useConfigContext } from '../../../../config/provider';
import { useConfigStore } from '../../../../config/store'; import { useConfigStore } from '../../../../config/store';
import { WidgetChangePositionModalInnerProps } from '../../Tiles/Widgets/WidgetsMenu';
import { Tiles } from '../../Tiles/tilesDefinitions';
import { ChangePositionModal } from './ChangePositionModal';
import widgets from '../../../../widgets'; import widgets from '../../../../widgets';
import { WidgetChangePositionModalInnerProps } from '../../Tiles/Widgets/WidgetsMenu';
import { ChangePositionModal } from './ChangePositionModal';
export const ChangeIntegrationPositionModal = ({ export const ChangeWidgetPositionModal = ({
context, context,
id, id,
innerProps, innerProps,
@@ -20,13 +19,9 @@ export const ChangeIntegrationPositionModal = ({
return; return;
} }
updateConfig(configName, (prev) => ({ updateConfig(configName, (prev) => {
...prev, let currentWidget = prev.widgets.find((x) => x.id === innerProps.widgetId);
widgets: { currentWidget!.shape = {
...prev.widgets,
[innerProps.integration]: {
...prev.widgets[innerProps.integration],
shape: {
location: { location: {
x, x,
y, y,
@@ -35,10 +30,14 @@ export const ChangeIntegrationPositionModal = ({
height, height,
width, width,
}, },
}, };
},
}, return {
})); ...prev,
widgets: [...prev.widgets.filter((x) => x.id !== innerProps.widgetId), currentWidget!],
};
});
context.closeModal(id); context.closeModal(id);
}; };
@@ -46,8 +45,8 @@ export const ChangeIntegrationPositionModal = ({
closeModal(id); closeModal(id);
}; };
const widthData = useWidthData(innerProps.integration); const widthData = useWidthData(innerProps.widgetId);
const heightData = useHeightData(innerProps.integration); const heightData = useHeightData(innerProps.widgetId);
return ( return (
<ChangePositionModal <ChangePositionModal

View File

@@ -55,13 +55,13 @@ export const IntegrationSelector = ({ form }: IntegrationSelectorProps) => {
const getNewProperties = (value: string | null): AppIntegrationPropertyType[] => { const getNewProperties = (value: string | null): AppIntegrationPropertyType[] => {
if (!value) return []; if (!value) return [];
const integrationType = value as AppIntegrationType['type']; const integrationType = value as Exclude<AppIntegrationType['type'], null>;
if (integrationType === null) { if (integrationType === null) {
return []; return [];
} }
const requiredProperties = Object.entries(integrationFieldDefinitions).filter(([k, v]) => { const requiredProperties = Object.entries(integrationFieldDefinitions).filter(([k, v]) => {
const val = integrationFieldProperties[integrationType['type']]; const val = integrationFieldProperties[integrationType];
return val.includes(k as IntegrationField); return val.includes(k as IntegrationField);
})!; })!;
return requiredProperties.map(([k, value]) => ({ return requiredProperties.map(([k, value]) => ({
@@ -97,7 +97,6 @@ export const IntegrationSelector = ({ form }: IntegrationSelectorProps) => {
} }
onChange={(value) => { onChange={(value) => {
form.setFieldValue('integration.properties', getNewProperties(value)); form.setFieldValue('integration.properties', getNewProperties(value));
console.log(`changed to value ${value}`);
inputProps.onChange(value); inputProps.onChange(value);
}} }}
{...inputProps} {...inputProps}

View File

@@ -7,7 +7,7 @@ import { WidgetEditModalInnerProps } from './WidgetsEditModal';
import { WidgetsRemoveModalInnerProps } from './WidgetsRemoveModal'; import { WidgetsRemoveModalInnerProps } from './WidgetsRemoveModal';
export type WidgetChangePositionModalInnerProps = { export type WidgetChangePositionModalInnerProps = {
integration: string; widgetId: string;
widget: IWidget<string, any>; widget: IWidget<string, any>;
}; };
@@ -37,7 +37,7 @@ export const WidgetsMenu = ({ integration, widget }: WidgetsMenuProps) => {
size: 'xl', size: 'xl',
title: null, title: null,
innerProps: { innerProps: {
integration, widgetId: integration,
widget: widget, widget: widget,
}, },
}); });

View File

@@ -60,7 +60,6 @@ export const initializeGridstack = (
({ id }) => ({ id }) =>
itemRefs.current[id] && grid.makeWidget(itemRefs.current[id].current as HTMLDivElement) itemRefs.current[id] && grid.makeWidget(itemRefs.current[id].current as HTMLDivElement)
); );
console.log('widgets', widgets, itemRefs.current);
widgets.forEach( widgets.forEach(
({ id }) => ({ id }) =>
itemRefs.current[id] && grid.makeWidget(itemRefs.current[id].current as HTMLDivElement) itemRefs.current[id] && grid.makeWidget(itemRefs.current[id].current as HTMLDivElement)

View File

@@ -10,7 +10,7 @@ import { AppProps } from 'next/app';
import Head from 'next/head'; import Head from 'next/head';
import { useState } from 'react'; import { useState } from 'react';
import { ChangeAppPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal'; import { ChangeAppPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal';
import { ChangeIntegrationPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeIntegrationPositionModal'; import { ChangeWidgetPositionModal } from '../components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal';
import { EditAppModal } from '../components/Dashboard/Modals/EditAppModal/EditAppModal'; import { EditAppModal } from '../components/Dashboard/Modals/EditAppModal/EditAppModal';
import { SelectElementModal } from '../components/Dashboard/Modals/SelectElement/SelectElementModal'; import { SelectElementModal } from '../components/Dashboard/Modals/SelectElement/SelectElementModal';
import { WidgetsEditModal } from '../components/Dashboard/Tiles/Widgets/WidgetsEditModal'; import { WidgetsEditModal } from '../components/Dashboard/Tiles/Widgets/WidgetsEditModal';
@@ -92,7 +92,7 @@ function App(this: any, props: AppProps & { colorScheme: ColorScheme }) {
integrationRemove: WidgetsRemoveModal, integrationRemove: WidgetsRemoveModal,
categoryEditModal: CategoryEditModal, categoryEditModal: CategoryEditModal,
changeAppPositionModal: ChangeAppPositionModal, changeAppPositionModal: ChangeAppPositionModal,
changeIntegrationPositionModal: ChangeIntegrationPositionModal, changeIntegrationPositionModal: ChangeWidgetPositionModal,
}} }}
> >
<Component {...pageProps} /> <Component {...pageProps} />

View File

@@ -63,7 +63,7 @@ type ConfigAppIntegrationPropertyType = Omit<AppIntegrationPropertyType, 'isDefi
export type IntegrationField = 'apiKey' | 'password' | 'username'; export type IntegrationField = 'apiKey' | 'password' | 'username';
export const integrationFieldProperties: { export const integrationFieldProperties: {
[key in AppIntegrationType['type']]: IntegrationField[]; [key in Exclude<AppIntegrationType['type'], null>]: IntegrationField[];
} = { } = {
lidarr: ['apiKey'], lidarr: ['apiKey'],
radarr: ['apiKey'], radarr: ['apiKey'],

View File

@@ -58,7 +58,7 @@ const useDashDotStorage = () => {
'dashdot/storage', 'dashdot/storage',
{ {
configName, configName,
url: config?.widgets.dashDot?.properties.url, url: config?.widgets.find((x) => x.id === 'dashdot')?.properties.url,
}, },
], ],
queryFn: () => fetchDashDotStorageLoad(configName), queryFn: () => fetchDashDotStorageLoad(configName),
@@ -66,7 +66,6 @@ const useDashDotStorage = () => {
}; };
async function fetchDashDotStorageLoad(configName: string | undefined) { async function fetchDashDotStorageLoad(configName: string | undefined) {
console.log(`storage request: ${configName}`);
if (!configName) throw new Error('configName is undefined'); if (!configName) throw new Error('configName is undefined');
return (await ( return (await (
await axios.get('/api/modules/dashdot/storage', { params: { configName } }) await axios.get('/api/modules/dashdot/storage', { params: { configName } })