Создайте панель данных с использованием HTML, CSS и JavaScript
Руководство для программистов Python без фреймворков
Делиться

Создание панели мониторинга данных для ваших клиентов, заказчиков или коллег становится неотъемлемой частью набора навыков, необходимых разработчикам программного обеспечения, специалистам по анализу данных, специалистам по машинному обучению и инженерам данных. Даже если вы занимаетесь преимущественно бэкенд-обработкой, обрабатываемые вами данные обычно в какой-то момент должны быть доступны пользователям. Если повезет, в вашей организации может быть специальная команда фронтенд-разработчиков, которая этим занимается, но зачастую это ваша задача.
Быть чистым разработчиком Python без опыта работы с HTML, JavaScript и т. д. больше не является оправданием, поскольку за последние несколько лет появилось много библиотек Python, таких как Streamlit и Gradio.
Но эта статья не о них, потому что я один из тех, кто работает исключительно на Python, и уже поработал со Streamlit и Gradio. Пришло время засучить рукава и посмотреть, смогу ли я освоить новые навыки и создать панель управления, используя проверенные временем инструменты фронтенд-разработки: HTML, JavaScript и CSS.
Данные для нашей панели мониторинга будут поступать из локальной базы данных SQLite. Я создал таблицу sales_data в SQLite, содержащую фиктивные данные о продажах. Вот эти данные в табличной форме.

