Работа с данными

Загрузка данных

Document Manager ожидает URL для загрузки данных:

view:"docmanager", url:"remote/data"

Структура данных

Файлы

Document Manager ожидает JSON данные, где каждый элемент массива (файл) содержит следующие поля:

  • value - имя файла или папки (включая расширение)
  • id - id элемента в виде пути к папке/файлу
  • size - размер в байтах
  • date - JS Date объект, форматированная (согласно webix.i18n.parseFormat) строка или временная отметка Date
  • type - тип файла:
    • "archive" для .zip, .rar, .7z, .tar, .gz файлов
    • "audio" для .mp3, .ogg, .flac, .wav
    • "code" для .html, .htm, .js, .json, .css, .scss, .sass, .less, .php, .sh, .coffee, .txt, .md, .go, .yml файлов
    • "document" для docx, doc, odt, xls, xslx, pdf, djvu, djv, pptx, ppt файлов
    • "video" для .mpg, .mp4, .avi, .mkv, .ogv файлов
    • "image" для .png, .jpg, .jpeg, .webp, .gif, .tiff, .tif, .svg файлов
    • "file" (ничего из вышеперечисленного)
    • "folder" для директорий
  • star (boolean) - определяет добавлен(а) файл/папка в специальную директорию Favorite или нет;
  • users (array) - массим ID пользователей, у которых есть доступ к файлу/папка;

Папки

Document Manager ожидает JSON данные, где каждый элемент массива (директория) содержит следующие поля:

  • value - имя папки;
  • id - ID папки в виде пути к ней;
  • size - размер в байтах;
  • date - JS Date объект, форматированная (согласно webix.i18n.parseFormat) строка или временная отметка Date
  • type - "folder" для директорий;
  • data - массив элементов, которые содержит папка.

В зависимости от типа файла сервер генерирует иконки и превью-изображения для них.

Сервисы для работы с данными

Document Manager наследует все публичные сервисы File Manager, а также имеет свои:

Для работы с локальными данными

1. Local Data

  • хранит данные в коллекциях на стороне клиента
  • предоставляет методы для получения, удаления и перерисовки данных
  • предоставляет методы для получения и перерисовки директорий
// обновляет данные файла на стороне клиента
const data = {
    value:"myadventures.txt",
    date: new Date(),
    size:1231,
    id:"/myadventures.txt",
    type:"code"
};
$$("docs").getService("local").updateFile(data.id, {
    size: data.size, date: data.date
});

2. LocalUsers

  • предоставляет метод для получения коллекции пользователей
$$("dm").getService("localusers")
  .users()
  .then(users => {/* Колекция данных */});

3. LocalTags

  • предоставляет методы для получения/добавления/обновления/ удаления тэгов
$$("dm").getService("localtags")
  .tags() // доступ к коллекции данных с тэгами
  .then(t => {
    // "t" это DataCollection со всеми тэгами
    const tags = t.serialize(); // массив с тэгами
  });

Сервис Operations

4. Operations

  • предоставляет методы для добавления/редактирования/удаления данных
  • предоставляет методы для работы с данными (напр. копирование, перемещение, и др.)
// открывает файл в новой вкладке браузера
const file = {
    value:"pixeljuice.pdf",
    date: new Date(),
    size:7231,
    id:"/pixeljuice.pdf",
    type:"document"
};
$$("docs").getService("operations").open(file);

Сервисы для работы с сервером

5. Backend

  • предоставляет методы запросов к серверу для получения данных и сохранения изменений
const back = $$("dm").getService("backend");
back.folders(id).then((data) => console.log(data));

6. Users

Предоставляет методы для запросов к серверу:

  • поделиться файлами/закрыть доступ к ним
  • получить/добавить/обновить/удалить комментарии к файлам
  • получить аватар пользователя
const users = $$("dm").getService("users");
users.comments(commentID); // получаем комментарии файла

7. Tags

Предоставляет методы для запросов к серверу:

  • получения/добавление/обновления/удаления тэгов
const tags = $$("dm").getService("tags");
tags.removeTag(id) // удаляет указанный тэг с сервера

8. Versions

Предоставляет методы для запросов к серверу:

  • получение и восстановление версий файла
  • чтение текстовых и excel файлов
const versions = $$("dm").getService("versions");
versions.versions(id); // получаем историю изменений указанного файла

Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.

Операции с данными

Все операции с данными в File Manager применимы к Document Manager. Также у виджета есть дополнительные операции.

Как получить данные файловой системы

Содержимое групповых папок хранятся в коллекциях данных. Каждая коллекция доступна через свойство source. Чтобы получить текущий source, вызовите метод getState:

const source = $$("dm").getState().source;

Чтобы получить файлы из групповой папки, вызовите метод files() у сервиса LocalData. Метод принимает следующие параметры:

  • path (string) - для групповых папок всегда "/";
  • sync (boolean) - в случае true, мы подразумеваем, что директория доступна на клиенте.
  • source (string) - указывает на групповую директорию (favorite/recent/trash/shared) или на корневую директорию ("files").
const source = $$("dm").getState().source;
const data = $$("dm").getService("local")
  .files("/", true, source);

Если вы не уверены, загружена ли директория, можно запросить файлы асинхронно:

const data = $$("dm").getService("local")
  .files("/", false, source)
  .then(files => {
    /* "files" это коллекция данных */
  });

Как получить данные пользователя

Все пользователя хранятся в коллекции данных. Чтобы получить коллекцию, вызовите метод users() у сервиса LocalUsers. Метод принимает следующий параметр:

  • force (boolean) - если true, заранее перезагружает коллекцию пользователей.
$$("dm").getService("localusers")
  .users()
  .then(users => {/* Коллекция данных */});

Как получить тэги

Все тэги хранятся в коллекции данных. Чтобы получить коллекцию, вызовите метод tags() у сервиса LocalTags. Метод принимает следующий параметр:

  • force (boolean) - если true, заранее перезагружает коллекцию тэгов.
$$("dm").getService("localtags")
  .tags() // доступ к коллекции данных с тэгами
  .then(t => {
    const tags = t.serialize(); // массив с тэгами
  });

Удаление данных

Очищение файлов и папок

Document Manager поддерживает все операции, доступные в File Manager.

Очищение групповых папок

Чтобы удалить все файлы текущей директории, вызовите метод clearAll() у её коллекции:

const data = $$("dm").getService("local");
const path = $$("dm").getState().source;
 
data.files("/", false, source).then(collection => 
  collection.clearAll());

Очищение данных пользователей и тэгов

Вы можете очистить локальные коллекции пользователей и тэгов:

data.users().then(collection => collection.clearAll());
data.tags().then(collection => collection.clearAll());

Перезагрузка данных

Document Manager поддерживает все операции, доступные в File Manager.

Перезагрузка данных в групповых папках

Чтобы обновить содержимое групповой папки, вызовите метод refresh() у LocalData:

const data = $$("dm").getService("local");
const source = $$("dm").getState().source;
data.refresh("/", source);

Перезагрузка данных пользователей и тэгов

Чтобы перезагрузить коллекции пользователей и тэгов, вызовите методы users() и tags() соответственно. В качестве аргумента передайте true:

const data = $$("dm").getService("local");
data.users(true);
data.tags(true);
Наверх
If you have not checked yet, be sure to visit site of our main product Webix best ui framework and page of javascript document explorer product.