@ohioepa/oepa-ui-lib 1.2.26 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +8 -9
- package/esm2022/lib/file-upload/file-upload.component.mjs +7 -8
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +6 -7
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +7 -8
- package/esm2022/lib/table/p-table/p-table.component.mjs +8 -9
- package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +3 -3
- package/esm2022/lib/table/table.component.mjs +12 -13
- package/esm2022/public-api.mjs +1 -2
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +15 -246
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/edoc-attachment/edoc-attachment.component.d.ts +1 -1
- package/lib/file-upload/file-upload.component.d.ts +1 -1
- package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +1 -1
- package/lib/multi-file-upload/multi-file-upload.component.d.ts +1 -1
- package/lib/table/p-table/p-table.component.d.ts +1 -1
- package/lib/table/table.component.d.ts +1 -1
- package/ohioepa-oepa-ui-lib-1.3.1.tgz +0 -0
- package/package.json +1 -1
- package/public-api.d.ts +0 -1
- package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +0 -236
- package/lib/oepa-file-utils/oepa-file-util.service.d.ts +0 -53
- package/ohioepa-oepa-ui-lib-1.2.26.tgz +0 -0
|
@@ -5,7 +5,7 @@ import { OepaComponentIdService } from '@ohioepa/oepa-common-lib';
|
|
|
5
5
|
import { EdocAttachmentService } from './edoc-attachment.service';
|
|
6
6
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
8
|
-
import { OepaFileUtilService } from '
|
|
8
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class EdocAttachmentComponent implements OnInit {
|
|
11
11
|
private idService;
|
|
@@ -2,7 +2,7 @@ import { OnInit, EventEmitter } from '@angular/core';
|
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
4
4
|
import { OepaAttachment, OepaParserReport, OepaComponentIdService } from '@ohioepa/oepa-common-lib';
|
|
5
|
-
import { OepaFileUtilService } from '
|
|
5
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class FileUploadComponent implements OnInit {
|
|
8
8
|
private idService;
|
|
@@ -3,7 +3,7 @@ import { FormGroup } from '@angular/forms';
|
|
|
3
3
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
4
4
|
import { OepaComponentIdService } from '@ohioepa/oepa-common-lib';
|
|
5
5
|
import { LynxAttachment } from '@ohioepa/oepa-ebiz-lib';
|
|
6
|
-
import { OepaFileUtilService } from '
|
|
6
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class LynxImageUploadComponent implements OnInit {
|
|
9
9
|
private idService;
|
|
@@ -2,7 +2,7 @@ import { OnInit, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';
|
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
4
4
|
import { OepaAttachment, OepaParserReport, OepaComponentIdService } from '@ohioepa/oepa-common-lib';
|
|
5
|
-
import { OepaFileUtilService } from '
|
|
5
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class MultiFileUploadComponent implements OnInit, OnChanges {
|
|
8
8
|
private idService;
|
|
@@ -17,7 +17,7 @@ import { OepaPColumn } from '../oepa-p-column';
|
|
|
17
17
|
import { TableDataCellClickEvent } from '../table-data-cell/table-data-cell-click-event';
|
|
18
18
|
import { Subject } from 'rxjs';
|
|
19
19
|
import { OepaTableFilter } from '../oepa-table-filter';
|
|
20
|
-
import { OepaFileUtilService } from '
|
|
20
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
21
21
|
import * as i0 from "@angular/core";
|
|
22
22
|
export declare class PTableComponent implements OnInit, AfterViewChecked {
|
|
23
23
|
private sanitizer;
|
|
@@ -14,7 +14,7 @@ import { OepaTemplateInfo } from '@ohioepa/oepa-common-lib';
|
|
|
14
14
|
import { TableService } from './table.service';
|
|
15
15
|
import { OepaTableSortCriterion } from './oepa-table-sort-criterion';
|
|
16
16
|
import { PageChangedEvent } from 'ngx-bootstrap/pagination';
|
|
17
|
-
import { OepaFileUtilService } from '
|
|
17
|
+
import { OepaFileUtilService } from '@ohioepa/oepa-common-lib';
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
19
19
|
export declare class TableComponent implements OnInit {
|
|
20
20
|
private sanitizer;
|
|
Binary file
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -109,7 +109,6 @@ export * from './lib/table/oepa-table-cell-img-src.pipe';
|
|
|
109
109
|
export * from './lib/zip-code/zip-code.component';
|
|
110
110
|
export * from './lib/account-search-input/account-search.service';
|
|
111
111
|
export * from './lib/oepa-forms.service';
|
|
112
|
-
export * from './lib/oepa-file-utils/oepa-file-util.service';
|
|
113
112
|
export * from './lib/oepa-user-account/oepa-user-account.service';
|
|
114
113
|
export * from './lib/parameter/parameter';
|
|
115
114
|
export * from './lib/parameter/parameter.service';
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common/http";
|
|
6
|
-
/**
|
|
7
|
-
* NOTE: Needed this because of problems importing mime or mime-types library
|
|
8
|
-
*/
|
|
9
|
-
const MIME_TYPES = {
|
|
10
|
-
'.aac': 'audio/aac',
|
|
11
|
-
'.abw': 'application/x-abiword',
|
|
12
|
-
'.arc': 'application/octet-stream',
|
|
13
|
-
'.avi': 'video/x-msvideo',
|
|
14
|
-
'.azw': 'application/vnd.amazon.ebook',
|
|
15
|
-
'.bin': 'application/octet-stream',
|
|
16
|
-
'.bmp': 'image/bmp',
|
|
17
|
-
'.bz': 'application/x-bzip',
|
|
18
|
-
'.bz2': 'application/x-bzip2',
|
|
19
|
-
'.csh': 'application/x-csh',
|
|
20
|
-
'.css': 'text/css',
|
|
21
|
-
'.csv': 'text/csv',
|
|
22
|
-
'.doc': 'application/msword',
|
|
23
|
-
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
24
|
-
'.eot': 'application/vnd.ms-fontobject',
|
|
25
|
-
'.epub': 'application/epub+zip',
|
|
26
|
-
'.es': 'application/ecmascript',
|
|
27
|
-
'.gif': 'image/gif',
|
|
28
|
-
'.htm': 'text/html',
|
|
29
|
-
'.html': 'text/html',
|
|
30
|
-
'.ico': 'image/x-icon',
|
|
31
|
-
'.ics': 'text/calendar',
|
|
32
|
-
'.jar': 'application/java-archive',
|
|
33
|
-
'.jpeg': 'image/jpeg',
|
|
34
|
-
'.jpg': 'image/jpeg',
|
|
35
|
-
'.js': 'application/javascript',
|
|
36
|
-
'.json': 'application/json',
|
|
37
|
-
'.mid': 'audio/midi audio/x-midi',
|
|
38
|
-
'.midi': 'audio/midi audio/x-midi',
|
|
39
|
-
'.mpeg': 'video/mpeg',
|
|
40
|
-
'.mpkg': 'application/vnd.apple.installer+xml',
|
|
41
|
-
'.odp': 'application/vnd.oasis.opendocument.presentation',
|
|
42
|
-
'.ods': 'application/vnd.oasis.opendocument.spreadsheet',
|
|
43
|
-
'.odt': 'application/vnd.oasis.opendocument.text',
|
|
44
|
-
'.oga': 'audio/ogg',
|
|
45
|
-
'.ogv': 'video/ogg',
|
|
46
|
-
'.ogx': 'application/ogg',
|
|
47
|
-
'.otf': 'font/otf',
|
|
48
|
-
'.png': 'image/png',
|
|
49
|
-
'.pdf': 'application/pdf',
|
|
50
|
-
'.ppt': 'application/vnd.ms-powerpoint',
|
|
51
|
-
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
52
|
-
'.rar': 'application/x-rar-compressed',
|
|
53
|
-
'.rtf': 'application/rtf',
|
|
54
|
-
'.sh': 'application/x-sh',
|
|
55
|
-
'.svg': 'image/svg+xml',
|
|
56
|
-
'.swf': 'application/x-shockwave-flash',
|
|
57
|
-
'.tar': 'application/x-tar',
|
|
58
|
-
'.tif': 'image/tiff',
|
|
59
|
-
'.tiff': 'image/tiff',
|
|
60
|
-
'.ts': 'application/typescript',
|
|
61
|
-
'.ttf': 'font/ttf',
|
|
62
|
-
'.txt': 'text/plain',
|
|
63
|
-
'.vsd': 'application/vnd.visio',
|
|
64
|
-
'.wav': 'audio/wav',
|
|
65
|
-
'.weba': 'audio/webm',
|
|
66
|
-
'.webm': 'video/webm',
|
|
67
|
-
'.webp': 'image/webp',
|
|
68
|
-
'.woff': 'font/woff',
|
|
69
|
-
'.woff2': 'font/woff2',
|
|
70
|
-
'.xhtml': 'application/xhtml+xml',
|
|
71
|
-
'.xls': 'application/vnd.ms-excel',
|
|
72
|
-
'.xlsm': 'application/vnd.ms-excel.sheet.macroEnabled.12',
|
|
73
|
-
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
74
|
-
'.xml': 'application/xml',
|
|
75
|
-
'.xul': 'application/vnd.mozilla.xul+xml',
|
|
76
|
-
'.zip': 'application/zip',
|
|
77
|
-
'.3gp': 'video/3gpp',
|
|
78
|
-
'.7z': 'application/x-7z-compressed'
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Collection of methods for uploading/downloading and displaying files.
|
|
82
|
-
*/
|
|
83
|
-
export class OepaFileUtilService {
|
|
84
|
-
http;
|
|
85
|
-
uploadUrl = '/file/upload/url';
|
|
86
|
-
fileUtilUrl = '/ebiz/api/v2/fileutil';
|
|
87
|
-
downloadUrl = this.fileUtilUrl + '/downloadAttachment';
|
|
88
|
-
app = '';
|
|
89
|
-
constructor(http, ebizRootURL, app) {
|
|
90
|
-
this.http = http;
|
|
91
|
-
this.uploadUrl = ebizRootURL + this.uploadUrl;
|
|
92
|
-
this.fileUtilUrl = ebizRootURL + this.fileUtilUrl;
|
|
93
|
-
this.downloadUrl = ebizRootURL + this.downloadUrl;
|
|
94
|
-
this.app = app;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Return a single OepaAttachment object from the contents of file.
|
|
98
|
-
* The file will have been saved on the server if this method succeeds.
|
|
99
|
-
* @param file
|
|
100
|
-
*/
|
|
101
|
-
uploadFile(file) {
|
|
102
|
-
const attachment = {};
|
|
103
|
-
attachment.userFilename = file.name;
|
|
104
|
-
// return new Observable<OepaAttachment>((observer) => observer.next(attachment));
|
|
105
|
-
const headers = new HttpHeaders();
|
|
106
|
-
const formData = new FormData();
|
|
107
|
-
formData.append('file', file, file.name);
|
|
108
|
-
/** No need to include Content-Type in Angular 4 */
|
|
109
|
-
headers.append('Content-Type', 'multipart/form-data');
|
|
110
|
-
headers.append('Accept', 'application/json');
|
|
111
|
-
let params = {
|
|
112
|
-
'app': this.app
|
|
113
|
-
};
|
|
114
|
-
return this.http.post(this.uploadUrl, formData, { headers: headers, params: params })
|
|
115
|
-
.pipe(map((response) => {
|
|
116
|
-
let uploadedAttachment = {};
|
|
117
|
-
const attachments = response['attachments'];
|
|
118
|
-
if (attachments.length === 1) {
|
|
119
|
-
uploadedAttachment = attachments[0];
|
|
120
|
-
}
|
|
121
|
-
return uploadedAttachment;
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Download an attachment from the server. The location and systemFileName
|
|
126
|
-
* attributes of the attachment must be set and represent a valid file
|
|
127
|
-
* on the file system.
|
|
128
|
-
* @param attachment
|
|
129
|
-
*/
|
|
130
|
-
downloadAttachment(attachment) {
|
|
131
|
-
const headers = new HttpHeaders();
|
|
132
|
-
let params = {
|
|
133
|
-
'app': this.app
|
|
134
|
-
};
|
|
135
|
-
headers.append('Content-type', 'application/json;odata=verbose');
|
|
136
|
-
return this.http.post(this.downloadUrl, attachment, { headers: headers, responseType: 'blob', params: params });
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Open the file represented by data in the browser.
|
|
140
|
-
* @param data binary file data.
|
|
141
|
-
* @param mimeType the file's mime type.
|
|
142
|
-
* @param fileName optional name for the downloaded file.
|
|
143
|
-
*/
|
|
144
|
-
downloadFile(data, mimeType, fileName) {
|
|
145
|
-
if (data && mimeType) {
|
|
146
|
-
const blob = new Blob([data], { type: mimeType });
|
|
147
|
-
const url = window.URL.createObjectURL(blob);
|
|
148
|
-
if (!fileName || fileName.length === 0) {
|
|
149
|
-
window.open(url);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.downLoadFileWithFileName(url, fileName);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
console.log('ERROR: downloadFile: missing data or mimeType');
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Utility method for downloading a file with a specific name.
|
|
161
|
-
* @param url
|
|
162
|
-
* @param fileName
|
|
163
|
-
*/
|
|
164
|
-
downLoadFileWithFileName(url, fileName) {
|
|
165
|
-
const a = document.createElement('a');
|
|
166
|
-
document.body.appendChild(a);
|
|
167
|
-
a.setAttribute('style', 'display: none');
|
|
168
|
-
a.setAttribute('href', url);
|
|
169
|
-
a.setAttribute('download', fileName);
|
|
170
|
-
a.click();
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Helper method to see if current browser is internet explorer
|
|
174
|
-
*/
|
|
175
|
-
browserIsIE() {
|
|
176
|
-
const ua = window.navigator.userAgent;
|
|
177
|
-
const msie = ua.indexOf('MSIE ');
|
|
178
|
-
if (msie > -1) {
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
const trident = ua.indexOf('Trident/');
|
|
182
|
-
if (trident > -1) {
|
|
183
|
-
return true;
|
|
184
|
-
}
|
|
185
|
-
const edge = ua.indexOf('Edge/');
|
|
186
|
-
if (edge > -1) {
|
|
187
|
-
return true;
|
|
188
|
-
}
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Determine the mime time for fileName (based on its extension).
|
|
193
|
-
* @param fileName
|
|
194
|
-
*/
|
|
195
|
-
mimeTypeForFile(fileName) {
|
|
196
|
-
let mimeType;
|
|
197
|
-
if (fileName && fileName.lastIndexOf('.') > -1) {
|
|
198
|
-
const ext = fileName.substring(fileName.lastIndexOf('.'));
|
|
199
|
-
mimeType = MIME_TYPES[ext.toLowerCase()];
|
|
200
|
-
}
|
|
201
|
-
if (!mimeType) {
|
|
202
|
-
console.log('ERROR: mimeTypeForFile: No mime type found for file: ' + fileName);
|
|
203
|
-
}
|
|
204
|
-
return mimeType;
|
|
205
|
-
}
|
|
206
|
-
mimeTypeForExtension(extension) {
|
|
207
|
-
let mimeType;
|
|
208
|
-
let ext;
|
|
209
|
-
if (extension) {
|
|
210
|
-
ext = extension.toLowerCase();
|
|
211
|
-
if (!ext.startsWith('.')) {
|
|
212
|
-
ext = '.' + ext;
|
|
213
|
-
}
|
|
214
|
-
mimeType = MIME_TYPES[ext];
|
|
215
|
-
}
|
|
216
|
-
if (!mimeType) {
|
|
217
|
-
console.log('ERROR: mimeTypeForExtension: No mime type found for extension: ' + extension);
|
|
218
|
-
}
|
|
219
|
-
return mimeType;
|
|
220
|
-
}
|
|
221
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }, { token: 'app' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
222
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, providedIn: 'root' });
|
|
223
|
-
}
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaFileUtilService, decorators: [{
|
|
225
|
-
type: Injectable,
|
|
226
|
-
args: [{
|
|
227
|
-
providedIn: 'root'
|
|
228
|
-
}]
|
|
229
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
230
|
-
type: Inject,
|
|
231
|
-
args: ['ebizRootURL']
|
|
232
|
-
}] }, { type: undefined, decorators: [{
|
|
233
|
-
type: Inject,
|
|
234
|
-
args: ['app']
|
|
235
|
-
}] }] });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1maWxlLXV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS1maWxlLXV0aWxzL29lcGEtZmlsZS11dGlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3JDOztHQUVHO0FBQ0gsTUFBTyxVQUFVLEdBQU87SUFDeEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLHVCQUF1QjtJQUMvQixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsTUFBTSxFQUFFLDhCQUE4QjtJQUN0QyxNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE1BQU0sRUFBRSxXQUFXO0lBQ25CLEtBQUssRUFBRSxvQkFBb0I7SUFDM0IsTUFBTSxFQUFFLHFCQUFxQjtJQUM3QixNQUFNLEVBQUUsbUJBQW1CO0lBQzNCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLHlFQUF5RTtJQUNsRixNQUFNLEVBQUUsK0JBQStCO0lBQ3ZDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsV0FBVztJQUNuQixPQUFPLEVBQUUsV0FBVztJQUNwQixNQUFNLEVBQUUsY0FBYztJQUN0QixNQUFNLEVBQUUsZUFBZTtJQUN2QixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE1BQU0s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QUFDO1lBQ2QsR0FBRyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNsQixDQUFDO1lBQ0QsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpRUFBaUUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzt3R0FqSlUsbUJBQW1CLDRDQU9wQixhQUFhLGFBQ2IsS0FBSzs0R0FSSixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9lcGFBdHRhY2htZW50IH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuLyoqXG4gKiBOT1RFOiBOZWVkZWQgdGhpcyBiZWNhdXNlIG9mIHByb2JsZW1zIGltcG9ydGluZyBtaW1lIG9yIG1pbWUtdHlwZXMgbGlicmFyeVxuICovXG5jb25zdCAgTUlNRV9UWVBFUzphbnkgPSB7XG4nLmFhYyc6ICdhdWRpby9hYWMnLFxuJy5hYncnOiAnYXBwbGljYXRpb24veC1hYml3b3JkJyxcbicuYXJjJzogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4nLmF2aSc6ICd2aWRlby94LW1zdmlkZW8nLFxuJy5hencnOiAnYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vaycsXG4nLmJpbic6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuJy5ibXAnOiAnaW1hZ2UvYm1wJyxcbicuYnonOiAnYXBwbGljYXRpb24veC1iemlwJyxcbicuYnoyJzogJ2FwcGxpY2F0aW9uL3gtYnppcDInLFxuJy5jc2gnOiAnYXBwbGljYXRpb24veC1jc2gnLFxuJy5jc3MnOiAndGV4dC9jc3MnLFxuJy5jc3YnOiAndGV4dC9jc3YnLFxuJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbicuZG9jeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4nLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4nLmVwdWInOiAnYXBwbGljYXRpb24vZXB1Yit6aXAnLFxuJy5lcyc6ICdhcHBsaWNhdGlvbi9lY21hc2NyaXB0JyxcbicuZ2lmJzogJ2ltYWdlL2dpZicsXG4nLmh0bSc6ICd0ZXh0L2h0bWwnLFxuJy5odG1sJzogJ3RleHQvaHRtbCcsXG4nLmljbyc6ICdpbWFnZS94LWljb24nLFxuJy5pY3MnOiAndGV4dC9jYWxlbmRhcicsXG4nLmphcic6ICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnLFxuJy5qcGVnJzogJ2ltYWdlL2pwZWcnLFxuJy5qcGcnOiAnaW1hZ2UvanBlZycsXG4nLmpzJzogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnLFxuJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuJy5taWQnOiAnYXVkaW8vbWlkaSBhdWRpby94LW1pZGknLFxuJy5taWRpJzogJ2F1ZGlvL21pZGkgYXVkaW8veC1taWRpJyxcbicubXBlZyc6ICd2aWRlby9tcGVnJyxcbicubXBrZyc6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbCcsXG4nLm9kcCc6ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbicsXG4nLm9kcyc6ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0Jyxcbicub2R0JzogJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCcsXG4nLm9nYSc6ICdhdWRpby9vZ2cnLFxuJy5vZ3YnOiAndmlkZW8vb2dnJyxcbicub2d4JzogJ2FwcGxpY2F0aW9uL29nZycsXG4nLm90Zic6ICdmb250L290ZicsXG4nLnBuZyc6ICdpbWFnZS9wbmcnLFxuJy5wZGYnOiAnYXBwbGljYXRpb24vcGRmJyxcbicucHB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyxcbicucHB0eCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJyxcbicucmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxuJy5ydGYnOiAnYXBwbGljYXRpb24vcnRmJyxcbicuc2gnOiAnYXBwbGljYXRpb24veC1zaCcsXG4nLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbicuc3dmJzogJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJyxcbicudGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcbicudGlmJzogJ2ltYWdlL3RpZmYnLFxuJy50aWZmJzogJ2ltYWdlL3RpZmYnLFxuJy50cyc6ICdhcHBsaWNhdGlvbi90eXBlc2NyaXB0JyxcbicudHRmJzogJ2ZvbnQvdHRmJyxcbicudHh0JzogJ3RleHQvcGxhaW4nLFxuJy52c2QnOiAnYXBwbGljYXRpb24vdm5kLnZpc2lvJyxcbicud2F2JzogJ2F1ZGlvL3dhdicsXG4nLndlYmEnOiAnYXVkaW8vd2VibScsXG4nLndlYm0nOiAndmlkZW8vd2VibScsXG4nLndlYnAnOiAnaW1hZ2Uvd2VicCcsXG4nLndvZmYnOiAnZm9udC93b2ZmJyxcbicud29mZjInOiAnZm9udC93b2ZmMicsXG4nLnhodG1sJzogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsXG4nLnhscyc6ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuJy54bHNtJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTInLFxuJy54bHN4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbicueG1sJzogJ2FwcGxpY2F0aW9uL3htbCcsXG4nLnh1bCc6ICdhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sJyxcbicuemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXG4nLjNncCc6ICd2aWRlby8zZ3BwJyxcbicuN3onOiAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJ1xufTtcblxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyBmb3IgdXBsb2FkaW5nL2Rvd25sb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGZpbGVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPZXBhRmlsZVV0aWxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB1cGxvYWRVcmwgPSAnL2ZpbGUvdXBsb2FkL3VybCc7XG4gIHByaXZhdGUgZmlsZVV0aWxVcmwgPSAnL2ViaXovYXBpL3YyL2ZpbGV1dGlsJ1xuICBwcml2YXRlIGRvd25sb2FkVXJsID0gdGhpcy5maWxlVXRpbFVybCArICcvZG93bmxvYWRBdHRhY2htZW50JztcbiAgcHJpdmF0ZSBhcHAgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIFxuICAgIEBJbmplY3QoJ2ViaXpSb290VVJMJykgZWJpelJvb3RVUkw6IHN0cmluZyxcbiAgICBASW5qZWN0KCdhcHAnKSBhcHA6IHN0cmluZykge1xuICAgIHRoaXMudXBsb2FkVXJsID0gZWJpelJvb3RVUkwgKyB0aGlzLnVwbG9hZFVybDtcbiAgICB0aGlzLmZpbGVVdGlsVXJsID0gZWJpelJvb3RVUkwgKyB0aGlzLmZpbGVVdGlsVXJsO1xuICAgIHRoaXMuZG93bmxvYWRVcmwgPSBlYml6Um9vdFVSTCArIHRoaXMuZG93bmxvYWRVcmw7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc2luZ2xlIE9lcGFBdHRhY2htZW50IG9iamVjdCBmcm9tIHRoZSBjb250ZW50cyBvZiBmaWxlLlxuICAgKiBUaGUgZmlsZSB3aWxsIGhhdmUgYmVlbiBzYXZlZCBvbiB0aGUgc2VydmVyIGlmIHRoaXMgbWV0aG9kIHN1Y2NlZWRzLlxuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgcHVibGljIHVwbG9hZEZpbGUoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8T2VwYUF0dGFjaG1lbnQ+IHtcbiAgICBjb25zdCBhdHRhY2htZW50OiBPZXBhQXR0YWNobWVudCA9IHt9O1xuICAgIGF0dGFjaG1lbnQudXNlckZpbGVuYW1lID0gZmlsZS5uYW1lO1xuICAgIC8vIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxPZXBhQXR0YWNobWVudD4oKG9ic2VydmVyKSA9PiBvYnNlcnZlci5uZXh0KGF0dGFjaG1lbnQpKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSwgZmlsZS5uYW1lKTtcbiAgICAvKiogTm8gbmVlZCB0byBpbmNsdWRlIENvbnRlbnQtVHlwZSBpbiBBbmd1bGFyIDQgKi9cbiAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTtcbiAgICBoZWFkZXJzLmFwcGVuZCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICBsZXQgcGFyYW1zOmFueSA9IHtcbiAgICAgICdhcHAnOiB0aGlzLmFwcFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMudXBsb2FkVXJsLCBmb3JtRGF0YSwgeyBoZWFkZXJzOiBoZWFkZXJzLCBwYXJhbXM6IHBhcmFtcyB9KVxuICAgIC5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgICAgbGV0IHVwbG9hZGVkQXR0YWNobWVudDogT2VwYUF0dGFjaG1lbnQgPSB7fTtcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHM6IEFycmF5PE9lcGFBdHRhY2htZW50PiA9IHJlc3BvbnNlWydhdHRhY2htZW50cyddO1xuICAgICAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgdXBsb2FkZWRBdHRhY2htZW50ID0gYXR0YWNobWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVwbG9hZGVkQXR0YWNobWVudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBhbiBhdHRhY2htZW50IGZyb20gdGhlIHNlcnZlci4gVGhlIGxvY2F0aW9uIGFuZCBzeXN0ZW1GaWxlTmFtZVxuICAgKiBhdHRyaWJ1dGVzIG9mIHRoZSBhdHRhY2htZW50IG11c3QgYmUgc2V0IGFuZCByZXByZXNlbnQgYSB2YWxpZCBmaWxlXG4gICAqIG9uIHRoZSBmaWxlIHN5c3RlbS5cbiAgICogQHBhcmFtIGF0dGFjaG1lbnRcbiAgICovXG4gIHB1YmxpYyBkb3dubG9hZEF0dGFjaG1lbnQoYXR0YWNobWVudDogT2VwYUF0dGFjaG1lbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBsZXQgcGFyYW1zOmFueSA9IHtcbiAgICAgICdhcHAnOiB0aGlzLmFwcFxuICAgIH07XG4gICAgaGVhZGVycy5hcHBlbmQoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uO29kYXRhPXZlcmJvc2UnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5kb3dubG9hZFVybCwgYXR0YWNobWVudCwgeyBoZWFkZXJzOiBoZWFkZXJzLCByZXNwb25zZVR5cGU6ICdibG9iJywgcGFyYW1zOiBwYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgZmlsZSByZXByZXNlbnRlZCBieSBkYXRhIGluIHRoZSBicm93c2VyLlxuICAgKiBAcGFyYW0gZGF0YSBiaW5hcnkgZmlsZSBkYXRhLlxuICAgKiBAcGFyYW0gbWltZVR5cGUgdGhlIGZpbGUncyBtaW1lIHR5cGUuXG4gICAqIEBwYXJhbSBmaWxlTmFtZSBvcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBmaWxlLlxuICAgKi9cbiAgcHVibGljIGRvd25sb2FkRmlsZShkYXRhOiBhbnksIG1pbWVUeXBlOiBzdHJpbmcsIGZpbGVOYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKGRhdGEgJiYgbWltZVR5cGUpIHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIGlmICghZmlsZU5hbWUgfHwgZmlsZU5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRvd25Mb2FkRmlsZVdpdGhGaWxlTmFtZSh1cmwsIGZpbGVOYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiBkb3dubG9hZEZpbGU6IG1pc3NpbmcgZGF0YSBvciBtaW1lVHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IG1ldGhvZCBmb3IgZG93bmxvYWRpbmcgYSBmaWxlIHdpdGggYSBzcGVjaWZpYyBuYW1lLlxuICAgKiBAcGFyYW0gdXJsXG4gICAqIEBwYXJhbSBmaWxlTmFtZVxuICAgKi9cbiAgcHJpdmF0ZSBkb3duTG9hZEZpbGVXaXRoRmlsZU5hbWUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICAgIGEuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIHNlZSBpZiBjdXJyZW50IGJyb3dzZXIgaXMgaW50ZXJuZXQgZXhwbG9yZXJcbiAgICovXG4gIHB1YmxpYyBicm93c2VySXNJRSgpIHtcbiAgICBjb25zdCB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1YS5pbmRleE9mKCdNU0lFICcpO1xuICAgIGlmIChtc2llID4gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0cmlkZW50ID0gdWEuaW5kZXhPZignVHJpZGVudC8nKTtcbiAgICBpZiAodHJpZGVudCA+IC0xKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZWRnZSA9IHVhLmluZGV4T2YoJ0VkZ2UvJyk7XG4gICAgaWYgKGVkZ2UgPiAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIG1pbWUgdGltZSBmb3IgZmlsZU5hbWUgKGJhc2VkIG9uIGl0cyBleHRlbnNpb24pLlxuICAgKiBAcGFyYW0gZmlsZU5hbWVcbiAgICovXG4gIHB1YmxpYyBtaW1lVHlwZUZvckZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IG1pbWVUeXBlITogc3RyaW5nO1xuICAgIGlmIChmaWxlTmFtZSAmJiBmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIGNvbnN0IGV4dCA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFU1tleHQudG9Mb3dlckNhc2UoKV07XG4gICAgfVxuICAgIGlmICghbWltZVR5cGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFUlJPUjogbWltZVR5cGVGb3JGaWxlOiBObyBtaW1lIHR5cGUgZm91bmQgZm9yIGZpbGU6ICcgKyBmaWxlTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IG1pbWVUeXBlITogc3RyaW5nO1xuICAgIGxldCBleHQ6IHN0cmluZztcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICBleHQgPSBleHRlbnNpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICghZXh0LnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICBleHQgPSAnLicgKyBleHQ7XG4gICAgICB9XG4gICAgICBtaW1lVHlwZSA9IE1JTUVfVFlQRVNbZXh0XTtcbiAgICB9XG4gICAgaWYgKCFtaW1lVHlwZSkge1xuICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiBtaW1lVHlwZUZvckV4dGVuc2lvbjogTm8gbWltZSB0eXBlIGZvdW5kIGZvciBleHRlbnNpb246ICcgKyBleHRlbnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbWltZVR5cGU7XG4gIH1cblxufVxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { OepaAttachment } from '@ohioepa/oepa-common-lib';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Collection of methods for uploading/downloading and displaying files.
|
|
7
|
-
*/
|
|
8
|
-
export declare class OepaFileUtilService {
|
|
9
|
-
private http;
|
|
10
|
-
private uploadUrl;
|
|
11
|
-
private fileUtilUrl;
|
|
12
|
-
private downloadUrl;
|
|
13
|
-
private app;
|
|
14
|
-
constructor(http: HttpClient, ebizRootURL: string, app: string);
|
|
15
|
-
/**
|
|
16
|
-
* Return a single OepaAttachment object from the contents of file.
|
|
17
|
-
* The file will have been saved on the server if this method succeeds.
|
|
18
|
-
* @param file
|
|
19
|
-
*/
|
|
20
|
-
uploadFile(file: File): Observable<OepaAttachment>;
|
|
21
|
-
/**
|
|
22
|
-
* Download an attachment from the server. The location and systemFileName
|
|
23
|
-
* attributes of the attachment must be set and represent a valid file
|
|
24
|
-
* on the file system.
|
|
25
|
-
* @param attachment
|
|
26
|
-
*/
|
|
27
|
-
downloadAttachment(attachment: OepaAttachment): Observable<any>;
|
|
28
|
-
/**
|
|
29
|
-
* Open the file represented by data in the browser.
|
|
30
|
-
* @param data binary file data.
|
|
31
|
-
* @param mimeType the file's mime type.
|
|
32
|
-
* @param fileName optional name for the downloaded file.
|
|
33
|
-
*/
|
|
34
|
-
downloadFile(data: any, mimeType: string, fileName?: string): void;
|
|
35
|
-
/**
|
|
36
|
-
* Utility method for downloading a file with a specific name.
|
|
37
|
-
* @param url
|
|
38
|
-
* @param fileName
|
|
39
|
-
*/
|
|
40
|
-
private downLoadFileWithFileName;
|
|
41
|
-
/**
|
|
42
|
-
* Helper method to see if current browser is internet explorer
|
|
43
|
-
*/
|
|
44
|
-
browserIsIE(): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Determine the mime time for fileName (based on its extension).
|
|
47
|
-
* @param fileName
|
|
48
|
-
*/
|
|
49
|
-
mimeTypeForFile(fileName: string): string;
|
|
50
|
-
mimeTypeForExtension(extension: string): string;
|
|
51
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OepaFileUtilService, never>;
|
|
52
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OepaFileUtilService>;
|
|
53
|
-
}
|
|
Binary file
|