From 337c037e990cd7389869e461b0ebc4023bd44179 Mon Sep 17 00:00:00 2001
From: IRBorisov <8611739+IRBorisov@users.noreply.github.com>
Date: Sat, 26 Aug 2023 21:37:57 +0300
Subject: [PATCH 1/8] Fix typecheck for logic expressions
---
rsconcept/frontend/src/hooks/useCheckExpression.ts | 13 ++++++++-----
rsconcept/frontend/src/utils/staticUI.ts | 2 +-
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/rsconcept/frontend/src/hooks/useCheckExpression.ts b/rsconcept/frontend/src/hooks/useCheckExpression.ts
index 9fdb713e..493ea0dc 100644
--- a/rsconcept/frontend/src/hooks/useCheckExpression.ts
+++ b/rsconcept/frontend/src/hooks/useCheckExpression.ts
@@ -6,23 +6,26 @@ import { RSErrorType } from '../utils/enums';
import { CstType, IConstituenta, IExpressionParse, IFunctionArg, type IRSForm } from '../utils/models';
import { getCstExpressionPrefix } from '../utils/staticUI';
+const LOGIC_TYPIIFCATION = 'LOGIC';
+
function checkTypeConsistency(type: CstType, typification: string, args: IFunctionArg[]): boolean {
+ console.log(typification)
switch (type) {
case CstType.BASE:
case CstType.CONSTANT:
case CstType.STRUCTURED:
case CstType.TERM:
- return typification !== '' && args.length === 0;
+ return typification !== LOGIC_TYPIIFCATION && args.length === 0;
case CstType.AXIOM:
case CstType.THEOREM:
- return typification === '' && args.length === 0;
+ return typification === LOGIC_TYPIIFCATION && args.length === 0;
case CstType.FUNCTION:
- return typification !== '' && args.length !== 0;
+ return typification !== LOGIC_TYPIIFCATION && args.length !== 0;
case CstType.PREDICATE:
- return typification === '' && args.length !== 0;
+ return typification === LOGIC_TYPIIFCATION && args.length !== 0;
}
}
@@ -42,7 +45,7 @@ function useCheckExpression({ schema }: { schema?: IRSForm }) {
onError: error => { setError(error); },
onSuccess: parse => {
if (activeCst && parse.parseResult) {
- if (activeCst.cstType == CstType.BASE || activeCst.cstType == CstType.CONSTANT) {
+ if (activeCst.cstType === CstType.BASE || activeCst.cstType === CstType.CONSTANT) {
if (expression !== getCstExpressionPrefix(activeCst)) {
parse.parseResult = false;
parse.errors.push({
diff --git a/rsconcept/frontend/src/utils/staticUI.ts b/rsconcept/frontend/src/utils/staticUI.ts
index ca78348b..4b4f4916 100644
--- a/rsconcept/frontend/src/utils/staticUI.ts
+++ b/rsconcept/frontend/src/utils/staticUI.ts
@@ -500,7 +500,7 @@ export function getTypificationLabel({isValid, resultType, args}: {
if (!isValid) {
return 'N/A';
}
- if (resultType === '') {
+ if (resultType === '' || resultType === 'LOGIC') {
resultType = 'Логический'
}
if (args.length === 0) {
From 2feebec64ddab412923fdb1dd23627de615b1e8b Mon Sep 17 00:00:00 2001
From: IRBorisov <8611739+IRBorisov@users.noreply.github.com>
Date: Sun, 27 Aug 2023 00:19:19 +0300
Subject: [PATCH 2/8] Improve UI, start refactoring colors
---
.vscode/settings.json | 8 ++
README.md | 2 +-
rsconcept/frontend/src/components/Footer.tsx | 2 +-
.../frontend/src/components/GraphThemes.ts | 98 +++++++++++++++++++
.../src/components/Help/InfoCstClass.tsx | 15 ++-
.../src/components/Help/InfoCstStatus.tsx | 14 ++-
.../frontend/src/context/LibraryContext.tsx | 19 ++--
.../frontend/src/context/ThemeContext.tsx | 9 +-
.../src/pages/LibraryPage/SearchPanel.tsx | 30 ++++--
.../frontend/src/pages/LibraryPage/index.tsx | 13 ++-
.../src/pages/RSFormPage/EditorItems.tsx | 9 +-
.../src/pages/RSFormPage/EditorRSForm.tsx | 2 +-
.../src/pages/RSFormPage/EditorTermGraph.tsx | 33 ++++---
.../frontend/src/pages/RSFormPage/RSTabs.tsx | 2 +-
.../pages/RSFormPage/elements/StatusBar.tsx | 8 +-
.../elements/ViewSideConstituents.tsx | 14 +--
.../src/pages/UserProfilePage/UserTabs.tsx | 2 +-
rsconcept/frontend/src/utils/color.ts | 34 +++++++
rsconcept/frontend/src/utils/models.ts | 7 +-
rsconcept/frontend/src/utils/staticUI.ts | 56 ++++-------
20 files changed, 276 insertions(+), 101 deletions(-)
create mode 100644 rsconcept/frontend/src/components/GraphThemes.ts
create mode 100644 rsconcept/frontend/src/utils/color.ts
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6f99defc..25dbb65d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -29,5 +29,13 @@
"name": "django",
"depth": 5
}
+ ],
+ "colorize.include": [".tsx", ".jsx", ".ts", ".js"],
+ "colorize.languages": [
+ "typescript",
+ "javascript",
+ "css",
+ "typescriptreact",
+ "javascriptreact"
]
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 5dee022a..062a43b8 100644
--- a/README.md
+++ b/README.md
@@ -53,7 +53,7 @@ This readme file is used mostly to document project dependencies
- ESLint - - + - Colorizediff --git a/rsconcept/frontend/src/components/Footer.tsx b/rsconcept/frontend/src/components/Footer.tsx index c476ba77..feffc5e2 100644 --- a/rsconcept/frontend/src/components/Footer.tsx +++ b/rsconcept/frontend/src/components/Footer.tsx @@ -11,7 +11,7 @@ function Footer() { Справка
-
+
{info.text}
-
diff --git a/rsconcept/frontend/src/components/Help/InfoCstStatus.tsx b/rsconcept/frontend/src/components/Help/InfoCstStatus.tsx
index d2e05005..76599c60 100644
--- a/rsconcept/frontend/src/components/Help/InfoCstStatus.tsx
+++ b/rsconcept/frontend/src/components/Help/InfoCstStatus.tsx
@@ -1,19 +1,25 @@
+import { useConceptTheme } from '../../context/ThemeContext';
import { prefixes } from '../../utils/constants';
-import { mapStatusInfo } from '../../utils/staticUI';
+import { getCstStatusColor, mapStatusInfo } from '../../utils/staticUI';
interface InfoCstStatusProps {
title?: string
}
function InfoCstStatus({ title }: InfoCstStatusProps) {
+ const { colors } = useConceptTheme();
+
return (
-
+
{info.text}
-
diff --git a/rsconcept/frontend/src/context/LibraryContext.tsx b/rsconcept/frontend/src/context/LibraryContext.tsx
index 5ff2c251..dcb8e1fe 100644
--- a/rsconcept/frontend/src/context/LibraryContext.tsx
+++ b/rsconcept/frontend/src/context/LibraryContext.tsx
@@ -43,16 +43,23 @@ export const LibraryState = ({ children }: LibraryStateProps) => {
const filter = useCallback(
(params: ILibraryFilter) => {
let result = items;
- if (params.ownedBy) {
- result = result.filter(item =>
- item.owner === params.ownedBy
- || user?.subscriptions.includes(item.id));
+ if (params.is_owned) {
+ result = result.filter(item => item.owner === user?.id);
}
if (params.is_common !== undefined) {
result = result.filter(item => item.is_common === params.is_common);
}
- if (params.queryMeta) {
- result = result.filter(item => matchLibraryItem(params.queryMeta!, item));
+ if (params.is_canonical !== undefined) {
+ result = result.filter(item => item.is_canonical === params.is_canonical);
+ }
+ if (params.is_subscribed !== undefined) {
+ result = result.filter(item => user?.subscriptions.includes(item.id));
+ }
+ if (params.is_personal !== undefined) {
+ result = result.filter(item => user?.subscriptions.includes(item.id) || item.owner === user?.id);
+ }
+ if (params.query) {
+ result = result.filter(item => matchLibraryItem(params.query!, item));
}
return result;
}, [items, user]);
diff --git a/rsconcept/frontend/src/context/ThemeContext.tsx b/rsconcept/frontend/src/context/ThemeContext.tsx
index c7208b7e..2a308e5e 100644
--- a/rsconcept/frontend/src/context/ThemeContext.tsx
+++ b/rsconcept/frontend/src/context/ThemeContext.tsx
@@ -1,12 +1,14 @@
import { createContext, useContext, useLayoutEffect, useMemo, useState } from 'react';
import useLocalStorage from '../hooks/useLocalStorage';
+import { darkT, IColorTheme, lightT } from '../utils/color';
interface IThemeContext {
darkMode: boolean
noNavigation: boolean
viewportHeight: string
mainHeight: string
+ colors: IColorTheme
toggleDarkMode: () => void
toggleNoNavigation: () => void
}
@@ -28,6 +30,7 @@ interface ThemeStateProps {
export const ThemeState = ({ children }: ThemeStateProps) => {
const [darkMode, setDarkMode] = useLocalStorage('darkMode', false);
+ const [colors, setColors] = useState{title}
}
- { [... mapStatusInfo.values()].map(
- (info, index) => {
+ { [... mapStatusInfo.entries()].map(
+ ([status, info], index) => {
return (