Denys Vuika b8bb234410
[AAE-7100] ESLint support for ADF Core and DemoShell projects (#7481)
* remove tsconfig.base as per eslint schematics

* add schematics

* upgrade demoshell to eslint

* fix eslint issues for demoshell

* integrate eslint for ADF core and fix some issues

* turn into warn

* fix code

* workaround for Chrome clipboard issue

* exclude e2e tests

* exclude e2e
2022-02-02 18:01:47 +00:00

109 lines
3.4 KiB
TypeScript

/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DownloadService {
private readonly saveData: any;
constructor() {
this.saveData = (function() {
const a = document.createElement('a');
document.body.appendChild(a);
a.style.display = 'none';
return function(fileData, format, fileName) {
let blob = null;
if (format === 'blob' || format === 'data') {
blob = new Blob([fileData], { type: 'octet/stream' });
}
if (format === 'object' || format === 'json') {
const json = JSON.stringify(fileData);
blob = new Blob([json], { type: 'octet/stream' });
}
if (blob) {
if (
typeof window.navigator !== 'undefined' &&
window.navigator['msSaveOrOpenBlob']
) {
window.navigator['msSaveOrOpenBlob'](blob, fileName);
} else {
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
}
};
})();
}
/**
* Invokes content download for a Blob with a file name.
* @param blob Content to download.
* @param fileName Name of the resulting file.
*/
downloadBlob(blob: Blob, fileName: string): void {
this.saveData(blob, 'blob', fileName);
}
/**
* Invokes content download for a data array with a file name.
* @param data Data to download.
* @param fileName Name of the resulting file.
*/
downloadData(data: any, fileName: string): void {
this.saveData(data, 'data', fileName);
}
/**
* Invokes content download for a JSON object with a file name.
* @param json JSON object to download.
* @param fileName Name of the resulting file.
*/
downloadJSON(json: any, fileName: string): void {
this.saveData(json, 'json', fileName);
}
/**
* Invokes the download of the file by its URL address.
* @param url Url address pointing to the file.
* @param fileName Name of the file download.
*/
downloadUrl(url: string, fileName: string): void {
if (url && fileName) {
const link = document.createElement('a');
link.style.display = 'none';
link.download = fileName;
link.href = url;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}