Ниже приведен код, который вы можете использовать для продолжения и создания собственной базы данных SQLite и таблицы с данными, как показано.
Если вам интересно, почему я добавляю в базу данных лишь несколько записей, то дело не в том, что я считаю, что код не справится с большими объёмами данных. Просто я хотел сосредоточиться на функциональности панели мониторинга, а не отвлекаться на данные. При желании вы можете использовать скрипт, который я привёл ниже, для добавления дополнительных записей во входной набор данных.
Итак, мы еще немного останемся в мире Python и настроим базу данных SQLite программным способом.
import sqlite3 # Определите имя базы данных DATABASE_NAME = «C:\Users\thoma\projects\my-dashboard\sales_data.db» # Подключитесь к базе данных SQLite conn = sqlite3.connect(DATABASE_NAME) # Создайте объект курсора cursor = conn.cursor() # SQL для создания таблицы 'sales' create_table_query = ''' CREATE TABLE IF NOT EXISTS sales ( order_id INTEGER PRIMARY KEY, order_date TEXT, customer_id INTEGER, customer_name TEXT, product_id INTEGER, product_names TEXT, categories TEXT, quantity INTEGER, price REAL, total REAL ); ''' # Выполнить запрос на создание таблицы cursor.execute(create_table_query) # Образец данных для вставки в таблицу 'sales' sample_data = [ (1, «2022-08-01», 245, «Клиент_884», 201, «Смартфон», «Электроника», 3, 90.02, 270.06), (2, «2022-02-19», 701, «Клиент_1672», 205, «Принтер», «Электроника», 6, 12.74, 76.44), (3, «2017-01-01», 184, «Клиент_21720», 208, «Блокнот», «Канцелярские товары», 8, 48.35, 386.80), (4, «2013-03-09», 275, «Клиент_23770», 200, «Ноутбук», «Электроника», 3, 74,85, 224,55), (5, «2022-04-23», 960, «Клиент_23790», 210, «Шкаф», «Офис», 6, 53,77, 322,62), (6, «2019-07-10», 197, «Клиент_25587», 202, «Стол», «Офис», 3, 47,17, 141,51), (7, «2014-11-12», 510, «Клиент_6912», 204, «Монитор», «Электроника», 5, 22,5, 112.5), (8, «2016-07-12», 150, «Customer_17761», 200, «Ноутбук», «Электроника», 9, 49.33, 443.97) ] # SQL для вставки данных в таблицу 'sales' insert_data_query = ''' INSERT INTO sales (order_id, order_date, customer_id, customer_name, product_id, product_names, categories, quantity, price, total) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ''' # Вставка образца данных cursor.executemany(insert_data_query, sample_data) # Зафиксировать транзакцию conn.commit() # Закрыть соединение conn.close() print(f»База данных '{DATABASE_NAME}' создана и заполнена успешно.»)
Функциональность панели инструментов
Наша панель управления будет иметь следующую функциональность.
- Ключевые показатели. Общий доход, общее количество заказов, средняя стоимость заказа, высшая категория.
- Различные типы диаграмм. Доход с течением времени (линейная диаграмма), Доход по категориям (столбчатая диаграмма), Лучшие продукты по доходу (горизонтальная столбчатая диаграмма)
- Фильтрация. По дате и категории.
- Таблица данных. Отображает наши записи данных в виде постраничной таблицы с возможностью поиска.
Создание нашей среды
Далее нам предстоит выполнить ряд шагов по настройке нашей среды.
1/ Установите Node.js.
Node.js — это среда выполнения, которая позволяет запускать JavaScript вне браузера, что позволяет использовать JavaScript для создания быстрых и масштабируемых серверных приложений.
Итак, убедитесь, что Node.js установлен в вашей системе, чтобы иметь возможность запустить локальный сервер и управлять пакетами. Вы можете скачать его с официального сайта Node.js.
2/ Создайте основную папку проекта и подпапки
Откройте командный терминал и выполните следующие команды. Я использую Ubuntu на своём компьютере с Windows, но вы можете изменить настройки в соответствии со своей предпочитаемой утилитой командной строки и системой.
$ mkdir my-dashboard $ cd my-dashboard $ mkdir клиент % mkdir сервер
3/ Инициализация проекта Node
$ npm init -y
Эта команда автоматически создает файл package.json по умолчанию в каталоге вашего проекта, не требуя ввода данных пользователем .
Флаг -y отвечает «да» на все запросы, используя значения по умолчанию для таких полей, как:
- имя
- версия
- описание
- основной
- сценарии
- автор
- лицензия
Вот как выглядел мой файл пакета.
{ «name»: «my-dashboard», «version»: «1.0.0», «main»: «index.js», «scripts»: { «test»: «echo «Ошибка: тест не указан» && выход 1″ }, «keywords»: [], «author»: «», «license»: «ISC», «description»: «», «dependencies»: { «express»: «^4.21.2», «sqlite3»: «^5.1.7» } }
4/ Установка Express и SQLite
SQLite — это легкая реляционная база данных на основе файлов, которая хранит все ваши данные в одном переносимом файле, устраняя необходимость в отдельном сервере.
Express — это минималистичная, гибкая среда веб-приложений для Node.js, которая упрощает создание API и веб-серверов с помощью маршрутизации и промежуточного программного обеспечения.
Мы можем установить оба варианта с помощью команды ниже.
$ npm install express sqlite3
Теперь мы можем приступить к разработке кода. Для этого проекта нам понадобятся четыре файла кода: index.html, server.js, client.js и script.js.
Давайте рассмотрим каждый из них шаг за шагом.
1) клиент/index.html
Панель мониторинга эффективности продаж
Ключевые показатели
Общий доход
$0
Общее количество заказов
0
Средняя стоимость заказа
$0
Верхняя категория
Нет
Необработанные данные
В этом HTML-файле определены основные визуальные элементы нашей панели показателей продаж, включая интерактивные фильтры по дате и категории, раздел, отображающий ключевые показатели продаж, раскрывающееся меню для выбора типов диаграмм и таблицу для необработанных данных.
Для стилизации используется Bootstrap . Для ввода данных используется Flatpickr . Для визуализации используется Chart.js , а для табличного отображения — DataTables . Интерактивность обеспечивается внешним файлом script.js , который мы вскоре рассмотрим.
Bootstrap — популярный фреймворк front-end, изначально разработанный Twitter, который помогает вам проще и быстрее создавать адаптивные и визуально согласованные веб-интерфейсы.
DataTables — это плагин на основе jQuery, который улучшает стандартные элементы HTML

