mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-10 07:25:48 +01:00
🐛 Fix some issues with change position modal
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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}
|
||||||
|
|||||||
@@ -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,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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'],
|
||||||
|
|||||||
@@ -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 } })
|
||||||
|
|||||||
Reference in New Issue
Block a user