daniil_shornikov-kanban1
Version:
A basic JavaScript math library for number addition
195 lines (158 loc) • 8.46 kB
Markdown
# Kanban Board Library
Kanban Board - это легкая и гибкая JavaScript библиотека для создания интерактивных канбан-досок. Управляйте задачами, перемещайте их между колонками и назначайте исполнителей с легкостью. Настройте внешний вид доски с помощью множества опций стилизации, чтобы она идеально соответствовала вашему проекту.
## ✨ Особенности
* **Drag & Drop:** Интуитивно понятное перетаскивание задач между колонками.
* **Редактирование:** Добавление, редактирование и удаление задач и колонок.
* **Назначение исполнителей:** Возможность назначать исполнителей задачам.
* **Кастомизация:** Широкие возможности настройки стилей для задач и колонок.
* **Сохранение состояния:** Сохранение и загрузка состояния доски в формате JSON.
* **Легковесность:** Минимальный размер, не перегружающий ваш проект.
* **Функциональность смены состояния перетаскивания** Позволяет включать и выключать перетаскивания задач и колонок.
* **Функциональность сохранения sortdate при перезагрузке** При загрузке с файла sortdate остается в прежнем положении.
## 📦 Установка
```bash
npm install kanban-board
```
🚀 Использование
Подключение библиотеки
```html
<script src="путь_к_вашему_файлу/kanban-board.js"></script> <!-- Или использовать систему сборки модулей -->
```
Создание экземпляра Kanban
```javascript
import Kanban from 'kanban-board';
// Восстановление состояния из localStorage при инициализации
let kanban;
const savedState = localStorage.getItem('kanban');
if (savedState) {
kanban = Kanban.fromJson(savedState); // Восстанавливаем состояние из JSON
} else {
kanban = new Kanban(); // Создаем новую доску, если сохраненного состояния нет
}
// Первоначальный рендер
kanban.render();
```
Примеры
Пример использования
```javascript
import Kanban from 'kanban-board';
const kanban = new Kanban({
columns: ["To Do", "In Progress", "Done"],
tasks: [
{ id: 1, text: "Задача 1", status: "To Do", date: "2023-12-31" },
],
authors: [],
});
document.addEventListener("DOMContentLoaded", () => {
kanban.render();
});
```
Основные функции
Добавление задачи:
```javascript
kanban.addTask("Новая задача", "Стартовые задачи", "2023-12-31");
```
Редактирование задачи:
javascript
kanban.editTask(taskId, { text: "Обновленный текст", date: "2023-12-31" });
Удаление задачи:
```javascript
kanban.deleteTask(taskId);
```
Добавление исполнителя:
```javascript
kanban.addAuthor("Имя исполнителя", "#ff0000");
```
Добавление новой колонки:
```javascript
kanban.addColumn("Новая колонка");
```
Удаление колонки:
```javascript
kanban.deleteColumn("Стартовые задачи");
```
🎨 Настройка стилей
Вы можете настроить стили задач и колонок:
```javascript
kanban.setTaskStyles({
textColor: '#333333',
backgroundColor: '#ffffff',
completedTaskColor: '#d4edda',
});
kanban.setColumnStyles({
headerColor: '#3498db',
backgroundColor: '#ffffff',
});
```
💾 Сохранение и загрузка состояния
Вы можете сохранить состояние доски в JSON-формате и восстановить его:
```javascript
const json = kanban.toJson();
const newKanban = Kanban.fromJson(json);
```
🔄 Отслеживание изменений и автоматическое сохранение в localStorage
Для автоматического сохранения состояния доски Kanban в localStorage после каждого рендеринга, вы можете использовать следующий код:
```javascript
function saveState() {
localStorage.setItem('kanban', kanban.toJson());
}
// Получаем оригинальный метод render
const render = kanban.render.bind(kanban);
// Переопределяем метод render
kanban.render = async function () {
const result = await render(); // Вызываем оригинальный метод render
saveState(); // Сохраняем состояние после рендеринга
return result; // Возвращаем результат
};
```
Конструктор принимает initialState
```javascript
const kanban = new Kanban(initialState);
```
Пример initialstate
```javascript
const kanban = new Kanban({
columns: this.columns,
tasks: this.tasks,
authors: this.authors,
trash_can: this.trash_can,
sortdate: this.sortdate,
});
```
⚙️ API
Конструктор
```javascript
constructor(initialState, containerId): Создает новую доску Kanban.
initialState (Object, опционально): Начальное состояние доски (колонки, задачи, авторы).
containerId (String, опционально): ID HTML-элемента, в котором будет отрисована доска.
```
Методы
* **addTask(text, status, date)**: Добавляет новую задачу.
* **text** (String): Текст задачи.
* **status** (String): Статус задачи (колонка, в которой она будет находиться).
* **date** (String): Дата задачи.
* **editTask(id, updateData)**: Редактирует существующую задачу.
* **id** (Number): ID задачи.
* **updateData** (Object): Объект с полями, которые нужно обновить (например, { text: "Новый текст", date: "2024-01-01" }).
* **deleteTask(id)**: Удаляет задачу.
* **id** (Number): ID задачи.
* **addAuthor(name, color)**: Добавляет исполнителя.
* **name** (String): Имя исполнителя.
* **color** (String): Цвет исполнителя (hex-код).
* **addColumn(name)**: Добавляет новую колонку.
* **name** (String): Имя колонки.
* **deleteColumn(name)**: Удаляет колонку.
* **name** (String): Имя колонки.
* **toJson()**: Сохраняет состояние доски в JSON. Возвращает: (String) JSON-строку с состоянием доски.
* **fromJson(jsonString)**: Восстанавливает состояние доски из JSON.
* **jsonString** (String): JSON-строка с состоянием доски. Возвращает: (Kanban) Новый экземпляр Kanban с восстановленным состоянием.
* **setTaskStyles(styles)**: Устанавливает стили задач.
* **styles** (Object): Объект с CSS-свойствами для задач.
* **setColumnStyles(styles)**: Устанавливает стили колонок.
* **styles** (Object): Объект с CSS-свойствами для колонок.
### 📄 Лицензия
MIT
### 🧑💻 Авторы
Шорников Даниил
### 🙏 Благодарности
Всем, кто использует и поддерживает эту библиотеку!