@gsp-svc/formdoc-upload 0.1.38 → 0.2.0

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.
Files changed (48) hide show
  1. package/bundles/gsp-svc-formdoc-upload.umd.js +434 -341
  2. package/bundles/gsp-svc-formdoc-upload.umd.js.map +1 -1
  3. package/bundles/gsp-svc-formdoc-upload.umd.min.js +1 -1
  4. package/bundles/gsp-svc-formdoc-upload.umd.min.js.map +1 -1
  5. package/esm2015/lib/i18n/language.resource.js +9 -5
  6. package/esm2015/lib/upload/download.service.js +9 -1
  7. package/esm2015/lib/upload/entity/completemultiuploadrequest.js +21 -0
  8. package/esm2015/lib/upload/entity/{gspdocsecuritynaseinfo.js → gspdocsecuritybaseinfo.js} +1 -1
  9. package/esm2015/lib/upload/entity/gspformstreamentity.js +25 -0
  10. package/esm2015/lib/upload/entity/gspformuploadentity.js +1 -1
  11. package/esm2015/lib/upload/entity/initmultiuploadrequest.js +19 -0
  12. package/esm2015/lib/upload/entity/multiuploadrequest.js +21 -0
  13. package/esm2015/lib/upload/entity/multiuploadresult.js +13 -0
  14. package/esm2015/lib/upload/entity/uploadlimit.js +1 -1
  15. package/esm2015/lib/upload/file-upload/file-upload.component.js +354 -284
  16. package/esm2015/lib/upload/upload.service.js +5 -30
  17. package/esm2015/public-api.js +2 -2
  18. package/esm5/lib/i18n/language.resource.js +9 -5
  19. package/esm5/lib/upload/download.service.js +14 -1
  20. package/esm5/lib/upload/entity/completemultiuploadrequest.js +25 -0
  21. package/esm5/lib/upload/entity/{gspdocsecuritynaseinfo.js → gspdocsecuritybaseinfo.js} +1 -1
  22. package/esm5/lib/upload/entity/gspformstreamentity.js +29 -0
  23. package/esm5/lib/upload/entity/gspformuploadentity.js +1 -1
  24. package/esm5/lib/upload/entity/initmultiuploadrequest.js +23 -0
  25. package/esm5/lib/upload/entity/multiuploadrequest.js +25 -0
  26. package/esm5/lib/upload/entity/multiuploadresult.js +17 -0
  27. package/esm5/lib/upload/entity/uploadlimit.js +1 -1
  28. package/esm5/lib/upload/file-upload/file-upload.component.js +368 -296
  29. package/esm5/lib/upload/upload.service.js +5 -34
  30. package/esm5/public-api.js +2 -2
  31. package/fesm2015/gsp-svc-formdoc-upload.js +410 -329
  32. package/fesm2015/gsp-svc-formdoc-upload.js.map +1 -1
  33. package/fesm5/gsp-svc-formdoc-upload.js +447 -351
  34. package/fesm5/gsp-svc-formdoc-upload.js.map +1 -1
  35. package/gsp-svc-formdoc-upload.metadata.json +1 -1
  36. package/lib/i18n/language.resource.d.ts +4 -0
  37. package/lib/upload/download.service.d.ts +1 -0
  38. package/lib/upload/entity/completemultiuploadrequest.d.ts +9 -0
  39. package/lib/upload/entity/gspformstreamentity.d.ts +12 -0
  40. package/lib/upload/entity/initmultiuploadrequest.d.ts +7 -0
  41. package/lib/upload/entity/multiuploadrequest.d.ts +8 -0
  42. package/lib/upload/entity/multiuploadresult.d.ts +4 -0
  43. package/lib/upload/entity/uploadlimit.d.ts +1 -1
  44. package/lib/upload/file-upload/file-upload.component.d.ts +10 -6
  45. package/lib/upload/upload.service.d.ts +2 -3
  46. package/package.json +1 -1
  47. package/public-api.d.ts +1 -1
  48. /package/lib/upload/entity/{gspdocsecuritynaseinfo.d.ts → gspdocsecuritybaseinfo.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.service.ts","ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.component.ts","ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.module.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/doctype.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformdocinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/operatingmodes.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformremovelistentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformdocoperateentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/changeinstancerequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/copyfilerequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/upload.service.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/uploadfileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformuploadentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/extensionstoragefileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/filestate.ts","ng://@gsp-svc/formdoc-upload/lib/i18n/language.resource.ts","ng://@gsp-svc/formdoc-upload/lib/local.pipe.ts","ng://@gsp-svc/formdoc-upload/lib/upload/file-upload/file-upload.component.ts","ng://@gsp-svc/formdoc-upload/lib/upload/download.service.ts","ng://@gsp-svc/formdoc-upload/lib/upload/upload.module.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog/uploaddialog/uploaddialog.component.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog.service.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog/uploaddialog.module.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/uploadlimit.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformuploadlistentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspdocmetaproperty.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/fileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspdocsecuritynaseinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/securityentity.ts"],"names":["FormdocUploadService","Injectable","args","providedIn","FormdocUploadComponent","prototype","ngOnInit","Component","selector","template","ɵ0","localStorage","getItem","FormdocUploadModule","NgModule","declarations","imports","HttpClientModule","exports","providers","LanguageService","HttpService","CacheService","SessionService","provide","LOCALE_ID","useValue","Word","Excel","Powerpoint","Pdf","Txt","Image","Other","GspFormDocInfo","Formal","Temp","GspFormRemoveListEntity","GspFormDocOperateEntity","ChangeInstanceRequest","CopyFileRequest","UploadService","http","httpclient","this","uploadList","docListInfo","rootId","post","pipe","tap","res","catchError","error","of","commit","metadataIdList","entity","cancel","put","removeList","idList","idListInfo","mode","OperatingModes","delete","getFile","metadataId","url","get","uploadFile","docInfo","uploadSliceFile","formdata","getStorageExtensionInfo","getSecurityInfoList","baseInfo","securityId","securityLevel","changeStorageInstance","storageInfoList","request","fileInfoList","copyFile","path","saveSecurityInfo","uploadFileInfoList","reqList","forEach","element","id","exProperty","JSON","stringify","securityInfo","push","getUploadedFileInfoList","formId","getRootSetting","getValidation","HttpClient","UploadFileInfo","GspFormUploadEntity","ExStorageFileInfo","New","Update","LANG_RESOURCES","zh-CHS","uploading","selectedCount","limitCount","rechooseFile","save","haveSameName","rename","replace","sizeZero","sizeMax","uploadFailure","uploadSucceed","wait","saveTo","selectAll","selectNull","detail","fileName","state","operation","size","close","loading","en-US","en","zh-CHT","LocalLangPipe","localeId","defaultLang","langCode","lang","transform","name","Pipe","Inject","FileUploadComponent","msgService","uploadService","loadService","injector","files","errFileList","errTypeList","nullFileList","beyondFileList","showType","mouseOn","bufferSize","selectedFileCount","uploadIconAddress","uploadLittleIconAddress","hasSelectedFile","fileAllSelected","uploadProcess","width","fileTotalChunk","requestArray","Array","requestBodyArray","uploadedChunk","uploadedProcess","defaultPropertyName","propertiesNames","securityInfoList","queueListStyle","dropListValue","uploadedFileTotal","haveExtensionProperty","haveSecurityInfo","uploadedFileInfoList","oldUploadedFileList","sameNameAllowed","maxFileSize","checkboxPos","top","fileType","fileCount","oldIdList","totalLoad","exStorageFileList","localeid","localepipe","_this","navigator","userAgent","indexOf","subscribe","i","toString","storageExtension","i_1","extensionPropertyNameList","validationId","parse","parseInt","configuration","length","showLoading","fileSelected","$event","selectedFiles","document","querySelector","selectedNum","warning","selectedFile","this_1","uuid","UUID","find","x","msg_1","show","initialState","buttons","text","cls","handle","newName","oldName","flag","substring","lastIndexOf","FileState","splice","filter","name_1","listToString","name_2","name_3","slice","target","value","showErrorMessage","file","errorMessage","handleFileInfo","Promise","resolve","fileInfo","type","source","getFileSize","fileSize","picListDisplayName","getPicListDisplayName","queueListDisplayName","getQueueDisplayName","hasUploaded","selectd","isUploading","uploadResult","extensionDropListId","extensionName","securityDropListId","includes","addDocInfo","DocType","then","chunkTotal","Math","ceil","chunkIndex","uploadFileInfo","uploadInfo","total","nextSize","min","fileData","innerIndex","index","fileContent","exPropertyName","formData","FormData","append","sendUploadRequest","Message","Number","toFixed","concat","selectAllFile","checkoutSelectFile","listDeleteFile","listMultipleDeleteFile","getElementById","checked","metadataList","allBox","selectdFile","docType","getImageUrl","reader","FileReader","readAsDataURL","onload","_event","imgUrl","result","DomSanitizer","bypassSecurityTrustResourceUrl","strList","securityChange","data","typeChange","exStorageFileInfo","findIndex","upload","loading_1","message","map","getUploadFileInfoList","showByGroup","showByList","mouseOver","mouseOut","MessagerService","LoadingService","Injector","Input","ViewChild","DownloadService","getDownloadUrl","getToken","mergeString","getMultipleDownloadUrl","list","getMultipleDownloadUrlWithName","zipName","endsWith","encodeURIComponent","getHistoryDownloadUrl","version","str","str1","array","floor","str2","str3","randomArray","random","timeStamp","round","Date","getTime","switchStr","ɵ0$1","UploadModule","CommonModule","ButtonsModule","NotifyModule","MessagerModule","forRoot","LoadingModule","ProgressModule","FormsModule","ComboListModule","entryComponents","ɵa","UploadDialogComponent","modalService","showDialog","dlg","title","height","iconCls","fileUpload","showButtons","content","BsModalService","UploadDialogService","componentFactoryResolver","localpipe","viewerRef","resolveComponentFactory","create","instance","showMaxButton","beforeClose","uploadFileWithLimit","limit","uploadRef","ComponentFactoryResolver","UploadDialogMoudle","FarrisDialogModule","UploadLimit","GspFormUploadListEntity","GspDocMetaProperty","FileInfo","GspDocSecurityBaseInfo","SecurityEntity"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormdocUploadService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-formdoc-upload',\n template: `\n <p>\n formdoc-upload works!\n </p>\n `,\n styles: []\n})\nexport class FormdocUploadComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { LOCALE_ID, NgModule } from '@angular/core';\nimport { CacheService, HttpService, LanguageService, SessionService } from '@ecp-caf/caf-common';\nimport { FormdocUploadComponent } from './formdoc-upload.component';\nimport { LocalLangPipe } from './local.pipe';\n\n\n@NgModule({\n declarations: [FormdocUploadComponent],\n imports: [\n HttpClientModule\n ],\n \n exports: [FormdocUploadComponent],\n providers:[ LanguageService,HttpService,CacheService,SessionService,\n { provide: LOCALE_ID, useValue: localStorage.getItem('languageCode') || 'zh-CHS' },]\n})\nexport class FormdocUploadModule { }\n","export enum DocType{\r\n Word,\r\n Excel,\r\n Powerpoint,\r\n Pdf,\r\n Txt,\r\n Image,\r\n Other\r\n}","import { GspDocMetaProperty } from './gspdocmetaproperty';\r\n\r\nexport class GspFormDocInfo {\r\n public metadataId: string;\r\n public fileName: string;\r\n public fileContent: string;\r\n public index: number;\r\n public total: number;\r\n public size: number;\r\n public exPropertyName: string;\r\n public extProperty: GspDocMetaProperty;\r\n}","export enum OperatingModes{\r\n Formal,\r\n Temp\r\n}","import { OperatingModes } from \"./operatingmodes\";\r\n\r\nexport class GspFormRemoveListEntity {\r\n public metadataIdList: string[];\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n}","export class GspFormDocOperateEntity {\r\n public metadataIdList: string[];\r\n public rootId: string;\r\n}","import { ExStorageFileInfo } from './extensionstoragefileinfo';\r\n\r\nexport class ChangeInstanceRequest {\r\n public fileInfoList: ExStorageFileInfo[];\r\n public rootId: string;\r\n}","export class CopyFileRequest{\r\n public metadataId:string;\r\n public rootId:string;\r\n public path:string;\r\n}","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GspFormUploadListEntity } from './entity/gspformuploadlistentity';\nimport { HttpService } from '@ecp-caf/caf-common';\nimport { catchError, tap } from 'rxjs/operators';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { GspFormRemoveListEntity } from './entity/gspformremovelistentity';\nimport { of } from 'rxjs/observable/of';\nimport { GspFormDocOperateEntity } from './entity/gspformdocoperateentity';\n\nimport { GspFormUploadEntity } from './entity/gspformuploadentity';\nimport { ExStorageFileInfo } from './entity/extensionstoragefileinfo';\nimport { ChangeInstanceRequest } from './entity/changeinstancerequest';\nimport { OperatingModes } from './entity/operatingmodes';\nimport { GspDocSecurityBaseInfo } from './entity/gspdocsecuritynaseinfo';\nimport { UploadFileInfo } from './entity/uploadfileinfo';\nimport { ExPropertyRequest } from './entity/expropertyrequest';\nimport { CopyFileRequest } from './entity/copyfilerequest';\n\n\n\n@Injectable()\nexport class UploadService {\n\n constructor(private http: HttpService, private httpclient: HttpClient) { }\n\n uploadList(docListInfo: GspFormUploadListEntity, rootId: string): Observable<any> {\n let url;\n docListInfo.rootId = rootId;\n\n url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.post(url, docListInfo).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n\n commit(metadataIdList: string[], rootId: string): Observable<any> {\n let url;\n let entity: GspFormDocOperateEntity = new GspFormDocOperateEntity;\n entity.metadataIdList = metadataIdList;\n entity.rootId = rootId;\n url = \"/api/runtime/dfs/v1.0/formdoc/commit\";\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/commit\";\n\n return this.http.post(url, entity).pipe();\n }\n\n cancel(metadataIdList: string[], rootId: string): Observable<any> {\n let url;\n let entity: GspFormDocOperateEntity = new GspFormDocOperateEntity;\n entity.metadataIdList = metadataIdList;\n entity.rootId = rootId;\n url = \"/api/runtime/dfs/v1.0/formdoc/cancel\";\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/cancel\";\n //localStorage.setItem(\"SessionId\",\"huoliang\");\n return this.http.put(url, entity).pipe();\n }\n\n removeList(idList: string[], rootId: string) {\n let url;\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/list\";\n url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n var idListInfo = new GspFormRemoveListEntity;\n idListInfo.metadataIdList = idList;\n idListInfo.mode = OperatingModes.Temp;\n idListInfo.rootId = rootId;\n return this.http.delete(url, idListInfo).pipe();\n }\n\n getFile(metadataId: string, rootId: string) {\n\n let url;\n if (rootId == \"\")\n url = \"/api/runtime/dfs/v1.0/formdoc/file/\" + metadataId;\n else\n url = \"/api/runtime/dfs/v1.0/formdoc/file/\" + metadataId + \"/\" + rootId;\n return this.http.get(url).pipe(tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n\n }\n\n uploadFile(docInfo: GspFormUploadEntity): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.post(url, docInfo).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n uploadSliceFile(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/slice\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n\n getStorageExtensionInfo(): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/storagestrategy/extension\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n getSecurityInfoList(baseInfo: GspDocSecurityBaseInfo): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/storagestrategy/security\";\n url = url + \"?id=\" + baseInfo.securityId + \"&level=\" + baseInfo.securityLevel;\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n changeStorageInstance(storageInfoList: ExStorageFileInfo[], rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/changeinstance\";\n let request: ChangeInstanceRequest = new ChangeInstanceRequest;\n request.fileInfoList = storageInfoList;\n request.rootId = rootId;\n return this.http.post(url, request).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n copyFile(metadataId: string, rootId: string, path: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/copy\";\n let request: CopyFileRequest = new CopyFileRequest;\n request.metadataId = metadataId;\n request.rootId = rootId;\n request.path = path;\n return this.http.post(url, request).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n saveSecurityInfo(uploadFileInfoList: UploadFileInfo[], rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/doc/exproperty\";\n let reqList: ExPropertyRequest[] = [];\n uploadFileInfoList.forEach(element => {\n let request: ExPropertyRequest = { id: element.metadataId, rootId: rootId, exProperty: JSON.stringify(element.securityInfo) };\n reqList.push(request);\n })\n return this.http.post(url, reqList).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }))\n }\n\n\n getUploadedFileInfoList(formId: string, rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/uploadedfile/infolist\" + \"?formid=\" + formId + \"&rootid=\" + rootId;\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n getRootSetting(rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/rootsetting/\" + rootId;\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n getValidation(id: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/validation/\" + id;\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n}\n","import { FileState } from \"./filestate\";\r\nimport { SecurityEntity } from \"./securityentity\";\r\n\r\nexport class UploadFileInfo {\r\n\r\n public metadataId: string;\r\n public fileName: string;\r\n public fileSize: string;\r\n public state: FileState;\r\n public securityInfo: SecurityEntity;\r\n\r\n}","import { OperatingModes } from './operatingmodes';\r\nimport { GspFormDocInfo } from './gspformdocinfo';\r\n\r\nexport class GspFormUploadEntity{\r\n public formId: string;\r\n public docInfo: GspFormDocInfo;\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n\r\n}","export class ExStorageFileInfo {\r\n public metadataId: string;\r\n public exPropertyName: string;\r\n}","export enum FileState{\r\n New,\r\n Update\r\n}","export const LANG_RESOURCES = {\r\n 'zh-CHS': {\r\n 'uploadFile': '上传文件',\r\n 'uploading':'正在上传文件……',\r\n 'selectedCount':'已选择文件数量:',\r\n 'limitCount':'超出系统限制数量:',\r\n 'rechooseFile':',重新选择上传文件。',\r\n 'save':'保存',\r\n 'cancel':'取消',\r\n 'haveSameName':'已上传过同名文件: ',\r\n 'rename':'重命名',\r\n\t\t'replace':'替换',\r\n 'sizeZero':'文件大小为0',\r\n 'sizeMax':'文件大小超出限制',\r\n 'uploadFailure':'上传失败',\r\n 'uploadSucceed':'上传成功',\r\n 'wait':'等一下,文档正在上传。',\r\n 'saveTo':'正在将文件保存到',\r\n 'delete':'删除',\r\n 'selectAll':'全选',\r\n 'selectNull':'全不选',\r\n 'detail':'详情',\r\n 'fileName':'文件名',\r\n 'state':'状态',\r\n 'operation':'操作',\r\n 'size':'大小',\r\n 'close':'关闭',\r\n 'loading':'拼命加载中'\r\n },\r\n 'en-US': {\r\n 'uploadFile': 'Upload File',\r\n 'uploading':'File Uploading……',\r\n 'selectedCount':'Selected files count:',\r\n 'limitCount':'System limit count:',\r\n 'rechooseFile':',Reselect upload file.',\r\n 'save':'Save',\r\n 'cancel':'Cancel',\r\n 'haveSameName':'A file with the same name has been uploaded: ',\r\n 'rename':'Rename',\r\n\t\t'replace':'Replace',\r\n 'sizeZero':'File size is 0',\r\n 'sizeMax':'File size beyond limit',\r\n 'uploadFailure':'Upload failed',\r\n 'uploadSucceed':'Upload successfully',\r\n 'wait':'Wait a minute, the file is uploading.',\r\n 'saveTo':'Saving file to',\r\n 'delete':'Delete',\r\n 'selectAll':'Select all',\r\n 'selectNull':'Not at all',\r\n 'detail':'Details',\r\n 'fileName':'Filename',\r\n 'state':'State',\r\n 'operation':'Operation',\r\n 'size':'Size',\r\n 'close':'Close',\r\n 'loading':'Loading'\r\n },\r\n 'en': {\r\n 'uploadFile': 'Upload File',\r\n 'uploading':'File Uploading……',\r\n 'selectedCount':'Selected files count:',\r\n 'limitCount':'System limit count:',\r\n 'rechooseFile':',Reselect upload file.',\r\n 'save':'Save',\r\n 'cancel':'Cancel',\r\n 'haveSameName':'A file with the same name has been uploaded: ',\r\n 'rename':'Rename',\r\n\t\t'replace':'Replace',\r\n 'sizeZero':'File size is 0',\r\n 'sizeMax':'File size beyond limit',\r\n 'uploadFailure':'Upload failed',\r\n 'uploadSucceed':'Upload successfully',\r\n 'wait':'Wait a minute, the file is uploading.',\r\n 'saveTo':'Saving file to',\r\n 'delete':'Delete',\r\n 'selectAll':'Select all',\r\n 'selectNull':'Not at all',\r\n 'detail':'Details',\r\n 'fileName':'Filename',\r\n 'state':'State',\r\n 'operation':'Operation',\r\n 'size':'Size',\r\n 'close':'Close',\r\n 'loading':'Loading'\r\n\r\n },\r\n 'zh-CHT': {\r\n 'uploadFile': '上傳文件',\r\n 'uploading':'正在上傳文件……',\r\n 'selectedCount':'已選擇文件數量:',\r\n 'limitCount':'超出系統限制數量:',\r\n 'rechooseFile':',重新選擇上傳文件。',\r\n 'save':'保存',\r\n 'cancel':'取消',\r\n 'haveSameName':'已上傳過同名文件: ',\r\n 'rename':'重命名',\r\n\t\t'replace':'替換',\r\n 'sizeZero':'文件大小為0',\r\n 'sizeMax':'文件大小超出限制',\r\n 'uploadFailure':'上傳失敗',\r\n 'uploadSucceed':'上傳成功',\r\n 'wait':'等一下,文件正在上傳。',\r\n 'saveTo':'正在將文件保存到',\r\n 'delete':'删除',\r\n 'selectAll':'全選',\r\n 'selectNull':'全不選',\r\n 'detail':'詳情',\r\n 'fileName':'文件名',\r\n 'state':'狀態',\r\n 'operation':'操作',\r\n 'size':'大小',\r\n 'close':'關閉',\r\n 'loading':'拼命加載中'\r\n },\r\n};","import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core';\r\nimport { LANG_RESOURCES } from './i18n/language.resource';\r\n\r\n@Pipe({ name: 'locale' })\r\nexport class LocalLangPipe implements PipeTransform {\r\n private readonly defaultLang: string = \"zh-CHS\";\r\n private langCode: string;\r\n private lang: {};\r\n constructor(\r\n @Inject(LOCALE_ID) localeId: string\r\n ) {\r\n this.langCode = localStorage.getItem(\"languageCode\") || localeId || this.defaultLang;\r\n this.lang = LANG_RESOURCES[this.langCode] || LANG_RESOURCES[this.defaultLang];\r\n }\r\n transform(name: string): any {\r\n return this.lang[name] || name;\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input, ViewChild, TemplateRef, Optional, Injector, LOCALE_ID } from '@angular/core';\nimport { FileInfo } from '../entity/fileinfo';\nimport { DocType } from '../entity/doctype';\nimport { GspFormDocInfo } from '../entity/gspformdocinfo';\nimport { OperatingModes } from '../entity/operatingmodes';\nimport { UploadService } from '../upload.service';\nimport { UploadFileInfo } from '../entity/uploadfileinfo';\nimport { MessagerService } from '@farris/ui-messager';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\nimport { GspFormUploadEntity } from '../entity/gspformuploadentity';\nimport { UUID } from 'angular2-uuid';\nimport { StorageExtension } from '../entity/storageextension';\nimport { ExStorageFileInfo } from '../entity/extensionstoragefileinfo';\nimport { DropListEntity } from '../entity/droplistentity';\nimport { LoadingService } from '@farris/ui-loading';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { fillProperties } from '@angular/core/src/util/property';\nimport { FileState } from '../entity/filestate';\nimport { LocalLangPipe } from '../../local.pipe';\nimport { GspDocSecurityBaseInfo } from '../entity/gspdocsecuritynaseinfo';\nimport { state } from '@angular/animations';\nimport { SecurityEntity } from '../entity/securityentity';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { resolve } from 'url';\n\n\n@Component({\n selector: 'app-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.css'],\n})\nexport class FileUploadComponent implements OnInit {\n\n files: FileInfo[] = [];\n metadataIdList: string[] = [];\n uploadFileInfoList: UploadFileInfo[] = [];\n errFileList: string[] = [];\n errTypeList: string[] = [];\n nullFileList: string[] = [];\n beyondFileList: string[] = [];\n showType: number = 0;\n mouseOn: boolean = false;\n bufferSize = 10 * 1024 * 1024;\n selectedFiles: any;\n\n selectedFileCount: number = 0;\n\n uploadIconAddress = '/platform/runtime/dfs/images/upload.svg';\n uploadLittleIconAddress = '/platform/runtime/dfs/images/uploadIcon.svg';\n\n hasSelectedFile: boolean = false;\n\n fileAllSelected: boolean = false;\n\n uploadProcess = { width: '0%' };\n\n fileTotalChunk: { [key: string]: number } = {};\n //fileUploadState: { [key: string]: boolean } = {};\n //flag: number = 0;\n requestArray: Array<Observable<any>> = new Array;\n\n requestBodyArray: Array<GspFormUploadEntity> = new Array;\n\n uploadedChunk: { [key: string]: number } = {};\n uploadedProcess: { [key: string]: number } = {};\n\n //allSelected: boolean = true;\n storageExtension: StorageExtension;\n\n defaultPropertyName: string = \"\";\n propertiesNames: DropListEntity[] = [];\n\n securityInfoList: SecurityEntity[] = [];\n\n queueListStyle = { width: '480px' };\n\n dropListValue: string = \"\";\n\n uploadedFileTotal: number = 0;\n\n validationId: string;\n\n haveExtensionProperty: boolean = false;\n\n haveSecurityInfo: boolean = false;\n\n uploadedFileInfoList = [];\n oldUploadedFileList = [];\n //uploadedNameList = [];\n\n sameNameAllowed = true;\n maxFileSize: number = 0;;\n localeid: string;\n localepipe: LocalLangPipe;\n httpclient: HttpClient;\n checkboxPos = { top: '0px' }\n\n constructor(private msgService: MessagerService, private uploadService: UploadService, private loadService: LoadingService, private injector?: Injector) {\n if (this.injector) {\n this.httpclient = this.injector.get(HttpClient);\n this.localeid = localStorage.getItem(\"languageCode\") || this.injector.get(LOCALE_ID);\n this.localepipe = new LocalLangPipe(this.localeid);\n }\n }\n @Input() formId: string;\n @Input() rootId: string;\n @Input() fileType: string = \"*\";\n @Input() fileCount: number = 0;\n @Input() oldIdList: string[] = [];\n @Input() securityInfo: GspDocSecurityBaseInfo = null;\n\n //@Output() onCustomEvent: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('opCell') opCell: TemplateRef<any>;\n\n ngOnInit() {\n if (navigator.userAgent.indexOf('Firefox') >= 0)\n this.checkboxPos.top = '14px';\n //if (this.storageService != null) {\n if (this.securityInfo != null) {\n this.uploadService.getSecurityInfoList(this.securityInfo).subscribe(\n res => {\n this.haveSecurityInfo = true;\n let i = 0;\n res.forEach(element => {\n this.securityInfoList.push({ id: i.toString(), securityId: element.securityId, securityLevel: element.securityLevel, name: element.name });\n i++;\n });\n }\n )\n }\n this.uploadService.getStorageExtensionInfo().subscribe(\n res => {\n if (res != null && res.error == null) {\n this.storageExtension = res;\n this.defaultPropertyName = this.storageExtension.defaultPropertyName;\n this.propertiesNames.push({ id: \"0\", name: this.storageExtension.defaultPropertyName });\n let i = 0;\n // this.propertiesNames.push(...(this.storageExtension.extensionPropertyNameList));\n this.storageExtension.extensionPropertyNameList.forEach(element => {\n this.propertiesNames.push({ id: (++i).toString(), name: element });\n });\n this.queueListStyle.width = '380px';\n this.haveExtensionProperty = true;\n }\n }\n )\n\n this.uploadService.getRootSetting(this.rootId).subscribe(\n res => {\n if (res != null && res.error == null) {\n this.sameNameAllowed = res.sameNameAllowed;\n this.validationId = res.validationId;\n if (!this.sameNameAllowed) {\n this.uploadService.getUploadedFileInfoList(this.formId, this.rootId).subscribe(\n res => {\n if (res != null && res.error == null) {\n this.uploadedFileInfoList = res;\n this.oldUploadedFileList = JSON.parse(JSON.stringify(res));;\n\n }\n })\n }\n this.uploadService.getValidation(this.validationId).subscribe(\n res => {\n this.maxFileSize = parseInt(JSON.parse(res.configuration).maxFileSize);\n }\n )\n }\n }\n )\n if (this.oldIdList != null && this.oldIdList.length > 0) {\n this.uploadService.cancel(this.oldIdList, this.rootId).subscribe();\n }\n }\n\n totalLoad: any = null;\n\n showLoading() {\n this.hasSelectedFile = true;\n // if (this.totalLoad == null)\n // this.totalLoad = this.loadService.show({\n // message: this.localepipe.transform('uploading')\n // });\n }\n\n\n fileSelected($event) {\n\n // const loading = this.loadService.show({\n // message: this.localepipe.transform('uploading')\n // });\n\n // this.totalLoad.close();\n // this.totalLoad = null;\n this.hasSelectedFile = true;\n this.selectedFiles = document.querySelector('#file');\n\n if (this.fileCount > 0) {\n if (this.selectedFiles.files.length + this.files.length > this.fileCount) {\n let selectedNum: number = (this.selectedFiles.files.length as number) + this.files.length;\n this.msgService.warning(this.localepipe.transform('selectedCount') + selectedNum + this.localepipe.transform('limitCount') + this.fileCount + this.localepipe.transform('rechooseFile'));\n return;\n }\n }\n\n //this.flag = 0;\n for (let i = 0; i < this.selectedFiles.files.length; i++) {\n let selectedFile = this.selectedFiles.files[i];\n //selectedFile.slice\n let uuid = UUID.UUID();\n\n if (selectedFile.size == 0) {\n this.nullFileList.push(selectedFile.name);\n continue;\n }\n\n if (this.maxFileSize != null && this.maxFileSize > 0) {\n if (selectedFile.size > this.maxFileSize * 1000) {\n this.beyondFileList.push(selectedFile.name);\n continue;\n }\n }\n\n if (!this.sameNameAllowed) {\n if (this.uploadedFileInfoList.find(x => x.fileName == selectedFile.name) != null) {\n // this.uploadedNameList.push(selectedFile.name);\n // this.msgService.question('之前已上传过同名文件: ' + selectedFile.name + ',需要替换么?', () => {\n // uuid = this.uploadedFileInfoList.find(x => x.fileName == selectedFile.name).metadataId;\n // this.uploadFile(uuid, selectedFile);\n // })\n const msg = this.msgService.show('warning', this.localepipe.transform('haveSameName') + selectedFile.name, {\n initialState: {\n buttons: [\n {\n text: this.localepipe.transform('rename'),\n cls: 'btn btn-secondary',\n handle: () => {\n let oldName: string = selectedFile.name;\n let newName\n let flag = true;\n let i = 1;\n while (flag) {\n newName = oldName.substring(0, oldName.lastIndexOf('.')) + '(' + i + ')' + oldName.substring(oldName.lastIndexOf('.'));\n if (this.uploadedFileInfoList.find(x => x.fileName == newName) != null) {\n i++;\n }\n else\n flag = false;\n }\n\n this.uploadFile(uuid, selectedFile, newName);\n msg.close();\n }\n },\n {\n text: this.localepipe.transform('replace'),\n cls: 'btn btn-secondary',\n handle: () => {\n uuid = this.uploadedFileInfoList.find(x => x.fileName == selectedFile.name).metadataId;\n this.uploadFile(uuid, selectedFile, selectedFile.name, FileState.Update);\n this.uploadedFileTotal--;\n if (this.oldUploadedFileList.find(x => x.fileName == selectedFile.name)) {\n this.uploadedFileTotal++;\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == selectedFile.name)[0]), 1);\n }\n msg.close();\n }\n },\n {\n text: this.localepipe.transform('cancel'),\n cls: 'btn btn-secondary',\n handle: () => {\n msg.close();\n }\n }\n ]\n }\n })\n continue;\n }\n }\n this.uploadFile(uuid, selectedFile, selectedFile.name);\n\n }\n // if (this.uploadedNameList.length > 0) {\n // let name: string = this.listToString(this.uploadedNameList);\n // this.msgService.warning('之前已上传过同名文件: ' + name + '请重新选择上传文件。');\n // this.uploadedNameList = [];\n // }\n\n if (this.errFileList.length > 0) {\n let name: string = this.listToString(this.errFileList);\n this.msgService.warning(this.localepipe.transform('haveSameName') + name + this.localepipe.transform('rechooseFile'));\n this.errFileList = [];\n }\n\n if (this.nullFileList.length > 0) {\n let name: string = this.listToString(this.nullFileList);\n name = name.substring(0, name.length - 1);\n this.msgService.warning(name + this.localepipe.transform('sizeZero') + this.localepipe.transform('rechooseFile'));\n this.nullFileList = [];\n }\n\n if (this.beyondFileList.length > 0) {\n let name: string = this.listToString(this.beyondFileList);\n name = name.substring(0, name.length - 1);\n this.msgService.warning(name + this.localepipe.transform('sizeMax') + this.maxFileSize + \"KB\" + this.localepipe.transform('rechooseFile'));\n this.beyondFileList = [];\n }\n // if (this.errTypeList.length > 0) {\n // let type: string = this.listToString(this.errTypeList);\n // this.msgService.warning('不支持上传类型为 ' + type + '的文件请重新选择上传文件。');\n // this.errTypeList = [];\n // }\n this.files = this.files.slice();\n this.fileAllSelected = false;\n $event.target.value = '';\n // loading.close();\n }\n\n showErrorMessage(file) {\n this.msgService.error(this.localepipe.transform('uploadFailure') + file.errorMessage);\n }\n\n handleFileInfo(uuid: string, selectedFile, fileName: string): Promise<any> {\n return new Promise(resolve => {\n let fileInfo: FileInfo;\n\n fileInfo = {\n id: uuid,\n name: fileName,\n type: selectedFile.type,\n source: \"\",\n size: this.getFileSize(selectedFile.size),\n fileSize: selectedFile.size,\n picListDisplayName: this.getPicListDisplayName(fileName),\n queueListDisplayName: this.getQueueDisplayName(fileName),\n //content: reader.result.toString(),\n hasUploaded: false,\n mouseOn: false,\n selectd: false,\n isUploading: true,\n uploadResult: false,\n uploadProcess: 0,\n errorMessage: \"\",\n extensionDropListId: 0,\n extensionName: \"\",\n securityDropListId: 0,\n securityInfo: this.securityInfoList[0]\n }\n\n if (this.storageExtension != null)\n fileInfo.extensionName = this.defaultPropertyName;\n\n\n let type: string = selectedFile.type;\n if (type.includes(\"tiff\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Other);\n }\n else if (type.includes(\"image\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Image);\n }\n else if (type.includes(\"word\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Word);\n }\n else if (type.includes(\"pdf\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Pdf);\n }\n else if (type.includes(\"plain\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Txt);\n }\n else if (type.includes(\"sheet\") || type.includes(\"excel\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Excel)\n }\n else if (type.includes(\"powerpoint\") || type.includes(\"presentation\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Powerpoint);\n }\n else {\n this.addDocInfo(selectedFile, fileInfo, DocType.Other);\n // let name: string = selectedFile.name;\n // let errType = name.substring(selectedFile.name.lastIndexOf('.'));\n // this.errTypeList.push(errType);\n }\n resolve(fileInfo);\n })\n }\n\n uploadFile(uuid: string, selectedFile, fileName: string, state: FileState = FileState.New) {\n this.handleFileInfo(uuid, selectedFile, fileName).then(res => {\n let fileInfo = res;\n let chunkTotal: number = Math.ceil(selectedFile.size / this.bufferSize);\n let chunkIndex: number = 0;\n\n this.fileTotalChunk[uuid] = chunkTotal;\n\n let uploadFileInfo = new UploadFileInfo();\n\n uploadFileInfo.metadataId = uuid;\n uploadFileInfo.fileName = fileInfo.name;\n uploadFileInfo.fileSize = fileInfo.size;\n uploadFileInfo.state = state;\n uploadFileInfo.securityInfo = this.securityInfoList[0];\n\n\n while (chunkIndex < chunkTotal) {\n let uploadInfo = new GspFormUploadEntity;\n uploadInfo.formId = this.formId;\n uploadInfo.mode = OperatingModes.Temp;\n uploadInfo.rootId = this.rootId;\n\n let docInfo: GspFormDocInfo = new GspFormDocInfo;\n\n docInfo.fileName = fileName;\n docInfo.metadataId = uuid;\n docInfo.total = chunkTotal;\n\n this.uploadedChunk[docInfo.metadataId] = 0;\n\n let nextSize = Math.min((chunkIndex + 1) * this.bufferSize, selectedFile.size);\n let fileData = selectedFile.slice(chunkIndex * this.bufferSize, nextSize);\n\n // let reader = new FileReader();\n // reader.readAsBinaryString(fileData);\n let innerIndex = chunkIndex;\n // reader.onload = () => {\n // docInfo.fileContent = btoa(reader.result.toString());\n docInfo.size = selectedFile.size;\n docInfo.index = innerIndex;\n docInfo.fileContent = \"\"\n //chunkIndex++;\n if (this.haveExtensionProperty)\n docInfo.exPropertyName = this.defaultPropertyName;\n\n //docInfo.isLast = true;\n uploadInfo.docInfo = docInfo;\n\n // let info = uploadInfo;\n\n // this.requestArray.push(this.uploadService.uploadFile(uploadInfo));\n // this.requestBodyArray.push(info);\n //封装请求formdata\n let formData = new FormData();\n formData.append('uploadInfo', JSON.stringify(uploadInfo));\n formData.append('docInfo', JSON.stringify(docInfo));\n formData.append('file', fileData);\n\n\n // }\n //console.log(chunkIndex + 1);\n chunkIndex = chunkIndex + 1;\n }\n\n\n let index = -1;\n this.files.forEach(x => {\n if (x.name == fileInfo.name) {\n if (index == -1)\n index = this.files.indexOf(x);\n }\n })\n if (index != -1 && index != this.files.length - 1) {\n this.files.splice(index, 1);\n this.uploadFileInfoList.splice(index, 1);\n this.uploadedFileInfoList.splice(index, 1);\n this.uploadedFileTotal--;\n }\n })\n }\n\n sendUploadRequest(formData: any, fileInfo: any, docInfo: any, uploadFileInfo: any) {\n this.uploadSliceFile(formData).subscribe(res => {\n if (res != null) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = false;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.files[this.files.indexOf(fileInfo)].errorMessage = res.error.Message;\n } else {\n this.uploadedChunk[docInfo.metadataId]++;\n this.files[this.files.indexOf(fileInfo)].uploadProcess = Number.parseInt((this.uploadedChunk[docInfo.metadataId] / this.fileTotalChunk[docInfo.metadataId] * 100).toFixed(0));\n if (this.uploadedChunk[docInfo.metadataId] == this.fileTotalChunk[docInfo.metadataId]) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = true;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.uploadFileInfoList = this.uploadFileInfoList.concat(uploadFileInfo);\n this.uploadedFileInfoList = this.uploadedFileInfoList.concat(uploadFileInfo);\n this.uploadedFileTotal++;\n }\n }\n });\n }\n\n uploadSliceFile(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/slice\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n selectAllFile() {\n\n if (!this.fileAllSelected) {\n this.files.forEach(element => {\n // let obj: any = document.getElementById(element.name);\n // obj.checked = true;\n element.selectd = true;\n });\n this.fileAllSelected = true;\n this.selectedFileCount = this.files.length;\n\n } else {\n this.files.forEach(element => {\n // let obj: any = document.getElementById(element.name);\n // obj.checked = false;\n element.selectd = false;\n });\n this.fileAllSelected = false;\n this.selectedFileCount = 0;\n }\n }\n\n\n checkoutSelectFile(file: FileInfo) {\n // let obj: any = document.getElementById(fileName);\n file.selectd = !file.selectd;\n if (file.selectd)\n this.selectedFileCount++;\n else\n this.selectedFileCount--;\n if (this.selectedFileCount == this.files.length) {\n this.fileAllSelected = true;\n //this.isFileAllSelected();\n }\n else {\n this.fileAllSelected = false;\n //this.isFileAllSelected();\n }\n\n }\n\n listDeleteFile(fileInfo: FileInfo) {\n if (fileInfo.selectd)\n this.selectedFileCount--;\n //console.log(fileName);\n this.files.splice(this.files.indexOf(fileInfo), 1);\n if (fileInfo.uploadResult) {\n let idList: string[] = [];\n idList.push(fileInfo.id);\n this.uploadService.cancel(idList, this.rootId).subscribe();\n\n this.uploadFileInfoList.splice(this.uploadFileInfoList.indexOf(this.uploadFileInfoList.filter(x => x.fileName == fileInfo.name)[0]), 1);\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == fileInfo.name)[0]), 1);\n this.uploadedFileTotal--;\n }\n if (this.selectedFileCount == 0)\n this.fileAllSelected = false;\n }\n\n listMultipleDeleteFile() {\n let selectedFile: FileInfo[] = [];\n this.files.forEach(element => {\n let obj: any = document.getElementById(element.name);\n if (obj.checked)\n selectedFile.push(element);\n })\n let metadataList: string[] = [];\n selectedFile.forEach(element => {\n metadataList.push(element.id);\n this.files.splice(this.files.indexOf(element), 1);\n if (element.uploadResult) {\n // let idList: string[] = [];\n // idList.push(fileInfo.id);\n // this.uploadService.cancel(idList, this.rootId).subscribe();\n\n this.uploadFileInfoList.splice(this.uploadFileInfoList.indexOf(this.uploadFileInfoList.filter(x => x.fileName == element.name)[0]), 1);\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == element.name)[0]), 1);\n this.uploadedFileTotal--;\n }\n })\n this.uploadService.cancel(metadataList, this.rootId).subscribe();\n\n let allBox: any = document.getElementById(\"allCheckBox\");\n if (allBox != null)\n allBox.checked = false;\n this.selectedFileCount = 0;\n this.fileAllSelected = false;\n }\n\n\n getPicListDisplayName(fileName: string) {\n if (fileName.length <= 10)\n return fileName;\n else {\n let headContent = fileName.substring(0, 2);\n let tailContent = fileName.substring(fileName.lastIndexOf('.') - 2);\n return headContent + \"…\" + tailContent;\n }\n }\n\n getQueueDisplayName(fileName: string) {\n return fileName;\n }\n\n addDocInfo(selectdFile, fileInfo: FileInfo, docType: DocType): Promise<any> {\n return new Promise(resolve => {\n switch (docType) {\n case DocType.Word: {\n fileInfo.source = \"/platform/runtime/dfs/images/word.png\"\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Pdf: {\n fileInfo.source = \"/platform/runtime/dfs/images/pdf.png\"\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Excel: {\n fileInfo.source = \"/platform/runtime/dfs/images/excel.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Txt: {\n fileInfo.source = \"/platform/runtime/dfs/images/txt.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Powerpoint: {\n fileInfo.source = \"/platform/runtime/dfs/images/ppt.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Other: {\n fileInfo.source = \"/platform/runtime/dfs/images/file.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Image: {\n this.getImageUrl(selectdFile).then(res => {\n fileInfo.source = res;\n this.files.push(fileInfo);\n resolve(fileInfo);\n })\n }\n\n }\n resolve(fileInfo);\n })\n }\n\n getImageUrl(selectdFile: any): Promise<any> {\n return new Promise(resolve => {\n let reader = new FileReader();\n reader.readAsDataURL(selectdFile);\n reader.onload = (_event) => {\n let imgUrl = reader.result;\n if (this.injector != null) {\n let sanitizer = this.injector.get(DomSanitizer);\n imgUrl = sanitizer.bypassSecurityTrustResourceUrl(imgUrl);\n }\n resolve(imgUrl);\n }\n })\n }\n\n listToString(strList: string[]) {\n let name: string = \"\";\n for (let i = 0; i < strList.length; i++) {\n name += strList[i] + \",\";\n }\n return name;\n }\n\n securityChange($event: any, file: FileInfo) {\n file.securityInfo = $event.data;\n let uploadFile = this.uploadFileInfoList.filter(x => x.metadataId = file.id)[0];\n uploadFile.securityInfo = $event.data;\n }\n\n\n exStorageFileList: ExStorageFileInfo[] = [];\n\n typeChange($event: any, file: FileInfo) {\n file.extensionName = $event.data.name;\n let exStorageFileInfo: ExStorageFileInfo = new ExStorageFileInfo;\n if (file.extensionName == this.storageExtension.defaultPropertyName) {\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0)\n this.exStorageFileList.splice(this.exStorageFileList.findIndex(x => x.metadataId == file.id), 1)\n } else {\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0) {\n exStorageFileInfo = this.exStorageFileList.filter(x => x.metadataId == file.id)[0];\n exStorageFileInfo.exPropertyName = file.extensionName;\n } else {\n exStorageFileInfo.metadataId = file.id;\n exStorageFileInfo.exPropertyName = file.extensionName;\n this.exStorageFileList.push(exStorageFileInfo);\n }\n }\n }\n\n upload(): Observable<any> {\n if (this.uploadedFileTotal != this.files.filter(x => x.isUploading || x.uploadResult).length) {\n // this.notifyService.success(<NotifyOptions>{\n // msg: '保存成功!', timeout: 3000\n // });\n this.msgService.warning(this.localepipe.transform('wait'));\n return of(false);\n }\n if (this.haveSecurityInfo) {\n this.uploadService.saveSecurityInfo(this.uploadFileInfoList, this.rootId).subscribe();\n }\n if (this.storageExtension == null)\n return of(this.uploadFileInfoList);\n else {\n if (this.exStorageFileList.length == 0)\n return of(this.uploadFileInfoList);\n else {\n const loading = this.loadService.show({\n message: this.localepipe.transform('saveTo') + this.storageExtension.extensionName\n });\n return this.uploadService.changeStorageInstance(this.exStorageFileList, this.rootId).pipe(\n map(res => {\n // if (res != null)\n // this.msgService.error('保存到' + this.storageExtension.extensionName + \"失败,上传文件自动保存到\" + this.storageExtension.defaultPropertyName + \"存储。\" + res.error.Message);\n loading.close();\n return this.uploadFileInfoList;\n }))\n }\n }\n }\n\n cancel() {\n if (this.uploadFileInfoList.length == 0)\n return;\n this.uploadFileInfoList.forEach(element => {\n this.metadataIdList.push(element.metadataId);\n })\n this.uploadService.cancel(this.metadataIdList, this.rootId).subscribe();\n\n }\n\n getUploadFileInfoList() {\n return this.uploadFileInfoList;\n }\n\n delete(file) {\n this.files.splice(this.files.indexOf(file), 1);\n if (file.uploadResult)\n this.uploadedFileTotal--;\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0) {\n this.exStorageFileList.splice(this.exStorageFileList.findIndex(x => x.metadataId == file.id), 1);\n }\n // var obj:any = document.querySelector('#file');\n // obj.files.remove();\n //obj.value='';\n }\n\n getFileSize(size: number) {\n if (size < 102400)\n return (size / 1024).toFixed(1) + \"K\";\n else if (size < 1024 * 1024)\n return (size / 1024).toFixed(0) + \"K\";\n else if (size < 100 * 1024 * 1024)\n return (size / 1024 / 1024).toFixed(1) + \"M\";\n else if (size < 1024 * 1024 * 1024)\n return (size / 1024 / 1024).toFixed(0) + \"M\";\n else\n return (size / 1024 / 1024 / 1024).toFixed(1) + \"G\";\n }\n showByGroup() {\n this.showType = 0;\n // this.selectedFileCount = 0;\n }\n\n showByList() {\n this.showType = 1;\n // this.selectedFileCount = 0;\n if (this.selectedFileCount != 0 && this.selectedFileCount == this.files.length) {\n this.fileAllSelected = true;\n }\n }\n\n mouseOver(file) {\n file.mouseOn = true;\n }\n mouseOut(file) {\n file.mouseOn = false;\n }\n\n}\n\n\n","import { Injectable } from '@angular/core';\n\n\n@Injectable()\nexport class DownloadService {\n\n constructor() { }\n\n getDownloadUrl(metadataId: string, rootId: string) {\n return \"/api/runtime/dfs/v1.0/doc/filecontent?metadataid=\" + metadataId + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(metadataId, rootId));\n }\n\n getMultipleDownloadUrl(metadataIdList: string, rootId: string) {\n let list: string[] = JSON.parse(metadataIdList);\n return \"/api/runtime/dfs/v1.0/doc/multiple/download?metadataidlist=\" + metadataIdList + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(list[0], rootId));\n }\n\n getMultipleDownloadUrlWithName(metadataIdList: string, rootId: string, zipName: string) {\n let list: string[] = JSON.parse(metadataIdList);\n if (zipName == null || zipName == \"\")\n zipName = 'unifile.zip';\n if (!zipName.endsWith(\".zip\"))\n zipName += '.zip';\n\n\n\n return \"/api/runtime/dfs/v1.0/doc/compress/download?metadataidlist=\" + metadataIdList + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(list[0], rootId)) + \"&zipName=\" + encodeURIComponent(zipName);\n }\n\n getHistoryDownloadUrl(metadataId: string, rootId: string, version: string) {\n //let list:string[]=JSON.parse(metadataIdList);\n return \"/api/runtime/dfs/v1.0/doc/historycontent?metadataid=\" + metadataId + \"&rootid=\" + rootId + \"&version=\" + version + \"&token=\" + this.getToken(this.mergeString(metadataId, rootId));\n }\n\n\n\n private mergeString(str: string, str1: string): string {\n let min = str.length < str1.length ? str.length : str1.length;\n let res: string = \"\";\n let i = 0;\n for (i = 0; i < min; i++) {\n res += str.substring(i, i + 1);\n res += str1.substring(i, i + 1);\n }\n res += str.length < str1.length ? str1.substring(i) : str.substring(i);\n return res;\n }\n\n private getToken(str: string): string {\n let array = [1, 2, 3];\n if (str.length > 24)\n str = str.substring(0, 24);\n let length = Math.floor(str.length / 3);\n let str1 = str.substring(0, length);\n let str2 = str.substring(length, 2 * length);\n let str3 = str.substring(2 * length, 3 * length);\n let randomArray = [];\n var random = Math.ceil(Math.random() * 3);\n randomArray.push(array[random - 1]);\n array.splice(random - 1, 1);\n random = Math.ceil(Math.random() * 2);\n randomArray.push(array[random - 1]);\n array.splice(random - 1, 1);\n randomArray.push(array[0]);\n let timeStamp: string = Math.round(new Date().getTime() / 1000) + \"\";\n\n return timeStamp.substring(0, 5) + \"times\" + randomArray[0] + \"\" + randomArray[1] + \"\" + randomArray[2] + this.switchStr(str1, str2, str3, randomArray[0]) + this.switchStr(str1, str2, str3, randomArray[1]) + this.switchStr(str1, str2, str3, randomArray[2]) + \"times\" + timeStamp.substring(5);\n }\n\n private switchStr(str1: string, str2: string, str3: string, i: number): string {\n switch (i) {\n case 1: return str1;\n case 2: return str2;\n case 3: return str3;\n }\n }\n\n\n}\n","import { LOCALE_ID, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadComponent } from './file-upload/file-upload.component';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { NotifyModule } from '@farris/ui-notify';\nimport { MessagerModule } from '@farris/ui-messager';\nimport { UploadService } from './upload.service';\nimport { LoadingModule } from '@farris/ui-loading';\nimport { ProgressModule } from '@farris/ui-progress'\nimport { FormsModule } from '@angular/forms';\nimport { ComboListModule } from '@farris/ui-combo-list';\nimport { DownloadService } from './download.service';\nimport { LocalLangPipe } from '../local.pipe';\nimport { CacheService, HttpService, LanguageService, SessionService } from '@ecp-caf/caf-common';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n\n@NgModule({\n declarations: [FileUploadComponent, LocalLangPipe],\n imports: [\n CommonModule,\n ButtonsModule,\n NotifyModule,\n MessagerModule.forRoot(),\n LoadingModule.forRoot(),\n ProgressModule,\n FormsModule,\n ComboListModule,\n HttpClientModule\n ],\n exports: [FileUploadComponent],\n entryComponents: [FileUploadComponent],\n providers: [UploadService, DownloadService, LanguageService, HttpService, CacheService, SessionService,\n { provide: LOCALE_ID, useValue: localStorage.getItem('languageCode') || 'zh-CHS' },]\n\n})\nexport class UploadModule { }\n\nexport const ɵa = UploadModule;\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\nimport { BsModalRef, BsModalService } from '@farris/ui-modal';\nimport { FileUploadComponent } from '../../upload/file-upload/file-upload.component';\n\n@Component({\n selector: 'app-uploaddialog',\n templateUrl: './uploaddialog.component.html',\n styleUrls: ['./uploaddialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n\n dlg: BsModalRef;\n\n metadataIdList:string[]=[];\n\n @Input() formId:string;\n\n constructor(private modalService: BsModalService) { }\n\n @ViewChild(FileUploadComponent) fileUpload: FileUploadComponent;\n\n ngOnInit() {\n }\n\n showDialog() {\n this.dlg = this.modalService.show(FileUploadComponent, {\n title: '选择文件',\n width: 800, height: 500,\n buttons: [\n {\n text: '上传', cls: 'k-button k-button-icontext k-primary', iconCls: \"k-icon k-i-check\", handle: () => {\n this.fileUpload.upload();\n this.dlg.close();\n }\n },\n {\n text: '关闭', cls: 'k-button k-button-icontext', iconCls: \"k-icon k-i-close\", handle: () => {\n this.fileUpload.cancel();\n this.dlg.close();\n }\n }\n ],\n\n showButtons: true,\n\n });\n this.dlg.content.formId=this.formId;\n\n }\n\n}\n","import { Injectable, Injector, ComponentFactoryResolver, LOCALE_ID } from '@angular/core';\r\nimport { FileUploadComponent } from './upload/file-upload/file-upload.component';\r\nimport { BsModalService, BsModalRef } from '@farris/ui-modal';\r\nimport { UploadFileInfo } from './upload/entity/uploadfileinfo';\r\nimport { Observable, of } from 'rxjs';\r\nimport { UploadLimit } from './upload/entity/uploadlimit';\r\nimport { LocalLangPipe } from './local.pipe';\r\n\r\n\r\n@Injectable()\r\nexport class UploadDialogService {\r\n\r\n localeid: string;\r\n localpipe: LocalLangPipe;\r\n constructor(private modalService: BsModalService, private componentFactoryResolver: ComponentFactoryResolver, private injector: Injector) {\r\n if (this.injector) {\r\n this.modalService = this.injector.get(BsModalService);\r\n this.localeid = localStorage.getItem(\"languageCode\") || this.injector.get(LOCALE_ID);\r\n this.localpipe = new LocalLangPipe(this.localeid);\r\n }\r\n }\r\n\r\n dlg: BsModalRef;\r\n\r\n fileInfoList: UploadFileInfo[] = [];\r\n\r\n showDialog(formId: string, rootId: string) {\r\n let flag = 0;\r\n return new Promise(resolve => {\r\n var viewerFactory = this.componentFactoryResolver.resolveComponentFactory(FileUploadComponent);\r\n var viewerRef = viewerFactory.create(this.injector);\r\n\r\n viewerRef.instance.rootId = rootId;\r\n viewerRef.instance.formId = formId;\r\n\r\n this.dlg = this.modalService.show(viewerRef, {\r\n title: this.localpipe.transform('uploadFile'),\r\n width: 950, height: 570,\r\n buttons: [\r\n {\r\n text: this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: () => {\r\n this.dlg.content.upload().subscribe(\r\n res => {\r\n if (res) {\r\n resolve(res);\r\n flag = 1;\r\n this.dlg.close();\r\n }\r\n }\r\n );\r\n }\r\n },\r\n {\r\n text: this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: () => {\r\n this.dlg.close();\r\n }\r\n }\r\n ],\r\n\r\n showButtons: true,\r\n showMaxButton: false,\r\n beforeClose: (): Observable<boolean> => {\r\n if (flag == 0)\r\n this.dlg.content.cancel();\r\n return of(true);\r\n }\r\n });\r\n })\r\n }\r\n\r\n uploadFile(formId: string, rootId: string, oldIdList: string[] = []) {\r\n return this.uploadFileWithLimit(formId, rootId, null, oldIdList);\r\n }\r\n\r\n\r\n uploadFileWithLimit(formId: string, rootId: string, limit: UploadLimit, oldIdList: string[] = []) {\r\n let flag = 0;\r\n return new Promise(resolve => {\r\n var uploadFactory = this.componentFactoryResolver.resolveComponentFactory(FileUploadComponent);\r\n var uploadRef = uploadFactory.create(this.injector);\r\n if (limit != null) {\r\n uploadRef.instance.fileCount = limit.fileCount;\r\n uploadRef.instance.securityInfo=limit.securityInfo;\r\n if (limit.fileType != null && limit.fileType != \"\")\r\n uploadRef.instance.fileType = limit.fileType\r\n }\r\n\r\n uploadRef.instance.rootId = rootId;\r\n uploadRef.instance.formId = formId;\r\n uploadRef.instance.oldIdList = oldIdList;\r\n\r\n this.dlg = this.modalService.show(uploadRef, {\r\n title: this.localpipe.transform('uploadFile'),\r\n width: 950, height: 570,\r\n buttons: [\r\n {\r\n\r\n text: this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: () => {\r\n this.dlg.content.upload().subscribe(\r\n res => {\r\n if (res) {\r\n resolve(res);\r\n flag = 1;\r\n this.dlg.close();\r\n }\r\n }\r\n );\r\n }\r\n },\r\n {\r\n text: this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: () => {\r\n this.dlg.close();\r\n }\r\n }\r\n ],\r\n\r\n showButtons: true,\r\n showMaxButton: false,\r\n beforeClose: (): Observable<boolean> => {\r\n if (flag == 0)\r\n this.dlg.content.cancel();\r\n return of(true);\r\n }\r\n });\r\n })\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FarrisDialogModule } from '@farris/ui-dialog';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { MessagerModule } from '@farris/ui-messager';\nimport { BsModalService } from '@farris/ui-modal';\n\nimport { UploadModule } from '../upload/upload.module';\nimport { UploadDialogComponent } from './uploaddialog/uploaddialog.component';\nimport { HttpService } from '@ecp-caf/caf-common';\nimport { UploadService } from '../upload/upload.service';\nimport { UploadDialogService } from '../uploaddialog.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NotifyModule } from '@farris/ui-notify';\nimport { FileUploadComponent } from '../upload/file-upload/file-upload.component';\n\n\n@NgModule({\n declarations: [UploadDialogComponent],\n imports: [\n CommonModule,\n FarrisDialogModule,\n MessagerModule.forRoot(),\n UploadModule,\n ButtonsModule,\n NotifyModule.forRoot(),\n HttpClientModule\n ],\n exports: [UploadDialogComponent,FileUploadComponent],\n entryComponents: [UploadDialogComponent,FileUploadComponent],\n providers: [BsModalService, HttpService, UploadDialogService, UploadService]\n})\nexport class UploadDialogMoudle { }\n","import { GspDocSecurityBaseInfo } from \"./gspdocsecuritynaseinfo\";\r\n\r\nexport class UploadLimit {\r\n public fileType: string = \"*\";\r\n public fileCount: number = 0;\r\n public securityInfo: GspDocSecurityBaseInfo = null;\r\n}","import { GspFormDocInfo } from './gspformdocinfo';\r\nimport { OperatingModes } from './operatingmodes';\r\n\r\nexport class GspFormUploadListEntity {\r\n public formId: string;\r\n public docInfoList: GspFormDocInfo[];\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n}","export class GspDocMetaProperty{\r\n public extProperties1:string;\r\n public extProperties2:string;\r\n public extProperties3:string;\r\n public extProperties4:string;\r\n public extProperties5:string;\r\n}","import { SecurityEntity } from \"./securityentity\";\r\n\r\nexport class FileInfo {\r\n public id: string;\r\n public name: string;\r\n public type: string;\r\n public source: any;\r\n public picListDisplayName: string;\r\n public queueListDisplayName: string;\r\n //public content: string;\r\n public size: string;\r\n public fileSize: number;\r\n public hasUploaded: boolean;\r\n public mouseOn: boolean;\r\n public selectd: boolean;\r\n public isUploading: boolean;\r\n public uploadResult: boolean;\r\n public uploadProcess: number;\r\n public errorMessage: string;\r\n public extensionDropListId:number;\r\n public extensionName: string;\r\n public securityDropListId:number;\r\n public securityInfo:SecurityEntity;\r\n}","export class GspDocSecurityBaseInfo {\r\n public securityId: string;\r\n public securityLevel: number;\r\n public name: string;\r\n}","export class SecurityEntity {\r\n public id: string;\r\n public securityId: string;\r\n public securityLevel: number;\r\n public name: string;\r\n}"]}
1
+ {"version":3,"sources":["ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.service.ts","ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.component.ts","ng://@gsp-svc/formdoc-upload/lib/formdoc-upload.module.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/doctype.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/operatingmodes.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformremovelistentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformdocoperateentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/changeinstancerequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/copyfilerequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/upload.service.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/uploadfileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/extensionstoragefileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/filestate.ts","ng://@gsp-svc/formdoc-upload/lib/i18n/language.resource.ts","ng://@gsp-svc/formdoc-upload/lib/local.pipe.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/initmultiuploadrequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/completemultiuploadrequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformstreamentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/multiuploadrequest.ts","ng://@gsp-svc/formdoc-upload/lib/upload/file-upload/file-upload.component.ts","ng://@gsp-svc/formdoc-upload/lib/upload/download.service.ts","ng://@gsp-svc/formdoc-upload/lib/upload/upload.module.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog/uploaddialog/uploaddialog.component.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog.service.ts","ng://@gsp-svc/formdoc-upload/lib/uploaddialog/uploaddialog.module.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/uploadlimit.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformuploadlistentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformdocinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspdocmetaproperty.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspformuploadentity.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/fileinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/gspdocsecuritybaseinfo.ts","ng://@gsp-svc/formdoc-upload/lib/upload/entity/securityentity.ts"],"names":["FormdocUploadService","Injectable","args","providedIn","FormdocUploadComponent","prototype","ngOnInit","Component","selector","template","ɵ0","localStorage","getItem","FormdocUploadModule","NgModule","declarations","imports","HttpClientModule","exports","providers","LanguageService","HttpService","CacheService","SessionService","provide","LOCALE_ID","useValue","Word","Excel","Powerpoint","Pdf","Txt","Image","Other","Formal","Temp","GspFormRemoveListEntity","GspFormDocOperateEntity","ChangeInstanceRequest","CopyFileRequest","UploadService","http","httpclient","this","uploadList","docListInfo","rootId","post","pipe","tap","res","catchError","error","of","commit","metadataIdList","entity","cancel","put","removeList","idList","idListInfo","mode","OperatingModes","delete","getFile","metadataId","url","get","uploadFile","docInfo","uploadSliceFile","formdata","getStorageExtensionInfo","getSecurityInfoList","baseInfo","securityId","securityLevel","changeStorageInstance","storageInfoList","request","fileInfoList","copyFile","path","responseType","saveSecurityInfo","uploadFileInfoList","reqList","forEach","element","id","exProperty","JSON","stringify","securityInfo","push","getUploadedFileInfoList","formId","getUploadInfo","HttpClient","UploadFileInfo","ExStorageFileInfo","New","Update","LANG_RESOURCES","zh-CHS","uploading","selectedCount","limitCount","rechooseFile","save","haveSameName","rename","replace","sizeZero","sizeMax","uploadFailure","uploadSucceed","wait","saveTo","selectAll","selectNull","detail","fileName","state","operation","size","close","loading","mismatchChunkSize","en-US","en","zh-CHT","LocalLangPipe","localeId","defaultLang","langCode","lang","transform","name","Pipe","Inject","InitMultiUploadRequest","CompleteMultiUploadRequest","GspFormStreamEntity","MultiUploadRequest","FileUploadComponent","msgService","uploadService","loadService","injector","files","errFileList","errTypeList","nullFileList","beyondFileList","showType","mouseOn","bufferSize","selectedFileCount","uploadIconAddress","uploadLittleIconAddress","hasSelectedFile","fileAllSelected","uploadProcess","width","fileTotalChunk","requestArray","Array","requestBodyArray","uploadedChunk","uploadedProcess","defaultPropertyName","propertiesNames","securityInfoList","queueListStyle","dropListValue","uploadedFileTotal","haveExtensionProperty","haveSecurityInfo","uploadedFileInfoList","oldUploadedFileList","sameNameAllowed","maxFileSize","checkboxPos","top","fileType","fileCount","oldIdList","totalLoad","exStorageFileList","localeid","localepipe","_this","navigator","userAgent","indexOf","subscribe","i","toString","storageExtension","i_1","extensionPropertyNameList","parseInt","parse","validateConfiguration","allowedMultiUpload","length","showLoading","fileSelected","$event","selectedFiles","document","querySelector","selectedNum","warning","selectedFile","this_1","uuid","UUID","find","x","msg_1","show","initialState","buttons","text","cls","handle","newName","oldName","flag","substring","lastIndexOf","FileState","splice","filter","name_1","listToString","name_2","name_3","slice","target","value","showErrorMessage","file","errorMessage","handleFileInfo","fileInfo","type","source","getFileSize","fileSize","picListDisplayName","getPicListDisplayName","queueListDisplayName","getQueueDisplayName","hasUploaded","selectd","isUploading","uploadResult","extensionDropListId","extensionName","securityDropListId","includes","addDocInfo","DocType","uploadFileInfo","initRequest","initMultiUpload","Message","uploadId_1","uploadId","chunkTotal","Math","ceil","chunkIndex","multiResultList_1","nextSize","min","fileData","multiRequest","index","total","formData","FormData","append","multiUpload","result","Number","toFixed","concat","completeMultiUploadRequest","partList","exPropertyName","completeMultiUpload","uploadSingleFile","selectAllFile","checkoutSelectFile","listDeleteFile","listMultipleDeleteFile","getElementById","checked","metadataList","allBox","selectdFile","docType","reader_1","FileReader","readAsDataURL","onload","_event","imgUrl","DomSanitizer","bypassSecurityTrustResourceUrl","strList","securityChange","data","typeChange","exStorageFileInfo","findIndex","upload","loading_1","message","map","getUploadFileInfoList","showByGroup","showByList","mouseOver","mouseOut","MessagerService","LoadingService","Injector","Input","ViewChild","DownloadService","getDownloadUrl","getToken","mergeString","getStreamDownloadUrl","getMultipleDownloadUrl","list","getMultipleDownloadUrlWithName","zipName","endsWith","encodeURIComponent","getHistoryDownloadUrl","version","str","str1","array","floor","str2","str3","randomArray","random","timeStamp","round","Date","getTime","switchStr","ɵ0$1","UploadModule","CommonModule","ButtonsModule","NotifyModule","MessagerModule","forRoot","LoadingModule","ProgressModule","FormsModule","ComboListModule","entryComponents","ɵa","UploadDialogComponent","modalService","showDialog","dlg","title","height","iconCls","fileUpload","showButtons","content","BsModalService","UploadDialogService","componentFactoryResolver","localpipe","Promise","resolve","viewerRef","resolveComponentFactory","create","instance","showMaxButton","beforeClose","uploadFileWithLimit","limit","uploadRef","ComponentFactoryResolver","UploadDialogMoudle","FarrisDialogModule","UploadLimit","GspFormUploadListEntity","GspFormDocInfo","GspDocMetaProperty","GspFormUploadEntity","FileInfo","GspDocSecurityBaseInfo","SecurityEntity"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormdocUploadService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-formdoc-upload',\n template: `\n <p>\n formdoc-upload works!\n </p>\n `,\n styles: []\n})\nexport class FormdocUploadComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { LOCALE_ID, NgModule } from '@angular/core';\nimport { CacheService, HttpService, LanguageService, SessionService } from '@ecp-caf/caf-common';\nimport { FormdocUploadComponent } from './formdoc-upload.component';\nimport { LocalLangPipe } from './local.pipe';\n\n\n@NgModule({\n declarations: [FormdocUploadComponent],\n imports: [\n HttpClientModule\n ],\n \n exports: [FormdocUploadComponent],\n providers:[ LanguageService,HttpService,CacheService,SessionService,\n { provide: LOCALE_ID, useValue: localStorage.getItem('languageCode') || 'zh-CHS' },]\n})\nexport class FormdocUploadModule { }\n","export enum DocType{\r\n Word,\r\n Excel,\r\n Powerpoint,\r\n Pdf,\r\n Txt,\r\n Image,\r\n Other\r\n}","export enum OperatingModes{\r\n Formal,\r\n Temp\r\n}","import { OperatingModes } from \"./operatingmodes\";\r\n\r\nexport class GspFormRemoveListEntity {\r\n public metadataIdList: string[];\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n}","export class GspFormDocOperateEntity {\r\n public metadataIdList: string[];\r\n public rootId: string;\r\n}","import { ExStorageFileInfo } from './extensionstoragefileinfo';\r\n\r\nexport class ChangeInstanceRequest {\r\n public fileInfoList: ExStorageFileInfo[];\r\n public rootId: string;\r\n}","export class CopyFileRequest{\r\n public metadataId:string;\r\n public rootId:string;\r\n public path:string;\r\n}","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GspFormUploadListEntity } from './entity/gspformuploadlistentity';\nimport { HttpService } from '@ecp-caf/caf-common';\nimport { catchError, tap } from 'rxjs/operators';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { GspFormRemoveListEntity } from './entity/gspformremovelistentity';\nimport { of } from 'rxjs/observable/of';\nimport { GspFormDocOperateEntity } from './entity/gspformdocoperateentity';\n\nimport { GspFormUploadEntity } from './entity/gspformuploadentity';\nimport { ExStorageFileInfo } from './entity/extensionstoragefileinfo';\nimport { ChangeInstanceRequest } from './entity/changeinstancerequest';\nimport { OperatingModes } from './entity/operatingmodes';\nimport { GspDocSecurityBaseInfo } from './entity/gspdocsecuritybaseinfo';\nimport { UploadFileInfo } from './entity/uploadfileinfo';\nimport { ExPropertyRequest } from './entity/expropertyrequest';\nimport { CopyFileRequest } from './entity/copyfilerequest';\n\n\n\n@Injectable()\nexport class UploadService {\n\n constructor(private http: HttpService, private httpclient: HttpClient) { }\n\n uploadList(docListInfo: GspFormUploadListEntity, rootId: string): Observable<any> {\n let url;\n docListInfo.rootId = rootId;\n\n url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.post(url, docListInfo).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n\n commit(metadataIdList: string[], rootId: string): Observable<any> {\n let url;\n let entity: GspFormDocOperateEntity = new GspFormDocOperateEntity;\n entity.metadataIdList = metadataIdList;\n entity.rootId = rootId;\n url = \"/api/runtime/dfs/v1.0/formdoc/commit\";\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/commit\";\n\n return this.http.post(url, entity).pipe();\n }\n\n cancel(metadataIdList: string[], rootId: string): Observable<any> {\n let url;\n let entity: GspFormDocOperateEntity = new GspFormDocOperateEntity;\n entity.metadataIdList = metadataIdList;\n entity.rootId = rootId;\n url = \"/api/runtime/dfs/v1.0/formdoc/cancel\";\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/cancel\";\n //localStorage.setItem(\"SessionId\",\"huoliang\");\n return this.http.put(url, entity).pipe();\n }\n\n removeList(idList: string[], rootId: string) {\n let url;\n //url = \"http://localhost:5000/api/runtime/dfs/v1.0/formdoc/list\";\n url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n var idListInfo = new GspFormRemoveListEntity;\n idListInfo.metadataIdList = idList;\n idListInfo.mode = OperatingModes.Temp;\n idListInfo.rootId = rootId;\n return this.http.delete(url, idListInfo).pipe();\n }\n\n getFile(metadataId: string, rootId: string) {\n\n let url;\n if (rootId == \"\")\n url = \"/api/runtime/dfs/v1.0/formdoc/file/\" + metadataId;\n else\n url = \"/api/runtime/dfs/v1.0/formdoc/file/\" + metadataId + \"/\" + rootId;\n return this.http.get(url).pipe(tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n\n }\n\n uploadFile(docInfo: GspFormUploadEntity): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.post(url, docInfo).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n uploadSliceFile(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/slice\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n\n getStorageExtensionInfo(): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/storagestrategy/extension\";\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n getSecurityInfoList(baseInfo: GspDocSecurityBaseInfo): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/storagestrategy/security\";\n url = url + \"?id=\" + baseInfo.securityId + \"&level=\" + baseInfo.securityLevel;\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n changeStorageInstance(storageInfoList: ExStorageFileInfo[], rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/changeinstance\";\n let request: ChangeInstanceRequest = new ChangeInstanceRequest;\n request.fileInfoList = storageInfoList;\n request.rootId = rootId;\n return this.http.post(url, request).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n copyFile(metadataId: string, rootId: string, path: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/copy\";\n let request: CopyFileRequest = new CopyFileRequest;\n request.metadataId = metadataId;\n request.rootId = rootId;\n request.path = path;\n return this.httpclient.post(url, request,{responseType: 'text'}).pipe(\n tap(res => { }),\n // catchError((error: HttpErrorResponse) => {\n // return of(error);\n // })\n );\n }\n\n saveSecurityInfo(uploadFileInfoList: UploadFileInfo[], rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/doc/exproperty\";\n let reqList: ExPropertyRequest[] = [];\n uploadFileInfoList.forEach(element => {\n let request: ExPropertyRequest = { id: element.metadataId, rootId: rootId, exProperty: JSON.stringify(element.securityInfo) };\n reqList.push(request);\n })\n return this.http.post(url, reqList).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }))\n }\n\n\n getUploadedFileInfoList(formId: string, rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/formdoc/uploadedfile/infolist\" + \"?formid=\" + formId + \"&rootid=\" + rootId;\n //url = \"/api/runtime/dfs/v1.0/formdoc/list\";\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n getUploadInfo(rootId: string): Observable<any> {\n let url = \"/api/runtime/dfs/v1.0/rootsetting/info?id=\" + rootId;\n\n return this.http.get(url).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n // getRootSetting(rootId: string): Observable<any> {\n // let url = \"/api/runtime/dfs/v1.0/rootsetting/\" + rootId;\n\n // return this.http.get(url).pipe(\n // tap(res => { }),\n // catchError((error: HttpErrorResponse) => {\n // return of(error);\n // }));\n // }\n\n // getValidation(id: string): Observable<any> {\n // let url = \"/api/runtime/dfs/v1.0/validation/\" + id;\n\n // return this.http.get(url).pipe(\n // tap(res => { }),\n // catchError((error: HttpErrorResponse) => {\n // return of(error);\n // }));\n // }\n\n}\n","import { FileState } from \"./filestate\";\r\nimport { SecurityEntity } from \"./securityentity\";\r\n\r\nexport class UploadFileInfo {\r\n\r\n public metadataId: string;\r\n public fileName: string;\r\n public fileSize: string;\r\n public state: FileState;\r\n public securityInfo: SecurityEntity;\r\n\r\n}","export class ExStorageFileInfo {\r\n public metadataId: string;\r\n public exPropertyName: string;\r\n}","export enum FileState{\r\n New,\r\n Update\r\n}","export const LANG_RESOURCES = {\r\n 'zh-CHS': {\r\n 'uploadFile': '上传文件',\r\n 'uploading':'正在上传文件……',\r\n 'selectedCount':'已选择文件数量:',\r\n 'limitCount':'超出系统限制数量:',\r\n 'rechooseFile':',重新选择上传文件。',\r\n 'save':'保存',\r\n 'cancel':'取消',\r\n 'haveSameName':'已上传过同名文件: ',\r\n 'rename':'重命名',\r\n\t\t'replace':'替换',\r\n 'sizeZero':'文件大小为0',\r\n 'sizeMax':'文件大小超出限制',\r\n 'uploadFailure':'上传失败',\r\n 'uploadSucceed':'上传成功',\r\n 'wait':'等一下,文档正在上传。',\r\n 'saveTo':'正在将文件保存到',\r\n 'delete':'删除',\r\n 'selectAll':'全选',\r\n 'selectNull':'全不选',\r\n 'detail':'详情',\r\n 'fileName':'文件名',\r\n 'state':'状态',\r\n 'operation':'操作',\r\n 'size':'大小',\r\n 'close':'关闭',\r\n 'loading':'拼命加载中',\r\n 'mismatchChunkSize':'文档分片上传部分丢失,请重新上传,如果多次上传失败,请联系管理员。'\r\n },\r\n 'en-US': {\r\n 'uploadFile': 'Upload File',\r\n 'uploading':'File Uploading……',\r\n 'selectedCount':'Selected files count:',\r\n 'limitCount':'System limit count:',\r\n 'rechooseFile':',Reselect upload file.',\r\n 'save':'Save',\r\n 'cancel':'Cancel',\r\n 'haveSameName':'A file with the same name has been uploaded: ',\r\n 'rename':'Rename',\r\n\t\t'replace':'Replace',\r\n 'sizeZero':'File size is 0',\r\n 'sizeMax':'File size beyond limit',\r\n 'uploadFailure':'Upload failed',\r\n 'uploadSucceed':'Upload successfully',\r\n 'wait':'Wait a minute, the file is uploading.',\r\n 'saveTo':'Saving file to',\r\n 'delete':'Delete',\r\n 'selectAll':'Select all',\r\n 'selectNull':'Not at all',\r\n 'detail':'Details',\r\n 'fileName':'Filename',\r\n 'state':'State',\r\n 'operation':'Operation',\r\n 'size':'Size',\r\n 'close':'Close',\r\n 'loading':'Loading',\r\n 'mismatchChunkSize':'The partial upload of document shards is missing. Please upload again. If multiple uploads fail, please contact the administrator.'\r\n },\r\n 'en': {\r\n 'uploadFile': 'Upload File',\r\n 'uploading':'File Uploading……',\r\n 'selectedCount':'Selected files count:',\r\n 'limitCount':'System limit count:',\r\n 'rechooseFile':',Reselect upload file.',\r\n 'save':'Save',\r\n 'cancel':'Cancel',\r\n 'haveSameName':'A file with the same name has been uploaded: ',\r\n 'rename':'Rename',\r\n\t\t'replace':'Replace',\r\n 'sizeZero':'File size is 0',\r\n 'sizeMax':'File size beyond limit',\r\n 'uploadFailure':'Upload failed',\r\n 'uploadSucceed':'Upload successfully',\r\n 'wait':'Wait a minute, the file is uploading.',\r\n 'saveTo':'Saving file to',\r\n 'delete':'Delete',\r\n 'selectAll':'Select all',\r\n 'selectNull':'Not at all',\r\n 'detail':'Details',\r\n 'fileName':'Filename',\r\n 'state':'State',\r\n 'operation':'Operation',\r\n 'size':'Size',\r\n 'close':'Close',\r\n 'loading':'Loading',\r\n 'mismatchChunkSize':'The partial upload of document shards is missing. Please upload again. If multiple uploads fail, please contact the administrator.'\r\n },\r\n 'zh-CHT': {\r\n 'uploadFile': '上傳文件',\r\n 'uploading':'正在上傳文件……',\r\n 'selectedCount':'已選擇文件數量:',\r\n 'limitCount':'超出系統限制數量:',\r\n 'rechooseFile':',重新選擇上傳文件。',\r\n 'save':'保存',\r\n 'cancel':'取消',\r\n 'haveSameName':'已上傳過同名文件: ',\r\n 'rename':'重命名',\r\n\t\t'replace':'替換',\r\n 'sizeZero':'文件大小為0',\r\n 'sizeMax':'文件大小超出限制',\r\n 'uploadFailure':'上傳失敗',\r\n 'uploadSucceed':'上傳成功',\r\n 'wait':'等一下,文件正在上傳。',\r\n 'saveTo':'正在將文件保存到',\r\n 'delete':'删除',\r\n 'selectAll':'全選',\r\n 'selectNull':'全不選',\r\n 'detail':'詳情',\r\n 'fileName':'文件名',\r\n 'state':'狀態',\r\n 'operation':'操作',\r\n 'size':'大小',\r\n 'close':'關閉',\r\n 'loading':'拼命加載中',\r\n 'mismatchChunkSize':'文檔分片上傳部分遺失,請重新上傳,如果多次上傳失敗,請聯系管理員。'\r\n },\r\n};","import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core';\r\nimport { LANG_RESOURCES } from './i18n/language.resource';\r\n\r\n@Pipe({ name: 'locale' })\r\nexport class LocalLangPipe implements PipeTransform {\r\n private readonly defaultLang: string = \"zh-CHS\";\r\n private langCode: string;\r\n private lang: {};\r\n constructor(\r\n @Inject(LOCALE_ID) localeId: string\r\n ) {\r\n this.langCode = localStorage.getItem(\"languageCode\") || localeId || this.defaultLang;\r\n this.lang = LANG_RESOURCES[this.langCode] || LANG_RESOURCES[this.defaultLang];\r\n }\r\n transform(name: string): any {\r\n return this.lang[name] || name;\r\n }\r\n}\r\n\r\n","export class InitMultiUploadRequest {\r\n public path: string;\r\n public metadataId: string;\r\n public rootId: string;\r\n public fileName: string;\r\n public size: number;\r\n}","import { MultiUploadResult } from \"./multiuploadresult\";\r\n\r\nexport class CompleteMultiUploadRequest {\r\n public metadataId: string;\r\n public rootId: string;\r\n public uploadId: string;\r\n public size: number;\r\n public partList: MultiUploadResult[];\r\n public exPropertyName: string;\r\n}","import { GspDocMetaProperty } from \"./gspdocmetaproperty\";\r\nimport { OperatingModes } from \"./operatingmodes\";\r\n\r\nexport class GspFormStreamEntity {\r\n public formId: string;\r\n public metadataId: string;\r\n public rootId: string;\r\n public fileName: string;\r\n public size: number;\r\n public mode: OperatingModes;\r\n public exPropertyName: string;\r\n public extProperty: GspDocMetaProperty;\r\n}","export class MultiUploadRequest {\r\n public metadataId: string;\r\n\r\n public total: number;\r\n\r\n public size: number;\r\n\r\n public index: number;\r\n\r\n public rootId: string;\r\n\r\n public uploadId: string;\r\n}","import { Component, OnInit, Input, ViewChild, TemplateRef, Injector, LOCALE_ID } from '@angular/core';\nimport { FileInfo } from '../entity/fileinfo';\nimport { DocType } from '../entity/doctype';\nimport { GspFormDocInfo } from '../entity/gspformdocinfo';\nimport { OperatingModes } from '../entity/operatingmodes';\nimport { UploadService } from '../upload.service';\nimport { UploadFileInfo } from '../entity/uploadfileinfo';\nimport { MessagerService } from '@farris/ui-messager';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\nimport { GspFormUploadEntity } from '../entity/gspformuploadentity';\nimport { UUID } from 'angular2-uuid';\nimport { StorageExtension } from '../entity/storageextension';\nimport { ExStorageFileInfo } from '../entity/extensionstoragefileinfo';\nimport { DropListEntity } from '../entity/droplistentity';\nimport { LoadingService } from '@farris/ui-loading';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FileState } from '../entity/filestate';\nimport { LocalLangPipe } from '../../local.pipe';\nimport { GspDocSecurityBaseInfo } from '../entity/gspdocsecuritybaseinfo';\nimport { SecurityEntity } from '../entity/securityentity';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { InitMultiUploadRequest } from '../entity/initmultiuploadrequest';\nimport { CompleteMultiUploadRequest } from '../entity/completemultiuploadrequest';\nimport { GspFormStreamEntity } from '../entity/gspformstreamentity';\nimport { MultiUploadRequest } from '../entity/multiuploadrequest';\nimport { MultiUploadResult } from '../entity/multiuploadresult';\n\n\n@Component({\n selector: 'app-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.css'],\n})\nexport class FileUploadComponent implements OnInit {\n\n files: FileInfo[] = [];\n metadataIdList: string[] = [];\n uploadFileInfoList: UploadFileInfo[] = [];\n errFileList: string[] = [];\n errTypeList: string[] = [];\n nullFileList: string[] = [];\n beyondFileList: string[] = [];\n showType: number = 0;\n mouseOn: boolean = false;\n bufferSize = 5 * 1024 * 1024;\n selectedFiles: any;\n\n selectedFileCount: number = 0;\n\n uploadIconAddress = '/platform/runtime/dfs/images/upload.svg';\n uploadLittleIconAddress = '/platform/runtime/dfs/images/uploadIcon.svg';\n\n hasSelectedFile: boolean = false;\n\n fileAllSelected: boolean = false;\n\n uploadProcess = { width: '0%' };\n\n fileTotalChunk: { [key: string]: number } = {};\n\n requestArray: Array<Observable<any>> = new Array;\n\n requestBodyArray: Array<GspFormUploadEntity> = new Array;\n\n uploadedChunk: { [key: string]: number } = {};\n uploadedProcess: { [key: string]: number } = {};\n\n //allSelected: boolean = true;\n storageExtension: StorageExtension;\n\n defaultPropertyName: string = \"\";\n propertiesNames: DropListEntity[] = [];\n\n securityInfoList: SecurityEntity[] = [];\n\n queueListStyle = { width: '480px' };\n\n dropListValue: string = \"\";\n\n uploadedFileTotal: number = 0;\n\n allowedMultiUpload: boolean;\n\n haveExtensionProperty: boolean = false;\n\n haveSecurityInfo: boolean = false;\n\n uploadedFileInfoList = [];\n oldUploadedFileList = [];\n //uploadedNameList = [];\n\n sameNameAllowed = true;\n maxFileSize: number = 0;;\n localeid: string;\n localepipe: LocalLangPipe;\n httpclient: HttpClient;\n checkboxPos = { top: '0px' }\n\n constructor(private msgService: MessagerService, private uploadService: UploadService, private loadService: LoadingService, private injector?: Injector) {\n if (this.injector) {\n this.httpclient = this.injector.get(HttpClient);\n this.localeid = localStorage.getItem(\"languageCode\") || this.injector.get(LOCALE_ID);\n this.localepipe = new LocalLangPipe(this.localeid);\n }\n }\n @Input() formId: string;\n @Input() rootId: string;\n @Input() fileType: string = \"*\";\n @Input() fileCount: number = 0;\n @Input() oldIdList: string[] = [];\n @Input() securityInfo: GspDocSecurityBaseInfo = null;\n\n @ViewChild('opCell') opCell: TemplateRef<any>;\n\n ngOnInit() {\n if (navigator.userAgent.indexOf('Firefox') >= 0)\n this.checkboxPos.top = '14px';\n //if (this.storageService != null) {\n if (this.securityInfo != null) {\n this.uploadService.getSecurityInfoList(this.securityInfo).subscribe(\n res => {\n this.haveSecurityInfo = true;\n let i = 0;\n res.forEach(element => {\n this.securityInfoList.push({ id: i.toString(), securityId: element.securityId, securityLevel: element.securityLevel, name: element.name });\n i++;\n });\n }\n )\n }\n this.uploadService.getStorageExtensionInfo().subscribe(\n res => {\n if (res != null && res.error == null) {\n this.storageExtension = res;\n this.defaultPropertyName = this.storageExtension.defaultPropertyName;\n this.propertiesNames.push({ id: \"0\", name: this.storageExtension.defaultPropertyName });\n let i = 0;\n // this.propertiesNames.push(...(this.storageExtension.extensionPropertyNameList));\n this.storageExtension.extensionPropertyNameList.forEach(element => {\n this.propertiesNames.push({ id: (++i).toString(), name: element });\n });\n this.queueListStyle.width = '380px';\n this.haveExtensionProperty = true;\n }\n }\n )\n\n this.uploadService.getUploadInfo(this.rootId).subscribe(\n res => {\n if (res != null && res.error == null) {\n this.sameNameAllowed = res.sameNameAllowed;\n this.maxFileSize = parseInt(JSON.parse(res.validateConfiguration).maxFileSize);\n this.allowedMultiUpload = res.allowedMultiUpload;\n if (!this.sameNameAllowed) {\n this.uploadService.getUploadedFileInfoList(this.formId, this.rootId).subscribe(\n res => {\n if (res != null && res.error == null) {\n this.uploadedFileInfoList = res;\n this.oldUploadedFileList = JSON.parse(JSON.stringify(res));;\n\n }\n })\n }\n\n }\n }\n )\n if (this.oldIdList != null && this.oldIdList.length > 0) {\n // this.uploadService.cancel(this.oldIdList, this.rootId).subscribe();\n }\n }\n\n totalLoad: any = null;\n\n showLoading() {\n this.hasSelectedFile = true;\n // if (this.totalLoad == null)\n // this.totalLoad = this.loadService.show({\n // message: this.localepipe.transform('uploading')\n // });\n }\n\n\n fileSelected($event) {\n\n this.hasSelectedFile = true;\n this.selectedFiles = document.querySelector('#file');\n\n if (this.fileCount > 0) {\n if (this.selectedFiles.files.length + this.files.length > this.fileCount) {\n let selectedNum: number = (this.selectedFiles.files.length as number) + this.files.length;\n this.msgService.warning(this.localepipe.transform('selectedCount') + selectedNum + this.localepipe.transform('limitCount') + this.fileCount + this.localepipe.transform('rechooseFile'));\n return;\n }\n }\n\n //this.flag = 0;\n for (let i = 0; i < this.selectedFiles.files.length; i++) {\n let selectedFile = this.selectedFiles.files[i];\n //selectedFile.slice\n let uuid = UUID.UUID();\n\n if (selectedFile.size == 0) {\n this.nullFileList.push(selectedFile.name);\n continue;\n }\n\n if (this.maxFileSize != null && this.maxFileSize > 0) {\n if (selectedFile.size > this.maxFileSize * 1000) {\n this.beyondFileList.push(selectedFile.name);\n continue;\n }\n }\n\n if (!this.sameNameAllowed) {\n if (this.uploadedFileInfoList.find(x => x.fileName == selectedFile.name) != null) {\n\n const msg = this.msgService.show('warning', this.localepipe.transform('haveSameName') + selectedFile.name, {\n initialState: {\n buttons: [\n {\n text: this.localepipe.transform('rename'),\n cls: 'btn btn-secondary',\n handle: () => {\n let oldName: string = selectedFile.name;\n let newName\n let flag = true;\n let i = 1;\n while (flag) {\n newName = oldName.substring(0, oldName.lastIndexOf('.')) + '(' + i + ')' + oldName.substring(oldName.lastIndexOf('.'));\n if (this.uploadedFileInfoList.find(x => x.fileName == newName) != null) {\n i++;\n }\n else\n flag = false;\n }\n\n this.uploadFile(uuid, selectedFile, newName);\n msg.close();\n }\n },\n {\n text: this.localepipe.transform('replace'),\n cls: 'btn btn-secondary',\n handle: () => {\n uuid = this.uploadedFileInfoList.find(x => x.fileName == selectedFile.name).metadataId;\n this.uploadFile(uuid, selectedFile, selectedFile.name, FileState.Update);\n this.uploadedFileTotal--;\n if (this.oldUploadedFileList.find(x => x.fileName == selectedFile.name)) {\n this.uploadedFileTotal++;\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == selectedFile.name)[0]), 1);\n }\n msg.close();\n }\n },\n {\n text: this.localepipe.transform('cancel'),\n cls: 'btn btn-secondary',\n handle: () => {\n msg.close();\n }\n }\n ]\n }\n })\n continue;\n }\n }\n this.uploadFile(uuid, selectedFile, selectedFile.name);\n\n }\n\n if (this.errFileList.length > 0) {\n let name: string = this.listToString(this.errFileList);\n this.msgService.warning(this.localepipe.transform('haveSameName') + name + this.localepipe.transform('rechooseFile'));\n this.errFileList = [];\n }\n\n if (this.nullFileList.length > 0) {\n let name: string = this.listToString(this.nullFileList);\n name = name.substring(0, name.length - 1);\n this.msgService.warning(name + this.localepipe.transform('sizeZero') + this.localepipe.transform('rechooseFile'));\n this.nullFileList = [];\n }\n\n if (this.beyondFileList.length > 0) {\n let name: string = this.listToString(this.beyondFileList);\n name = name.substring(0, name.length - 1);\n this.msgService.warning(name + this.localepipe.transform('sizeMax') + this.maxFileSize + \"KB\" + this.localepipe.transform('rechooseFile'));\n this.beyondFileList = [];\n }\n this.files = this.files.slice();\n this.fileAllSelected = false;\n $event.target.value = '';\n // loading.close();\n }\n\n showErrorMessage(file) {\n this.msgService.error(this.localepipe.transform('uploadFailure') + file.errorMessage);\n }\n\n handleFileInfo(uuid: string, selectedFile, fileName: string): any {\n\n let fileInfo: FileInfo;\n\n fileInfo = {\n id: uuid,\n name: fileName,\n type: selectedFile.type,\n source: \"\",\n size: this.getFileSize(selectedFile.size),\n fileSize: selectedFile.size,\n picListDisplayName: this.getPicListDisplayName(fileName),\n queueListDisplayName: this.getQueueDisplayName(fileName),\n //content: reader.result.toString(),\n hasUploaded: false,\n mouseOn: false,\n selectd: false,\n isUploading: true,\n uploadResult: false,\n uploadProcess: 0,\n errorMessage: \"\",\n extensionDropListId: 0,\n extensionName: \"\",\n securityDropListId: 0,\n securityInfo: this.securityInfoList[0]\n }\n\n if (this.storageExtension != null)\n fileInfo.extensionName = this.defaultPropertyName;\n\n\n let type: string = selectedFile.type;\n if (type.includes(\"tiff\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Other);\n }\n else if (type.includes(\"image\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Image);\n }\n else if (type.includes(\"word\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Word);\n }\n else if (type.includes(\"pdf\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Pdf);\n }\n else if (type.includes(\"plain\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Txt);\n }\n else if (type.includes(\"sheet\") || type.includes(\"excel\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Excel)\n }\n else if (type.includes(\"powerpoint\") || type.includes(\"presentation\")) {\n this.addDocInfo(selectedFile, fileInfo, DocType.Powerpoint);\n }\n else {\n this.addDocInfo(selectedFile, fileInfo, DocType.Other);\n // let name: string = selectedFile.name;\n // let errType = name.substring(selectedFile.name.lastIndexOf('.'));\n // this.errTypeList.push(errType);\n }\n return fileInfo;\n }\n\n uploadFile(uuid: string, selectedFile, fileName: string, state: FileState = FileState.New) {\n\n let fileInfo = this.handleFileInfo(uuid, selectedFile, fileName);\n\n let uploadFileInfo = new UploadFileInfo();\n\n uploadFileInfo.metadataId = uuid;\n uploadFileInfo.fileName = fileInfo.name;\n uploadFileInfo.fileSize = fileInfo.fileSize;\n uploadFileInfo.state = state;\n uploadFileInfo.securityInfo = this.securityInfoList[0];\n\n\n //判断是否支持分片上传\n if (this.allowedMultiUpload) {\n\n //支持分片上传\n let initRequest: InitMultiUploadRequest = new InitMultiUploadRequest;\n\n initRequest.path = this.formId;\n initRequest.metadataId = uuid;\n initRequest.rootId = this.rootId;\n initRequest.size = fileInfo.fileSize;\n initRequest.fileName = fileName;\n\n //初始化分片\n this.initMultiUpload(initRequest).subscribe(res => {\n if (res.error != null) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = false;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.files[this.files.indexOf(fileInfo)].errorMessage = res.error.Message;\n } else {\n let uploadId = res.uploadId;\n let chunkTotal: number = Math.ceil(selectedFile.size / this.bufferSize);\n let chunkIndex: number = 0;\n\n let multiResultList: MultiUploadResult[] = [];\n\n this.fileTotalChunk[uuid] = chunkTotal;\n this.uploadedChunk[uuid] = 0;\n\n while (chunkIndex < chunkTotal) {\n\n let nextSize = Math.min((chunkIndex + 1) * this.bufferSize, selectedFile.size);\n let fileData = selectedFile.slice(chunkIndex * this.bufferSize, nextSize);\n\n let multiRequest = new MultiUploadRequest;\n multiRequest.metadataId = uuid;\n multiRequest.rootId = this.rootId;\n multiRequest.uploadId = uploadId;\n multiRequest.index = chunkIndex;\n multiRequest.total = chunkTotal;\n multiRequest.size = fileData.size;\n\n let formData = new FormData();\n formData.append('multiRequest', JSON.stringify(multiRequest));\n formData.append('file', fileData);\n\n this.multiUpload(formData).subscribe(res => {\n if (res.error != null) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = false;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.files[this.files.indexOf(fileInfo)].errorMessage = res.error.Message;\n } else {\n multiResultList.push(res.result);\n this.uploadedChunk[uuid]++;\n this.files[this.files.indexOf(fileInfo)].uploadProcess = Number.parseInt((this.uploadedChunk[uuid] / this.fileTotalChunk[uuid] * 100).toFixed(0));\n if (this.uploadedChunk[uuid] == this.fileTotalChunk[uuid]) {\n if (multiResultList.length == this.fileTotalChunk[uuid]) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = true;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.uploadFileInfoList = this.uploadFileInfoList.concat(uploadFileInfo);\n this.uploadedFileInfoList = this.uploadedFileInfoList.concat(uploadFileInfo);\n this.uploadedFileTotal++;\n\n let completeMultiUploadRequest: CompleteMultiUploadRequest = new CompleteMultiUploadRequest;\n completeMultiUploadRequest.metadataId = uuid;\n completeMultiUploadRequest.partList = multiResultList;\n completeMultiUploadRequest.rootId = this.rootId;\n completeMultiUploadRequest.uploadId = uploadId;\n completeMultiUploadRequest.size = fileInfo.fileSize;\n if (this.haveExtensionProperty)\n completeMultiUploadRequest.exPropertyName = this.defaultPropertyName;\n this.completeMultiUpload(completeMultiUploadRequest).subscribe(res => {\n\n })\n //后台异步拼接文档\n } else {\n this.files[this.files.indexOf(fileInfo)].uploadResult = false;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.files[this.files.indexOf(fileInfo)].errorMessage = this.localepipe.transform('mismatchChunkSize');\n }\n\n }\n }\n })\n\n chunkIndex = chunkIndex + 1;\n }\n }\n\n })\n\n } else {\n let entity = new GspFormStreamEntity;\n entity.formId = this.formId;\n entity.metadataId = uuid;\n entity.mode = OperatingModes.Temp;\n entity.rootId = this.rootId;\n entity.size = selectedFile.size;\n entity.fileName = fileName;\n if (this.haveExtensionProperty)\n entity.exPropertyName = this.defaultPropertyName;\n\n let formData = new FormData();\n formData.append('uploadEntity', JSON.stringify(entity));\n formData.append('file', selectedFile);\n\n this.uploadSingleFile(formData).subscribe(res => {\n if (res != null) {\n this.files[this.files.indexOf(fileInfo)].uploadResult = false;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.files[this.files.indexOf(fileInfo)].errorMessage = res.error.Message;\n } else {\n this.files[this.files.indexOf(fileInfo)].uploadResult = true;\n this.files[this.files.indexOf(fileInfo)].isUploading = false;\n this.uploadFileInfoList = this.uploadFileInfoList.concat(uploadFileInfo);\n this.uploadedFileInfoList = this.uploadedFileInfoList.concat(uploadFileInfo);\n this.uploadedFileTotal++;\n\n }\n })\n\n }\n\n\n\n let index = -1;\n this.files.forEach(x => {\n if (x.name == fileInfo.name) {\n if (index == -1)\n index = this.files.indexOf(x);\n }\n })\n if (index != -1 && index != this.files.length - 1) {\n this.files.splice(index, 1);\n this.uploadFileInfoList.splice(index, 1);\n this.uploadedFileInfoList.splice(index, 1);\n //this.uploadedFileTotal--;\n }\n\n }\n\n\n uploadSingleFile(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/single\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n uploadSliceFile(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/slice\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n initMultiUpload(request: InitMultiUploadRequest): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/multi/init\";\n\n return this.httpclient.post(url, request).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n multiUpload(formdata: FormData): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/multi/upload\";\n\n return this.httpclient.post(url, formdata).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n completeMultiUpload(request: CompleteMultiUploadRequest): Observable<any> {\n\n let url = \"/api/runtime/dfs/v1.0/formdoc/multi/complete\";\n\n return this.httpclient.post(url, request).pipe(\n tap(res => { }),\n catchError((error: HttpErrorResponse) => {\n return of(error);\n }));\n }\n\n\n\n selectAllFile() {\n\n if (!this.fileAllSelected) {\n this.files.forEach(element => {\n\n element.selectd = true;\n });\n this.fileAllSelected = true;\n this.selectedFileCount = this.files.length;\n\n } else {\n this.files.forEach(element => {\n\n element.selectd = false;\n });\n this.fileAllSelected = false;\n this.selectedFileCount = 0;\n }\n }\n\n\n checkoutSelectFile(file: FileInfo) {\n // let obj: any = document.getElementById(fileName);\n file.selectd = !file.selectd;\n if (file.selectd)\n this.selectedFileCount++;\n else\n this.selectedFileCount--;\n if (this.selectedFileCount == this.files.length) {\n this.fileAllSelected = true;\n //this.isFileAllSelected();\n }\n else {\n this.fileAllSelected = false;\n //this.isFileAllSelected();\n }\n\n }\n\n listDeleteFile(fileInfo: FileInfo) {\n if (fileInfo.selectd)\n this.selectedFileCount--;\n //console.log(fileName);\n this.files.splice(this.files.indexOf(fileInfo), 1);\n if (fileInfo.uploadResult) {\n let idList: string[] = [];\n idList.push(fileInfo.id);\n this.uploadService.cancel(idList, this.rootId).subscribe();\n\n this.uploadFileInfoList.splice(this.uploadFileInfoList.indexOf(this.uploadFileInfoList.filter(x => x.fileName == fileInfo.name)[0]), 1);\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == fileInfo.name)[0]), 1);\n this.uploadedFileTotal--;\n }\n if (this.selectedFileCount == 0)\n this.fileAllSelected = false;\n }\n\n listMultipleDeleteFile() {\n let selectedFile: FileInfo[] = [];\n this.files.forEach(element => {\n let obj: any = document.getElementById(element.name);\n if (obj.checked)\n selectedFile.push(element);\n })\n let metadataList: string[] = [];\n selectedFile.forEach(element => {\n metadataList.push(element.id);\n this.files.splice(this.files.indexOf(element), 1);\n if (element.uploadResult) {\n\n this.uploadFileInfoList.splice(this.uploadFileInfoList.indexOf(this.uploadFileInfoList.filter(x => x.fileName == element.name)[0]), 1);\n this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter(x => x.fileName == element.name)[0]), 1);\n this.uploadedFileTotal--;\n }\n })\n this.uploadService.cancel(metadataList, this.rootId).subscribe();\n\n let allBox: any = document.getElementById(\"allCheckBox\");\n if (allBox != null)\n allBox.checked = false;\n this.selectedFileCount = 0;\n this.fileAllSelected = false;\n }\n\n\n getPicListDisplayName(fileName: string) {\n if (fileName.length <= 10)\n return fileName;\n else {\n let headContent = fileName.substring(0, 2);\n let tailContent = fileName.substring(fileName.lastIndexOf('.') - 2);\n return headContent + \"…\" + tailContent;\n }\n }\n\n getQueueDisplayName(fileName: string) {\n return fileName;\n }\n\n addDocInfo(selectdFile, fileInfo: FileInfo, docType: DocType) {\n\n switch (docType) {\n case DocType.Word: {\n fileInfo.source = \"/platform/runtime/dfs/images/word.png\"\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Pdf: {\n fileInfo.source = \"/platform/runtime/dfs/images/pdf.png\"\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Excel: {\n fileInfo.source = \"/platform/runtime/dfs/images/excel.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Txt: {\n fileInfo.source = \"/platform/runtime/dfs/images/txt.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Powerpoint: {\n fileInfo.source = \"/platform/runtime/dfs/images/ppt.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Other: {\n fileInfo.source = \"/platform/runtime/dfs/images/file.png\";\n this.files.push(fileInfo);\n break;\n }\n\n case DocType.Image: {\n let reader = new FileReader();\n reader.readAsDataURL(selectdFile);\n reader.onload = (_event) => {\n let imgUrl = reader.result;\n if (this.injector != null) {\n let sanitizer = this.injector.get(DomSanitizer);\n imgUrl = sanitizer.bypassSecurityTrustResourceUrl(imgUrl);\n }\n fileInfo.source = imgUrl;\n this.files.push(fileInfo);\n\n //因为异步处理的差异,补偿一次删除\n let index = -1;\n this.files.forEach(x => {\n if (x.name == fileInfo.name) {\n if (index == -1)\n index = this.files.indexOf(x);\n }\n })\n if (index != -1 && index != this.files.length - 1) {\n this.files.splice(index, 1);\n this.uploadFileInfoList.splice(index, 1);\n this.uploadedFileInfoList.splice(index, 1);\n }\n }\n }\n\n }\n\n }\n\n listToString(strList: string[]) {\n let name: string = \"\";\n for (let i = 0; i < strList.length; i++) {\n name += strList[i] + \",\";\n }\n return name;\n }\n\n securityChange($event: any, file: FileInfo) {\n file.securityInfo = $event.data;\n let uploadFile = this.uploadFileInfoList.filter(x => x.metadataId = file.id)[0];\n uploadFile.securityInfo = $event.data;\n }\n\n\n exStorageFileList: ExStorageFileInfo[] = [];\n\n typeChange($event: any, file: FileInfo) {\n file.extensionName = $event.data.name;\n let exStorageFileInfo: ExStorageFileInfo = new ExStorageFileInfo;\n if (file.extensionName == this.storageExtension.defaultPropertyName) {\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0)\n this.exStorageFileList.splice(this.exStorageFileList.findIndex(x => x.metadataId == file.id), 1)\n } else {\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0) {\n exStorageFileInfo = this.exStorageFileList.filter(x => x.metadataId == file.id)[0];\n exStorageFileInfo.exPropertyName = file.extensionName;\n } else {\n exStorageFileInfo.metadataId = file.id;\n exStorageFileInfo.exPropertyName = file.extensionName;\n this.exStorageFileList.push(exStorageFileInfo);\n }\n }\n }\n\n upload(): Observable<any> {\n if (this.uploadedFileTotal != this.files.filter(x => x.isUploading || x.uploadResult).length) {\n\n this.msgService.warning(this.localepipe.transform('wait'));\n return of(false);\n }\n if (this.haveSecurityInfo) {\n this.uploadService.saveSecurityInfo(this.uploadFileInfoList, this.rootId).subscribe();\n }\n if (this.storageExtension == null)\n return of(this.uploadFileInfoList);\n else {\n if (this.exStorageFileList.length == 0)\n return of(this.uploadFileInfoList);\n else {\n const loading = this.loadService.show({\n message: this.localepipe.transform('saveTo') + this.storageExtension.extensionName\n });\n return this.uploadService.changeStorageInstance(this.exStorageFileList, this.rootId).pipe(\n map(res => {\n // if (res != null)\n // this.msgService.error('保存到' + this.storageExtension.extensionName + \"失败,上传文件自动保存到\" + this.storageExtension.defaultPropertyName + \"存储。\" + res.error.Message);\n loading.close();\n return this.uploadFileInfoList;\n }))\n }\n }\n }\n\n cancel() {\n if (this.uploadFileInfoList.length == 0)\n return;\n this.uploadFileInfoList.forEach(element => {\n this.metadataIdList.push(element.metadataId);\n })\n this.uploadService.cancel(this.metadataIdList, this.rootId).subscribe();\n\n }\n\n getUploadFileInfoList() {\n return this.uploadFileInfoList;\n }\n\n delete(file) {\n this.files.splice(this.files.indexOf(file), 1);\n if (file.uploadResult)\n this.uploadedFileTotal--;\n if (this.exStorageFileList.filter(x => x.metadataId == file.id).length > 0) {\n this.exStorageFileList.splice(this.exStorageFileList.findIndex(x => x.metadataId == file.id), 1);\n }\n\n }\n\n getFileSize(size: number) {\n if (size < 102400)\n return (size / 1024).toFixed(1) + \"K\";\n else if (size < 1024 * 1024)\n return (size / 1024).toFixed(0) + \"K\";\n else if (size < 100 * 1024 * 1024)\n return (size / 1024 / 1024).toFixed(1) + \"M\";\n else if (size < 1024 * 1024 * 1024)\n return (size / 1024 / 1024).toFixed(0) + \"M\";\n else\n return (size / 1024 / 1024 / 1024).toFixed(1) + \"G\";\n }\n showByGroup() {\n this.showType = 0;\n // this.selectedFileCount = 0;\n }\n\n showByList() {\n this.showType = 1;\n // this.selectedFileCount = 0;\n if (this.selectedFileCount != 0 && this.selectedFileCount == this.files.length) {\n this.fileAllSelected = true;\n }\n }\n\n mouseOver(file) {\n file.mouseOn = true;\n }\n mouseOut(file) {\n file.mouseOn = false;\n }\n\n}\n\n\n","import { Injectable } from '@angular/core';\n\n\n@Injectable()\nexport class DownloadService {\n\n constructor() { }\n\n getDownloadUrl(metadataId: string, rootId: string) {\n return \"/api/runtime/dfs/v1.0/doc/filecontent?metadataid=\" + metadataId + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(metadataId, rootId));\n }\n\n\n getStreamDownloadUrl(metadataId: string, rootId: string) {\n return \"/api/runtime/dfs/v1.0/formdoc/stream?metadataid=\" + metadataId + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(metadataId, rootId));\n }\n\n getMultipleDownloadUrl(metadataIdList: string, rootId: string) {\n let list: string[] = JSON.parse(metadataIdList);\n return \"/api/runtime/dfs/v1.0/doc/multiple/download?metadataidlist=\" + metadataIdList + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(list[0], rootId));\n }\n\n getMultipleDownloadUrlWithName(metadataIdList: string, rootId: string, zipName: string) {\n let list: string[] = JSON.parse(metadataIdList);\n if (zipName == null || zipName == \"\")\n zipName = 'unifile.zip';\n if (!zipName.endsWith(\".zip\"))\n zipName += '.zip';\n\n\n\n return \"/api/runtime/dfs/v1.0/doc/compress/download?metadataidlist=\" + metadataIdList + \"&rootid=\" + rootId + \"&token=\" + this.getToken(this.mergeString(list[0], rootId)) + \"&zipName=\" + encodeURIComponent(zipName);\n }\n\n getHistoryDownloadUrl(metadataId: string, rootId: string, version: string) {\n //let list:string[]=JSON.parse(metadataIdList);\n return \"/api/runtime/dfs/v1.0/doc/historycontent?metadataid=\" + metadataId + \"&rootid=\" + rootId + \"&version=\" + version + \"&token=\" + this.getToken(this.mergeString(metadataId, rootId));\n }\n\n\n\n private mergeString(str: string, str1: string): string {\n let min = str.length < str1.length ? str.length : str1.length;\n let res: string = \"\";\n let i = 0;\n for (i = 0; i < min; i++) {\n res += str.substring(i, i + 1);\n res += str1.substring(i, i + 1);\n }\n res += str.length < str1.length ? str1.substring(i) : str.substring(i);\n return res;\n }\n\n private getToken(str: string): string {\n let array = [1, 2, 3];\n if (str.length > 24)\n str = str.substring(0, 24);\n let length = Math.floor(str.length / 3);\n let str1 = str.substring(0, length);\n let str2 = str.substring(length, 2 * length);\n let str3 = str.substring(2 * length, 3 * length);\n let randomArray = [];\n var random = Math.ceil(Math.random() * 3);\n randomArray.push(array[random - 1]);\n array.splice(random - 1, 1);\n random = Math.ceil(Math.random() * 2);\n randomArray.push(array[random - 1]);\n array.splice(random - 1, 1);\n randomArray.push(array[0]);\n let timeStamp: string = Math.round(new Date().getTime() / 1000) + \"\";\n\n return timeStamp.substring(0, 5) + \"times\" + randomArray[0] + \"\" + randomArray[1] + \"\" + randomArray[2] + this.switchStr(str1, str2, str3, randomArray[0]) + this.switchStr(str1, str2, str3, randomArray[1]) + this.switchStr(str1, str2, str3, randomArray[2]) + \"times\" + timeStamp.substring(5);\n }\n\n private switchStr(str1: string, str2: string, str3: string, i: number): string {\n switch (i) {\n case 1: return str1;\n case 2: return str2;\n case 3: return str3;\n }\n }\n\n\n}\n","import { LOCALE_ID, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadComponent } from './file-upload/file-upload.component';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { NotifyModule } from '@farris/ui-notify';\nimport { MessagerModule } from '@farris/ui-messager';\nimport { UploadService } from './upload.service';\nimport { LoadingModule } from '@farris/ui-loading';\nimport { ProgressModule } from '@farris/ui-progress'\nimport { FormsModule } from '@angular/forms';\nimport { ComboListModule } from '@farris/ui-combo-list';\nimport { DownloadService } from './download.service';\nimport { LocalLangPipe } from '../local.pipe';\nimport { CacheService, HttpService, LanguageService, SessionService } from '@ecp-caf/caf-common';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n\n@NgModule({\n declarations: [FileUploadComponent, LocalLangPipe],\n imports: [\n CommonModule,\n ButtonsModule,\n NotifyModule,\n MessagerModule.forRoot(),\n LoadingModule.forRoot(),\n ProgressModule,\n FormsModule,\n ComboListModule,\n HttpClientModule\n ],\n exports: [FileUploadComponent],\n entryComponents: [FileUploadComponent],\n providers: [UploadService, DownloadService, LanguageService, HttpService, CacheService, SessionService,\n { provide: LOCALE_ID, useValue: localStorage.getItem('languageCode') || 'zh-CHS' },]\n\n})\nexport class UploadModule { }\n\nexport const ɵa = UploadModule;\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\nimport { BsModalRef, BsModalService } from '@farris/ui-modal';\nimport { FileUploadComponent } from '../../upload/file-upload/file-upload.component';\n\n@Component({\n selector: 'app-uploaddialog',\n templateUrl: './uploaddialog.component.html',\n styleUrls: ['./uploaddialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n\n dlg: BsModalRef;\n\n metadataIdList:string[]=[];\n\n @Input() formId:string;\n\n constructor(private modalService: BsModalService) { }\n\n @ViewChild(FileUploadComponent) fileUpload: FileUploadComponent;\n\n ngOnInit() {\n }\n\n showDialog() {\n this.dlg = this.modalService.show(FileUploadComponent, {\n title: '选择文件',\n width: 800, height: 500,\n buttons: [\n {\n text: '上传', cls: 'k-button k-button-icontext k-primary', iconCls: \"k-icon k-i-check\", handle: () => {\n this.fileUpload.upload();\n this.dlg.close();\n }\n },\n {\n text: '关闭', cls: 'k-button k-button-icontext', iconCls: \"k-icon k-i-close\", handle: () => {\n this.fileUpload.cancel();\n this.dlg.close();\n }\n }\n ],\n\n showButtons: true,\n\n });\n this.dlg.content.formId=this.formId;\n\n }\n\n}\n","import { Injectable, Injector, ComponentFactoryResolver, LOCALE_ID } from '@angular/core';\r\nimport { FileUploadComponent } from './upload/file-upload/file-upload.component';\r\nimport { BsModalService, BsModalRef } from '@farris/ui-modal';\r\nimport { UploadFileInfo } from './upload/entity/uploadfileinfo';\r\nimport { Observable, of } from 'rxjs';\r\nimport { UploadLimit } from './upload/entity/uploadlimit';\r\nimport { LocalLangPipe } from './local.pipe';\r\n\r\n\r\n@Injectable()\r\nexport class UploadDialogService {\r\n\r\n localeid: string;\r\n localpipe: LocalLangPipe;\r\n constructor(private modalService: BsModalService, private componentFactoryResolver: ComponentFactoryResolver, private injector: Injector) {\r\n if (this.injector) {\r\n this.modalService = this.injector.get(BsModalService);\r\n this.localeid = localStorage.getItem(\"languageCode\") || this.injector.get(LOCALE_ID);\r\n this.localpipe = new LocalLangPipe(this.localeid);\r\n }\r\n }\r\n\r\n dlg: BsModalRef;\r\n\r\n fileInfoList: UploadFileInfo[] = [];\r\n\r\n showDialog(formId: string, rootId: string) {\r\n let flag = 0;\r\n return new Promise(resolve => {\r\n var viewerFactory = this.componentFactoryResolver.resolveComponentFactory(FileUploadComponent);\r\n var viewerRef = viewerFactory.create(this.injector);\r\n\r\n viewerRef.instance.rootId = rootId;\r\n viewerRef.instance.formId = formId;\r\n\r\n this.dlg = this.modalService.show(viewerRef, {\r\n title: this.localpipe.transform('uploadFile'),\r\n width: 950, height: 570,\r\n buttons: [\r\n {\r\n text: this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: () => {\r\n this.dlg.content.upload().subscribe(\r\n res => {\r\n if (res) {\r\n resolve(res);\r\n flag = 1;\r\n this.dlg.close();\r\n }\r\n }\r\n );\r\n }\r\n },\r\n {\r\n text: this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: () => {\r\n this.dlg.close();\r\n }\r\n }\r\n ],\r\n\r\n showButtons: true,\r\n showMaxButton: false,\r\n beforeClose: (): Observable<boolean> => {\r\n if (flag == 0)\r\n this.dlg.content.cancel();\r\n return of(true);\r\n }\r\n });\r\n })\r\n }\r\n\r\n uploadFile(formId: string, rootId: string, oldIdList: string[] = []) {\r\n return this.uploadFileWithLimit(formId, rootId, null, oldIdList);\r\n }\r\n\r\n\r\n uploadFileWithLimit(formId: string, rootId: string, limit: UploadLimit, oldIdList: string[] = []) {\r\n let flag = 0;\r\n return new Promise(resolve => {\r\n var uploadFactory = this.componentFactoryResolver.resolveComponentFactory(FileUploadComponent);\r\n var uploadRef = uploadFactory.create(this.injector);\r\n if (limit != null) {\r\n uploadRef.instance.fileCount = limit.fileCount;\r\n uploadRef.instance.securityInfo=limit.securityInfo;\r\n if (limit.fileType != null && limit.fileType != \"\")\r\n uploadRef.instance.fileType = limit.fileType\r\n }\r\n\r\n uploadRef.instance.rootId = rootId;\r\n uploadRef.instance.formId = formId;\r\n uploadRef.instance.oldIdList = oldIdList;\r\n\r\n this.dlg = this.modalService.show(uploadRef, {\r\n title: this.localpipe.transform('uploadFile'),\r\n width: 950, height: 570,\r\n buttons: [\r\n {\r\n\r\n text: this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: () => {\r\n this.dlg.content.upload().subscribe(\r\n res => {\r\n if (res) {\r\n resolve(res);\r\n flag = 1;\r\n this.dlg.close();\r\n }\r\n }\r\n );\r\n }\r\n },\r\n {\r\n text: this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: () => {\r\n this.dlg.close();\r\n }\r\n }\r\n ],\r\n\r\n showButtons: true,\r\n showMaxButton: false,\r\n beforeClose: (): Observable<boolean> => {\r\n if (flag == 0)\r\n this.dlg.content.cancel();\r\n return of(true);\r\n }\r\n });\r\n })\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FarrisDialogModule } from '@farris/ui-dialog';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { MessagerModule } from '@farris/ui-messager';\nimport { BsModalService } from '@farris/ui-modal';\n\nimport { UploadModule } from '../upload/upload.module';\nimport { UploadDialogComponent } from './uploaddialog/uploaddialog.component';\nimport { HttpService } from '@ecp-caf/caf-common';\nimport { UploadService } from '../upload/upload.service';\nimport { UploadDialogService } from '../uploaddialog.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NotifyModule } from '@farris/ui-notify';\nimport { FileUploadComponent } from '../upload/file-upload/file-upload.component';\n\n\n@NgModule({\n declarations: [UploadDialogComponent],\n imports: [\n CommonModule,\n FarrisDialogModule,\n MessagerModule.forRoot(),\n UploadModule,\n ButtonsModule,\n NotifyModule.forRoot(),\n HttpClientModule\n ],\n exports: [UploadDialogComponent,FileUploadComponent],\n entryComponents: [UploadDialogComponent,FileUploadComponent],\n providers: [BsModalService, HttpService, UploadDialogService, UploadService]\n})\nexport class UploadDialogMoudle { }\n","import { GspDocSecurityBaseInfo } from \"./gspdocsecuritybaseinfo\";\r\n\r\nexport class UploadLimit {\r\n public fileType: string = \"*\";\r\n public fileCount: number = 0;\r\n public securityInfo: GspDocSecurityBaseInfo = null;\r\n}","import { GspFormDocInfo } from './gspformdocinfo';\r\nimport { OperatingModes } from './operatingmodes';\r\n\r\nexport class GspFormUploadListEntity {\r\n public formId: string;\r\n public docInfoList: GspFormDocInfo[];\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n}","import { GspDocMetaProperty } from './gspdocmetaproperty';\r\n\r\nexport class GspFormDocInfo {\r\n public metadataId: string;\r\n public fileName: string;\r\n public fileContent: string;\r\n public index: number;\r\n public total: number;\r\n public size: number;\r\n public exPropertyName: string;\r\n public extProperty: GspDocMetaProperty;\r\n}","export class GspDocMetaProperty{\r\n public extProperties1:string;\r\n public extProperties2:string;\r\n public extProperties3:string;\r\n public extProperties4:string;\r\n public extProperties5:string;\r\n}","import { OperatingModes } from './operatingmodes';\r\nimport { GspFormDocInfo } from './gspformdocinfo';\r\n\r\nexport class GspFormUploadEntity{\r\n public formId: string;\r\n public docInfo: GspFormDocInfo;\r\n public mode: OperatingModes;\r\n public rootId: string;\r\n\r\n} ","import { SecurityEntity } from \"./securityentity\";\r\n\r\nexport class FileInfo {\r\n public id: string;\r\n public name: string;\r\n public type: string;\r\n public source: any;\r\n public picListDisplayName: string;\r\n public queueListDisplayName: string;\r\n //public content: string;\r\n public size: string;\r\n public fileSize: number;\r\n public hasUploaded: boolean;\r\n public mouseOn: boolean;\r\n public selectd: boolean;\r\n public isUploading: boolean;\r\n public uploadResult: boolean;\r\n public uploadProcess: number;\r\n public errorMessage: string;\r\n public extensionDropListId:number;\r\n public extensionName: string;\r\n public securityDropListId:number;\r\n public securityInfo:SecurityEntity;\r\n}","export class GspDocSecurityBaseInfo {\r\n public securityId: string;\r\n public securityLevel: number;\r\n public name: string;\r\n}","export class SecurityEntity {\r\n public id: string;\r\n public securityId: string;\r\n public securityLevel: number;\r\n public name: string;\r\n}"]}
@@ -30,7 +30,8 @@ export const LANG_RESOURCES = {
30
30
  'operation': '操作',
31
31
  'size': '大小',
32
32
  'close': '关闭',
33
- 'loading': '拼命加载中'
33
+ 'loading': '拼命加载中',
34
+ 'mismatchChunkSize': '文档分片上传部分丢失,请重新上传,如果多次上传失败,请联系管理员。'
34
35
  },
35
36
  'en-US': {
36
37
  'uploadFile': 'Upload File',
@@ -58,7 +59,8 @@ export const LANG_RESOURCES = {
58
59
  'operation': 'Operation',
59
60
  'size': 'Size',
60
61
  'close': 'Close',
61
- 'loading': 'Loading'
62
+ 'loading': 'Loading',
63
+ 'mismatchChunkSize': 'The partial upload of document shards is missing. Please upload again. If multiple uploads fail, please contact the administrator.'
62
64
  },
63
65
  'en': {
64
66
  'uploadFile': 'Upload File',
@@ -86,7 +88,8 @@ export const LANG_RESOURCES = {
86
88
  'operation': 'Operation',
87
89
  'size': 'Size',
88
90
  'close': 'Close',
89
- 'loading': 'Loading'
91
+ 'loading': 'Loading',
92
+ 'mismatchChunkSize': 'The partial upload of document shards is missing. Please upload again. If multiple uploads fail, please contact the administrator.'
90
93
  },
91
94
  'zh-CHT': {
92
95
  'uploadFile': '上傳文件',
@@ -114,7 +117,8 @@ export const LANG_RESOURCES = {
114
117
  'operation': '操作',
115
118
  'size': '大小',
116
119
  'close': '關閉',
117
- 'loading': '拼命加載中'
120
+ 'loading': '拼命加載中',
121
+ 'mismatchChunkSize': '文檔分片上傳部分遺失,請重新上傳,如果多次上傳失敗,請聯系管理員。'
118
122
  },
119
123
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucmVzb3VyY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3NwLXN2Yy9mb3JtZG9jLXVwbG9hZC8iLCJzb3VyY2VzIjpbImxpYi9pMThuL2xhbmd1YWdlLnJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsTUFBTSxPQUFPLGNBQWMsR0FBRztJQUMxQixRQUFRLEVBQUU7UUFDTixZQUFZLEVBQUUsTUFBTTtRQUNwQixXQUFXLEVBQUMsVUFBVTtRQUN0QixlQUFlLEVBQUMsVUFBVTtRQUMxQixZQUFZLEVBQUMsV0FBVztRQUN4QixjQUFjLEVBQUMsWUFBWTtRQUMzQixNQUFNLEVBQUMsSUFBSTtRQUNYLFFBQVEsRUFBQyxJQUFJO1FBQ2IsY0FBYyxFQUFDLFlBQVk7UUFDM0IsUUFBUSxFQUFDLEtBQUs7UUFDcEIsU0FBUyxFQUFDLElBQUk7UUFDUixVQUFVLEVBQUMsUUFBUTtRQUNuQixTQUFTLEVBQUMsVUFBVTtRQUNwQixlQUFlLEVBQUMsTUFBTTtRQUN0QixlQUFlLEVBQUMsTUFBTTtRQUN0QixNQUFNLEVBQUMsYUFBYTtRQUNwQixRQUFRLEVBQUMsVUFBVTtRQUNuQixRQUFRLEVBQUMsSUFBSTtRQUNiLFdBQVcsRUFBQyxJQUFJO1FBQ2hCLFlBQVksRUFBQyxLQUFLO1FBQ2xCLFFBQVEsRUFBQyxJQUFJO1FBQ2IsVUFBVSxFQUFDLEtBQUs7UUFDaEIsT0FBTyxFQUFDLElBQUk7UUFDWixXQUFXLEVBQUMsSUFBSTtRQUNoQixNQUFNLEVBQUMsSUFBSTtRQUNYLE9BQU8sRUFBQyxJQUFJO1FBQ1osU0FBUyxFQUFDLE9BQU87S0FDcEI7SUFDRCxPQUFPLEVBQUU7UUFDTCxZQUFZLEVBQUUsYUFBYTtRQUMzQixXQUFXLEVBQUMsa0JBQWtCO1FBQzlCLGVBQWUsRUFBQyx1QkFBdUI7UUFDdkMsWUFBWSxFQUFDLHFCQUFxQjtRQUNsQyxjQUFjLEVBQUMsd0JBQXdCO1FBQ3ZDLE1BQU0sRUFBQyxNQUFNO1FBQ2IsUUFBUSxFQUFDLFFBQVE7UUFDakIsY0FBYyxFQUFDLCtDQUErQztRQUM5RCxRQUFRLEVBQUMsUUFBUTtRQUN2QixTQUFTLEVBQUMsU0FBUztRQUNiLFVBQVUsRUFBQyxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFDLHdCQUF3QjtRQUNsQyxlQUFlLEVBQUMsZUFBZTtRQUMvQixlQUFlLEVBQUMscUJBQXFCO1FBQ3JDLE1BQU0sRUFBQyx1Q0FBdUM7UUFDOUMsUUFBUSxFQUFDLGdCQUFnQjtRQUN6QixRQUFRLEVBQUMsUUFBUTtRQUNqQixXQUFXLEVBQUMsWUFBWTtRQUN4QixZQUFZLEVBQUMsWUFBWTtRQUN6QixRQUFRLEVBQUMsU0FBUztRQUNsQixVQUFVLEVBQUMsVUFBVTtRQUNyQixPQUFPLEVBQUMsT0FBTztRQUNmLFdBQVcsRUFBQyxXQUFXO1FBQ3ZCLE1BQU0sRUFBQyxNQUFNO1FBQ2IsT0FBTyxFQUFDLE9BQU87UUFDZixTQUFTLEVBQUMsU0FBUztLQUN0QjtJQUNELElBQUksRUFBRTtRQUNGLFlBQVksRUFBRSxhQUFhO1FBQzNCLFdBQVcsRUFBQyxrQkFBa0I7UUFDOUIsZUFBZSxFQUFDLHVCQUF1QjtRQUN2QyxZQUFZLEVBQUMscUJBQXFCO1FBQ2xDLGNBQWMsRUFBQyx3QkFBd0I7UUFDdkMsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUMsUUFBUTtRQUNqQixjQUFjLEVBQUMsK0NBQStDO1FBQzlELFFBQVEsRUFBQyxRQUFRO1FBQ3ZCLFNBQVMsRUFBQyxTQUFTO1FBQ2IsVUFBVSxFQUFDLGdCQUFnQjtRQUMzQixTQUFTLEVBQUMsd0JBQXdCO1FBQ2xDLGVBQWUsRUFBQyxlQUFlO1FBQy9CLGVBQWUsRUFBQyxxQkFBcUI7UUFDckMsTUFBTSxFQUFDLHVDQUF1QztRQUM5QyxRQUFRLEVBQUMsZ0JBQWdCO1FBQ3pCLFFBQVEsRUFBQyxRQUFRO1FBQ2pCLFdBQVcsRUFBQyxZQUFZO1FBQ3hCLFlBQVksRUFBQyxZQUFZO1FBQ3pCLFFBQVEsRUFBQyxTQUFTO1FBQ2xCLFVBQVUsRUFBQyxVQUFVO1FBQ3JCLE9BQU8sRUFBQyxPQUFPO1FBQ2YsV0FBVyxFQUFDLFdBQVc7UUFDdkIsTUFBTSxFQUFDLE1BQU07UUFDYixPQUFPLEVBQUMsT0FBTztRQUNmLFNBQVMsRUFBQyxTQUFTO0tBRXRCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sWUFBWSxFQUFFLE1BQU07UUFDcEIsV0FBVyxFQUFDLFVBQVU7UUFDdEIsZUFBZSxFQUFDLFVBQVU7UUFDMUIsWUFBWSxFQUFDLFdBQVc7UUFDeEIsY0FBYyxFQUFDLFlBQVk7UUFDM0IsTUFBTSxFQUFDLElBQUk7UUFDWCxRQUFRLEVBQUMsSUFBSTtRQUNiLGNBQWMsRUFBQyxZQUFZO1FBQzNCLFFBQVEsRUFBQyxLQUFLO1FBQ3BCLFNBQVMsRUFBQyxJQUFJO1FBQ1IsVUFBVSxFQUFDLFFBQVE7UUFDbkIsU0FBUyxFQUFDLFVBQVU7UUFDcEIsZUFBZSxFQUFDLE1BQU07UUFDdEIsZUFBZSxFQUFDLE1BQU07UUFDdEIsTUFBTSxFQUFDLGFBQWE7UUFDcEIsUUFBUSxFQUFDLFVBQVU7UUFDbkIsUUFBUSxFQUFDLElBQUk7UUFDYixXQUFXLEVBQUMsSUFBSTtRQUNoQixZQUFZLEVBQUMsS0FBSztRQUNsQixRQUFRLEVBQUMsSUFBSTtRQUNiLFVBQVUsRUFBQyxLQUFLO1FBQ2hCLE9BQU8sRUFBQyxJQUFJO1FBQ1osV0FBVyxFQUFDLElBQUk7UUFDaEIsTUFBTSxFQUFDLElBQUk7UUFDWCxPQUFPLEVBQUMsSUFBSTtRQUNaLFNBQVMsRUFBQyxPQUFPO0tBQ3BCO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTEFOR19SRVNPVVJDRVMgPSB7XHJcbiAgICAnemgtQ0hTJzoge1xyXG4gICAgICAgICd1cGxvYWRGaWxlJzogJ+S4iuS8oOaWh+S7ticsXHJcbiAgICAgICAgJ3VwbG9hZGluZyc6J+ato+WcqOS4iuS8oOaWh+S7tuKApuKApicsXHJcbiAgICAgICAgJ3NlbGVjdGVkQ291bnQnOiflt7LpgInmi6nmlofku7bmlbDph4/vvJonLFxyXG4gICAgICAgICdsaW1pdENvdW50Jzon6LaF5Ye657O757uf6ZmQ5Yi25pWw6YeP77yaJyxcclxuICAgICAgICAncmVjaG9vc2VGaWxlJzonLOmHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicsXHJcbiAgICAgICAgJ3NhdmUnOifkv53lrZgnLFxyXG4gICAgICAgICdjYW5jZWwnOiflj5bmtognLFxyXG4gICAgICAgICdoYXZlU2FtZU5hbWUnOiflt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcsXHJcbiAgICAgICAgJ3JlbmFtZSc6J+mHjeWRveWQjScsXHJcblx0XHQncmVwbGFjZSc6J+abv+aNoicsXHJcbiAgICAgICAgJ3NpemVaZXJvJzon5paH5Lu25aSn5bCP5Li6MCcsXHJcbiAgICAgICAgJ3NpemVNYXgnOifmlofku7blpKflsI/otoXlh7rpmZDliLYnLFxyXG4gICAgICAgICd1cGxvYWRGYWlsdXJlJzon5LiK5Lyg5aSx6LSlJyxcclxuICAgICAgICAndXBsb2FkU3VjY2VlZCc6J+S4iuS8oOaIkOWKnycsXHJcbiAgICAgICAgJ3dhaXQnOifnrYnkuIDkuIvvvIzmlofmoaPmraPlnKjkuIrkvKDjgIInLFxyXG4gICAgICAgICdzYXZlVG8nOifmraPlnKjlsIbmlofku7bkv53lrZjliLAnLFxyXG4gICAgICAgICdkZWxldGUnOifliKDpmaQnLFxyXG4gICAgICAgICdzZWxlY3RBbGwnOiflhajpgIknLFxyXG4gICAgICAgICdzZWxlY3ROdWxsJzon5YWo5LiN6YCJJyxcclxuICAgICAgICAnZGV0YWlsJzon6K+m5oOFJyxcclxuICAgICAgICAnZmlsZU5hbWUnOifmlofku7blkI0nLFxyXG4gICAgICAgICdzdGF0ZSc6J+eKtuaAgScsXHJcbiAgICAgICAgJ29wZXJhdGlvbic6J+aTjeS9nCcsXHJcbiAgICAgICAgJ3NpemUnOiflpKflsI8nLFxyXG4gICAgICAgICdjbG9zZSc6J+WFs+mXrScsXHJcbiAgICAgICAgJ2xvYWRpbmcnOifmi7zlkb3liqDovb3kuK0nXHJcbiAgICB9LFxyXG4gICAgJ2VuLVVTJzoge1xyXG4gICAgICAgICd1cGxvYWRGaWxlJzogJ1VwbG9hZCBGaWxlJyxcclxuICAgICAgICAndXBsb2FkaW5nJzonRmlsZSBVcGxvYWRpbmfigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50JzonU2VsZWN0ZWQgZmlsZXMgY291bnTvvJonLFxyXG4gICAgICAgICdsaW1pdENvdW50JzonU3lzdGVtIGxpbWl0IGNvdW5077yaJyxcclxuICAgICAgICAncmVjaG9vc2VGaWxlJzonLFJlc2VsZWN0IHVwbG9hZCBmaWxlLicsXHJcbiAgICAgICAgJ3NhdmUnOidTYXZlJyxcclxuICAgICAgICAnY2FuY2VsJzonQ2FuY2VsJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzonQSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBoYXMgYmVlbiB1cGxvYWRlZDogJyxcclxuICAgICAgICAncmVuYW1lJzonUmVuYW1lJyxcclxuXHRcdCdyZXBsYWNlJzonUmVwbGFjZScsXHJcbiAgICAgICAgJ3NpemVaZXJvJzonRmlsZSBzaXplIGlzIDAnLFxyXG4gICAgICAgICdzaXplTWF4JzonRmlsZSBzaXplIGJleW9uZCBsaW1pdCcsXHJcbiAgICAgICAgJ3VwbG9hZEZhaWx1cmUnOidVcGxvYWQgZmFpbGVkJyxcclxuICAgICAgICAndXBsb2FkU3VjY2VlZCc6J1VwbG9hZCBzdWNjZXNzZnVsbHknLFxyXG4gICAgICAgICd3YWl0JzonV2FpdCBhIG1pbnV0ZSwgdGhlIGZpbGUgaXMgdXBsb2FkaW5nLicsXHJcbiAgICAgICAgJ3NhdmVUbyc6J1NhdmluZyBmaWxlIHRvJyxcclxuICAgICAgICAnZGVsZXRlJzonRGVsZXRlJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzonU2VsZWN0IGFsbCcsXHJcbiAgICAgICAgJ3NlbGVjdE51bGwnOidOb3QgYXQgYWxsJyxcclxuICAgICAgICAnZGV0YWlsJzonRGV0YWlscycsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzonRmlsZW5hbWUnLFxyXG4gICAgICAgICdzdGF0ZSc6J1N0YXRlJyxcclxuICAgICAgICAnb3BlcmF0aW9uJzonT3BlcmF0aW9uJyxcclxuICAgICAgICAnc2l6ZSc6J1NpemUnLFxyXG4gICAgICAgICdjbG9zZSc6J0Nsb3NlJyxcclxuICAgICAgICAnbG9hZGluZyc6J0xvYWRpbmcnXHJcbiAgICB9LFxyXG4gICAgJ2VuJzoge1xyXG4gICAgICAgICd1cGxvYWRGaWxlJzogJ1VwbG9hZCBGaWxlJyxcclxuICAgICAgICAndXBsb2FkaW5nJzonRmlsZSBVcGxvYWRpbmfigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50JzonU2VsZWN0ZWQgZmlsZXMgY291bnTvvJonLFxyXG4gICAgICAgICdsaW1pdENvdW50JzonU3lzdGVtIGxpbWl0IGNvdW5077yaJyxcclxuICAgICAgICAncmVjaG9vc2VGaWxlJzonLFJlc2VsZWN0IHVwbG9hZCBmaWxlLicsXHJcbiAgICAgICAgJ3NhdmUnOidTYXZlJyxcclxuICAgICAgICAnY2FuY2VsJzonQ2FuY2VsJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzonQSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBoYXMgYmVlbiB1cGxvYWRlZDogJyxcclxuICAgICAgICAncmVuYW1lJzonUmVuYW1lJyxcclxuXHRcdCdyZXBsYWNlJzonUmVwbGFjZScsXHJcbiAgICAgICAgJ3NpemVaZXJvJzonRmlsZSBzaXplIGlzIDAnLFxyXG4gICAgICAgICdzaXplTWF4JzonRmlsZSBzaXplIGJleW9uZCBsaW1pdCcsXHJcbiAgICAgICAgJ3VwbG9hZEZhaWx1cmUnOidVcGxvYWQgZmFpbGVkJyxcclxuICAgICAgICAndXBsb2FkU3VjY2VlZCc6J1VwbG9hZCBzdWNjZXNzZnVsbHknLFxyXG4gICAgICAgICd3YWl0JzonV2FpdCBhIG1pbnV0ZSwgdGhlIGZpbGUgaXMgdXBsb2FkaW5nLicsXHJcbiAgICAgICAgJ3NhdmVUbyc6J1NhdmluZyBmaWxlIHRvJyxcclxuICAgICAgICAnZGVsZXRlJzonRGVsZXRlJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzonU2VsZWN0IGFsbCcsXHJcbiAgICAgICAgJ3NlbGVjdE51bGwnOidOb3QgYXQgYWxsJyxcclxuICAgICAgICAnZGV0YWlsJzonRGV0YWlscycsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzonRmlsZW5hbWUnLFxyXG4gICAgICAgICdzdGF0ZSc6J1N0YXRlJyxcclxuICAgICAgICAnb3BlcmF0aW9uJzonT3BlcmF0aW9uJyxcclxuICAgICAgICAnc2l6ZSc6J1NpemUnLFxyXG4gICAgICAgICdjbG9zZSc6J0Nsb3NlJyxcclxuICAgICAgICAnbG9hZGluZyc6J0xvYWRpbmcnXHJcblxyXG4gICAgfSxcclxuICAgICd6aC1DSFQnOiB7XHJcbiAgICAgICAgJ3VwbG9hZEZpbGUnOiAn5LiK5YKz5paH5Lu2JyxcclxuICAgICAgICAndXBsb2FkaW5nJzon5q2j5Zyo5LiK5YKz5paH5Lu24oCm4oCmJyxcclxuICAgICAgICAnc2VsZWN0ZWRDb3VudCc6J+W3sumBuOaTh+aWh+S7tuaVuOmHj++8micsXHJcbiAgICAgICAgJ2xpbWl0Q291bnQnOifotoXlh7rns7vntbHpmZDliLbmlbjph4/vvJonLFxyXG4gICAgICAgICdyZWNob29zZUZpbGUnOics6YeN5paw6YG45pOH5LiK5YKz5paH5Lu244CCJyxcclxuICAgICAgICAnc2F2ZSc6J+S/neWtmCcsXHJcbiAgICAgICAgJ2NhbmNlbCc6J+WPlua2iCcsXHJcbiAgICAgICAgJ2hhdmVTYW1lTmFtZSc6J+W3suS4iuWCs+mBjuWQjOWQjeaWh+S7tjogJyxcclxuICAgICAgICAncmVuYW1lJzon6YeN5ZG95ZCNJyxcclxuXHRcdCdyZXBsYWNlJzon5pu/5o+bJyxcclxuICAgICAgICAnc2l6ZVplcm8nOifmlofku7blpKflsI/ngrowJyxcclxuICAgICAgICAnc2l6ZU1heCc6J+aWh+S7tuWkp+Wwj+i2heWHuumZkOWIticsXHJcbiAgICAgICAgJ3VwbG9hZEZhaWx1cmUnOifkuIrlgrPlpLHmlZcnLFxyXG4gICAgICAgICd1cGxvYWRTdWNjZWVkJzon5LiK5YKz5oiQ5YqfJyxcclxuICAgICAgICAnd2FpdCc6J+etieS4gOS4i++8jOaWh+S7tuato+WcqOS4iuWCs+OAgicsXHJcbiAgICAgICAgJ3NhdmVUbyc6J+ato+WcqOWwh+aWh+S7tuS/neWtmOWIsCcsXHJcbiAgICAgICAgJ2RlbGV0ZSc6J+WIoOmZpCcsXHJcbiAgICAgICAgJ3NlbGVjdEFsbCc6J+WFqOmBuCcsXHJcbiAgICAgICAgJ3NlbGVjdE51bGwnOiflhajkuI3pgbgnLFxyXG4gICAgICAgICdkZXRhaWwnOifoqbPmg4UnLFxyXG4gICAgICAgICdmaWxlTmFtZSc6J+aWh+S7tuWQjScsXHJcbiAgICAgICAgJ3N0YXRlJzon54uA5oWLJyxcclxuICAgICAgICAnb3BlcmF0aW9uJzon5pON5L2cJyxcclxuICAgICAgICAnc2l6ZSc6J+Wkp+WwjycsXHJcbiAgICAgICAgJ2Nsb3NlJzon6Zec6ZaJJyxcclxuICAgICAgICAnbG9hZGluZyc6J+aLvOWRveWKoOi8ieS4rSdcclxuICAgIH0sXHJcbn07Il19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucmVzb3VyY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3NwLXN2Yy9mb3JtZG9jLXVwbG9hZC8iLCJzb3VyY2VzIjpbImxpYi9pMThuL2xhbmd1YWdlLnJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsTUFBTSxPQUFPLGNBQWMsR0FBRztJQUMxQixRQUFRLEVBQUU7UUFDTixZQUFZLEVBQUUsTUFBTTtRQUNwQixXQUFXLEVBQUMsVUFBVTtRQUN0QixlQUFlLEVBQUMsVUFBVTtRQUMxQixZQUFZLEVBQUMsV0FBVztRQUN4QixjQUFjLEVBQUMsWUFBWTtRQUMzQixNQUFNLEVBQUMsSUFBSTtRQUNYLFFBQVEsRUFBQyxJQUFJO1FBQ2IsY0FBYyxFQUFDLFlBQVk7UUFDM0IsUUFBUSxFQUFDLEtBQUs7UUFDcEIsU0FBUyxFQUFDLElBQUk7UUFDUixVQUFVLEVBQUMsUUFBUTtRQUNuQixTQUFTLEVBQUMsVUFBVTtRQUNwQixlQUFlLEVBQUMsTUFBTTtRQUN0QixlQUFlLEVBQUMsTUFBTTtRQUN0QixNQUFNLEVBQUMsYUFBYTtRQUNwQixRQUFRLEVBQUMsVUFBVTtRQUNuQixRQUFRLEVBQUMsSUFBSTtRQUNiLFdBQVcsRUFBQyxJQUFJO1FBQ2hCLFlBQVksRUFBQyxLQUFLO1FBQ2xCLFFBQVEsRUFBQyxJQUFJO1FBQ2IsVUFBVSxFQUFDLEtBQUs7UUFDaEIsT0FBTyxFQUFDLElBQUk7UUFDWixXQUFXLEVBQUMsSUFBSTtRQUNoQixNQUFNLEVBQUMsSUFBSTtRQUNYLE9BQU8sRUFBQyxJQUFJO1FBQ1osU0FBUyxFQUFDLE9BQU87UUFDakIsbUJBQW1CLEVBQUMsbUNBQW1DO0tBQzFEO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsWUFBWSxFQUFFLGFBQWE7UUFDM0IsV0FBVyxFQUFDLGtCQUFrQjtRQUM5QixlQUFlLEVBQUMsdUJBQXVCO1FBQ3ZDLFlBQVksRUFBQyxxQkFBcUI7UUFDbEMsY0FBYyxFQUFDLHdCQUF3QjtRQUN2QyxNQUFNLEVBQUMsTUFBTTtRQUNiLFFBQVEsRUFBQyxRQUFRO1FBQ2pCLGNBQWMsRUFBQywrQ0FBK0M7UUFDOUQsUUFBUSxFQUFDLFFBQVE7UUFDdkIsU0FBUyxFQUFDLFNBQVM7UUFDYixVQUFVLEVBQUMsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBQyx3QkFBd0I7UUFDbEMsZUFBZSxFQUFDLGVBQWU7UUFDL0IsZUFBZSxFQUFDLHFCQUFxQjtRQUNyQyxNQUFNLEVBQUMsdUNBQXVDO1FBQzlDLFFBQVEsRUFBQyxnQkFBZ0I7UUFDekIsUUFBUSxFQUFDLFFBQVE7UUFDakIsV0FBVyxFQUFDLFlBQVk7UUFDeEIsWUFBWSxFQUFDLFlBQVk7UUFDekIsUUFBUSxFQUFDLFNBQVM7UUFDbEIsVUFBVSxFQUFDLFVBQVU7UUFDckIsT0FBTyxFQUFDLE9BQU87UUFDZixXQUFXLEVBQUMsV0FBVztRQUN2QixNQUFNLEVBQUMsTUFBTTtRQUNiLE9BQU8sRUFBQyxPQUFPO1FBQ2YsU0FBUyxFQUFDLFNBQVM7UUFDbkIsbUJBQW1CLEVBQUMsb0lBQW9JO0tBQzNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsWUFBWSxFQUFFLGFBQWE7UUFDM0IsV0FBVyxFQUFDLGtCQUFrQjtRQUM5QixlQUFlLEVBQUMsdUJBQXVCO1FBQ3ZDLFlBQVksRUFBQyxxQkFBcUI7UUFDbEMsY0FBYyxFQUFDLHdCQUF3QjtRQUN2QyxNQUFNLEVBQUMsTUFBTTtRQUNiLFFBQVEsRUFBQyxRQUFRO1FBQ2pCLGNBQWMsRUFBQywrQ0FBK0M7UUFDOUQsUUFBUSxFQUFDLFFBQVE7UUFDdkIsU0FBUyxFQUFDLFNBQVM7UUFDYixVQUFVLEVBQUMsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBQyx3QkFBd0I7UUFDbEMsZUFBZSxFQUFDLGVBQWU7UUFDL0IsZUFBZSxFQUFDLHFCQUFxQjtRQUNyQyxNQUFNLEVBQUMsdUNBQXVDO1FBQzlDLFFBQVEsRUFBQyxnQkFBZ0I7UUFDekIsUUFBUSxFQUFDLFFBQVE7UUFDakIsV0FBVyxFQUFDLFlBQVk7UUFDeEIsWUFBWSxFQUFDLFlBQVk7UUFDekIsUUFBUSxFQUFDLFNBQVM7UUFDbEIsVUFBVSxFQUFDLFVBQVU7UUFDckIsT0FBTyxFQUFDLE9BQU87UUFDZixXQUFXLEVBQUMsV0FBVztRQUN2QixNQUFNLEVBQUMsTUFBTTtRQUNiLE9BQU8sRUFBQyxPQUFPO1FBQ2YsU0FBUyxFQUFDLFNBQVM7UUFDbkIsbUJBQW1CLEVBQUMsb0lBQW9JO0tBQzNKO0lBQ0QsUUFBUSxFQUFFO1FBQ04sWUFBWSxFQUFFLE1BQU07UUFDcEIsV0FBVyxFQUFDLFVBQVU7UUFDdEIsZUFBZSxFQUFDLFVBQVU7UUFDMUIsWUFBWSxFQUFDLFdBQVc7UUFDeEIsY0FBYyxFQUFDLFlBQVk7UUFDM0IsTUFBTSxFQUFDLElBQUk7UUFDWCxRQUFRLEVBQUMsSUFBSTtRQUNiLGNBQWMsRUFBQyxZQUFZO1FBQzNCLFFBQVEsRUFBQyxLQUFLO1FBQ3BCLFNBQVMsRUFBQyxJQUFJO1FBQ1IsVUFBVSxFQUFDLFFBQVE7UUFDbkIsU0FBUyxFQUFDLFVBQVU7UUFDcEIsZUFBZSxFQUFDLE1BQU07UUFDdEIsZUFBZSxFQUFDLE1BQU07UUFDdEIsTUFBTSxFQUFDLGFBQWE7UUFDcEIsUUFBUSxFQUFDLFVBQVU7UUFDbkIsUUFBUSxFQUFDLElBQUk7UUFDYixXQUFXLEVBQUMsSUFBSTtRQUNoQixZQUFZLEVBQUMsS0FBSztRQUNsQixRQUFRLEVBQUMsSUFBSTtRQUNiLFVBQVUsRUFBQyxLQUFLO1FBQ2hCLE9BQU8sRUFBQyxJQUFJO1FBQ1osV0FBVyxFQUFDLElBQUk7UUFDaEIsTUFBTSxFQUFDLElBQUk7UUFDWCxPQUFPLEVBQUMsSUFBSTtRQUNaLFNBQVMsRUFBQyxPQUFPO1FBQ2pCLG1CQUFtQixFQUFDLG1DQUFtQztLQUMxRDtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IExBTkdfUkVTT1VSQ0VTID0ge1xyXG4gICAgJ3poLUNIUyc6IHtcclxuICAgICAgICAndXBsb2FkRmlsZSc6ICfkuIrkvKDmlofku7YnLFxyXG4gICAgICAgICd1cGxvYWRpbmcnOifmraPlnKjkuIrkvKDmlofku7bigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50Jzon5bey6YCJ5oup5paH5Lu25pWw6YeP77yaJyxcclxuICAgICAgICAnbGltaXRDb3VudCc6J+i2heWHuuezu+e7n+mZkOWItuaVsOmHj++8micsXHJcbiAgICAgICAgJ3JlY2hvb3NlRmlsZSc6Jyzph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInLFxyXG4gICAgICAgICdzYXZlJzon5L+d5a2YJyxcclxuICAgICAgICAnY2FuY2VsJzon5Y+W5raIJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzon5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnLFxyXG4gICAgICAgICdyZW5hbWUnOifph43lkb3lkI0nLFxyXG5cdFx0J3JlcGxhY2UnOifmm7/mjaInLFxyXG4gICAgICAgICdzaXplWmVybyc6J+aWh+S7tuWkp+Wwj+S4ujAnLFxyXG4gICAgICAgICdzaXplTWF4Jzon5paH5Lu25aSn5bCP6LaF5Ye66ZmQ5Yi2JyxcclxuICAgICAgICAndXBsb2FkRmFpbHVyZSc6J+S4iuS8oOWksei0pScsXHJcbiAgICAgICAgJ3VwbG9hZFN1Y2NlZWQnOifkuIrkvKDmiJDlip8nLFxyXG4gICAgICAgICd3YWl0Jzon562J5LiA5LiL77yM5paH5qGj5q2j5Zyo5LiK5Lyg44CCJyxcclxuICAgICAgICAnc2F2ZVRvJzon5q2j5Zyo5bCG5paH5Lu25L+d5a2Y5YiwJyxcclxuICAgICAgICAnZGVsZXRlJzon5Yig6ZmkJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzon5YWo6YCJJyxcclxuICAgICAgICAnc2VsZWN0TnVsbCc6J+WFqOS4jemAiScsXHJcbiAgICAgICAgJ2RldGFpbCc6J+ivpuaDhScsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzon5paH5Lu25ZCNJyxcclxuICAgICAgICAnc3RhdGUnOifnirbmgIEnLFxyXG4gICAgICAgICdvcGVyYXRpb24nOifmk43kvZwnLFxyXG4gICAgICAgICdzaXplJzon5aSn5bCPJyxcclxuICAgICAgICAnY2xvc2UnOiflhbPpl60nLFxyXG4gICAgICAgICdsb2FkaW5nJzon5ou85ZG95Yqg6L295LitJyxcclxuICAgICAgICAnbWlzbWF0Y2hDaHVua1NpemUnOifmlofmoaPliIbniYfkuIrkvKDpg6jliIbkuKLlpLHvvIzor7fph43mlrDkuIrkvKDvvIzlpoLmnpzlpJrmrKHkuIrkvKDlpLHotKXvvIzor7fogZTns7vnrqHnkIblkZjjgIInXHJcbiAgICB9LFxyXG4gICAgJ2VuLVVTJzoge1xyXG4gICAgICAgICd1cGxvYWRGaWxlJzogJ1VwbG9hZCBGaWxlJyxcclxuICAgICAgICAndXBsb2FkaW5nJzonRmlsZSBVcGxvYWRpbmfigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50JzonU2VsZWN0ZWQgZmlsZXMgY291bnTvvJonLFxyXG4gICAgICAgICdsaW1pdENvdW50JzonU3lzdGVtIGxpbWl0IGNvdW5077yaJyxcclxuICAgICAgICAncmVjaG9vc2VGaWxlJzonLFJlc2VsZWN0IHVwbG9hZCBmaWxlLicsXHJcbiAgICAgICAgJ3NhdmUnOidTYXZlJyxcclxuICAgICAgICAnY2FuY2VsJzonQ2FuY2VsJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzonQSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBoYXMgYmVlbiB1cGxvYWRlZDogJyxcclxuICAgICAgICAncmVuYW1lJzonUmVuYW1lJyxcclxuXHRcdCdyZXBsYWNlJzonUmVwbGFjZScsXHJcbiAgICAgICAgJ3NpemVaZXJvJzonRmlsZSBzaXplIGlzIDAnLFxyXG4gICAgICAgICdzaXplTWF4JzonRmlsZSBzaXplIGJleW9uZCBsaW1pdCcsXHJcbiAgICAgICAgJ3VwbG9hZEZhaWx1cmUnOidVcGxvYWQgZmFpbGVkJyxcclxuICAgICAgICAndXBsb2FkU3VjY2VlZCc6J1VwbG9hZCBzdWNjZXNzZnVsbHknLFxyXG4gICAgICAgICd3YWl0JzonV2FpdCBhIG1pbnV0ZSwgdGhlIGZpbGUgaXMgdXBsb2FkaW5nLicsXHJcbiAgICAgICAgJ3NhdmVUbyc6J1NhdmluZyBmaWxlIHRvJyxcclxuICAgICAgICAnZGVsZXRlJzonRGVsZXRlJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzonU2VsZWN0IGFsbCcsXHJcbiAgICAgICAgJ3NlbGVjdE51bGwnOidOb3QgYXQgYWxsJyxcclxuICAgICAgICAnZGV0YWlsJzonRGV0YWlscycsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzonRmlsZW5hbWUnLFxyXG4gICAgICAgICdzdGF0ZSc6J1N0YXRlJyxcclxuICAgICAgICAnb3BlcmF0aW9uJzonT3BlcmF0aW9uJyxcclxuICAgICAgICAnc2l6ZSc6J1NpemUnLFxyXG4gICAgICAgICdjbG9zZSc6J0Nsb3NlJyxcclxuICAgICAgICAnbG9hZGluZyc6J0xvYWRpbmcnLFxyXG4gICAgICAgICdtaXNtYXRjaENodW5rU2l6ZSc6J1RoZSBwYXJ0aWFsIHVwbG9hZCBvZiBkb2N1bWVudCBzaGFyZHMgaXMgbWlzc2luZy4gUGxlYXNlIHVwbG9hZCBhZ2Fpbi4gSWYgbXVsdGlwbGUgdXBsb2FkcyBmYWlsLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nXHJcbiAgICB9LFxyXG4gICAgJ2VuJzoge1xyXG4gICAgICAgICd1cGxvYWRGaWxlJzogJ1VwbG9hZCBGaWxlJyxcclxuICAgICAgICAndXBsb2FkaW5nJzonRmlsZSBVcGxvYWRpbmfigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50JzonU2VsZWN0ZWQgZmlsZXMgY291bnTvvJonLFxyXG4gICAgICAgICdsaW1pdENvdW50JzonU3lzdGVtIGxpbWl0IGNvdW5077yaJyxcclxuICAgICAgICAncmVjaG9vc2VGaWxlJzonLFJlc2VsZWN0IHVwbG9hZCBmaWxlLicsXHJcbiAgICAgICAgJ3NhdmUnOidTYXZlJyxcclxuICAgICAgICAnY2FuY2VsJzonQ2FuY2VsJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzonQSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBoYXMgYmVlbiB1cGxvYWRlZDogJyxcclxuICAgICAgICAncmVuYW1lJzonUmVuYW1lJyxcclxuXHRcdCdyZXBsYWNlJzonUmVwbGFjZScsXHJcbiAgICAgICAgJ3NpemVaZXJvJzonRmlsZSBzaXplIGlzIDAnLFxyXG4gICAgICAgICdzaXplTWF4JzonRmlsZSBzaXplIGJleW9uZCBsaW1pdCcsXHJcbiAgICAgICAgJ3VwbG9hZEZhaWx1cmUnOidVcGxvYWQgZmFpbGVkJyxcclxuICAgICAgICAndXBsb2FkU3VjY2VlZCc6J1VwbG9hZCBzdWNjZXNzZnVsbHknLFxyXG4gICAgICAgICd3YWl0JzonV2FpdCBhIG1pbnV0ZSwgdGhlIGZpbGUgaXMgdXBsb2FkaW5nLicsXHJcbiAgICAgICAgJ3NhdmVUbyc6J1NhdmluZyBmaWxlIHRvJyxcclxuICAgICAgICAnZGVsZXRlJzonRGVsZXRlJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzonU2VsZWN0IGFsbCcsXHJcbiAgICAgICAgJ3NlbGVjdE51bGwnOidOb3QgYXQgYWxsJyxcclxuICAgICAgICAnZGV0YWlsJzonRGV0YWlscycsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzonRmlsZW5hbWUnLFxyXG4gICAgICAgICdzdGF0ZSc6J1N0YXRlJyxcclxuICAgICAgICAnb3BlcmF0aW9uJzonT3BlcmF0aW9uJyxcclxuICAgICAgICAnc2l6ZSc6J1NpemUnLFxyXG4gICAgICAgICdjbG9zZSc6J0Nsb3NlJyxcclxuICAgICAgICAnbG9hZGluZyc6J0xvYWRpbmcnLFxyXG4gICAgICAgICdtaXNtYXRjaENodW5rU2l6ZSc6J1RoZSBwYXJ0aWFsIHVwbG9hZCBvZiBkb2N1bWVudCBzaGFyZHMgaXMgbWlzc2luZy4gUGxlYXNlIHVwbG9hZCBhZ2Fpbi4gSWYgbXVsdGlwbGUgdXBsb2FkcyBmYWlsLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nXHJcbiAgICB9LFxyXG4gICAgJ3poLUNIVCc6IHtcclxuICAgICAgICAndXBsb2FkRmlsZSc6ICfkuIrlgrPmlofku7YnLFxyXG4gICAgICAgICd1cGxvYWRpbmcnOifmraPlnKjkuIrlgrPmlofku7bigKbigKYnLFxyXG4gICAgICAgICdzZWxlY3RlZENvdW50Jzon5bey6YG45pOH5paH5Lu25pW46YeP77yaJyxcclxuICAgICAgICAnbGltaXRDb3VudCc6J+i2heWHuuezu+e1semZkOWItuaVuOmHj++8micsXHJcbiAgICAgICAgJ3JlY2hvb3NlRmlsZSc6Jyzph43mlrDpgbjmk4fkuIrlgrPmlofku7bjgIInLFxyXG4gICAgICAgICdzYXZlJzon5L+d5a2YJyxcclxuICAgICAgICAnY2FuY2VsJzon5Y+W5raIJyxcclxuICAgICAgICAnaGF2ZVNhbWVOYW1lJzon5bey5LiK5YKz6YGO5ZCM5ZCN5paH5Lu2OiAnLFxyXG4gICAgICAgICdyZW5hbWUnOifph43lkb3lkI0nLFxyXG5cdFx0J3JlcGxhY2UnOifmm7/mj5snLFxyXG4gICAgICAgICdzaXplWmVybyc6J+aWh+S7tuWkp+Wwj+eCujAnLFxyXG4gICAgICAgICdzaXplTWF4Jzon5paH5Lu25aSn5bCP6LaF5Ye66ZmQ5Yi2JyxcclxuICAgICAgICAndXBsb2FkRmFpbHVyZSc6J+S4iuWCs+WkseaVlycsXHJcbiAgICAgICAgJ3VwbG9hZFN1Y2NlZWQnOifkuIrlgrPmiJDlip8nLFxyXG4gICAgICAgICd3YWl0Jzon562J5LiA5LiL77yM5paH5Lu25q2j5Zyo5LiK5YKz44CCJyxcclxuICAgICAgICAnc2F2ZVRvJzon5q2j5Zyo5bCH5paH5Lu25L+d5a2Y5YiwJyxcclxuICAgICAgICAnZGVsZXRlJzon5Yig6ZmkJyxcclxuICAgICAgICAnc2VsZWN0QWxsJzon5YWo6YG4JyxcclxuICAgICAgICAnc2VsZWN0TnVsbCc6J+WFqOS4jemBuCcsXHJcbiAgICAgICAgJ2RldGFpbCc6J+ips+aDhScsXHJcbiAgICAgICAgJ2ZpbGVOYW1lJzon5paH5Lu25ZCNJyxcclxuICAgICAgICAnc3RhdGUnOifni4DmhYsnLFxyXG4gICAgICAgICdvcGVyYXRpb24nOifmk43kvZwnLFxyXG4gICAgICAgICdzaXplJzon5aSn5bCPJyxcclxuICAgICAgICAnY2xvc2UnOifpl5zploknLFxyXG4gICAgICAgICdsb2FkaW5nJzon5ou85ZG95Yqg6LyJ5LitJyxcclxuICAgICAgICAnbWlzbWF0Y2hDaHVua1NpemUnOifmlofmqpTliIbniYfkuIrlgrPpg6jliIbpgbrlpLHvvIzoq4vph43mlrDkuIrlgrPvvIzlpoLmnpzlpJrmrKHkuIrlgrPlpLHmlZfvvIzoq4voga/ns7vnrqHnkIblk6HjgIInXHJcbiAgICB9LFxyXG59OyJdfQ==