Initial QOffice implementation
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
import type { QOfficeState } from "../types";
|
||||
|
||||
export const initialState: QOfficeState = {
|
||||
activeApp: "word",
|
||||
word: {
|
||||
id: "qword-project-proposal",
|
||||
title: "Проектное предложение.qdocx",
|
||||
updatedAt: new Date().toISOString(),
|
||||
html: `
|
||||
<h1>Проектное предложение</h1>
|
||||
<h2>1. Обзор</h2>
|
||||
<p>Документ описывает цели, область работ, сроки и ожидаемые результаты предлагаемого проекта.</p>
|
||||
<h2>2. Цели</h2>
|
||||
<p><span style="color: #0f5fae;">Ключевой результат</span>: <span style="background-color: #fff2cc;">подготовить проверяемую версию офисного пакета</span> с импортом и экспортом документов Microsoft Office.</p>
|
||||
<ul>
|
||||
<li>Поставить масштабируемое и сопровождаемое решение.</li>
|
||||
<li>Повысить операционную эффективность.</li>
|
||||
<li>Обеспечить безопасность данных и соответствие требованиям.</li>
|
||||
<li>Показать измеримую бизнес-ценность.</li>
|
||||
</ul>
|
||||
<h2>3. Область работ</h2>
|
||||
<p>Проект включает анализ требований, проектирование системы, разработку, тестирование, внедрение и сопровождение после запуска.</p>
|
||||
<p>Дополнительные материалы доступны по <a href="https://example.com/qoffice/project">ссылке проекта</a>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Этап</th><th>Описание</th><th>Ответственный</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Планирование</td><td>Требования и календарный план</td><td>Алиса К.</td></tr>
|
||||
<tr><td>Проектирование</td><td>Архитектура и UX</td><td>Борис Л.</td></tr>
|
||||
<tr><td>Поставка</td><td>Разработка и контроль качества</td><td>Карина М.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
`
|
||||
},
|
||||
workbook: {
|
||||
id: "qexcell-quarter-plan",
|
||||
title: "Квартальный план.qxlsx",
|
||||
updatedAt: new Date().toISOString(),
|
||||
activeSheet: "sheet-1",
|
||||
sheets: [
|
||||
{
|
||||
id: "sheet-1",
|
||||
name: "Revenue",
|
||||
cells: {
|
||||
A1: "Продукт",
|
||||
B1: "1 кв.",
|
||||
C1: "2 кв.",
|
||||
D1: "3 кв.",
|
||||
E1: "Итого",
|
||||
A2: "Базовый",
|
||||
B2: "12500",
|
||||
C2: "14300",
|
||||
D2: "16800",
|
||||
E2: "=SUM(B2:D2)",
|
||||
A3: "Команды",
|
||||
B3: "8200",
|
||||
C3: "9100",
|
||||
D3: "9900",
|
||||
E3: "=SUM(B3:D3)",
|
||||
A4: "Корпоративный",
|
||||
B4: "19600",
|
||||
C4: "21400",
|
||||
D4: "23800",
|
||||
E4: "=SUM(B4:D4)",
|
||||
A6: "Общий итог",
|
||||
E6: "=SUM(E2:E4)",
|
||||
A8: "Объединённая строка примечания"
|
||||
},
|
||||
mergedCells: [{ start: "A8", end: "E8" }],
|
||||
cellFormats: {
|
||||
B2: { numberFormat: "# ##0.00 ₽" },
|
||||
C2: { numberFormat: "# ##0.00 ₽" },
|
||||
D2: { numberFormat: "# ##0.00 ₽" },
|
||||
E2: { numberFormat: "# ##0.00 ₽" },
|
||||
B3: { numberFormat: "# ##0.00 ₽" },
|
||||
C3: { numberFormat: "# ##0.00 ₽" },
|
||||
D3: { numberFormat: "# ##0.00 ₽" },
|
||||
E3: { numberFormat: "# ##0.00 ₽" },
|
||||
B4: { numberFormat: "# ##0.00 ₽" },
|
||||
C4: { numberFormat: "# ##0.00 ₽" },
|
||||
D4: { numberFormat: "# ##0.00 ₽" },
|
||||
E4: { numberFormat: "# ##0.00 ₽" },
|
||||
E6: { numberFormat: "# ##0.00 ₽" }
|
||||
},
|
||||
charts: [
|
||||
{
|
||||
id: "chart-revenue-total",
|
||||
type: "bar",
|
||||
title: "Итого по продуктам",
|
||||
labelRange: "A2:A4",
|
||||
valueRange: "E2:E4"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
deck: {
|
||||
id: "qpowerpoint-roadmap",
|
||||
title: "Дорожная карта.qpptx",
|
||||
updatedAt: new Date().toISOString(),
|
||||
activeSlideId: "slide-1",
|
||||
slides: [
|
||||
{
|
||||
id: "slide-1",
|
||||
title: "Дорожная карта QOffice",
|
||||
subtitle: "Единая рабочая среда для документов, данных, презентаций и коммуникации.",
|
||||
notes: "Начать с цели продукта и текущего этапа.",
|
||||
theme: "classic"
|
||||
},
|
||||
{
|
||||
id: "slide-2",
|
||||
title: "Модули продукта",
|
||||
subtitle: "QWord, QExcell, QPowerPoint и QOutlook используют общую оболочку и модель хранения.",
|
||||
notes: "Описать общую архитектуру и навигацию между модулями.",
|
||||
theme: "ocean"
|
||||
},
|
||||
{
|
||||
id: "slide-3",
|
||||
title: "Следующий этап",
|
||||
subtitle: "Импорт и экспорт файлов, совместная работа, аудит доступности и подпись пакетов.",
|
||||
notes: "Завершить последовательностью реализации.",
|
||||
theme: "graphite"
|
||||
}
|
||||
]
|
||||
},
|
||||
mail: {
|
||||
activeFolder: "inbox",
|
||||
activeMessageId: "mail-1",
|
||||
messages: [
|
||||
{
|
||||
id: "mail-1",
|
||||
folder: "inbox",
|
||||
from: "Мария Чен",
|
||||
to: "product@qoffice.local",
|
||||
subject: "Контрольный список запуска",
|
||||
body: "Пожалуйста, проверьте этапы редакторов, цели упаковки и ответственных за качество до пятницы.",
|
||||
time: "09:24",
|
||||
read: false,
|
||||
flagged: true,
|
||||
attachments: [
|
||||
{
|
||||
id: "attachment-launch-checklist-1",
|
||||
fileName: "launch-checklist.txt",
|
||||
contentType: "text/plain",
|
||||
size: 37,
|
||||
contentBase64: "0J/RgNC+0LLQtdGA0LjRgtGMIERPQ1gvWExTWC9QUFRYL0VNTA==",
|
||||
disposition: "attachment"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "mail-2",
|
||||
folder: "inbox",
|
||||
from: "Иван Белл",
|
||||
to: "product@qoffice.local",
|
||||
subject: "Проверка формул таблиц",
|
||||
body: "Последний слой таблиц поддерживает диапазоны, основные агрегатные функции, числовые форматы и базовые диаграммы. Следующий шаг — расширение fidelity сложных книг.",
|
||||
time: "Вчера",
|
||||
read: true,
|
||||
flagged: false
|
||||
},
|
||||
{
|
||||
id: "mail-3",
|
||||
folder: "sent",
|
||||
from: "product@qoffice.local",
|
||||
to: "team@qoffice.local",
|
||||
subject: "Заметки дизайн-ревью",
|
||||
body: "Я отправил наблюдения по оболочке, ленте команд, инспектору и строке состояния после последнего ревью.",
|
||||
time: "Пн",
|
||||
read: true,
|
||||
flagged: false
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user