From d82b7c12fb6cf9717aa0c980c68f8fcb3ddaaa77 Mon Sep 17 00:00:00 2001 From: Roland Date: Thu, 29 Sep 2022 14:58:16 -0600 Subject: [PATCH] Using grey color by default for some Semantic elements when no color is provided. --- app/src/App.js | 95 ++-------------------------- app/src/Dashboard.js | 89 ++++++++++++++++++++++++++ app/src/components/Common.js | 10 ++- app/src/components/Theme.js | 24 ++++--- app/src/components/Upload.js | 56 ++++++---------- app/src/components/admin/Settings.js | 7 +- 6 files changed, 143 insertions(+), 138 deletions(-) create mode 100644 app/src/Dashboard.js diff --git a/app/src/App.js b/app/src/App.js index 2bebf3f2..397bb565 100644 --- a/app/src/App.js +++ b/app/src/App.js @@ -1,103 +1,22 @@ -import React, {useContext, useState} from 'react'; +import React, {useContext} from 'react'; import './App.css'; import {NavBar} from "./components/Nav"; -import {Link, Route, Routes} from "react-router-dom"; +import {Route, Routes} from "react-router-dom"; import {VideosRoute, VideoWrapper} from "./components/Videos"; import Admin from "./components/admin/Admin"; -import {Container, Divider} from "semantic-ui-react"; +import {Container} from "semantic-ui-react"; import 'semantic-ui-offline/semantic.min.css'; import {SemanticToastContainer} from 'react-semantic-toasts'; import 'react-semantic-toasts/styles/react-semantic-alert.css'; import {AppsRoute} from "./components/Apps"; import {InventoryRoute} from "./components/Inventory"; import {ArchiveRoute} from "./components/Archive"; -import {DownloadMenu} from "./components/Upload"; -import {LoadStatistic, PageContainer, SearchInput, useTitle} from "./components/Common"; -import {FilesRoute, FilesSearchView} from "./components/Files"; -import {useSearchFiles, useSettingsInterval, useStatus} from "./hooks/customHooks"; +import {FilesRoute} from "./components/Files"; +import {useSettingsInterval} from "./hooks/customHooks"; import {MapRoute} from "./components/Map"; import {SettingsContext, ThemeContext} from "./contexts/contexts"; -import {Header, Segment, Statistic, StatisticGroup, ThemeWrapper} from "./components/Theme"; -import {CPUUsageProgress} from "./components/admin/Status"; - -function Dashboard() { - useTitle('Dashboard'); - - const {searchStr, setSearchStr} = useSearchFiles(); - - const [downloadOpen, setDownloadOpen] = useState(false); - const onDownloadOpen = (name) => setDownloadOpen(!!name); - const {wrol_mode} = useContext(SettingsContext); - - const downloads = ; - - // Only show dashboard parts if not searching. - let body; - if (searchStr) { - body = ; - } else { - body = <> - {!wrol_mode && downloads} - {/* Hide Status when user is starting a download */} - {!downloadOpen && } - ; - } - - return ( - - - {body} - - ) -} - -function DashboardStatus() { - const {status} = useStatus(); - let percent = 0; - let load = {}; - let cores = 0; - let pending_downloads = '?'; - if (status && status['cpu_info']) { - percent = status['cpu_info']['percent']; - load = status['load']; - cores = status['cpu_info']['cores']; - pending_downloads = status['downloads']['pending_downloads']; - } - - const {download_manager_disabled, download_manager_stopped} = useContext(SettingsContext); - if (pending_downloads === 0 && (download_manager_disabled || download_manager_stopped)) { - pending_downloads = 'x'; - } - - return - -
Status
- -
Load
- - - - - - - - - - - - - - - -
; -} +import {ThemeWrapper} from "./components/Theme"; +import {Dashboard} from "./Dashboard"; function PageNotFound() { return ( diff --git a/app/src/Dashboard.js b/app/src/Dashboard.js new file mode 100644 index 00000000..bdb1e7ce --- /dev/null +++ b/app/src/Dashboard.js @@ -0,0 +1,89 @@ +import {LoadStatistic, PageContainer, SearchInput, useTitle} from "./components/Common"; +import {useSearchFiles, useStatus} from "./hooks/customHooks"; +import React, {useContext, useState} from "react"; +import {SettingsContext} from "./contexts/contexts"; +import {DownloadMenu} from "./components/Upload"; +import {FilesSearchView} from "./components/Files"; +import {Header, Segment, Statistic, StatisticGroup} from "./components/Theme"; +import {Link} from "react-router-dom"; +import {CPUUsageProgress} from "./components/admin/Status"; +import {Divider} from "semantic-ui-react"; + +export function Dashboard() { + useTitle('Dashboard'); + + const {searchStr, setSearchStr} = useSearchFiles(); + + const [downloadOpen, setDownloadOpen] = useState(false); + const onDownloadOpen = (name) => setDownloadOpen(!!name); + const {wrol_mode} = useContext(SettingsContext); + + const downloads = ; + + // Only show dashboard parts if not searching. + let body; + if (searchStr) { + body = ; + } else { + body = <> + {!wrol_mode && downloads} + {/* Hide Status when user is starting a download */} + {!downloadOpen && } + ; + } + + return ( + + + {body} + + ) +} + +function DashboardStatus() { + const {status} = useStatus(); + let percent = 0; + let load = {}; + let cores = 0; + let pending_downloads = '?'; + if (status && status['cpu_info']) { + percent = status['cpu_info']['percent']; + load = status['load']; + cores = status['cpu_info']['cores']; + pending_downloads = status['downloads']['pending_downloads']; + } + + const {download_manager_disabled, download_manager_stopped} = useContext(SettingsContext); + if (pending_downloads === 0 && (download_manager_disabled || download_manager_stopped)) { + pending_downloads = 'x'; + } + + return + +
Status
+ +
Load
+ + + + + + + + + + + + + + + +
; +} diff --git a/app/src/components/Common.js b/app/src/components/Common.js index 0019eb18..988ac0b4 100644 --- a/app/src/components/Common.js +++ b/app/src/components/Common.js @@ -1,11 +1,11 @@ import React, {useContext, useEffect, useState} from "react"; -import {Card, Container, Image, Input, Pagination, Popup, Responsive, TableCell, TableRow} from 'semantic-ui-react'; +import {Card, Container, Image, Input, Pagination, Responsive, TableCell, TableRow} from 'semantic-ui-react'; import {Link, NavLink} from "react-router-dom"; import Message from "semantic-ui-react/dist/commonjs/collections/Message"; import {useDownloaders, useHotspot, useThrottle} from "../hooks/customHooks"; import {getSettings} from "../api"; import {darkTheme, SettingsContext, ThemeContext} from "../contexts/contexts"; -import {Button, CardIcon, Form, Header, Icon, Menu, Statistic} from "./Theme"; +import {Button, CardIcon, Form, Header, Icon, Menu, Popup, Statistic} from "./Theme"; export const API_URI = `http://${window.location.host}/api`; export const VIDEOS_API = `${API_URI}/videos`; @@ -835,17 +835,15 @@ export function FileIcon({file, disabled = true, size = 'huge', ...props}) { } export function LoadStatistic({label, value, cores, ...props}) { - let color; const quarter = cores / 4; if (cores && value >= (quarter * 3)) { - color = 'red'; + props['color'] = 'red'; } else if (cores && value >= (quarter * 2)) { - color = 'orange'; + props['color'] = 'orange'; } return ; } diff --git a/app/src/components/Theme.js b/app/src/components/Theme.js index 5aad2c45..778c3e55 100644 --- a/app/src/components/Theme.js +++ b/app/src/components/Theme.js @@ -105,21 +105,29 @@ const invertedNull = (props) => { return props; } +const defaultGrey = (props, inverted) => { + // Some elements look softer when grey, use grey only if another color is not provided. + if (inverted) { + return {color: 'grey', ...props}; + } + return props; +} + export function Button(props) { - const {i} = useContext(ThemeContext); - props = {...i, ...props}; + const {i, inverted} = useContext(ThemeContext); + props = defaultGrey({...i, ...props}, inverted); return