Update help pages

This commit is contained in:
IRBorisov 2024-04-05 12:21:52 +03:00
parent 2f830a920b
commit 6957d3d2fa
4 changed files with 35 additions and 57 deletions

View File

@ -134,6 +134,7 @@
"конституент", "конституент",
"Конституента", "Конституента",
"конституентами", "конституентами",
"конституенте",
"конституенту", "конституенту",
"конституенты", "конституенты",
"неинтерпретируемый", "неинтерпретируемый",

View File

@ -7,11 +7,11 @@ function HelpCstAttributes() {
return ( return (
<div className='dense'> <div className='dense'>
<h1>Аттрибуты конституенты</h1> <h1>Аттрибуты конституенты</h1>
<p><b>Термин</b> может быть задан для любой конституенты. Он используется для отсылок текстах в других Терминах и Текстовых определениях</p> <p><b>Термин</b> может быть присвоен любой конституенте. Он используется в других Терминах и в Текстовых определениях</p>
<p><b>Формальное определение</b> строится с помощью формального аппарата <TextURL text='родоструктурной экспликации' href={`/manuals?topic=${HelpTopic.RSLANG}`} /></p> <p><b>Формальное определение</b> строится с помощью формального аппарата <TextURL text='родоструктурной экспликации' href={`/manuals?topic=${HelpTopic.RSLANG}`} /></p>
<p><b>Типизация</b> вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого определением</p> <p><b>Типизация</b> вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого этим определением</p>
<p><b>Текстовое определение</b> указывается для конституент, у которых есть Формальное определение или Область определения. Оно является текстовой интерпретацией формального определения и может содержать только слова-связки, термины теории множеств и отсылки на Термины ранее введенных конституент</p> <p><b>Текстовое определение</b> предоставляется для конституент, имеющих Формальное определение или Область определения. Это текстовая интерпретация формального определения и строится из связующих слов, терминов теории множеств и отсылок на термины ранее введенных конституент</p>
<p><b>Конвенция</b> - договоренность о соотнесении неопределяемого понятия с сущностями в предметной области</p> <p><b>Конвенция</b> - это соглашение о соотнесении неопределенного понятия с сущностями в предметной области</p>
<p><b>Комментарий</b> может быть добавлен к любому производному понятию для хранения дополнительной информации</p> <p><b>Комментарий</b> может быть добавлен к любому производному понятию для хранения дополнительной информации</p>
<h2>Неопределяемые понятия</h2> <h2>Неопределяемые понятия</h2>

View File

@ -7,7 +7,7 @@ function HelpExteor() {
<div> <div>
<h1>Экстеор</h1> <h1>Экстеор</h1>
<p>Экстеор 4.9 редактор текстов систем понятий эксплицированных в родах структур</p> <p>Экстеор 4.9 редактор текстов систем понятий эксплицированных в родах структур</p>
<p>Портал превосходит Экстеор в части редактирования экспликаций, но функции синтеза и вычисления интерпретации пока доступны только в Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати</p> <p>Портал превосходит Экстеор в части редактирования экспликаций, но вычисление интерпретации доступно только в Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати</p>
<p>Экстеор доступен на операционной системы Windows 10+</p> <p>Экстеор доступен на операционной системы Windows 10+</p>
<p>Скачать установщик: <TextURL href={external_urls.exteor64} text='64bit'/> | <TextURL href={external_urls.exteor32} text='32bit'/></p> <p>Скачать установщик: <TextURL href={external_urls.exteor64} text='64bit'/> | <TextURL href={external_urls.exteor32} text='32bit'/></p>
<h2>Основные функции</h2> <h2>Основные функции</h2>

View File

@ -14,7 +14,8 @@ import {
ExpressionStatus, ExpressionStatus,
IConstituenta, IConstituenta,
IRSForm, IRSForm,
IRSFormData IRSFormData,
IRSFormStats
} from './rsform'; } from './rsform';
import { ParsingStatus, ValueClass } from './rslang'; import { ParsingStatus, ValueClass } from './rslang';
import { extractGlobals } from './rslangAPI'; import { extractGlobals } from './rslangAPI';
@ -29,58 +30,8 @@ import { extractGlobals } from './rslangAPI';
export function loadRSFormData(input: IRSFormData): IRSForm { export function loadRSFormData(input: IRSFormData): IRSForm {
const result = input as IRSForm; const result = input as IRSForm;
result.graph = new Graph(); result.graph = new Graph();
if (!result.items) { result.stats = calculateStats(result.items);
result.stats = {
count_all: 0,
count_errors: 0,
count_property: 0,
count_incalculable: 0,
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 => { result.items.forEach(cst => {
cst.status = inferStatus(cst.parse.status, cst.parse.valueClass); cst.status = inferStatus(cst.parse.status, cst.parse.valueClass);
cst.is_template = inferTemplate(cst.definition_formal); cst.is_template = inferTemplate(cst.definition_formal);
@ -97,6 +48,32 @@ export function loadRSFormData(input: IRSFormData): IRSForm {
return result; 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. * Checks if a given target {@link IConstituenta} matches the specified query using the provided matching mode.
* *