From 6957d3d2faab7a092e7bb11d6fa2e6a5b9218c16 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 5 Apr 2024 12:21:52 +0300 Subject: [PATCH] Update help pages --- .vscode/settings.json | 1 + .../src/components/man/HelpCstAttributes.tsx | 8 +- .../src/components/man/HelpExteor.tsx | 2 +- rsconcept/frontend/src/models/rsformAPI.ts | 81 +++++++------------ 4 files changed, 35 insertions(+), 57 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 238c3b3b..c62b7b68 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -134,6 +134,7 @@ "конституент", "Конституента", "конституентами", + "конституенте", "конституенту", "конституенты", "неинтерпретируемый", diff --git a/rsconcept/frontend/src/components/man/HelpCstAttributes.tsx b/rsconcept/frontend/src/components/man/HelpCstAttributes.tsx index f7bb2430..ed51efda 100644 --- a/rsconcept/frontend/src/components/man/HelpCstAttributes.tsx +++ b/rsconcept/frontend/src/components/man/HelpCstAttributes.tsx @@ -7,11 +7,11 @@ function HelpCstAttributes() { return (

Аттрибуты конституенты

-

Термин может быть задан для любой конституенты. Он используется для отсылок текстах в других Терминах и Текстовых определениях

+

Термин может быть присвоен любой конституенте. Он используется в других Терминах и в Текстовых определениях

Формальное определение строится с помощью формального аппарата

-

Типизация вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого определением

-

Текстовое определение указывается для конституент, у которых есть Формальное определение или Область определения. Оно является текстовой интерпретацией формального определения и может содержать только слова-связки, термины теории множеств и отсылки на Термины ранее введенных конституент

-

Конвенция - договоренность о соотнесении неопределяемого понятия с сущностями в предметной области

+

Типизация вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого этим определением

+

Текстовое определение предоставляется для конституент, имеющих Формальное определение или Область определения. Это текстовая интерпретация формального определения и строится из связующих слов, терминов теории множеств и отсылок на термины ранее введенных конституент

+

Конвенция - это соглашение о соотнесении неопределенного понятия с сущностями в предметной области

Комментарий может быть добавлен к любому производному понятию для хранения дополнительной информации

Неопределяемые понятия

diff --git a/rsconcept/frontend/src/components/man/HelpExteor.tsx b/rsconcept/frontend/src/components/man/HelpExteor.tsx index f9f76d84..bcdb2b60 100644 --- a/rsconcept/frontend/src/components/man/HelpExteor.tsx +++ b/rsconcept/frontend/src/components/man/HelpExteor.tsx @@ -7,7 +7,7 @@ function HelpExteor() {

Экстеор

Экстеор 4.9 — редактор текстов систем понятий эксплицированных в родах структур

-

Портал превосходит Экстеор в части редактирования экспликаций, но функции синтеза и вычисления интерпретации пока доступны только в Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати

+

Портал превосходит Экстеор в части редактирования экспликаций, но вычисление интерпретации доступно только в Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати

Экстеор доступен на операционной системы Windows 10+

Скачать установщик: |

Основные функции

diff --git a/rsconcept/frontend/src/models/rsformAPI.ts b/rsconcept/frontend/src/models/rsformAPI.ts index 5bd14f20..b94ac972 100644 --- a/rsconcept/frontend/src/models/rsformAPI.ts +++ b/rsconcept/frontend/src/models/rsformAPI.ts @@ -14,7 +14,8 @@ import { ExpressionStatus, IConstituenta, IRSForm, - IRSFormData + IRSFormData, + IRSFormStats } from './rsform'; import { ParsingStatus, ValueClass } from './rslang'; import { extractGlobals } from './rslangAPI'; @@ -29,58 +30,8 @@ import { extractGlobals } from './rslangAPI'; export function loadRSFormData(input: IRSFormData): IRSForm { const result = input as IRSForm; result.graph = new Graph(); - if (!result.items) { - result.stats = { - count_all: 0, - count_errors: 0, - count_property: 0, - count_incalculable: 0, + result.stats = calculateStats(result.items); - count_text_term: 0, - count_definition: 0, - count_convention: 0, - - count_base: 0, - count_constant: 0, - count_structured: 0, - count_axiom: 0, - count_term: 0, - count_function: 0, - count_predicate: 0, - count_theorem: 0 - }; - return result; - } - result.stats = { - count_all: result.items.length || 0, - count_errors: result.items.reduce( - (sum, cst) => sum + (cst.parse?.status === ParsingStatus.INCORRECT ? 1 : 0) || 0, - 0 - ), - count_property: result.items.reduce( - (sum, cst) => sum + (cst.parse?.valueClass === ValueClass.PROPERTY ? 1 : 0) || 0, - 0 - ), - count_incalculable: result.items.reduce( - (sum, cst) => - sum + (cst.parse?.status === ParsingStatus.VERIFIED && cst.parse?.valueClass === ValueClass.INVALID ? 1 : 0) || - 0, - 0 - ), - - count_text_term: result.items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0) || 0, 0), - count_definition: result.items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0) || 0, 0), - count_convention: result.items.reduce((sum, cst) => sum + (cst.convention ? 1 : 0) || 0, 0), - - count_base: result.items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0), - count_constant: result.items?.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0), - count_structured: result.items?.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0), - count_axiom: result.items?.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0), - count_term: result.items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0), - count_function: result.items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0), - count_predicate: result.items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0), - count_theorem: result.items.reduce((sum, cst) => sum + (cst.cst_type === CstType.THEOREM ? 1 : 0), 0) - }; result.items.forEach(cst => { cst.status = inferStatus(cst.parse.status, cst.parse.valueClass); cst.is_template = inferTemplate(cst.definition_formal); @@ -97,6 +48,32 @@ export function loadRSFormData(input: IRSFormData): IRSForm { return result; } +function calculateStats(items: IConstituenta[]): IRSFormStats { + return { + count_all: items.length, + count_errors: items.reduce((sum, cst) => sum + (cst.parse?.status === ParsingStatus.INCORRECT ? 1 : 0), 0), + count_property: items.reduce((sum, cst) => sum + (cst.parse?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0), + count_incalculable: items.reduce( + (sum, cst) => + sum + (cst.parse.status === ParsingStatus.VERIFIED && cst.parse.valueClass === ValueClass.INVALID ? 1 : 0), + 0 + ), + + count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0), + count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0), + count_convention: items.reduce((sum, cst) => sum + (cst.convention ? 1 : 0), 0), + + count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0), + count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0), + count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0), + count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0), + count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0), + count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0), + count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0), + count_theorem: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.THEOREM ? 1 : 0), 0) + }; +} + /** * Checks if a given target {@link IConstituenta} matches the specified query using the provided matching mode. *