File Manager ожидает URL для загрузки данных:
view:"filemanager", url:"remote/data"
File Manager ожидает JSON данные, где каждый элемент массива (файл) содержит следующие поля:
File Manager ожидает JSON данные, где каждый элемент массива (директория) содержит следующие поля:
В зависимости от типа файла сервер генерирует иконки и превью-изображения для них.
File Manager работает со следующими сервисами:
1. Local Data
// обновление файла на клиентской стороне
const data = {
value:"myadventures.txt",
date: new Date(),
size:1231,
id:"/myadventures.txt",
type:"code"
};
$$("files").getService("local").updateFile(data.id, {
size: data.size, date: data.date
});
2. Upload
const upload = $$("fm").getService("upload");
upload.fileDialog(id); // открывает диалоговое окно загрузки
3. Progress
this.app.getService("progress").files(label, files, callback => {
// какие-либо действия с файлами
});
4. Operations
// открывает файл в новой вкладке браузера
const file = {
value:"pixeljuice.pdf",
date: new Date(),
size:7231,
id:"/pixeljuice.pdf",
type:"document"
};
$$("files").getService("operations").open(file);
5. Backend
const back = $$("fm").getService("backend");
back.folders(id).then((data) => console.log(data));
Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.
Загруженные директории хранятся в коллекциях данных. Чтобы получить коллекцию, вызовите метод getState и затем обратитесь к свойству path у полученного объекта:
Загруженные директории хранятся в DataCollections, каждая из которых доступна через свойство path. Чтобы получить текущий путь нужно вызвать метод getState и затем обратиться к свойству path полученного объекта.
const path = $$("fm").getState().path;
Чтобы получить файлы текузей директории, вызовите метод files() у сервиса Local со следующими параметрами:
const path = $$("fm").getState().path;
const data = $$("fm").getService("local");
const collection = data.files(path, true);
Если вы не уверены, что директорию загружена, вы можете запросить данные асинхронно:
data.files("/some/path").then((collection) => { /* какая-либо логика */} );
Также вы можете сериализовать данные, чтобы получить доступ к самим элементам:
const myfiles = data.files(path, true).serialize();
Дерево всех папко загружается один раз и хранится в TreeCollection. Чтобы получить все директории, используйте следующий код:
Получение всех директорий
const data = $$("fm").getService("local");
data.folders();
По умолчанию корневой элемент коллекции это "My Files", доступный по пути "../files".
Чтобы удалить элементы из текущей директории, вызовите метод clearAll() у коллекции этой директории:
const data = $$("fm").getService("local");
const path = $$("fm").getState().path;
data.files(path).then((collection) => collection.clearAll());
Чтобы удалить файлы во всех директориях, пройдитесь по кэшу и вызовите метод clearAll() к каждой коллекции данных:
const data = $$("fm").getService("local");
data.fscache.each(collection => {
collection.clearAll();
});
data.folders().then((collection) => collection.clearAll());
Чтобы перезагрузить файлы текущей директории, вызовите метод refresh() у сервиса Local с текущем path в качестве параметра:
const data = $$("fm").getService("local");
const path = $$("fm").getState().path;
data.refresh(path);
Чтобы перезагрузить дерево папок, нужно вызвать метод folders у сервиса Local и передать ему true в качестве аргумента:
const data = $$("fm").getService("local");
data.folders(true);
Related sample: File Manager: Data Operations
Обратите внимание, что если метод вызвать без параметра, он возвратит текущую структуру директорий.
Наверх