From b3195d0819d3a74555c1cf470f82542470246423 Mon Sep 17 00:00:00 2001 From: David Ralph Date: Thu, 29 Oct 2020 16:05:28 +0000 Subject: [PATCH] unfinished date feature --- src/App.jsx | 6 +- src/components/modals/settings/Checkbox.jsx | 2 +- src/components/modals/settings/Slider.jsx | 2 +- .../modals/settings/sections/DateSettings.jsx | 19 ++++++ .../settings/sections/SearchSettings.jsx | 6 +- src/components/modals/tabs/Addons.jsx | 2 +- src/components/modals/tabs/Marketplace.jsx | 2 +- src/components/modals/tabs/Settings.jsx | 3 +- src/components/widgets/Background.jsx | 4 +- src/components/widgets/Date.jsx | 68 +++++++++++++++++++ src/components/widgets/Notes.jsx | 4 +- src/components/widgets/Search.jsx | 2 +- src/index.js | 1 + .../marketplace.js} | 0 .../settings.js} | 2 +- .../default_settings.json} | 0 .../offline_images.json} | 0 .../search_engines.json} | 0 18 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 src/components/modals/settings/sections/DateSettings.jsx create mode 100644 src/components/widgets/Date.jsx rename src/modules/{marketplaceFunctions.js => helpers/marketplace.js} (100%) rename src/modules/{settingsFunctions.js => helpers/settings.js} (98%) rename src/modules/{defaultSettings.json => json/default_settings.json} (100%) rename src/modules/{offlineImages.json => json/offline_images.json} (100%) rename src/modules/{searchEngines.json => json/search_engines.json} (100%) diff --git a/src/App.jsx b/src/App.jsx index 92d6befc..b4d4d455 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,10 +8,11 @@ import Search from './components/widgets/Search'; import Maximise from './components/widgets/Maximise'; import Favourite from './components/widgets/Favourite'; import PhotoInformation from './components/widgets/PhotoInformation'; +import Date from './components/widgets/Date'; import Navbar from './components/Navbar'; -import SettingsFunctions from './modules/settingsFunctions'; +import SettingsFunctions from './modules/helpers/settings'; import { ToastContainer } from 'react-toastify'; import Modal from 'react-modal'; import merge from 'lodash.merge'; @@ -65,9 +66,10 @@ export default class App extends React.PureComponent { this.setState({ mainModal: true })} updateModalOpen={() => this.setState({ updateModal: true })} language={language} /> + -
+
diff --git a/src/components/modals/settings/Checkbox.jsx b/src/components/modals/settings/Checkbox.jsx index d729fd58..25a1d11c 100644 --- a/src/components/modals/settings/Checkbox.jsx +++ b/src/components/modals/settings/Checkbox.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import SettingsFunctions from '../../../modules/settingsFunctions'; +import SettingsFunctions from '../../../modules/helpers/settings'; import CheckboxUI from '@material-ui/core/Checkbox'; import FormControlLabel from '@material-ui/core/FormControlLabel'; diff --git a/src/components/modals/settings/Slider.jsx b/src/components/modals/settings/Slider.jsx index 220eca57..2826d475 100644 --- a/src/components/modals/settings/Slider.jsx +++ b/src/components/modals/settings/Slider.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import SettingsFunctions from '../../../modules/settingsFunctions'; +import SettingsFunctions from '../../../modules/helpers/settings'; export default class Slider extends React.PureComponent { constructor(...args) { diff --git a/src/components/modals/settings/sections/DateSettings.jsx b/src/components/modals/settings/sections/DateSettings.jsx new file mode 100644 index 00000000..23c0aadd --- /dev/null +++ b/src/components/modals/settings/sections/DateSettings.jsx @@ -0,0 +1,19 @@ +import React from 'react'; +import SettingsFunctions from '../../../../modules/helpers/settings'; +import Section from '../Section'; +import Dropdown from '../Dropdown'; + +export default class DateSettings extends React.PureComponent { + componentDidMount() { + } + + render() { + return ( + +
+ settings +
+
+ ); + } +} \ No newline at end of file diff --git a/src/components/modals/settings/sections/SearchSettings.jsx b/src/components/modals/settings/sections/SearchSettings.jsx index 10c9d79b..bd2c9177 100644 --- a/src/components/modals/settings/sections/SearchSettings.jsx +++ b/src/components/modals/settings/sections/SearchSettings.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import SettingsFunctions from '../../../../modules/settingsFunctions'; +import SettingsFunctions from '../../../../modules/helpers/settings'; import { toast } from 'react-toastify'; import Section from '../Section'; import Dropdown from '../Dropdown'; -const searchEngines = require('../../../../modules/searchEngines.json'); +const searchEngines = require('../../../../modules/json/search_engines.json'); export default class SearchSettings extends React.PureComponent { resetSearch() { @@ -26,7 +26,6 @@ export default class SearchSettings extends React.PureComponent { render() { return ( -
-
); } } \ No newline at end of file diff --git a/src/components/modals/tabs/Addons.jsx b/src/components/modals/tabs/Addons.jsx index f4272781..9b1fd6a0 100644 --- a/src/components/modals/tabs/Addons.jsx +++ b/src/components/modals/tabs/Addons.jsx @@ -2,7 +2,7 @@ import React from 'react'; import LocalMallIcon from '@material-ui/icons/LocalMall'; import { toast } from 'react-toastify'; import Item from '../marketplace/Item'; -import MarketplaceFunctions from '../../../modules/marketplaceFunctions'; +import MarketplaceFunctions from '../../../modules/helpers/marketplace'; export default class Addons extends React.PureComponent { constructor(...args) { diff --git a/src/components/modals/tabs/Marketplace.jsx b/src/components/modals/tabs/Marketplace.jsx index 055e658d..c0997f64 100644 --- a/src/components/modals/tabs/Marketplace.jsx +++ b/src/components/modals/tabs/Marketplace.jsx @@ -3,7 +3,7 @@ import WifiOffIcon from '@material-ui/icons/WifiOff'; import ArrowBackIcon from '@material-ui/icons/ArrowBack'; import { toast } from 'react-toastify'; import Item from '../marketplace/Item'; -import MarketplaceFunctions from '../../../modules/marketplaceFunctions'; +import MarketplaceFunctions from '../../../modules/helpers/marketplace'; import * as Constants from '../../../modules/constants'; import Items from '../marketplace/Items'; diff --git a/src/components/modals/tabs/Settings.jsx b/src/components/modals/tabs/Settings.jsx index e0f6a3db..c2674c54 100644 --- a/src/components/modals/tabs/Settings.jsx +++ b/src/components/modals/tabs/Settings.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import SettingsFunctions from '../../../modules/settingsFunctions'; +import SettingsFunctions from '../../../modules/helpers/settings'; import Checkbox from '../settings/Checkbox'; import Section from '../settings/Section'; import { toast } from 'react-toastify'; @@ -7,6 +7,7 @@ import { toast } from 'react-toastify'; import BackgroundSettings from '../settings/sections/BackgroundSettings'; import SearchSettings from '../settings/sections/SearchSettings'; import LanguageSettings from '../settings/sections/LanguageSettings'; +import DateSettings from '../settings/sections/DateSettings'; export default class Settings extends React.PureComponent { resetGreeting() { diff --git a/src/components/widgets/Background.jsx b/src/components/widgets/Background.jsx index 080e9886..82b9b12e 100644 --- a/src/components/widgets/Background.jsx +++ b/src/components/widgets/Background.jsx @@ -46,7 +46,7 @@ export default class Background extends React.PureComponent { } doOffline() { // Handles setting the background if the user is offline - const offlineImages = require('../../modules/offlineImages.json'); + const offlineImages = require('../../modules/json/offline_images.json'); const photographers = Object.keys(offlineImages); // Get all photographers from the keys in offlineImages.json const photographer = photographers[Math.floor(Math.random() * photographers.length)]; // Select a random photographer from the keys const randomImage = offlineImages[photographer].photo[ @@ -113,7 +113,7 @@ export default class Background extends React.PureComponent { this.setBackground(data.file); if (localStorage.getItem('backgroundAPI') === 'unsplash') return this.setCredit(data.photographer, 'unsplash', data.photographer_page); this.setCredit(data.photographer); - document.getElementById('camera').textContent = data.camera; + document.getElementById('camera').textContent = data.camera || 'N/A'; document.getElementById('resolution').textContent = data.resolution || 'N/A'; } diff --git a/src/components/widgets/Date.jsx b/src/components/widgets/Date.jsx new file mode 100644 index 00000000..d8bc130c --- /dev/null +++ b/src/components/widgets/Date.jsx @@ -0,0 +1,68 @@ +import React from 'react'; +import dtf from '@eartharoid/dtf'; + +export default class DateWidget extends React.PureComponent { + constructor(...args) { + super(...args); + this.state = { + date: '' + }; + } + + getDate() { + const date = new Date(); + + if (localStorage.getItem('dateFormat') === 'short') { + const dateDay = date.getDate(); + const dateMonth = date.getMonth() + 1; + const dateYear = date.getFullYear(); + + let day = dateDay, month = dateMonth, year = dateYear; + + switch (localStorage.getItem('dateFormat')) { + case 'MDY': + day = dateMonth; + month = dateDay; + break; + case 'YMD': + day = dateYear; + year = dateDay; + break; + default: + break; + } + + let format; + switch (localStorage.getItem('shortFormat')) { + case 'dash': + format = `${day}-${month}-${year}`; + break; + case 'gaps': + format = `${day} - ${month} - ${year}`; + break; + default: + format = `${day}/${month}/${year}`; + } + + this.setState({ date: format }); + } else { // full date + const lang = localStorage.getItem('language'); + + const day = date.toLocaleDateString(lang, { weekday: 'long' }); + const nth = dtf.nth(date.getDate()); + const month = date.toLocaleDateString(lang, { month: 'long' }); + const year = date.getFullYear(); + + this.setState({ date: `${day} ${nth} ${month} ${year}` }); + } + } + + componentDidMount() { + if (localStorage.getItem('date') === 'false') return; + this.getDate(); + } + + render() { + return {this.state.date} + } +} \ No newline at end of file diff --git a/src/components/widgets/Notes.jsx b/src/components/widgets/Notes.jsx index 5ee950e7..552d733e 100644 --- a/src/components/widgets/Notes.jsx +++ b/src/components/widgets/Notes.jsx @@ -28,8 +28,6 @@ export default class Notes extends React.PureComponent { } render() { - const copyNotes = () => navigator.clipboard.writeText(this.state.notes); - return (
@@ -38,7 +36,7 @@ export default class Notes extends React.PureComponent {
- +
); } diff --git a/src/components/widgets/Search.jsx b/src/components/widgets/Search.jsx index c4a3612e..846e4383 100644 --- a/src/components/widgets/Search.jsx +++ b/src/components/widgets/Search.jsx @@ -2,7 +2,7 @@ import React from 'react'; import SearchIcon from '@material-ui/icons/Search'; import MicIcon from '@material-ui/icons/Mic'; -const searchEngines = require('../../modules/searchEngines.json'); +const searchEngines = require('../../modules/json/search_engines.json'); export default class Search extends React.PureComponent { constructor(...args) { diff --git a/src/index.js b/src/index.js index db69523f..5a6054a8 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; + import App from './App'; import './scss/index.scss'; diff --git a/src/modules/marketplaceFunctions.js b/src/modules/helpers/marketplace.js similarity index 100% rename from src/modules/marketplaceFunctions.js rename to src/modules/helpers/marketplace.js diff --git a/src/modules/settingsFunctions.js b/src/modules/helpers/settings.js similarity index 98% rename from src/modules/settingsFunctions.js rename to src/modules/helpers/settings.js index 6dfabf51..b95c6f56 100644 --- a/src/modules/settingsFunctions.js +++ b/src/modules/helpers/settings.js @@ -1,4 +1,4 @@ -const defaultSettings = require('./defaultSettings.json'); +const defaultSettings = require('../json/default_settings.json'); const saveFile = (data, filename = 'file') => { if (!data) return console.error('No data'); diff --git a/src/modules/defaultSettings.json b/src/modules/json/default_settings.json similarity index 100% rename from src/modules/defaultSettings.json rename to src/modules/json/default_settings.json diff --git a/src/modules/offlineImages.json b/src/modules/json/offline_images.json similarity index 100% rename from src/modules/offlineImages.json rename to src/modules/json/offline_images.json diff --git a/src/modules/searchEngines.json b/src/modules/json/search_engines.json similarity index 100% rename from src/modules/searchEngines.json rename to src/modules/json/search_engines.json