-
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
370 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
{ | ||
"version": "0.4.81", | ||
"version": "0.4.82", | ||
"type": "module", | ||
"scripts": { | ||
"dev": "vite", | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
const overrideExifMetadata = () => { | ||
const overridableMetadata: { [key: string]: string }[] = JSON.parse(localStorage.getItem('overridableMetadata') || '[]'); | ||
const overrideMetadataIndex: number | null = JSON.parse(localStorage.getItem('overrideMetadataIndex') || 'null'); | ||
const metadata = overrideMetadataIndex == null ? null : overridableMetadata.length > overrideMetadataIndex ? overridableMetadata[overrideMetadataIndex] : null; | ||
return metadata; | ||
}; | ||
|
||
export default overrideExifMetadata; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import { Icon } from 'konsta/react'; | ||
import { LuPencilLine } from 'react-icons/lu'; | ||
|
||
interface PencilIconProps { | ||
size?: number; | ||
} | ||
|
||
const PencilIcon = ({ size }: PencilIconProps) => { | ||
return <Icon ios={<LuPencilLine size={size} />} />; | ||
}; | ||
|
||
export default PencilIcon; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
web/src/pages/metadata/components/add-overridable-metadata.button.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import { ListButton } from 'konsta/react'; | ||
import { useTranslation } from 'react-i18next'; | ||
import { useStore } from '../../../store'; | ||
import AddIcon from '../../../icons/add.icon'; | ||
|
||
const AddOverridableMetadataButton = () => { | ||
const { t } = useTranslation(); | ||
const { setAddOverridableMetadataPopup } = useStore(); | ||
|
||
return ( | ||
<ListButton onClick={() => setAddOverridableMetadataPopup(true)}> | ||
<AddIcon size={18} /> | ||
<div style={{ width: 4 }} /> | ||
{t('root.settings.create-metadata')} | ||
</ListButton> | ||
); | ||
}; | ||
|
||
export default AddOverridableMetadataButton; |
85 changes: 85 additions & 0 deletions
85
web/src/pages/metadata/components/add-override-metadata.popup.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
import { Link, List, ListButton, ListInput, Navbar, Page, Popup } from 'konsta/react'; | ||
import { useStore } from '../../../store'; | ||
import { useTranslation } from 'react-i18next'; | ||
import { useEffect, useState } from 'react'; | ||
|
||
const AddOverrideMetadataPopup = () => { | ||
const { t } = useTranslation(); | ||
const { addOverridableMetadataPopup, setAddOverridableMetadataPopup, setOverridableMetadata, overridableMetadata } = useStore(); | ||
|
||
const [name, setName] = useState(''); | ||
const [make, setMake] = useState(''); | ||
const [model, setModel] = useState(''); | ||
const [lens, setLens] = useState(''); | ||
const [focalLength, setFocalLength] = useState(''); | ||
const [focalLengthIn35mm, setFocalLengthIn35mm] = useState(''); | ||
const [aperture, setAperture] = useState(''); | ||
const [iso, setIso] = useState(''); | ||
const [shutter, setShutter] = useState(''); | ||
const [takenAt, setTakenAt] = useState(''); | ||
|
||
useEffect(() => { | ||
setName(''); | ||
setMake(''); | ||
setModel(''); | ||
setLens(''); | ||
setFocalLength(''); | ||
setFocalLengthIn35mm(''); | ||
setAperture(''); | ||
setIso(''); | ||
setShutter(''); | ||
setTakenAt(''); | ||
}, [addOverridableMetadataPopup]); | ||
|
||
const onCreateMetadata = () => { | ||
if (!name) return; | ||
|
||
setOverridableMetadata([ | ||
...overridableMetadata, | ||
{ | ||
name, | ||
make, | ||
model, | ||
lensModel: lens, | ||
focalLength, | ||
focalLengthIn35mm, | ||
fNumber: aperture, | ||
iso, | ||
exposureTime: shutter, | ||
takenAt, | ||
}, | ||
]); | ||
|
||
setAddOverridableMetadataPopup(false); | ||
}; | ||
|
||
return ( | ||
<Popup opened={addOverridableMetadataPopup} onBackdropClick={() => setAddOverridableMetadataPopup(false)}> | ||
<Page> | ||
<Navbar | ||
title={t('root.settings.create-metadata')} | ||
right={ | ||
<Link navbar onClick={() => setAddOverridableMetadataPopup(false)}> | ||
{t('close')} | ||
</Link> | ||
} | ||
/> | ||
<List strongIos inset> | ||
<ListInput label={t('name') + '*'} type="text" value={name} onChange={(e) => setName(e.target.value)} /> | ||
<ListInput label={t('make')} type="text" value={make} onChange={(e) => setMake(e.target.value)} /> | ||
<ListInput label={t('model')} type="text" value={model} onChange={(e) => setModel(e.target.value)} /> | ||
<ListInput label={t('lens')} type="text" value={lens} onChange={(e) => setLens(e.target.value)} /> | ||
<ListInput label={t('focal') + ' (ex. 35mm)'} type="text" value={focalLength} onChange={(e) => setFocalLength(e.target.value)} /> | ||
<ListInput label={t('focal-35mm') + ' (ex. 50mm)'} type="text" value={focalLengthIn35mm} onChange={(e) => setFocalLengthIn35mm(e.target.value)} /> | ||
<ListInput label={t('aperture') + ' (ex. F2.8)'} type="text" value={aperture} onChange={(e) => setAperture(e.target.value)} /> | ||
<ListInput label={t('iso') + ' (ex. ISO1200)'} type="text" value={iso} onChange={(e) => setIso(e.target.value)} /> | ||
<ListInput label={t('shutter') + ' (ex. 1/200s)'} type="text" value={shutter} onChange={(e) => setShutter(e.target.value)} /> | ||
<ListInput label={t('taken-at') + ' (ex. 2024-05-06T08:35:38.223+09:00)'} type="text" value={takenAt} onChange={(e) => setTakenAt(e.target.value)} /> | ||
<ListButton onClick={onCreateMetadata}>{t('root.settings.create-metadata')}</ListButton> | ||
</List> | ||
</Page> | ||
</Popup> | ||
); | ||
}; | ||
|
||
export default AddOverrideMetadataPopup; |
26 changes: 26 additions & 0 deletions
26
web/src/pages/metadata/components/overridable-metadata.list-item.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { ListItem } from 'konsta/react'; | ||
import { useStore } from '../../../store'; | ||
import RemoveOneMetadataButton from './remove-one-metadata.button'; | ||
|
||
const OverridableMetadataList = () => { | ||
const { overridableMetadata } = useStore(); | ||
|
||
return ( | ||
<> | ||
{overridableMetadata.map((metadata, index) => ( | ||
<ListItem | ||
key={index} | ||
title={metadata.name} | ||
text={`${metadata.make} ${metadata.model} ${metadata.lensModel} ${metadata.focalLength} ${metadata.focalLengthIn35mm} ${metadata.fNumber} ${metadata.iso} ${metadata.exposureTime} ${metadata.takenAt}`} | ||
footer={ | ||
<div className="flex space-x-1 mt-1"> | ||
<RemoveOneMetadataButton index={index} /> | ||
</div> | ||
} | ||
/> | ||
))} | ||
</> | ||
); | ||
}; | ||
|
||
export default OverridableMetadataList; |
31 changes: 31 additions & 0 deletions
31
web/src/pages/metadata/components/remove-one-metadata.button.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { IoTrashOutline } from 'react-icons/io5'; | ||
import { useStore } from '../../../store'; | ||
import { Button, Icon } from 'konsta/react'; | ||
|
||
interface RemoveOneMetadataButtonProps { | ||
index: number; | ||
} | ||
|
||
const RemoveOneMetadataButton: React.FC<RemoveOneMetadataButtonProps> = ({ index }) => { | ||
const { overridableMetadata, setOverridableMetadata, overrideMetadataIndex, setOverrideMetadataIndex } = useStore(); | ||
|
||
return ( | ||
<div className="w-10"> | ||
<Button | ||
className="k-color-brand-red" | ||
onClick={() => { | ||
const newMetadata = overridableMetadata.filter((_, i) => i !== index); | ||
setOverridableMetadata(newMetadata); | ||
|
||
if (overrideMetadataIndex === index) { | ||
setOverrideMetadataIndex(null); | ||
} | ||
}} | ||
> | ||
<Icon ios={<IoTrashOutline className="w-5 h-5" />} /> | ||
</Button> | ||
</div> | ||
); | ||
}; | ||
|
||
export default RemoveOneMetadataButton; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import { List, Navbar, NavbarBackLink, Page } from 'konsta/react'; | ||
import { useTranslation } from 'react-i18next'; | ||
import { useNavigate } from 'react-router-dom'; | ||
import OverridableMetadataList from './components/overridable-metadata.list-item'; | ||
import AddOverridableMetadataButton from './components/add-overridable-metadata.button'; | ||
import AddOverrideMetadataPopup from './components/add-override-metadata.popup'; | ||
|
||
const MetadataPage = () => { | ||
const navigator = useNavigate(); | ||
const { t } = useTranslation(); | ||
|
||
return ( | ||
<> | ||
<Page> | ||
<Navbar title={t('root.settings.create-metadata')} left={<NavbarBackLink text={t('back')} onClick={() => navigator(-1)} />} /> | ||
|
||
<List strong inset> | ||
<OverridableMetadataList /> | ||
<AddOverridableMetadataButton /> | ||
</List> | ||
|
||
<AddOverrideMetadataPopup /> | ||
</Page> | ||
</> | ||
); | ||
}; | ||
|
||
export default MetadataPage; |
13 changes: 13 additions & 0 deletions
13
web/src/pages/setting/components/create-override-metadata.list-item.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import { ListItem } from 'konsta/react'; | ||
import { useTranslation } from 'react-i18next'; | ||
import PencilIcon from '../../../icons/pencil.icon'; | ||
import { useNavigate } from 'react-router-dom'; | ||
|
||
const CreateOverrideMetadataListItem = () => { | ||
const navigate = useNavigate(); | ||
const { t } = useTranslation(); | ||
|
||
return <ListItem media={<PencilIcon size={26} />} title={t('root.settings.create-metadata')} link onClick={() => navigate('/metadata')} />; | ||
}; | ||
|
||
export default CreateOverrideMetadataListItem; |
Oops, something went wrong.