devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
80 lines (79 loc) • 3.72 kB
JavaScript
/**
* DevExtreme (esm/file_management/custom_provider.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
ensureDefined,
noop
} from "../core/utils/common";
import {
isFunction
} from "../core/utils/type";
import {
compileGetter
} from "../core/utils/data";
import FileSystemProviderBase from "./provider_base";
class CustomFileSystemProvider extends FileSystemProviderBase {
constructor(options) {
options = ensureDefined(options, {});
super(options);
this._hasSubDirsGetter = compileGetter(options.hasSubDirectoriesExpr || "hasSubDirectories");
this._getItemsFunction = this._ensureFunction(options.getItems, () => []);
this._renameItemFunction = this._ensureFunction(options.renameItem);
this._createDirectoryFunction = this._ensureFunction(options.createDirectory);
this._deleteItemFunction = this._ensureFunction(options.deleteItem);
this._moveItemFunction = this._ensureFunction(options.moveItem);
this._copyItemFunction = this._ensureFunction(options.copyItem);
this._uploadFileChunkFunction = this._ensureFunction(options.uploadFileChunk);
this._abortFileUploadFunction = this._ensureFunction(options.abortFileUpload);
this._downloadItemsFunction = this._ensureFunction(options.downloadItems);
this._getItemsContentFunction = this._ensureFunction(options.getItemsContent)
}
getItems(parentDir) {
var pathInfo = parentDir.getFullPathInfo();
return this._executeActionAsDeferred(() => this._getItemsFunction(parentDir), true).then(dataItems => this._convertDataObjectsToFileItems(dataItems, pathInfo))
}
renameItem(item, name) {
return this._executeActionAsDeferred(() => this._renameItemFunction(item, name))
}
createDirectory(parentDir, name) {
return this._executeActionAsDeferred(() => this._createDirectoryFunction(parentDir, name))
}
deleteItems(items) {
return items.map(item => this._executeActionAsDeferred(() => this._deleteItemFunction(item)))
}
moveItems(items, destinationDirectory) {
return items.map(item => this._executeActionAsDeferred(() => this._moveItemFunction(item, destinationDirectory)))
}
copyItems(items, destinationFolder) {
return items.map(item => this._executeActionAsDeferred(() => this._copyItemFunction(item, destinationFolder)))
}
uploadFileChunk(fileData, chunksInfo, destinationDirectory) {
return this._executeActionAsDeferred(() => this._uploadFileChunkFunction(fileData, chunksInfo, destinationDirectory))
}
abortFileUpload(fileData, chunksInfo, destinationDirectory) {
return this._executeActionAsDeferred(() => this._abortFileUploadFunction(fileData, chunksInfo, destinationDirectory))
}
downloadItems(items) {
return this._downloadItemsFunction(items)
}
getItemsContent(items) {
return this._executeActionAsDeferred(() => this._getItemsContentFunction(items))
}
_hasSubDirs(dataObj) {
var hasSubDirs = this._hasSubDirsGetter(dataObj);
return "boolean" === typeof hasSubDirs ? hasSubDirs : true
}
_getKeyExpr(options) {
return options.keyExpr || "key"
}
_ensureFunction(functionObject, defaultFunction) {
defaultFunction = defaultFunction || noop;
return isFunction(functionObject) ? functionObject : defaultFunction
}
}
export default CustomFileSystemProvider;