129 lines
4.6 KiB
TypeScript

import { Global } from "../../Core/Globals"
import { EventManager } from "../../Core/Events"
import { Ui } from "../../Core/Ui"
import * as Events from "../../Core/EventDefinitions"
import { LocalizationManager } from "../../Core/Localization"
import * as Models from "../../Common/Models";
import * as Utility from "../../Core/Utility";
import { setValue, getValue } from "@syncfusion/ej2-base";
import { FileManager, Toolbar, NavigationPane, DetailsView, SuccessEventArgs, FailureEventArgs } from '@syncfusion/ej2-filemanager';
class FileManagerModule {
private _moduleName = "FileManagerModule";
private _component = "#fileManagerContainer";
private _global: Global;
private _eventManager: EventManager;
private _uiManager: Ui;
private _localizationMananger: LocalizationManager;
private _data: any;
private _fileManager: FileManager;
constructor() {
this._global = Global.getInstance();
this._eventManager = EventManager.getInstance();
this._uiManager = Ui.getInstance();
this._localizationMananger = LocalizationManager.getInstance();
FileManager.Inject(Toolbar, NavigationPane, DetailsView);
}
/**
* Stellt einen Prefix vor einen Selektor
* @param selector
*/
private prefix(selector: string): string {
const self = this;
if ($(`${self._component} ${selector}`).length > 0)
return `${self._component} ${selector}`;
return `html ${selector}`;
}
/**
* Bindungen erstellen
*/
private setupBindings(): void {
var self = this;
self._fileManager = new FileManager({
height: "600",
toolbarSettings: { items: ["NewFolder", "Upload", "Cut", "Copy", "Paste", "Download", "Delete", "Rename", "SortBy", "Refresh", "Selection", "View"], visible: true },
contextMenuSettings: { file: ["Open", "Download", "|", "Cut", "Copy", "|", "Delete", "Rename"], folder: ["Open", "|", "Cut", "Copy", "Paste", "|", "Delete", "Rename"], layout: ["SortBy", "View", "Refresh", "|", "Paste", "|", "NewFolder", "Upload", "|", "SelectAll"], visible: true, },
view: "Details",
ajaxSettings: {
url: <string>$(self.prefix("#jsBaseUrl")).val(),
getImageUrl: <string>$(self.prefix("#jsGetImageUrl")).val(),
uploadUrl: <string>$(self.prefix("#jsUploadUrl")).val(),
downloadUrl: <string>$(self.prefix("#jsDownloadUrl")).val()
},
uploadSettings: {
autoClose: true,
autoUpload: true
},
success(args: any) {
if (args.action === "copy") {
self._fileManager.refresh();
}
},
fileSelect() {
var selectedFiles = self._fileManager.getSelectedFiles();
if (selectedFiles.length > 0) {
var folderPresent = false;
for (var item of selectedFiles) {
if ((<any>item).isFile === false) {
folderPresent = true;
}
}
if (folderPresent) {
self._fileManager.disableToolbarItems(["Download"]);
} else {
self._fileManager.enableToolbarItems(["Download"]);
}
}
},
menuOpen() {
var selectedFiles = self._fileManager.getSelectedFiles();
if (selectedFiles.length > 0) {
var folderPresent = false;
for (var item of selectedFiles) {
if ((<any>item).isFile === false) {
folderPresent = true;
}
}
if (folderPresent) {
self._fileManager.disableMenuItems(["Download"]);
}
}
}
});
self._fileManager.appendTo(self.prefix("#fileManager"));
}
/**
* Aktivieren des Moduls
*/
public activate(): void {
var self = this;
$.setupValidator();
$.reinitializeValidator();
this.setupBindings();
$.randomAutocompleteValue();
}
/**
* Initialisieren des Moduls
*/
public init(): void {
if (this._global.appInitialized) {
fileManagerModule.activate();
} else {
setTimeout(() => { this.init(); }, 10);
}
}
}
let fileManagerModule = new FileManagerModule();
fileManagerModule.init();