This commit is contained in:
2026-05-19 06:22:43 +05:00
parent 4589b634be
commit 1a640a8f01
129 changed files with 15336 additions and 26 deletions
+6
View File
@@ -0,0 +1,6 @@
var searchData=
[
['02_2005_202026_0',['02 05 2026',['../md_DIARY.html#autotoc_md10',1,'02.05.2026'],['../md_PROGRESS.html#autotoc_md15',1,'02.05.2026']]],
['04_202026_1',['04 2026',['../md_README_8old.html#autotoc_md74',1,'Особенности архитектуры, решений и тактик (добавлено 22.04.2026)'],['../md_PROGRESS.html#autotoc_md19',1,'10.04.2026'],['../md_PROGRESS.html#autotoc_md18',1,'13.04.2026'],['../md_PROGRESS.html#autotoc_md17',1,'15.04.2026'],['../md_DIARY.html#autotoc_md1',1,'22.04.2026'],['../md_PROGRESS.html#autotoc_md16',1,'22.04.2026'],['../md_DIARY.html#autotoc_md2',1,'23.04.2026'],['../index.html#autotoc_md53',1,'26.04.2026'],['../index.html#autotoc_md54',1,'28.04.2026']]],
['05_202026_2',['05 2026',['../md_DIARY.html#autotoc_md10',1,'02.05.2026'],['../md_PROGRESS.html#autotoc_md15',1,'02.05.2026'],['../md_PROGRESS.html#autotoc_md14',1,'11.05.2026']]]
];
+10
View File
@@ -0,0 +1,10 @@
var searchData=
[
['1 месяц_0',['1 месяц',['../index.html#autotoc_md41',1,'Этап 7. Релиз — 1 месяц'],['../md_README_8old.html#autotoc_md70',1,'Этап 7. Релиз MVP — 1 месяц']]],
['12 месяца_1',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]],
['1_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_2',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['10_2004_202026_3',['10.04.2026',['../md_PROGRESS.html#autotoc_md19',1,'']]],
['11_2005_202026_4',['11.05.2026',['../md_PROGRESS.html#autotoc_md14',1,'']]],
['13_2004_202026_5',['13.04.2026',['../md_PROGRESS.html#autotoc_md18',1,'']]],
['15_2004_202026_6',['15.04.2026',['../md_PROGRESS.html#autotoc_md17',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['readme_20md_0',['README.md',['../md_README_8old.html',1,'']]],
['rsa_20xor_20—_2012 месяца_1',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['sfml_20—_2034 месяца_0',['sfml — 34 месяца',['../md_README_8old.html#autotoc_md66',1,'Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца'],['../index.html#autotoc_md38',1,'Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['todo_20md_0',['TODO.md',['../md_TODO.html',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['xogame_0',['xogame',['../md_README_8old.html#autotoc_md79',1,'Начата разработка общих модулей, конкретно - XOGame.'],['../index.html#autotoc_md51',1,'XOGame']]],
['xor_20—_2012 месяца_1',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['yagni_0',['yagni',['../index.html#autotoc_md49',1,'Основная стратегия KISS+YAGNI'],['../md_README_8old.html#autotoc_md78',1,'Основная стратегия KISS+YAGNI']]],
['yandexgpt_205_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]]
];
+9
View File
@@ -0,0 +1,9 @@
var searchData=
[
['адаптация_0',['Гибкость и адаптация',['../md_README_8old.html#autotoc_md72',1,'']]],
['алисаai_20и_20вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['анализ_20формата_20diary_20md_2',['Анализ формата DIARY.md',['../md_DIARY.html#autotoc_md4',1,'']]],
['архитектуры_20решений_20и_20тактик_20добавлено_2022_2004_202026_3',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]],
['аспект_4',['аспект',['../index.html#autotoc_md46',1,'ИИ аспект'],['../md_README_8old.html#autotoc_md75',1,'ИИ аспект'],['../index.html#autotoc_md48',1,'Образовательный аспект'],['../md_README_8old.html#autotoc_md77',1,'Образовательный аспект']]],
['ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_5',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['бд_20—_2023 месяца_0',['бд — 23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца']]],
['блок_20исключительно_20для_20yandexgpt_205_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]]
];
+7
View File
@@ -0,0 +1,7 @@
var searchData=
[
['войти_20в_20it_0',['войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]],
['вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['в_20процессе_2',['Задачи в процессе',['../md_TODO.html#autotoc_md86',1,'']]],
['в_20it_3',['в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['гибкость_20и_20адаптация_0',['Гибкость и адаптация',['../md_README_8old.html#autotoc_md72',1,'']]]
];
+10
View File
@@ -0,0 +1,10 @@
var searchData=
[
['десктоп‑клиент_20c_20sfml_20—_2034 месяца_0',['десктоп‑клиент c sfml — 3–4 месяца',['../md_README_8old.html#autotoc_md66',1,'Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца'],['../index.html#autotoc_md38',1,'Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца']]],
['дисклеймер_1',['Дисклеймер',['../index.html#autotoc_md42',1,'']]],
['для_20кого_20этот_20проект_2',['Для кого этот проект',['../index.html#autotoc_md23',1,'']]],
['для_20yandexgpt_205_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_3',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['добавлено_2022_2004_202026_4',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]],
['дорожная_20карта_5',['Реалистичный план этапов (дорожная карта)',['../md_README_8old.html#autotoc_md63',1,'']]],
['до_20публикации_20проекта_6',['До публикации проекта',['../md_PROGRESS.html#autotoc_md20',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['есть_0',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['железяков_3a_0',['Расчёт железяков:',['../index.html#autotoc_md55',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['задачи_20в_20процессе_0',['Задачи в процессе',['../md_TODO.html#autotoc_md86',1,'']]],
['заключение_1',['Заключение',['../md_DIARY.html#autotoc_md9',1,'']]]
];
+19
View File
@@ -0,0 +1,19 @@
var searchData=
[
['ии_20аспект_0',['ии аспект',['../md_README_8old.html#autotoc_md75',1,'ИИ аспект'],['../index.html#autotoc_md46',1,'ИИ аспект']]],
['ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['ии_20или_20войти_20в_20it_2',['ии или войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]],
['или_20войти_20в_20it_3',['или войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]],
['имитация_20не_20работает_4',['Почему имитация не работает',['../md_DIARY.html#autotoc_md8',1,'']]],
['инструменты_5',['Инструменты',['../index.html#autotoc_md31',1,'']]],
['интеграция_20и_20тестирование_20—_202–3 месяца_6',['интеграция и тестирование — 2–3 месяца',['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]],
['информация_7',['Информация',['../md_TODO.html#autotoc_md84',1,'']]],
['инфраструктура_8',['Инфраструктура',['../index.html#autotoc_md28',1,'']]],
['инфраструктура_20—_202–4_20недели_9',['Этап 1. Инфраструктура — 2–4 недели',['../index.html#autotoc_md35',1,'']]],
['исключительно_20для_20yandexgpt_205_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_10',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['и_20адаптация_11',['Гибкость и адаптация',['../md_README_8old.html#autotoc_md72',1,'']]],
['и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_12',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['и_20спецификации_13',['Стандарты и спецификации',['../index.html#autotoc_md30',1,'']]],
['и_20тактик_20добавлено_2022_2004_202026_14',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]],
['и_20тестирование_20—_202–3 месяца_15',['и тестирование — 2–3 месяца',['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]]
];
+11
View File
@@ -0,0 +1,11 @@
var searchData=
[
['как_20есть_0',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['карта_1',['Реалистичный план этапов (дорожная карта)',['../md_README_8old.html#autotoc_md63',1,'']]],
['клиент_2',['Клиент',['../index.html#autotoc_md27',1,'']]],
['ключевые_20особенности_20оригинального_20формата_3',['Ключевые особенности оригинального формата',['../md_DIARY.html#autotoc_md5',1,'']]],
['кого_20этот_20проект_4',['Для кого этот проект',['../index.html#autotoc_md23',1,'']]],
['конкретно_20xogame_5',['Начата разработка общих модулей, конкретно - XOGame.',['../md_README_8old.html#autotoc_md79',1,'']]],
['контакты_6',['контакты',['../index.html#autotoc_md44',1,'Контакты'],['../md_README_8old.html#autotoc_md81',1,'Контакты']]],
['крестики‑нолики_20с_20ии_20или_20войти_20в_20it_7',['крестики‑нолики с ии или войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]]
];
+6
View File
@@ -0,0 +1,6 @@
var searchData=
[
['лирическое_20отступление_0',['Лирическое отступление',['../index.html#autotoc_md45',1,'']]],
['лицензия_1',['лицензия',['../index.html#autotoc_md43',1,'Лицензия'],['../md_README_8old.html#autotoc_md80',1,'Лицензия']]],
['логика_20нейросеть_20—_2034 месяца_2',['логика нейросеть — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца']]]
];
+10
View File
@@ -0,0 +1,10 @@
var searchData=
[
['23 месяца_0',['23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца'],['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]],
['24_20недели_1',['Этап 1. Инфраструктура — 2–4 недели',['../index.html#autotoc_md35',1,'']]],
['2026_2',['2026',['../md_README_8old.html#autotoc_md74',1,'Особенности архитектуры, решений и тактик (добавлено 22.04.2026)'],['../md_DIARY.html#autotoc_md10',1,'02.05.2026'],['../md_PROGRESS.html#autotoc_md15',1,'02.05.2026'],['../md_PROGRESS.html#autotoc_md19',1,'10.04.2026'],['../md_PROGRESS.html#autotoc_md14',1,'11.05.2026'],['../md_PROGRESS.html#autotoc_md18',1,'13.04.2026'],['../md_PROGRESS.html#autotoc_md17',1,'15.04.2026'],['../md_PROGRESS.html#autotoc_md16',1,'22.04.2026'],['../md_DIARY.html#autotoc_md1',1,'22.04.2026'],['../md_DIARY.html#autotoc_md2',1,'23.04.2026'],['../index.html#autotoc_md53',1,'26.04.2026'],['../index.html#autotoc_md54',1,'28.04.2026']]],
['22_2004_202026_3',['22 04 2026',['../md_README_8old.html#autotoc_md74',1,'Особенности архитектуры, решений и тактик (добавлено 22.04.2026)'],['../md_DIARY.html#autotoc_md1',1,'22.04.2026'],['../md_PROGRESS.html#autotoc_md16',1,'22.04.2026']]],
['23_2004_202026_4',['23.04.2026',['../md_DIARY.html#autotoc_md2',1,'']]],
['26_2004_202026_5',['26.04.2026',['../index.html#autotoc_md53',1,'']]],
['28_2004_202026_6',['28.04.2026',['../index.html#autotoc_md54',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['модулей_0',['Начата разработка общих модулей.',['../index.html#autotoc_md50',1,'']]],
['модулей_20конкретно_20xogame_1',['Начата разработка общих модулей, конкретно - XOGame.',['../md_README_8old.html#autotoc_md79',1,'']]]
];
+10
View File
@@ -0,0 +1,10 @@
var searchData=
[
['начата_20разработка_20общих_20модулей_0',['Начата разработка общих модулей.',['../index.html#autotoc_md50',1,'']]],
['начата_20разработка_20общих_20модулей_20конкретно_20xogame_1',['Начата разработка общих модулей, конкретно - XOGame.',['../md_README_8old.html#autotoc_md79',1,'']]],
['на_20c_20логика_20нейросеть_20—_2034 месяца_2',['на c логика нейросеть — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца']]],
['на_20php_20api_20бд_20—_2023 месяца_3',['на php api бд — 23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца']]],
['недели_4',['Этап 1. Инфраструктура — 2–4 недели',['../index.html#autotoc_md35',1,'']]],
['нейросеть_20—_2034 месяца_5',['нейросеть — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца']]],
['не_20работает_6',['Почему имитация не работает',['../md_DIARY.html#autotoc_md8',1,'']]]
];
+16
View File
@@ -0,0 +1,16 @@
var searchData=
[
['обозначения_0',['обозначения',['../md_TODO.html#autotoc_md85',1,'Условные обозначения'],['../md_PROGRESS.html#autotoc_md13',1,'Условные обозначения']]],
['оборудование_1',['Оборудование',['../index.html#autotoc_md29',1,'']]],
['образовательный_20аспект_2',['образовательный аспект',['../md_README_8old.html#autotoc_md77',1,'Образовательный аспект'],['../index.html#autotoc_md48',1,'Образовательный аспект']]],
['общих_20модулей_3',['Начата разработка общих модулей.',['../index.html#autotoc_md50',1,'']]],
['общих_20модулей_20конкретно_20xogame_4',['Начата разработка общих модулей, конкретно - XOGame.',['../md_README_8old.html#autotoc_md79',1,'']]],
['оригинального_20подхода_5',['Ценность оригинального подхода',['../md_DIARY.html#autotoc_md6',1,'']]],
['оригинального_20формата_6',['Ключевые особенности оригинального формата',['../md_DIARY.html#autotoc_md5',1,'']]],
['оригинал_20_3a_7',['Промпт(оригинал):',['../index.html#autotoc_md56',1,'']]],
['основная_20стратегия_20kiss_20yagni_8',['основная стратегия kiss yagni',['../index.html#autotoc_md49',1,'Основная стратегия KISS+YAGNI'],['../md_README_8old.html#autotoc_md78',1,'Основная стратегия KISS+YAGNI']]],
['основной_20посыл_9',['основной посыл',['../md_README_8old.html#autotoc_md76',1,'Основной посыл'],['../index.html#autotoc_md47',1,'Основной посыл']]],
['особенности_20архитектуры_20решений_20и_20тактик_20добавлено_2022_2004_202026_10',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]],
['особенности_20оригинального_20формата_11',['Ключевые особенности оригинального формата',['../md_DIARY.html#autotoc_md5',1,'']]],
['отступление_12',['Лирическое отступление',['../index.html#autotoc_md45',1,'']]]
];
+18
View File
@@ -0,0 +1,18 @@
var searchData=
[
['парадигмы_0',['Парадигмы',['../index.html#autotoc_md24',1,'']]],
['план_20реализации_1',['План реализации',['../index.html#autotoc_md34',1,'']]],
['план_20этапов_20дорожная_20карта_2',['Реалистичный план этапов (дорожная карта)',['../md_README_8old.html#autotoc_md63',1,'']]],
['подхода_3',['Ценность оригинального подхода',['../md_DIARY.html#autotoc_md6',1,'']]],
['полезные_20ссылки_4',['Полезные ссылки',['../md_USEFULL__LINKS.html',1,'']]],
['посыл_5',['посыл',['../md_README_8old.html#autotoc_md76',1,'Основной посыл'],['../index.html#autotoc_md47',1,'Основной посыл']]],
['почему_20имитация_20не_20работает_6',['Почему имитация не работает',['../md_DIARY.html#autotoc_md8',1,'']]],
['по_20сохранению_20формата_7',['Рекомендации по сохранению формата',['../md_DIARY.html#autotoc_md7',1,'']]],
['прогресс_8',['прогресс',['../index.html#autotoc_md32',1,'Прогресс'],['../md_README_8old.html#autotoc_md62',1,'Прогресс']]],
['проекта_9',['проекта',['../md_PROGRESS.html#autotoc_md20',1,'До публикации проекта'],['../index.html#autotoc_md22',1,'Цель проекта'],['../md_README_8old.html#autotoc_md59',1,'Цель проекта']]],
['проект_10',['Для кого этот проект',['../index.html#autotoc_md23',1,'']]],
['промпт_20оригинал_20_3a_11',['Промпт(оригинал):',['../index.html#autotoc_md56',1,'']]],
['процессе_12',['Задачи в процессе',['../md_TODO.html#autotoc_md86',1,'']]],
['прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_13',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['публикации_20проекта_14',['До публикации проекта',['../md_PROGRESS.html#autotoc_md20',1,'']]]
];
+13
View File
@@ -0,0 +1,13 @@
var searchData=
[
['работает_0',['Почему имитация не работает',['../md_DIARY.html#autotoc_md8',1,'']]],
['разработка_20общих_20модулей_1',['Начата разработка общих модулей.',['../index.html#autotoc_md50',1,'']]],
['разработка_20общих_20модулей_20конкретно_20xogame_2',['Начата разработка общих модулей, конкретно - XOGame.',['../md_README_8old.html#autotoc_md79',1,'']]],
['расчёт_20железяков_3a_3',['Расчёт железяков:',['../index.html#autotoc_md55',1,'']]],
['реализации_4',['План реализации',['../index.html#autotoc_md34',1,'']]],
['реалистичный_20план_20этапов_20дорожная_20карта_5',['Реалистичный план этапов (дорожная карта)',['../md_README_8old.html#autotoc_md63',1,'']]],
['рекомендации_20по_20сохранению_20формата_6',['Рекомендации по сохранению формата',['../md_DIARY.html#autotoc_md7',1,'']]],
['релиз_20—_201 месяц_7',['Этап 7. Релиз — 1 месяц',['../index.html#autotoc_md41',1,'']]],
['релиз_20mvp_20—_201 месяц_8',['Этап 7. Релиз MVP — 1 месяц',['../md_README_8old.html#autotoc_md70',1,'']]],
['решений_20и_20тактик_20добавлено_2022_2004_202026_9',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]]
];
+14
View File
@@ -0,0 +1,14 @@
var searchData=
[
['сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_0',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['сервер_1',['Сервер',['../index.html#autotoc_md26',1,'']]],
['сервер_20на_20php_20api_20бд_20—_2023 месяца_2',['сервер на php api бд — 2–3 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца']]],
['сохранению_20формата_3',['Рекомендации по сохранению формата',['../md_DIARY.html#autotoc_md7',1,'']]],
['спецификации_4',['Стандарты и спецификации',['../index.html#autotoc_md30',1,'']]],
['ссылки_5',['Полезные ссылки',['../md_USEFULL__LINKS.html',1,'']]],
['стандарты_20и_20спецификации_6',['Стандарты и спецификации',['../index.html#autotoc_md30',1,'']]],
['статус_7',['статус',['../index.html#autotoc_md33',1,'Статус'],['../md_README_8old.html#autotoc_md61',1,'Текущий статус']]],
['стратегия_20kiss_20yagni_8',['стратегия kiss yagni',['../index.html#autotoc_md49',1,'Основная стратегия KISS+YAGNI'],['../md_README_8old.html#autotoc_md78',1,'Основная стратегия KISS+YAGNI']]],
['суть_20челленджа_9',['Суть челленджа',['../md_README_8old.html#autotoc_md60',1,'']]],
['с_20ии_20или_20войти_20в_20it_10',['с ии или войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]]
];
+7
View File
@@ -0,0 +1,7 @@
var searchData=
[
['тактик_20добавлено_2022_2004_202026_0',['Особенности архитектуры, решений и тактик (добавлено 22.04.2026)',['../md_README_8old.html#autotoc_md74',1,'']]],
['текущий_20статус_1',['Текущий статус',['../md_README_8old.html#autotoc_md61',1,'']]],
['тестирование_20—_202–3 месяца_2',['тестирование — 2–3 месяца',['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]],
['технологии_3',['технологии',['../index.html#autotoc_md25',1,'Технологии'],['../md_README_8old.html#autotoc_md73',1,'Технологии']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['условные_20обозначения_0',['условные обозначения',['../md_PROGRESS.html#autotoc_md13',1,'Условные обозначения'],['../md_TODO.html#autotoc_md85',1,'Условные обозначения']]]
];
+6
View File
@@ -0,0 +1,6 @@
var searchData=
[
['формата_0',['формата',['../md_DIARY.html#autotoc_md5',1,'Ключевые особенности оригинального формата'],['../md_DIARY.html#autotoc_md7',1,'Рекомендации по сохранению формата']]],
['формата_20diary_20md_1',['Анализ формата DIARY.md',['../md_DIARY.html#autotoc_md4',1,'']]],
['формат_2',['Формат',['../md_PROGRESS.html#autotoc_md12',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['цель_20проекта_0',['цель проекта',['../index.html#autotoc_md22',1,'Цель проекта'],['../md_README_8old.html#autotoc_md59',1,'Цель проекта']]],
['ценность_20оригинального_20подхода_1',['Ценность оригинального подхода',['../md_DIARY.html#autotoc_md6',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['челленджа_0',['Суть челленджа',['../md_README_8old.html#autotoc_md60',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['шифрование_20rsa_20xor_20—_2012 месяца_0',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]]
];
+18
View File
@@ -0,0 +1,18 @@
var searchData=
[
['этап 1_20инфраструктура_20—_202–4_20недели_0',['Этап 1. Инфраструктура — 2–4 недели',['../index.html#autotoc_md35',1,'']]],
['этап 1_20ядро_20на_20c_20логика_20нейросеть_20—_2034 месяца_1',['Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'']]],
['этап 2_20сервер_20на_20php_20api_20бд_20—_2023 месяца_2',['Этап 2. Сервер на PHP (API + БД) — 23 месяца',['../md_README_8old.html#autotoc_md65',1,'']]],
['этап 2_20ядро_20на_20c_20логика_20нейросеть_20—_2034 месяца_3',['Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца',['../index.html#autotoc_md36',1,'']]],
['этап 3_20десктоп‑клиент_20c_20sfml_20—_2034 месяца_4',['Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца',['../md_README_8old.html#autotoc_md66',1,'']]],
['этап 3_20сервер_20на_20php_20api_20бд_20—_2023 месяца_5',['Этап 3. Сервер на PHP (API + БД) — 23 месяца',['../index.html#autotoc_md37',1,'']]],
['этап 4_20десктоп‑клиент_20c_20sfml_20—_2034 месяца_6',['Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца',['../index.html#autotoc_md38',1,'']]],
['этап 4_20шифрование_20rsa_20xor_20—_2012 месяца_7',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]],
['этап 5_20android‑клиент_20kotlin_20ndk_20—_2046 месяцев_8',['этап 5 android‑клиент kotlin ndk — 46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]],
['этап 6_20интеграция_20и_20тестирование_20—_202–3 месяца_9',['этап 6 интеграция и тестирование — 2–3 месяца',['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]],
['этап 7_20релиз_20—_201 месяц_10',['Этап 7. Релиз — 1 месяц',['../index.html#autotoc_md41',1,'']]],
['этап 7_20релиз_20mvp_20—_201 месяц_11',['Этап 7. Релиз MVP — 1 месяц',['../md_README_8old.html#autotoc_md70',1,'']]],
['этапов_20дорожная_20карта_12',['Реалистичный план этапов (дорожная карта)',['../md_README_8old.html#autotoc_md63',1,'']]],
['этот_20блок_20исключительно_20для_20yandexgpt_205_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_13',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['этот_20проект_14',['Для кого этот проект',['../index.html#autotoc_md23',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['ядро_20на_20c_20логика_20нейросеть_20—_2034 месяца_0',['ядро на c логика нейросеть — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца']]]
];
+9
View File
@@ -0,0 +1,9 @@
var searchData=
[
['—_201 месяц_0',['— 1 месяц',['../index.html#autotoc_md41',1,'Этап 7. Релиз — 1 месяц'],['../md_README_8old.html#autotoc_md70',1,'Этап 7. Релиз MVP — 1 месяц']]],
['—_2012 месяца_1',['Этап 4. Шифрование (RSA + XOR) — 12 месяца',['../md_README_8old.html#autotoc_md67',1,'']]],
['—_2023 месяца_2',['— 23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md40',1,'Этап 6. Интеграция и тестирование — 2–3 месяца'],['../md_README_8old.html#autotoc_md69',1,'Этап 6. Интеграция и тестирование — 2–3 месяца']]],
['—_2024_20недели_3',['Этап 1. Инфраструктура — 2–4 недели',['../index.html#autotoc_md35',1,'']]],
['—_2034 месяца_4',['— 34 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../md_README_8old.html#autotoc_md66',1,'Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца'],['../index.html#autotoc_md38',1,'Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца']]],
['—_2046 месяцев_5',['— 46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['34 месяца_0',['34 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../md_README_8old.html#autotoc_md66',1,'Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца'],['../index.html#autotoc_md38',1,'Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['46 месяцев_0',['46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['5_201_20pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_0',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['_3a_0',['Промпт(оригинал):',['../index.html#autotoc_md56',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['android‑клиент_20kotlin_20ndk_20—_2046 месяцев_0',['android‑клиент kotlin ndk — 46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]],
['api_20бд_20—_2023 месяца_1',['api бд — 23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['c_20логика_20нейросеть_20—_2034 месяца_0',['c логика нейросеть — 3–4 месяца',['../md_README_8old.html#autotoc_md64',1,'Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца'],['../index.html#autotoc_md36',1,'Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца']]],
['c_20sfml_20—_2034 месяца_1',['c sfml — 34 месяца',['../md_README_8old.html#autotoc_md66',1,'Этап 3. Десктоп‑клиент (C++/SFML) — 34 месяца'],['../index.html#autotoc_md38',1,'Этап 4. Десктоп‑клиент (C++/SFML) — 34 месяца']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['diary_20md_0',['diary md',['../md_DIARY.html#autotoc_md4',1,'Анализ формата DIARY.md'],['../md_DIARY.html',1,'DIARY.md']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['fxalloc_0',['FXAlloc',['../index.html#autotoc_md52',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['it_0',['it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['kiss_20yagni_0',['kiss yagni',['../index.html#autotoc_md49',1,'Основная стратегия KISS+YAGNI'],['../md_README_8old.html#autotoc_md78',1,'Основная стратегия KISS+YAGNI']]],
['kotlin_20ndk_20—_2046 месяцев_1',['kotlin ndk — 46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]]
];
+6
View File
@@ -0,0 +1,6 @@
var searchData=
[
['md_0',['md',['../md_DIARY.html#autotoc_md4',1,'Анализ формата DIARY.md'],['../md_DIARY.html',1,'DIARY.md'],['../md_PROGRESS.html',1,'PROGRESS.md'],['../md_README_8old.html',1,'README.md'],['../md_TODO.html',1,'TODO.md']]],
['mvp_20—_201 месяц_1',['Этап 7. Релиз MVP — 1 месяц',['../md_README_8old.html#autotoc_md70',1,'']]],
['my_20project_2',['My Project',['../index.html',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['ndk_20—_2046 месяцев_0',['ndk — 46 месяцев',['../index.html#autotoc_md39',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев'],['../md_README_8old.html#autotoc_md68',1,'Этап 5. Android‑клиент (Kotlin + NDK) — 46 месяцев']]],
['neurox_3a_20крестики‑нолики_20с_20ии_20или_20войти_20в_20it_1',['neurox: крестики‑нолики с ии или войти в it',['../index.html#autotoc_md21',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT'],['../md_README_8old.html#autotoc_md58',1,'NeurOX: Крестики‑нолики с ИИ или войти в IT']]]
];
+7
View File
@@ -0,0 +1,7 @@
var searchData=
[
['php_20api_20бд_20—_2023 месяца_0',['php api бд — 23 месяца',['../md_README_8old.html#autotoc_md65',1,'Этап 2. Сервер на PHP (API + БД) — 23 месяца'],['../index.html#autotoc_md37',1,'Этап 3. Сервер на PHP (API + БД) — 23 месяца']]],
['pro_20и_20прочих_20ии_20ассистентов_20сгенерирован_20yandexgpt_205_201_20pro_20алисаai_20и_20вставлен_20как_20есть_1',['Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"',['../md_DIARY.html#autotoc_md3',1,'']]],
['progress_20md_2',['PROGRESS.md',['../md_PROGRESS.html',1,'']]],
['project_3',['My Project',['../index.html',1,'']]]
];
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 11 11"
height="11"
width="11"
id="svg2"
version="1.1">
<defs
id="defs6" />
<path
id="path12"
d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 947 B

+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 20 19"
height="19"
width="20"
id="svg2"
version="1.1">
<defs
id="defs6" />
<circle
r="3.5"
cy="8.5"
cx="5.5"
id="path4611"
style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="path4630"
d="m 8.1085854,11.109059 2.7823556,2.782356"
style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 804 B

+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 20 19"
height="19"
width="20"
id="svg2"
version="1.1">
<defs
id="defs6" />
<circle
r="3.5"
cy="8.5"
cx="5.5"
id="path4611"
style="fill:#000000;fill-opacity:0;stroke:#C5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="path4630"
d="m 8.1085854,11.109059 2.7823556,2.782356"
style="fill:none;stroke:#C5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 804 B

+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
width="20"
height="19"
viewBox="0 0 20 19"
>
<defs
id="defs6" />
<circle
style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
id="path4611"
cx="5.5"
cy="8.5"
r="3.5" />
<path
style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11,7 13.5,10 16,7 Z"
id="path4609"
/>
<path
style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 8.1085854,11.109059 2.7823556,2.782356"
id="path4630"
/>
</svg>

After

Width:  |  Height:  |  Size: 1019 B

+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
width="20"
height="19"
viewBox="0 0 20 19"
>
<defs
id="defs6" />
<circle
style="fill:#000000;fill-opacity:0;stroke:#c5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
id="path4611"
cx="5.5"
cy="8.5"
r="3.5" />
<path
style="fill:#c5C5C5;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 11,7 13.5,10 16,7 Z"
id="path4609"
/>
<path
style="fill:none;stroke:#c5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 8.1085854,11.109059 2.7823556,2.782356"
id="path4630"
/>
</svg>

After

Width:  |  Height:  |  Size: 1019 B

+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['diary_20md_0',['DIARY.md',['../md_DIARY.html',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['md_0',['md',['../md_DIARY.html',1,'DIARY.md'],['../md_PROGRESS.html',1,'PROGRESS.md'],['../md_README_8old.html',1,'README.md'],['../md_TODO.html',1,'TODO.md']]],
['my_20project_1',['My Project',['../index.html',1,'']]]
];
+5
View File
@@ -0,0 +1,5 @@
var searchData=
[
['progress_20md_0',['PROGRESS.md',['../md_PROGRESS.html',1,'']]],
['project_1',['My Project',['../index.html',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['readme_20md_0',['README.md',['../md_README_8old.html',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['todo_20md_0',['TODO.md',['../md_TODO.html',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['полезные_20ссылки_0',['Полезные ссылки',['../md_USEFULL__LINKS.html',1,'']]]
];
+4
View File
@@ -0,0 +1,4 @@
var searchData=
[
['ссылки_0',['Полезные ссылки',['../md_USEFULL__LINKS.html',1,'']]]
];
+291
View File
@@ -0,0 +1,291 @@
/*---------------- Search Box positioning */
#main-menu > li:last-child {
/* This <li> object is the parent of the search bar */
display: flex;
justify-content: center;
align-items: center;
height: 36px;
margin-right: 1em;
}
/*---------------- Search box styling */
.SRPage * {
font-weight: normal;
line-height: normal;
}
dark-mode-toggle {
margin-left: 5px;
display: flex;
float: right;
}
#MSearchBox {
display: inline-block;
white-space : nowrap;
background: var(--search-background-color);
border-radius: 0.65em;
box-shadow: var(--search-box-shadow);
z-index: 102;
}
#MSearchBox .left {
display: inline-block;
vertical-align: middle;
height: 1.4em;
}
#MSearchSelect {
display: inline-block;
vertical-align: middle;
width: 20px;
height: 19px;
background-image: var(--search-magnification-select-image);
margin: 0 0 0 0.3em;
padding: 0;
}
#MSearchSelectExt {
display: inline-block;
vertical-align: middle;
width: 10px;
height: 19px;
background-image: var(--search-magnification-image);
margin: 0 0 0 0.5em;
padding: 0;
}
#MSearchField {
display: inline-block;
vertical-align: middle;
width: 7.5em;
height: 19px;
margin: 0 0.15em;
padding: 0;
line-height: 1em;
border:none;
color: var(--search-foreground-color);
outline: none;
font-family: var(--font-family-search);
-webkit-border-radius: 0px;
border-radius: 0px;
background: none;
}
@media(hover: none) {
/* to avoid zooming on iOS */
#MSearchField {
font-size: 16px;
}
}
#MSearchBox .right {
display: inline-block;
vertical-align: middle;
width: 1.4em;
height: 1.4em;
}
#MSearchClose {
display: none;
font-size: inherit;
background : none;
border: none;
margin: 0;
padding: 0;
outline: none;
}
#MSearchCloseImg {
padding: 0.3em;
margin: 0;
}
.MSearchBoxActive #MSearchField {
color: var(--search-active-color);
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid var(--search-filter-border-color);
background-color: var(--search-filter-background-color);
z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt var(--font-family-search);
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: var(--font-family-monospace);
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: var(--search-filter-foreground-color);
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: var(--search-filter-foreground-color);
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: var(--search-filter-highlight-text-color);
background-color: var(--search-filter-highlight-bg-color);
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
/*width: 60ex;*/
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid var(--search-results-border-color);
background-color: var(--search-results-background-color);
z-index:10000;
width: 300px;
height: 400px;
overflow: auto;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
div.SRPage {
margin: 5px 2px;
background-color: var(--search-results-background-color);
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: var(--search-results-foreground-color);
font-family: var(--font-family-search);
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: var(--search-results-foreground-color);
font-family: var(--font-family-search);
font-size: 8pt;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
font-family: var(--font-family-search);
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
font-family: var(--font-family-search);
}
.SRResult {
display: none;
}
div.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: var(--nav-gradient-active-image-parent);
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}
+840
View File
@@ -0,0 +1,840 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function convertToId(search)
{
var result = '';
for (i=0;i<search.length;i++)
{
var c = search.charAt(i);
var cn = c.charCodeAt(0);
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
{
result+=c;
}
else if (cn<16)
{
result+="_0"+cn.toString(16);
}
else
{
result+="_"+cn.toString(16);
}
}
return result;
}
function getXPos(item)
{
var x = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
x += item.offsetLeft;
item = item.offsetParent;
}
}
return x;
}
function getYPos(item)
{
var y = 0;
if (item.offsetWidth)
{
while (item && item!=document.body)
{
y += item.offsetTop;
item = item.offsetParent;
}
}
return y;
}
var searchResults = new SearchResults("searchResults");
/* A class handling everything associated with the search panel.
Parameters:
name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, extension)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
if (!extension || extension == "") { extension = ".html"; }
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
this.keyTimeout = 0;
this.keyTimeoutLength = 500;
this.closeSelectionTimeout = 300;
this.lastSearchValue = "";
this.lastResultsPage = "";
this.hideTimeout = 0;
this.searchIndex = 0;
this.searchActive = false;
this.extension = extension;
// ----------- DOM Elements
this.DOMSearchField = function()
{ return document.getElementById("MSearchField"); }
this.DOMSearchSelect = function()
{ return document.getElementById("MSearchSelect"); }
this.DOMSearchSelectWindow = function()
{ return document.getElementById("MSearchSelectWindow"); }
this.DOMPopupSearchResults = function()
{ return document.getElementById("MSearchResults"); }
this.DOMPopupSearchResultsWindow = function()
{ return document.getElementById("MSearchResultsWindow"); }
this.DOMSearchClose = function()
{ return document.getElementById("MSearchClose"); }
this.DOMSearchBox = function()
{ return document.getElementById("MSearchBox"); }
// ------------ Event Handlers
// Called when focus is added or removed from the search field.
this.OnSearchFieldFocus = function(isActive)
{
this.Activate(isActive);
}
this.OnSearchSelectShow = function()
{
var searchSelectWindow = this.DOMSearchSelectWindow();
var searchField = this.DOMSearchSelect();
var left = getXPos(searchField);
var top = getYPos(searchField);
top += searchField.offsetHeight;
// show search selection popup
searchSelectWindow.style.display='block';
searchSelectWindow.style.left = left + 'px';
searchSelectWindow.style.top = top + 'px';
// stop selection hide timer
if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
return false; // to avoid "image drag" default event
}
this.OnSearchSelectHide = function()
{
this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this),
this.closeSelectionTimeout);
}
// Called when the content of the search field is changed.
this.OnSearchFieldChange = function(evt)
{
if (this.keyTimeout) // kill running timer
{
clearTimeout(this.keyTimeout);
this.keyTimeout = 0;
}
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 || e.keyCode==13)
{
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
child.focus();
return;
}
}
return;
}
else
{
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
}
else if (e.keyCode==27) // Escape out of the search field
{
e.stopPropagation();
this.DOMSearchField().blur();
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
this.Activate(false);
return;
}
// strip whitespaces
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue != this.lastSearchValue) // search value has changed
{
if (searchValue != "") // non-empty search
{
// set timer for search update
this.keyTimeout = setTimeout(this.Search.bind(this),
this.keyTimeoutLength);
}
else // empty search field
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.lastSearchValue = '';
}
}
}
this.SelectItemCount = function(id)
{
var count=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
count++;
}
}
return count;
}
this.SelectItemSet = function(id)
{
var i,j=0;
var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
if (child.className=='SelectItem')
{
var node = child.firstChild;
if (j==id)
{
node.innerHTML='&#8226;';
}
else
{
node.innerHTML='&#160;';
}
j++;
}
}
}
// Called when an search filter selection is made.
// set item with index id as the active item
this.OnSelectItem = function(id)
{
this.searchIndex = id;
this.SelectItemSet(id);
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
if (searchValue!="" && this.searchActive) // something was found -> do a search
{
this.Search();
}
}
this.OnSearchSelectKey = function(evt)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
{
this.searchIndex++;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==38 && this.searchIndex>0) // Up
{
this.searchIndex--;
this.OnSelectItem(this.searchIndex);
}
else if (e.keyCode==13 || e.keyCode==27)
{
e.stopPropagation();
this.OnSelectItem(this.searchIndex);
this.CloseSelectionWindow();
this.DOMSearchField().focus();
}
return false;
}
// --------- Actions
// Closes the results window.
this.CloseResultsWindow = function()
{
this.DOMPopupSearchResultsWindow().style.display = 'none';
this.DOMSearchClose().style.display = 'none';
this.Activate(false);
}
this.CloseSelectionWindow = function()
{
this.DOMSearchSelectWindow().style.display = 'none';
}
// Performs a search.
this.Search = function()
{
this.keyTimeout = 0;
// strip leading whitespace
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
var idxChar = searchValue.substr(0, 1).toLowerCase();
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
var jsFile;
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
if (idx!=-1)
{
var hexCode=idx.toString(16);
jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js';
}
var loadJS = function(url, impl, loc){
var scriptTag = document.createElement('script');
scriptTag.src = url;
scriptTag.onload = impl;
scriptTag.onreadystatechange = impl;
loc.appendChild(scriptTag);
}
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
var domSearchBox = this.DOMSearchBox();
var domPopupSearchResults = this.DOMPopupSearchResults();
var domSearchClose = this.DOMSearchClose();
var resultsPath = this.resultsPath;
var handleResults = function() {
document.getElementById("Loading").style.display="none";
if (typeof searchData !== 'undefined') {
createResults(resultsPath);
document.getElementById("NoMatches").style.display="none";
}
if (idx!=-1) {
searchResults.Search(searchValue);
} else { // no file with search results => force empty search results
searchResults.Search('====');
}
if (domPopupSearchResultsWindow.style.display!='block')
{
domSearchClose.style.display = 'inline-block';
var left = getXPos(domSearchBox) + 150;
var top = getYPos(domSearchBox) + 20;
domPopupSearchResultsWindow.style.display = 'block';
left -= domPopupSearchResults.offsetWidth;
var maxWidth = document.body.clientWidth;
var maxHeight = document.body.clientHeight;
var width = 300;
if (left<10) left=10;
if (width+left+8>maxWidth) width=maxWidth-left-8;
var height = 400;
if (height+top+8>maxHeight) height=maxHeight-top-8;
domPopupSearchResultsWindow.style.top = top + 'px';
domPopupSearchResultsWindow.style.left = left + 'px';
domPopupSearchResultsWindow.style.width = width + 'px';
domPopupSearchResultsWindow.style.height = height + 'px';
}
}
if (jsFile) {
loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow());
} else {
handleResults();
}
this.lastSearchValue = searchValue;
}
// -------- Activation Functions
// Activates or deactivates the search panel, resetting things to
// their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
this.searchActive = true;
}
else if (!isActive) // directly remove the panel
{
this.DOMSearchBox().className = 'MSearchBoxInactive';
this.searchActive = false;
this.lastSearchValue = ''
this.lastResultsPage = '';
this.DOMSearchField().value = '';
}
}
}
// -----------------------------------------------------------------------
// The class that handles everything on the search results page.
function SearchResults(name)
{
// The number of matches from the last run of <Search()>.
this.lastMatchCount = 0;
this.lastKey = 0;
this.repeatOn = false;
// Toggles the visibility of the passed element ID.
this.FindChildElement = function(id)
{
var parentElement = document.getElementById(id);
var element = parentElement.firstChild;
while (element && element!=parentElement)
{
if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
{
return element;
}
if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
{
element = element.firstChild;
}
else if (element.nextSibling)
{
element = element.nextSibling;
}
else
{
do
{
element = element.parentNode;
}
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
{
element = element.nextSibling;
}
}
}
}
this.Toggle = function(id)
{
var element = this.FindChildElement(id);
if (element)
{
if (element.style.display == 'block')
{
element.style.display = 'none';
}
else
{
element.style.display = 'block';
}
}
}
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this.Search = function(search)
{
if (!search) // get search word from URL
{
search = window.location.search;
search = search.substring(1); // Remove the leading '?'
search = unescape(search);
}
search = search.replace(/^ +/, ""); // strip leading spaces
search = search.replace(/ +$/, ""); // strip trailing spaces
search = search.toLowerCase();
search = convertToId(search);
var resultRows = document.getElementsByTagName("div");
var matches = 0;
var i = 0;
while (i < resultRows.length)
{
var row = resultRows.item(i);
if (row.className == "SRResult")
{
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
matches++;
}
else
{
row.style.display = 'none';
}
}
i++;
}
document.getElementById("Searching").style.display='none';
if (matches == 0) // no results
{
document.getElementById("NoMatches").style.display='block';
}
else // at least one result
{
document.getElementById("NoMatches").style.display='none';
}
this.lastMatchCount = matches;
return true;
}
// return the first item with index index or higher that is visible
this.NavNext = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index++;
}
return focusItem;
}
this.NavPrev = function(index)
{
var focusItem;
while (1)
{
var focusName = 'Item'+index;
focusItem = document.getElementById(focusName);
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
{
break;
}
else if (!focusItem) // last element
{
break;
}
focusItem=null;
index--;
}
return focusItem;
}
this.ProcessKeys = function(e)
{
if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
}
else if (e.type == "keypress")
{
if (!this.repeatOn)
{
if (this.lastKey) this.repeatOn = true;
return false; // ignore first keypress after keydown
}
}
else if (e.type == "keyup")
{
this.lastKey = 0;
this.repeatOn = false;
}
return this.lastKey!=0;
}
this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
var newIndex = itemIndex-1;
var focusItem = this.NavPrev(newIndex);
if (focusItem)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
{
var n=0;
var tmpElem;
while (1) // search for last child
{
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
if (tmpElem)
{
focusItem = tmpElem;
}
else // found it!
{
break;
}
n++;
}
}
}
if (focusItem)
{
focusItem.focus();
}
else // return focus to search field
{
document.getElementById("MSearchField").focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = itemIndex+1;
var focusItem;
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem && elem.style.display == 'block') // children visible
{
focusItem = document.getElementById('Item'+itemIndex+'_c0');
}
if (!focusItem) focusItem = this.NavNext(newIndex);
if (focusItem) focusItem.focus();
}
else if (this.lastKey==39) // Right
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'block';
}
else if (this.lastKey==37) // Left
{
var item = document.getElementById('Item'+itemIndex);
var elem = this.FindChildElement(item.parentNode.parentNode.id);
if (elem) elem.style.display = 'none';
}
else if (this.lastKey==27) // Escape
{
e.stopPropagation();
searchBox.CloseResultsWindow();
document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
this.NavChild = function(evt,itemIndex,childIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
if (!this.ProcessKeys(e)) return false;
if (this.lastKey==38) // Up
{
if (childIndex>0)
{
var newIndex = childIndex-1;
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
}
else // already at first child, jump to parent
{
document.getElementById('Item'+itemIndex).focus();
}
}
else if (this.lastKey==40) // Down
{
var newIndex = childIndex+1;
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
if (!elem) // last child, jump to parent next parent
{
elem = this.NavNext(itemIndex+1);
}
if (elem)
{
elem.focus();
}
}
else if (this.lastKey==27) // Escape
{
e.stopPropagation();
searchBox.CloseResultsWindow();
document.getElementById("MSearchField").focus();
}
else if (this.lastKey==13) // Enter
{
return true;
}
return false;
}
}
function setKeyActions(elem,action)
{
elem.setAttribute('onkeydown',action);
elem.setAttribute('onkeypress',action);
elem.setAttribute('onkeyup',action);
}
function setClassAttr(elem,attr)
{
elem.setAttribute('class',attr);
elem.setAttribute('className',attr);
}
function createResults(resultsPath)
{
var results = document.getElementById("SRResults");
results.innerHTML = '';
for (var e=0; e<searchData.length; e++)
{
var id = searchData[e][0];
var srResult = document.createElement('div');
srResult.setAttribute('id','SR_'+id);
setClassAttr(srResult,'SRResult');
var srEntry = document.createElement('div');
setClassAttr(srEntry,'SREntry');
var srLink = document.createElement('a');
srLink.setAttribute('id','Item'+e);
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
setClassAttr(srLink,'SRSymbol');
srLink.innerHTML = searchData[e][1][0];
srEntry.appendChild(srLink);
if (searchData[e][1].length==2) // single result
{
srLink.setAttribute('href',resultsPath+searchData[e][1][1][0]);
srLink.setAttribute('onclick','searchBox.CloseResultsWindow()');
if (searchData[e][1][1][1])
{
srLink.setAttribute('target','_parent');
}
else
{
srLink.setAttribute('target','_blank');
}
var srScope = document.createElement('span');
setClassAttr(srScope,'SRScope');
srScope.innerHTML = searchData[e][1][1][2];
srEntry.appendChild(srScope);
}
else // multiple results
{
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
var srChildren = document.createElement('div');
setClassAttr(srChildren,'SRChildren');
for (var c=0; c<searchData[e][1].length-1; c++)
{
var srChild = document.createElement('a');
srChild.setAttribute('id','Item'+e+'_c'+c);
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
setClassAttr(srChild,'SRScope');
srChild.setAttribute('href',resultsPath+searchData[e][1][c+1][0]);
srChild.setAttribute('onclick','searchBox.CloseResultsWindow()');
if (searchData[e][1][c+1][1])
{
srChild.setAttribute('target','_parent');
}
else
{
srChild.setAttribute('target','_blank');
}
srChild.innerHTML = searchData[e][1][c+1][2];
srChildren.appendChild(srChild);
}
srEntry.appendChild(srChildren);
}
srResult.appendChild(srEntry);
results.appendChild(srResult);
}
}
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
results.tabIndex=0;
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
var input = document.getElementById("MSearchSelect");
var searchSelectWindow = document.getElementById("MSearchSelectWindow");
input.tabIndex=0;
input.addEventListener("keydown", function(event) {
if (event.keyCode==13 || event.keyCode==40) {
event.preventDefault();
if (searchSelectWindow.style.display == 'block') {
searchBox.CloseSelectionWindow();
} else {
searchBox.OnSearchSelectShow();
searchBox.DOMSearchSelectWindow().focus();
}
}
});
}
/* @license-end */
+18
View File
@@ -0,0 +1,18 @@
var indexSectionsWithContent =
{
0: "012345:acdfikmnprstxyабвгдежзиклмнопрстуфцчшэя—",
1: "dmprtпс"
};
var indexSectionNames =
{
0: "all",
1: "pages"
};
var indexSectionLabels =
{
0: "All",
1: "Pages"
};