Семейная корзина
+ + +Вклад участников
+Находки
+ +
+ Белый гриб
+ ×12 +
+ Лисички
+ ×15 +
+ diff --git a/lab1/report/img/basket-screen.png b/lab1/report/img/basket-screen.png new file mode 100644 index 0000000..7f147ff Binary files /dev/null and b/lab1/report/img/basket-screen.png differ diff --git a/lab1/report/img/basket-screen2.png b/lab1/report/img/basket-screen2.png new file mode 100644 index 0000000..e989962 Binary files /dev/null and b/lab1/report/img/basket-screen2.png differ diff --git a/lab1/report/img/guide-screen.png b/lab1/report/img/guide-screen.png new file mode 100644 index 0000000..100163e Binary files /dev/null and b/lab1/report/img/guide-screen.png differ diff --git a/lab1/report/report.tex b/lab1/report/report.tex index 1a2d55e..2a97425 100644 --- a/lab1/report/report.tex +++ b/lab1/report/report.tex @@ -989,6 +989,58 @@ \label{fig:navigation-screen} \end{figure} + \newpage + \phantom{text} + \newpage + \subsection{Экран семейной корзины} + + Экран отображает все найденные грибы с возможностью фильтрации, статистику похода и вклад каждого участника. + + \textbf{Основные элементы:} + \begin{itemize} + \item \textbf{Статистика} --- карточка с градиентным фоном показывает общее количество грибов (37), количество видов (6) и время в пути (2:15). + \item \textbf{Вклад участников} --- три карточки с аватарами и счётчиками находок для каждого члена семьи (Иван: 18, Мария: 10, Алиса: 9). + \item \textbf{Карточки находок} --- каждая содержит фото гриба, название, количество экземпляров, автора находки, время и местоположение. Ядовитые грибы выделены предупреждающими бейджами и комментариями. + \end{itemize} + +\begin{figure}[h!] + \centering + \begin{subfigure}[b]{0.34\linewidth} + \centering + \includegraphics[width=\textwidth]{img/basket-screen.png} + % \caption{Общий вид} + \label{fig:basket-screen} + \end{subfigure} + \hspace{1cm} + \begin{subfigure}[b]{0.34\linewidth} + \centering + \includegraphics[width=\textwidth]{img/basket-screen2.png} + % \caption{Детали} + \label{fig:basket-screen2} + \end{subfigure} + \caption{Экран семейной корзины с находками} + \label{fig:basket-screens} +\end{figure} + +\newpage + \subsection{Экран справочника грибов} + + Справочник содержит информацию о распространённых съедобных и ядовитых грибах с фотографиями и описаниями. + + \textbf{Основные элементы:} + \begin{itemize} + \item \textbf{Поисковая строка} --- быстрый поиск гриба по названию. + \item \textbf{Фильтры} --- фильтрация по категориям: все, съедобные, ядовитые, условно-съедобные. + \item \textbf{Карточки грибов} --- фотография, название (русское и латинское), бейдж съедобности, сезон сбора, описание признаков, метки мест обитания. Ядовитые грибы выделены красной рамкой и предупреждающим блоком о возможной путанице с похожими съедобными грибами. + \end{itemize} + +\begin{figure}[h!] + \centering + \includegraphics[width=0.35\linewidth]{img/guide-screen.png} + \caption{Экран справочника грибов} + \label{fig:guide-screen} +\end{figure} + % \section{Выводы} % Описан интерфейс приложения для семейного похода за грибами: выделены заинтересованные лица, их ожидания, требования к платформе, модели пользователей и сценарии. Рассмотрены функции, диалоговые структуры, методы снижения ошибок и особенности дизайна. Подготовленный материал служит основой для создания макета экранов и дальнейшего прототипирования. diff --git a/lab1/screen-forms/basket-screen.css b/lab1/screen-forms/basket-screen.css new file mode 100644 index 0000000..190c868 --- /dev/null +++ b/lab1/screen-forms/basket-screen.css @@ -0,0 +1,239 @@ +/* Специфичные стили для экрана корзины */ + +/* Карточка статистики */ +.stats-card { + background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%); + border-radius: var(--radius-md); + padding: var(--spacing-xl); + margin-bottom: var(--spacing-xxl); + display: flex; + justify-content: space-around; + align-items: center; + box-shadow: var(--shadow-lg); +} + +.stat-item { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--spacing-xs); +} + +.stat-value { + font-size: 32px; + font-weight: var(--font-weight-bold); + color: var(--color-bg-card); + line-height: 1; +} + +.stat-label { + font-size: var(--font-size-small); + color: rgba(255, 255, 255, 0.9); +} + +.stat-divider { + width: 1px; + height: 40px; + background: rgba(255, 255, 255, 0.3); +} + +/* Секция вклада участников */ +.contributors-section { + margin-bottom: var(--spacing-xxl); +} + +.section-subtitle { + font-size: var(--font-size-large); + font-weight: var(--font-weight-semibold); + color: var(--color-text-dark); + margin-bottom: var(--spacing-md); +} + +.contributors { + display: flex; + gap: var(--spacing-md); +} + +.contributor { + flex: 1; + background: var(--color-bg-card); + border-radius: var(--radius-md); + padding: var(--spacing-lg); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--spacing-sm); + box-shadow: var(--shadow-sm); +} + +.contributor-avatar { + font-size: 36px; + width: 56px; + height: 56px; + display: flex; + align-items: center; + justify-content: center; + background: var(--color-bg-secondary); + border-radius: 50%; +} + +.contributor-name { + font-size: var(--font-size-small); + color: var(--color-text-medium); +} + +.contributor-count { + font-size: var(--font-size-xlarge); + font-weight: var(--font-weight-bold); + color: var(--color-primary); +} + +/* Секция находок */ +.findings-section { + margin-bottom: var(--spacing-xl); +} + +.section-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--spacing-md); +} + +.filter-btn { + display: flex; + align-items: center; + gap: var(--spacing-xs); + padding: var(--spacing-xs) var(--spacing-md); + background: var(--color-bg-secondary); + border: none; + border-radius: var(--radius-sm); + font-size: var(--font-size-small); + font-weight: var(--font-weight-medium); + color: var(--color-text-dark); + cursor: pointer; + transition: background var(--transition-fast) ease; +} + +.filter-btn:active { + background: #D5DBDB; +} + +.filter-icon { + font-size: 10px; + color: var(--color-text-medium); +} + +/* Карточка находки */ +.finding-card { + background: var(--color-bg-card); + border-radius: var(--radius-md); + padding: var(--spacing-md); + margin-bottom: var(--spacing-md); + display: flex; + gap: var(--spacing-md); + align-items: center; + box-shadow: var(--shadow-sm); + cursor: pointer; + transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease; +} + +.finding-card:active { + transform: scale(0.98); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.finding-image { + width: 80px; + height: 80px; + border-radius: var(--radius-sm); + object-fit: cover; + flex-shrink: 0; +} + +.finding-content { + flex: 1; + display: flex; + flex-direction: column; + gap: var(--spacing-xs); +} + +.finding-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.finding-name { + font-size: var(--font-size-base); + font-weight: var(--font-weight-semibold); + color: var(--color-text-dark); +} + +.finding-count { + font-size: var(--font-size-base); + font-weight: var(--font-weight-bold); + color: var(--color-primary); +} + +.finding-badge { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 2px var(--spacing-sm); + border-radius: 12px; + font-size: var(--font-size-tiny); + font-weight: var(--font-weight-semibold); +} + +.badge-warning { + background: #FEF5E7; + color: #D68910; +} + +.finding-author { + display: flex; + align-items: center; + gap: var(--spacing-xs); + font-size: var(--font-size-small); +} + +.author-avatar { + font-size: 16px; +} + +.author-name { + color: var(--color-text-dark); + font-weight: var(--font-weight-medium); +} + +.finding-time { + color: var(--color-text-medium); + margin-left: auto; +} + +.finding-location { + font-size: var(--font-size-small); + color: var(--color-text-medium); +} + +.finding-note { + font-size: var(--font-size-small); + color: var(--color-text-dark); + font-style: italic; + padding: var(--spacing-xs) var(--spacing-sm); + background: #FEF5E7; + border-radius: var(--radius-sm); + border-left: 3px solid var(--color-warning); +} + +.finding-action { + font-size: 24px; + color: var(--color-text-medium); + background: none; + border: none; + padding: var(--spacing-sm); + cursor: pointer; + flex-shrink: 0; +} + diff --git a/lab1/screen-forms/basket-screen.html b/lab1/screen-forms/basket-screen.html new file mode 100644 index 0000000..6839855 --- /dev/null +++ b/lab1/screen-forms/basket-screen.html @@ -0,0 +1,175 @@ + + + +
+ + +
+
+
+
+
+
+
+
+