@cleavelandprice/ngx-lib 2.1.3 → 2.2.2

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 (157) hide show
  1. package/README.md +615 -615
  2. package/esm2020/cleavelandprice-ngx-lib.mjs +5 -0
  3. package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
  4. package/esm2020/src/authentication/authentication.module.mjs +112 -0
  5. package/esm2020/src/authentication/components/login/login.component.mjs +40 -0
  6. package/esm2020/src/authentication/components/login-form/login-form.component.mjs +45 -0
  7. package/esm2020/src/authentication/model/authentication-token.mjs +2 -0
  8. package/{esm2015/src/authentication/model/authentication.service.config.js → esm2020/src/authentication/model/authentication.service.config.mjs} +1 -1
  9. package/esm2020/src/authentication/services/authentication.service.mjs +138 -0
  10. package/esm2020/src/dialog/components/_dialog/dialog.component.mjs +83 -0
  11. package/esm2020/src/dialog/components/confirmation-dialog/confirmation-dialog.component.mjs +21 -0
  12. package/esm2020/src/dialog/components/input-dialog/input-dialog.component.mjs +21 -0
  13. package/esm2020/src/dialog/components/message-dialog/message-dialog.component.mjs +21 -0
  14. package/esm2020/src/dialog/dialog.module.mjs +74 -0
  15. package/{esm2015/src/dialog/model/confirmation-dialog-mode.enum.js → esm2020/src/dialog/model/confirmation-dialog-mode.enum.mjs} +1 -1
  16. package/esm2020/src/email/email.module.mjs +47 -0
  17. package/esm2020/src/email/model/email-dto.mjs +2 -0
  18. package/{esm2015/src/email/model/email-sender.js → esm2020/src/email/model/email-sender.mjs} +2 -1
  19. package/{esm2015/src/email/model/email.js → esm2020/src/email/model/email.mjs} +2 -1
  20. package/{esm2015/src/email/model/email.service.config.js → esm2020/src/email/model/email.service.config.mjs} +1 -1
  21. package/esm2020/src/email/services/email.service.mjs +31 -0
  22. package/esm2020/src/employee/employee.module.mjs +91 -0
  23. package/esm2020/src/employee/model/employee.mjs +2 -0
  24. package/{esm2015/src/employee/model/employee.service.config.js → esm2020/src/employee/model/employee.service.config.mjs} +1 -1
  25. package/esm2020/src/employee/pipes/departments.pipe.mjs +24 -0
  26. package/esm2020/src/employee/pipes/employee-by-dn.pipe.mjs +17 -0
  27. package/esm2020/src/employee/pipes/employee-photo-url.pipe.mjs +27 -0
  28. package/esm2020/src/employee/pipes/employees-with-property-value.pipe.mjs +17 -0
  29. package/esm2020/src/employee/pipes/filter-employees.pipe.mjs +22 -0
  30. package/esm2020/src/employee/pipes/is-member-of.pipe.mjs +17 -0
  31. package/esm2020/src/employee/pipes/sort-employees.pipe.mjs +44 -0
  32. package/esm2020/src/employee/services/employee.service.mjs +41 -0
  33. package/esm2020/src/file-upload/components/upload/upload.component.mjs +34 -0
  34. package/esm2020/src/file-upload/components/upload-dialog/upload-dialog.component.mjs +102 -0
  35. package/{esm2015/src/file-upload/model/database-file-info.js → esm2020/src/file-upload/model/database-file-info.mjs} +2 -1
  36. package/{esm2015/src/file-upload/model/file-upload-request.js → esm2020/src/file-upload/model/file-upload-request.mjs} +2 -1
  37. package/esm2020/src/file-upload/model/filesystem-file-info.mjs +2 -0
  38. package/esm2020/src/file-upload/model/upload.service.config.mjs +3 -0
  39. package/esm2020/src/file-upload/services/upload.service.mjs +93 -0
  40. package/esm2020/src/file-upload/upload.module.mjs +93 -0
  41. package/{esm2015/src/sharepoint/model/sharepoint-calendar-event.js → esm2020/src/sharepoint/model/sharepoint-calendar-event.mjs} +2 -1
  42. package/esm2020/src/sharepoint/model/sharepoint-customer-visit.mjs +2 -0
  43. package/{esm2015/src/sharepoint/model/sharepoint-employee-picture.js → esm2020/src/sharepoint/model/sharepoint-employee-picture.mjs} +2 -1
  44. package/esm2020/src/sharepoint/model/sharepoint-list-item.mjs +2 -0
  45. package/esm2020/src/sharepoint/model/sharepoint-list.mjs +2 -0
  46. package/esm2020/src/sharepoint/model/sharepoint-person.mjs +2 -0
  47. package/esm2020/src/sharepoint/model/sharepoint-picture.mjs +2 -0
  48. package/{esm2015/src/sharepoint/model/sharepoint.service.config.js → esm2020/src/sharepoint/model/sharepoint.service.config.mjs} +1 -1
  49. package/esm2020/src/sharepoint/pipes/sharepoint-photo-url.pipe.mjs +16 -0
  50. package/esm2020/src/sharepoint/pipes/sharepoint-url.pipe.mjs +16 -0
  51. package/esm2020/src/sharepoint/services/sharepoint.service.mjs +77 -0
  52. package/esm2020/src/sharepoint/sharepoint.module.mjs +69 -0
  53. package/esm2020/src/url/pipes/safe-url.pipe.mjs +21 -0
  54. package/esm2020/src/url/pipes/uri-scheme.pipe.mjs +103 -0
  55. package/esm2020/src/url/url.module.mjs +38 -0
  56. package/fesm2015/cleavelandprice-ngx-lib.mjs +1414 -0
  57. package/fesm2015/cleavelandprice-ngx-lib.mjs.map +1 -0
  58. package/fesm2020/cleavelandprice-ngx-lib.mjs +1386 -0
  59. package/fesm2020/cleavelandprice-ngx-lib.mjs.map +1 -0
  60. package/index.d.ts +5 -0
  61. package/package.json +22 -10
  62. package/src/authentication/authentication.module.d.ts +17 -0
  63. package/src/authentication/components/login/login.component.d.ts +6 -1
  64. package/src/authentication/components/login-form/login-form.component.d.ts +3 -0
  65. package/src/authentication/model/authentication-token.d.ts +1 -8
  66. package/src/authentication/services/authentication.service.d.ts +12 -2
  67. package/src/dialog/components/_dialog/dialog.component.d.ts +3 -0
  68. package/src/dialog/components/confirmation-dialog/confirmation-dialog.component.d.ts +3 -0
  69. package/src/dialog/components/input-dialog/input-dialog.component.d.ts +3 -0
  70. package/src/dialog/components/message-dialog/message-dialog.component.d.ts +3 -0
  71. package/src/dialog/dialog.module.d.ts +14 -0
  72. package/src/email/email.module.d.ts +5 -0
  73. package/src/email/services/email.service.d.ts +3 -0
  74. package/src/employee/employee.module.d.ts +12 -0
  75. package/src/employee/pipes/departments.pipe.d.ts +3 -0
  76. package/src/employee/pipes/employee-by-dn.pipe.d.ts +3 -0
  77. package/src/employee/pipes/employee-photo-url.pipe.d.ts +3 -0
  78. package/src/employee/pipes/employees-with-property-value.pipe.d.ts +3 -0
  79. package/src/employee/pipes/filter-employees.pipe.d.ts +3 -0
  80. package/src/employee/pipes/is-member-of.pipe.d.ts +3 -0
  81. package/src/employee/pipes/sort-employees.pipe.d.ts +3 -0
  82. package/src/employee/services/employee.service.d.ts +3 -0
  83. package/src/file-upload/components/upload/upload.component.d.ts +3 -0
  84. package/src/file-upload/components/upload-dialog/upload-dialog.component.d.ts +3 -0
  85. package/src/file-upload/services/upload.service.d.ts +3 -0
  86. package/src/file-upload/upload.module.d.ts +13 -0
  87. package/src/sharepoint/model/sharepoint-calendar-event.d.ts +3 -3
  88. package/src/sharepoint/model/sharepoint-customer-visit.d.ts +5 -5
  89. package/src/sharepoint/model/sharepoint-employee-picture.d.ts +2 -3
  90. package/src/sharepoint/model/sharepoint-list-item.d.ts +9 -9
  91. package/src/sharepoint/model/sharepoint-list.d.ts +8 -0
  92. package/src/sharepoint/model/sharepoint-person.d.ts +9 -0
  93. package/src/sharepoint/model/sharepoint-picture.d.ts +11 -8
  94. package/src/sharepoint/model/sharepoint.service.config.d.ts +2 -5
  95. package/src/sharepoint/pipes/sharepoint-photo-url.pipe.d.ts +3 -0
  96. package/src/sharepoint/pipes/sharepoint-url.pipe.d.ts +3 -0
  97. package/src/sharepoint/services/sharepoint.service.d.ts +11 -6
  98. package/src/sharepoint/sharepoint.module.d.ts +9 -4
  99. package/src/url/pipes/safe-url.pipe.d.ts +3 -0
  100. package/src/url/pipes/uri-scheme.pipe.d.ts +3 -0
  101. package/src/url/url.module.d.ts +7 -0
  102. package/bundles/cleavelandprice-ngx-lib.umd.js +0 -1360
  103. package/bundles/cleavelandprice-ngx-lib.umd.js.map +0 -1
  104. package/bundles/cleavelandprice-ngx-lib.umd.min.js +0 -2
  105. package/bundles/cleavelandprice-ngx-lib.umd.min.js.map +0 -1
  106. package/cleavelandprice-ngx-lib.d.ts +0 -5
  107. package/cleavelandprice-ngx-lib.metadata.json +0 -1
  108. package/esm2015/cleavelandprice-ngx-lib.js +0 -6
  109. package/esm2015/src/authentication/authentication.module.js +0 -84
  110. package/esm2015/src/authentication/components/login/login.component.js +0 -41
  111. package/esm2015/src/authentication/components/login-form/login-form.component.js +0 -41
  112. package/esm2015/src/authentication/model/authentication-token.js +0 -1
  113. package/esm2015/src/authentication/services/authentication.service.js +0 -129
  114. package/esm2015/src/dialog/components/_dialog/dialog.component.js +0 -75
  115. package/esm2015/src/dialog/components/confirmation-dialog/confirmation-dialog.component.js +0 -19
  116. package/esm2015/src/dialog/components/input-dialog/input-dialog.component.js +0 -19
  117. package/esm2015/src/dialog/components/message-dialog/message-dialog.component.js +0 -19
  118. package/esm2015/src/dialog/dialog.module.js +0 -54
  119. package/esm2015/src/email/email.module.js +0 -41
  120. package/esm2015/src/email/model/email-dto.js +0 -1
  121. package/esm2015/src/email/services/email.service.js +0 -30
  122. package/esm2015/src/employee/employee.module.js +0 -73
  123. package/esm2015/src/employee/model/employee.js +0 -1
  124. package/esm2015/src/employee/pipes/departments.pipe.js +0 -20
  125. package/esm2015/src/employee/pipes/employee-by-dn.pipe.js +0 -13
  126. package/esm2015/src/employee/pipes/employee-photo-url.pipe.js +0 -23
  127. package/esm2015/src/employee/pipes/employees-with-property-value.pipe.js +0 -13
  128. package/esm2015/src/employee/pipes/filter-employees.pipe.js +0 -18
  129. package/esm2015/src/employee/pipes/is-member-of.pipe.js +0 -13
  130. package/esm2015/src/employee/pipes/sort-employees.pipe.js +0 -40
  131. package/esm2015/src/employee/services/employee.service.js +0 -40
  132. package/esm2015/src/file-upload/components/upload/upload.component.js +0 -34
  133. package/esm2015/src/file-upload/components/upload-dialog/upload-dialog.component.js +0 -101
  134. package/esm2015/src/file-upload/model/filesystem-file-info.js +0 -1
  135. package/esm2015/src/file-upload/model/upload.service.config.js +0 -3
  136. package/esm2015/src/file-upload/services/upload.service.js +0 -91
  137. package/esm2015/src/file-upload/upload.module.js +0 -73
  138. package/esm2015/src/sharepoint/model/sharepoint-customer-visit.js +0 -1
  139. package/esm2015/src/sharepoint/model/sharepoint-list-item.js +0 -1
  140. package/esm2015/src/sharepoint/model/sharepoint-list-items-request.js +0 -1
  141. package/esm2015/src/sharepoint/model/sharepoint-picture.js +0 -1
  142. package/esm2015/src/sharepoint/model/sharepoint-uri-request.js +0 -1
  143. package/esm2015/src/sharepoint/model/sharepoint-user-request.js +0 -1
  144. package/esm2015/src/sharepoint/model/sharepoint-user.js +0 -1
  145. package/esm2015/src/sharepoint/pipes/sharepoint-photo-url.pipe.js +0 -12
  146. package/esm2015/src/sharepoint/pipes/sharepoint-url.pipe.js +0 -12
  147. package/esm2015/src/sharepoint/services/sharepoint.service.js +0 -71
  148. package/esm2015/src/sharepoint/sharepoint.module.js +0 -65
  149. package/esm2015/src/url/pipes/safe-url.pipe.js +0 -20
  150. package/esm2015/src/url/pipes/uri-scheme.pipe.js +0 -99
  151. package/esm2015/src/url/url.module.js +0 -31
  152. package/fesm2015/cleavelandprice-ngx-lib.js +0 -1247
  153. package/fesm2015/cleavelandprice-ngx-lib.js.map +0 -1
  154. package/src/sharepoint/model/sharepoint-list-items-request.d.ts +0 -10
  155. package/src/sharepoint/model/sharepoint-uri-request.d.ts +0 -5
  156. package/src/sharepoint/model/sharepoint-user-request.d.ts +0 -6
  157. package/src/sharepoint/model/sharepoint-user.d.ts +0 -8
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleavelandprice-ngx-lib.js","sources":["../../src/dialog/model/confirmation-dialog-mode.enum.ts","../../src/dialog/components/_dialog/dialog.component.ts","../../src/dialog/components/confirmation-dialog/confirmation-dialog.component.ts","../../src/dialog/components/input-dialog/input-dialog.component.ts","../../src/dialog/components/message-dialog/message-dialog.component.ts","../../src/dialog/dialog.module.ts","../../src/authentication/model/authentication.service.config.ts","../../src/sharepoint/model/sharepoint.service.config.ts","../../src/sharepoint/services/sharepoint.service.ts","../../src/authentication/services/authentication.service.ts","../../src/authentication/components/login-form/login-form.component.ts","../../src/authentication/components/login/login.component.ts","../../src/authentication/authentication.module.ts","../../src/email/model/email.service.config.ts","../../src/email/services/email.service.ts","../../src/email/email.module.ts","../../src/employee/model/employee.service.config.ts","../../src/employee/services/employee.service.ts","../../src/employee/pipes/departments.pipe.ts","../../src/employee/pipes/employee-by-dn.pipe.ts","../../src/employee/pipes/employee-photo-url.pipe.ts","../../src/employee/pipes/employees-with-property-value.pipe.ts","../../src/employee/pipes/filter-employees.pipe.ts","../../src/employee/pipes/is-member-of.pipe.ts","../../src/employee/pipes/sort-employees.pipe.ts","../../src/employee/employee.module.ts","../../src/sharepoint/pipes/sharepoint-photo-url.pipe.ts","../../src/sharepoint/pipes/sharepoint-url.pipe.ts","../../src/sharepoint/sharepoint.module.ts","../../src/file-upload/model/upload.service.config.ts","../../src/file-upload/services/upload.service.ts","../../src/file-upload/components/upload-dialog/upload-dialog.component.ts","../../src/file-upload/components/upload/upload.component.ts","../../src/file-upload/upload.module.ts","../../src/url/pipes/safe-url.pipe.ts","../../src/url/pipes/uri-scheme.pipe.ts","../../src/url/url.module.ts","../../cleavelandprice-ngx-lib.ts"],"sourcesContent":["export enum ConfirmationDialogMode {\n OkCancel,\n YesNo,\n TrueFalse,\n Custom\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { ConfirmationDialogMode } from './../../model/confirmation-dialog-mode.enum';\n\n@Component({\n selector: 'cp-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css']\n})\nexport class DialogComponent implements OnInit {\n @Input() dialogType: string;\n @Input() data: any;\n @Output() closed = new EventEmitter<any>();\n\n ConfirmationDialogMode = ConfirmationDialogMode;\n mode = ConfirmationDialogMode.OkCancel;\n title: string;\n message: string;\n checkboxMessage: string;\n placeholder: string;\n customTrueFalseText: string[] = null;\n\n userInput: string;\n checkboxValue: boolean;\n\n ngOnInit(): void {\n if (this.data) {\n this.title = this.data.title || null;\n this.message = this.data.message || null;\n this.checkboxMessage = this.data.checkboxMessage || null;\n this.placeholder = this.data.placeholder || null;\n this.userInput = this.data.value || null;\n this.mode = this.data.mode || ConfirmationDialogMode.OkCancel;\n this.customTrueFalseText = this.data.customTrueFalseText;\n }\n }\n\n close(): void {\n let data: any;\n\n switch (this.dialogType) {\n case 'message':\n data = this.checkboxMessage ?\n {\n checkbox: this.checkboxValue || false\n } :\n null;\n break;\n case 'input':\n data = this.checkboxMessage ?\n {\n response: this.userInput,\n checkbox: this.checkboxValue || false\n } :\n this.userInput;\n break;\n case 'confirmation':\n data = this.checkboxMessage ?\n {\n response: true,\n checkbox: this.checkboxValue || false\n } :\n true;\n break;\n }\n\n this.closed.emit(data);\n }\n\n cancel(): void {\n let data: any;\n\n if (this.dialogType === 'confirmation') {\n data = this.checkboxMessage ?\n {\n response: false,\n checkbox: this.checkboxValue || false\n } :\n false;\n }\n\n this.closed.emit(data);\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'cp-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html'\n})\nexport class ConfirmationDialogComponent {\n\n constructor(public dialogRef: MatDialogRef<ConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'cp-input-dialog',\n templateUrl: './input-dialog.component.html'\n})\nexport class InputDialogComponent {\n constructor(public dialogRef: MatDialogRef<InputDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'cp-message-dialog',\n templateUrl: './message-dialog.component.html'\n})\nexport class MessageDialogComponent {\n constructor(public dialogRef: MatDialogRef<MessageDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n}\n","//#region Imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n// Angular Material\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\n\n// Components\nimport { DialogComponent } from './components/_dialog/dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { InputDialogComponent } from './components/input-dialog/input-dialog.component';\nimport { MessageDialogComponent } from './components/message-dialog/message-dialog.component';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/confirmation-dialog-mode.enum';\n\n// Components\nexport * from './components/confirmation-dialog/confirmation-dialog.component';\nexport * from './components/input-dialog/input-dialog.component';\nexport * from './components/message-dialog/message-dialog.component';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatInputModule,\n MatDialogModule\n ],\n declarations: [\n DialogComponent,\n ConfirmationDialogComponent,\n InputDialogComponent,\n MessageDialogComponent\n ],\n exports: [\n ConfirmationDialogComponent,\n InputDialogComponent,\n MessageDialogComponent\n ],\n entryComponents: [\n ConfirmationDialogComponent,\n InputDialogComponent,\n MessageDialogComponent\n ]\n})\nexport class DialogModule { }\n","export class AuthenticationServiceConfig {\n authenticationApiUrl: string;\n}\n","export class SharePointServiceConfig {\n sharePointApiUrl: string;\n sharePointServerUrl: string;\n employeePhotoSite: string;\n employeePhotoList: string;\n username: string;\n password: string;\n}\n","//#region Imports\nimport { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\n\nimport { SharePointServiceConfig } from './../model/sharepoint.service.config';\n// import { SharePointList } from '../model/DELETE_sharepoint-list';\nimport { SharePointListItemsRequest } from './../model/sharepoint-list-items-request';\nimport { SharePointUserRequest } from './../model/sharepoint-user-request';\nimport { SharePointListItem } from './../model/sharepoint-list-item';\nimport { SharePointEmployeePicture } from './../model/sharepoint-employee-picture';\n// import { SharePointCustomerVisit } from './../model/sharepoint-customer-visit';\n// import { SharePointPerson } from '../model/DELETE_sharepoint-person';\nimport { SharePointUser } from '../model/sharepoint-user';\n//#endregion\n\n@Injectable()\nexport class SharePointService {\n //#region Fields\n // people: SharePointPerson[];\n users: SharePointUser[];\n photos: SharePointEmployeePicture[];\n //#endregion\n\n constructor(@Optional() private config: SharePointServiceConfig,\n private http: HttpClient) { }\n\n //#region Utilities\n getListItems(request: SharePointListItemsRequest): Observable<SharePointListItem[]> {\n if (!request.username) { request.username = this.config.username; }\n if (!request.password) { request.password = this.config.password; }\n\n return this.http.post<SharePointListItem[]>(`${this.config.sharePointApiUrl}/listitems`, request);\n }\n\n /*getListItemsSimple(list: string, view: string, site?: string, limit?: string): Observable<SharePointListItem[]> {\n return this.http.get<SharePointListItem[]>(`${this.config.sharePointApiUrl}/${list}/${view}/${site}/${limit}`);\n }*/\n\n getPeople(request: SharePointUserRequest, storePeople?: boolean): Observable<SharePointUser[]> {\n // Do we already have people stored locally?\n if (this.users) {\n return of(this.users);\n }\n\n if (!request.username) { request.username = this.config.username; }\n if (!request.password) { request.password = this.config.password; }\n\n // Should we store people locally for subsequent calls?\n if (storePeople) {\n this.http.post<SharePointUser[]>(`${this.config.sharePointApiUrl}/users`, request)\n .subscribe(users => this.users = users);\n }\n\n return this.http.post<SharePointUser[]>(`${this.config.sharePointApiUrl}/users`, request);\n }\n\n getPhotos(storePhotos?: boolean): Observable<SharePointEmployeePicture[]> {\n // Do we already have photos stored locally?\n if (this.photos) {\n return of(this.photos);\n }\n\n const request: SharePointListItemsRequest = {\n list: this.config.employeePhotoList,\n site: `${this.config.sharePointServerUrl}/${this.config.employeePhotoSite}`,\n username: this.config.username,\n password: this.config.password,\n additionalPropertiesToRetrieve: [ 'EncodedAbsUrl' ]\n };\n\n // Should we store photos locally for subsequent calls?\n if (storePhotos) {\n this.http.post<SharePointEmployeePicture[]>(`${this.config.sharePointApiUrl}/listitems`, request)\n .subscribe(photos => this.photos = photos);\n }\n\n return this.http.post<SharePointEmployeePicture[]>(`${this.config.sharePointApiUrl}/listitems`, request);\n }\n\n /*getCustomerVisits(): Observable<SharePointCustomerVisit[]> {\n const list: SharePointList = {\n list: 'Customer Visits',\n view: 'All Events',\n userName: this.config.userName,\n password: this.config.password\n };\n\n return this.http.post<SharePointCustomerVisit[]>(this.config.sharePointApiUrl, list);\n }*/\n //#endregion\n}\n","//#region Imports\nimport { Injectable, Output, EventEmitter, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AuthenticationToken } from './../model/authentication-token';\n// import { JwtHelper } from 'angular2-jwt';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { AuthenticationServiceConfig } from './../model/authentication.service.config';\nimport { SharePointService } from './../../sharepoint/services/sharepoint.service';\n//#endregion\n\n/**\n * Authenticate Active Directory user\n */\n@Injectable()\nexport class AuthenticationService {\n //#region Fields\n /**\n * @ignore\n */\n private authenticationApiUrl: string;\n\n @Output() authenticatedChanged = new EventEmitter<boolean>();\n @Output() authenticatingChanged = new EventEmitter<boolean>();\n\n /**\n * Flag set to true while the service is attempting to authenticate the user\n */\n authenticating = false;\n\n /**\n * Flag set to true when the user is successfully authenticated\n */\n authenticated = false;\n\n /**\n * Object representing the authenticated user\n */\n /*authenticatedUser: {\n admin: boolean,\n accountName: string,\n displayName: string,\n distinguishedName: string;\n employeeNumber: string;\n photoUrl?: string;\n memberOf?: string;\n };*/\n authenticatedUser: AuthenticationToken;\n //#endregion\n\n //#region Lifecycle\n /**\n * @ignore\n */\n constructor( @Optional() config: AuthenticationServiceConfig,\n private http: HttpClient,\n private sharePointService: SharePointService) {\n\n this.authenticationApiUrl = config.authenticationApiUrl;\n this.checkForExistingToken();\n }\n //#endregion\n\n //#region Utilities\n /**\n * Authenticate the user and store the token in Local Storage\n *\n * @param username AD sAMAccountName\n * @param password\n * @param adminGroup AD group that determines if authenticated user is considered an administrator of the app\n */\n login(username: string, password: string, adminGroup?: string): void {\n const request = {\n username: username,\n password: password,\n adminGroup: adminGroup\n };\n\n this.authenticating = true;\n this.authenticatingChanged.emit(this.authenticating);\n\n this.http.request('POST', this.authenticationApiUrl, { responseType: 'text', body: request})\n // this.http.post<string>(this.authenticationApiUrl, request)\n .subscribe(token => this.validateUser(token),\n err => {\n this.authenticating = false;\n this.authenticatingChanged.emit(this.authenticating);\n });\n }\n\n /**\n * Logout the user and delete the token from Local Storage\n */\n logout(): void {\n if (localStorage.getItem('token')) {\n localStorage.removeItem('token');\n }\n\n this.authenticatedUser = null;\n this.authenticated = false;\n this.authenticatedChanged.emit(false);\n }\n\n /**\n * @ignore\n */\n private validateUser(token: string): void {\n if (!token) { return; }\n\n const jwtHelper = new JwtHelperService();\n const decoded = jwtHelper.decodeToken(token) as AuthenticationToken;\n\n if (jwtHelper.isTokenExpired(token)) {\n this.logout();\n return;\n }\n\n this.authenticatedUser = decoded;\n this.authenticatedUser.accountName = decoded.winaccountname;\n this.authenticatedUser.admin = decoded.role === 'Admin';\n\n localStorage.setItem('token', token);\n\n this.getPhoto();\n\n this.authenticated = true;\n this.authenticatedChanged.emit(this.authenticated);\n\n this.authenticating = false;\n this.authenticatingChanged.emit(this.authenticating);\n }\n\n /**\n * @ignore\n */\n private getPhoto(): void {\n this.sharePointService.getPhotos()\n .subscribe(photos => {\n // The user may have been logged out by the time the photos came back\n if (!this.authenticatedUser || !this.authenticatedUser.employeeNumber) {\n return;\n }\n\n const photo = photos.find(pic => +pic.employeeNumber === +this.authenticatedUser.employeeNumber);\n\n if (photo) {\n this.authenticatedUser.photoUrl = photo.encodedAbsUrl;\n }\n });\n }\n\n /**\n * @ignore\n */\n private checkForExistingToken(): void {\n if (localStorage.getItem('token')) {\n this.validateUser(localStorage.getItem('token'));\n }\n }\n //#endregion\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AuthenticationService } from './../../services/authentication.service';\nimport { SharePointService } from './../../../sharepoint/services/sharepoint.service';\n\n@Component({\n selector: 'cp-login-form',\n templateUrl: './login-form.component.html',\n styleUrls: ['./login-form.component.css']\n})\nexport class LoginFormComponent implements OnInit {\n username: string;\n password: string;\n adminGroup: string;\n loginError: boolean;\n\n constructor(public dialogRef: MatDialogRef<LoginFormComponent>,\n private sharePointService: SharePointService,\n public authenticationService: AuthenticationService,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n this.adminGroup = data.adminGroup;\n }\n\n ngOnInit(): void {\n this.authenticationService.authenticatedChanged\n .subscribe((authenticated: boolean) => {\n if (authenticated) {\n this.dialogRef.close();\n }\n });\n }\n\n authenticate() {\n if (!this.sharePointService || !this.username || !this.password) {\n return;\n }\n this.authenticationService.login(this.username, this.password, this.adminGroup);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { LoginFormComponent } from './../login-form/login-form.component';\nimport { AuthenticationService } from './../../services/authentication.service';\nimport { ConfirmationDialogComponent } from './../../../dialog/components/confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'cp-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent {\n @Input() adminGroup: string;\n\n constructor(public dialog: MatDialog,\n public authenticationService: AuthenticationService) {\n }\n\n login(): void {\n this.dialog.open(LoginFormComponent, {\n data: { adminGroup: this.adminGroup }\n });\n }\n\n confirmLogout(): void {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n data: { message: `Are you sure you want to logout?` }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.authenticationService.logout();\n }\n });\n }\n}\n","//#region Imports\nimport { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n// Angular Material\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n// Modules\nimport { DialogModule } from './../dialog/dialog.module';\n\n// Services\nimport { AuthenticationServiceConfig } from './model/authentication.service.config';\nimport { AuthenticationService } from './services/authentication.service';\n\n// Components\nimport { LoginComponent } from './components/login/login.component';\nimport { LoginFormComponent } from './components/login-form/login-form.component';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/authentication.service.config';\nexport * from './model/authentication-token';\n\n// Services\nexport * from './services/authentication.service';\n\n// Components\nexport * from './components/login/login.component';\nexport * from './components/login-form/login-form.component';\n//#endregion\n\n/**\n * Provides a component and a service that allows you to perform Active/Directory authentication\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDialogModule,\n MatInputModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n MatSelectModule,\n DialogModule\n ],\n declarations: [\n LoginComponent,\n LoginFormComponent\n ],\n exports: [\n LoginComponent,\n LoginFormComponent\n ],\n providers: [],\n entryComponents: [\n LoginFormComponent\n ]\n})\nexport class AuthenticationModule {\n static forRoot(authenticationConfig: AuthenticationServiceConfig): ModuleWithProviders<AuthenticationModule> {\n return {\n ngModule: AuthenticationModule,\n providers: [\n AuthenticationService,\n { provide: AuthenticationServiceConfig, useValue: authenticationConfig }\n ]\n };\n }\n\n constructor( @Optional() @SkipSelf() parentModule: AuthenticationModule) {\n if (parentModule) {\n throw new Error(\n 'AuthenticationModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","import { EmailSender } from './email-sender';\n\nexport class EmailServiceConfig {\n emailApiUrl: string;\n server: string;\n smtpPort: number;\n sender: EmailSender;\n}\n","//#region Imports\nimport { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { EmailServiceConfig } from './../model/email.service.config';\nimport { Email } from './../model/email';\nimport { EmailDto } from './../model/email-dto';\n//#endregion\n\n@Injectable()\nexport class EmailService {\n private emailServiceConfig: EmailServiceConfig;\n\n constructor(@Optional() config: EmailServiceConfig,\n private http: HttpClient) {\n this.emailServiceConfig = config;\n }\n\n send(email: Email): Observable<Email> {\n const dto: EmailDto = {\n server: this.emailServiceConfig.server,\n smtpPort: this.emailServiceConfig.smtpPort,\n sender: this.emailServiceConfig.sender,\n subject: email.subject,\n content: email.content,\n recipients: email.recipients\n };\n\n return this.http.post<Email>(this.emailServiceConfig.emailApiUrl, dto);\n }\n}\n","//#region Imports\nimport { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// Services\nimport { EmailServiceConfig } from './model/email.service.config';\nimport { EmailService } from './services/email.service';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/email.service.config';\nexport * from './model/email';\n\n// Services\nexport * from './services/email.service';\n//#endregion\n\n@NgModule({\n imports: [ CommonModule ],\n declarations: [],\n exports: []\n})\nexport class EmailModule {\n static forRoot(emailConfig: EmailServiceConfig): ModuleWithProviders<EmailModule> {\n return {\n ngModule: EmailModule,\n providers: [\n EmailService,\n { provide: EmailServiceConfig, useValue: emailConfig }\n ]\n };\n }\n\n constructor( @Optional() @SkipSelf() parentModule: EmailModule) {\n if (parentModule) {\n throw new Error(\n 'EmailModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","export class EmployeeServiceConfig {\n employeeApiUrl: string;\n}\n","//#region Imports\nimport { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\n\nimport { Employee } from './../model/employee';\nimport { EmployeeServiceConfig } from './../model/employee.service.config';\n//#endregion\n\n@Injectable()\nexport class EmployeeService {\n //#region Fields\n private employeeApiUrl: string;\n employees: Employee[];\n //#endregion\n\n //#region Lifecycle\n constructor( @Optional() config: EmployeeServiceConfig,\n private http: HttpClient) {\n this.employeeApiUrl = config.employeeApiUrl;\n }\n //#endregion\n\n //#region Utilities\n getEmployees(storeEmployees = false, includeDisabled = false): Observable<Employee[]> {\n // Do we already have employees stored locally?\n if (this.employees) {\n return of(this.employees);\n // return Observable.of(this.employees);\n }\n\n // Should we store employees locally for subsequent calls?\n if (storeEmployees) {\n this.http.get<Employee[]>(`${this.employeeApiUrl}/false/${includeDisabled}`)\n .subscribe(emps => this.employees = emps);\n }\n\n return this.http.get<Employee[]>(`${this.employeeApiUrl}/false/${includeDisabled}`);\n }\n\n getEmployee(sAMAccountName: string): Observable<Employee> {\n return this.http.get<Employee>(`${this.employeeApiUrl}/name/${sAMAccountName}`);\n }\n //#endregion\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'departments'\n})\nexport class DepartmentsPipe implements PipeTransform {\n\n transform(employees: Employee[], args?: any): string[] {\n const departments: string[] = [];\n\n employees\n .filter(emp => emp.department)\n .forEach(emp => {\n if (departments.indexOf(emp.department) === -1) {\n departments.push(emp.department);\n }\n });\n\n return departments.sort();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'employeeByDn'\n})\nexport class EmployeeByDnPipe implements PipeTransform {\n\n transform(employees: Employee[], dn: string): Employee {\n return employees\n .find(emp => emp.distinguishedName.toLowerCase() === dn.toLowerCase());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\nimport { SharePointEmployeePicture } from './../../sharepoint/model/sharepoint-employee-picture';\n\n@Pipe({\n name: 'employeePhotoUrl'\n})\nexport class EmployeePhotoUrlPipe implements PipeTransform {\n transform(employee: Employee, photos: SharePointEmployeePicture[]): any {\n if (!photos) { return null; }\n\n // Try to match by employeeNumber, accountName, or title\n const photo = photos\n .find(pic =>\n (pic.employeeNumber && employee.employeeNumber && +pic.employeeNumber === +employee.employeeNumber) ||\n (pic.accountName && pic.accountName.toLowerCase() === employee.sAMAccountName.toLowerCase()) ||\n (pic.title && pic.title.toLowerCase() === employee.displayName.toLowerCase()));\n\n if (!photo) {\n console.log(`No photo match for ${employee.displayName}`);\n }\n\n return photo ? photo.encodedAbsUrl : null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'employeesWithPropertyValue'\n})\nexport class EmployeesWithPropertyValuePipe implements PipeTransform {\n\n transform(employees: Employee[], propertyName: string, propertyValue: any): Employee[] {\n return employees\n .filter(emp => emp[propertyName] && emp[propertyName] === propertyValue);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'filterEmployees'\n})\nexport class FilterEmployeesPipe implements PipeTransform {\n transform(employees: Employee[], filter: string): Employee[] {\n return filter ?\n employees\n .filter(emp =>\n emp.displayName.toLowerCase().indexOf(filter.toLowerCase()) !== -1 ||\n (emp.department && emp.department.toLowerCase().indexOf(filter.toLowerCase()) !== -1) ||\n (emp.title && emp.title.toLowerCase().indexOf(filter.toLowerCase()) !== -1) ||\n emp.sAMAccountName.toLowerCase().indexOf(filter.toLowerCase()) !== -1\n ) :\n employees;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'isMemberOf'\n})\nexport class IsMemberOfPipe implements PipeTransform {\n\n transform(employee: Employee, groupName: string): boolean {\n return employee.memberOf &&\n (employee.memberOf.find(m => m.toLowerCase().indexOf(groupName.toLowerCase()) !== -1) !== undefined);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Employee } from './../model/employee';\n\n@Pipe({\n name: 'sortEmployees'\n})\nexport class SortEmployeesPipe implements PipeTransform {\n transform(employees: Employee[], sortBy?: string, dataType?: string, reverse?: boolean): Employee[] {\n return this.getSorted(employees,\n sortBy ? sortBy : 'displayName',\n dataType ? dataType : 'string',\n reverse ? reverse : false);\n }\n\n private getSorted(employees: Employee[], sortBy: string, dataType: string, reverse: boolean): Employee[] {\n const sorted = employees\n .sort((a, b) => {\n let valA, valB: any;\n\n switch (dataType.toLowerCase()) {\n case 'string':\n valA = a[sortBy] ? a[sortBy].toString().toLowerCase() : null;\n valB = b[sortBy] ? b[sortBy].toString().toLowerCase() : null;\n break;\n case 'number':\n valA = a[sortBy] ? +a[sortBy] : null;\n valB = b[sortBy] ? +b[sortBy] : null;\n break;\n case 'date':\n valA = a[sortBy] ? a[sortBy] as Date : null;\n valB = b[sortBy] ? b[sortBy] as Date : null;\n break;\n }\n\n if (valA < valB) { return -1; }\n if (valA > valB) { return 1; }\n return 0;\n });\n\n return reverse ? sorted.reverse() : sorted;\n }\n}\n","//#region Imports\nimport { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// Services\nimport { EmployeeServiceConfig } from './model/employee.service.config';\nimport { EmployeeService } from './services/employee.service';\n\n// Pipes\nimport { DepartmentsPipe } from './pipes/departments.pipe';\nimport { EmployeeByDnPipe } from './pipes/employee-by-dn.pipe';\nimport { EmployeePhotoUrlPipe } from './pipes/employee-photo-url.pipe';\nimport { EmployeesWithPropertyValuePipe } from './pipes/employees-with-property-value.pipe';\nimport { FilterEmployeesPipe } from './pipes/filter-employees.pipe';\nimport { IsMemberOfPipe } from './pipes/is-member-of.pipe';\nimport { SortEmployeesPipe } from './pipes/sort-employees.pipe';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/employee.service.config';\nexport * from './model/employee';\n\n// Services\nexport * from './services/employee.service';\n\n// Pipes\nexport * from './pipes/departments.pipe';\nexport * from './pipes/employee-by-dn.pipe';\nexport * from './pipes/employee-photo-url.pipe';\nexport * from './pipes/employees-with-property-value.pipe';\nexport * from './pipes/filter-employees.pipe';\nexport * from './pipes/is-member-of.pipe';\nexport * from './pipes/sort-employees.pipe';\n//#endregion\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n DepartmentsPipe,\n EmployeeByDnPipe,\n EmployeesWithPropertyValuePipe,\n FilterEmployeesPipe,\n IsMemberOfPipe,\n EmployeePhotoUrlPipe,\n SortEmployeesPipe\n ],\n exports: [\n DepartmentsPipe,\n EmployeeByDnPipe,\n EmployeesWithPropertyValuePipe,\n FilterEmployeesPipe,\n IsMemberOfPipe,\n EmployeePhotoUrlPipe,\n SortEmployeesPipe\n ]\n})\nexport class EmployeeModule {\n static forRoot(employeeConfig: EmployeeServiceConfig): ModuleWithProviders<EmployeeModule> {\n return {\n ngModule: EmployeeModule,\n providers: [\n EmployeeService,\n { provide: EmployeeServiceConfig, useValue: employeeConfig }\n ]\n };\n }\n\n constructor( @Optional() @SkipSelf() parentModule: EmployeeModule) {\n if (parentModule) {\n throw new Error(\n 'EmployeeModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SharePointPicture } from './../model/sharepoint-picture';\n\n@Pipe({\n name: 'sharePointPhotoUrl'\n})\nexport class SharePointPhotoUrlPipe implements PipeTransform {\n transform(photo: SharePointPicture): string {\n return photo.encodedAbsUrl;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sharePointUrl'\n})\nexport class SharePointUrlPipe implements PipeTransform {\n\n transform(url: string): string {\n return url !== null ? url.split(',')[0] : null;\n }\n}\n","//#region Imports\nimport { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n// Services\nimport { SharePointServiceConfig } from './model/sharepoint.service.config';\nimport { SharePointService } from './services/sharepoint.service';\n\n// Pipes\nimport { SharePointPhotoUrlPipe } from './pipes/sharepoint-photo-url.pipe';\nimport { SharePointUrlPipe } from './pipes/sharepoint-url.pipe';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/sharepoint-calendar-event';\nexport * from './model/sharepoint-customer-visit';\nexport * from './model/sharepoint-employee-picture';\n// export * from './model/sharepoint-list';\nexport * from './model/sharepoint-list-item';\n// export * from './model/sharepoint-person';\nexport * from './model/sharepoint-user';\nexport * from './model/sharepoint-picture';\nexport * from './model/sharepoint-list-items-request';\nexport * from './model/sharepoint-user-request';\nexport * from './model/sharepoint-uri-request';\nexport * from './model/sharepoint.service.config';\n\n// Services\nexport * from './services/sharepoint.service';\n\n// Pipes\nexport * from './pipes/sharepoint-photo-url.pipe';\nexport * from './pipes/sharepoint-url.pipe';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n SharePointPhotoUrlPipe,\n SharePointUrlPipe\n ],\n exports: [\n SharePointPhotoUrlPipe,\n SharePointUrlPipe\n ]\n})\nexport class SharePointModule {\n static forRoot(sharePointConfig: SharePointServiceConfig): ModuleWithProviders<SharePointModule> {\n return {\n ngModule: SharePointModule,\n providers: [\n SharePointService,\n { provide: SharePointServiceConfig, useValue: sharePointConfig }\n ]\n };\n }\n\n constructor( @Optional() @SkipSelf() parentModule: SharePointModule) {\n if (parentModule) {\n throw new Error(\n 'SharePointModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","export class UploadServiceConfig {\n uploadApiUrl: string;\n uploadPath?: string;\n dbAppId?: string;\n externalReferenceId?: string;\n comment?: string;\n\n // UI configuration\n uploadButtonText?: string;\n uploadDialogTitle?: string;\n uploadDialogAddFilesButtonText?: string;\n uploadDialogCancelButtonText?: string;\n uploadDialogUploadButtonText?: string;\n uploadDialogFinishButtonText?: string;\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { Subject , Observable } from 'rxjs';\nimport { UploadServiceConfig } from './../model/upload.service.config';\nimport { FileUploadRequest } from './../model/file-upload-request';\nimport { DatabaseFileInfo } from './../model/database-file-info';\nimport { FilesystemFileInfo } from './../model/filesystem-file-info';\n\n// https://malcoded.com/posts/angular-file-upload-component-with-express\n\n@Injectable()\nexport class UploadService {\n public uploadApiUrl: string;\n public uploadPath: string;\n public dbAppId: string;\n public externalReferenceId: string;\n public comment: string;\n\n // UI configuration\n public uploadButtonText: string;\n public uploadDialogTitle: string;\n public uploadDialogAddFilesButtonText: string;\n public uploadDialogCancelButtonText: string;\n public uploadDialogUploadButtonText: string;\n public uploadDialogFinishButtonText: string;\n\n constructor(private http: HttpClient,\n @Optional() config: UploadServiceConfig) {\n this.uploadApiUrl = config.uploadApiUrl;\n this.uploadPath = config.uploadPath || '';\n this.dbAppId = config.dbAppId || '';\n this.externalReferenceId = config.externalReferenceId || '';\n this.comment = config.comment || '';\n\n // UI configuration\n this.uploadButtonText = config.uploadButtonText;\n this.uploadDialogTitle = config.uploadDialogTitle;\n this.uploadDialogAddFilesButtonText = config.uploadDialogAddFilesButtonText;\n this.uploadDialogCancelButtonText = config.uploadDialogCancelButtonText;\n this.uploadDialogUploadButtonText = config.uploadDialogUploadButtonText;\n this.uploadDialogFinishButtonText = config.uploadDialogFinishButtonText;\n }\n\n public upload(files: Set<File>): {[key: string]: Observable<number>} {\n // this will be the our resulting map\n const status = {};\n\n files.forEach(file => {\n // create a new multipart-form for every file\n const formData: FormData = new FormData();\n formData.append('file', file, file.name);\n\n // create a http-post request and pass the form\n // tell it to report the upload progress\n\n // A 'Destination' header is used to optionally configure the file upload destination (filesystem)\n // A 'DbAppId' header is used to configure the unique identifier of database uploads\n const req = new HttpRequest('POST', this.uploadApiUrl, formData, {\n reportProgress: true,\n responseType: 'blob',\n headers: new HttpHeaders()\n .set('Destination', this.uploadPath)\n .set('DbAppId', this.dbAppId)\n .set('ExternalReferenceId', this.externalReferenceId)\n .set('Comment', this.comment)\n /*headers: this.uploadPath ?\n new HttpHeaders({ 'Destination': this.uploadPath }) :\n this.dbAppId ?\n new HttpHeaders({ 'DbAppId': this.dbAppId }) :\n null*/\n });\n\n // create a new progress-subject for every file\n const progress = new Subject<number>();\n\n // send the http-request and subscribe for progress-updates\n this.http.request(req).subscribe(event => {\n if (event.type === HttpEventType.UploadProgress) {\n\n // calculate the progress percentage\n const percentDone = Math.round(100 * event.loaded / event.total);\n\n // pass the percentage into the progress-stream\n progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n\n // Close the progress-stream if we get an answer form the API\n // The upload is complete\n progress.complete();\n }\n });\n\n // Save every progress-observable in a map of all observables\n status[file.name] = {\n progress: progress.asObservable()\n };\n });\n\n // return the map of progress.observables\n return status;\n }\n\n public exists(fileName: string): Observable<boolean> {\n const query = this.uploadApiUrl.toLowerCase().indexOf('filesystem') === -1 ?\n { name: fileName, dbAppId: this.dbAppId } :\n { name: fileName, destination: this.uploadPath };\n\n return this.http.post<boolean>(`${this.uploadApiUrl}/exists`, query);\n }\n\n public download(request: FileUploadRequest): Observable<Blob> {\n return this.http.post(`${this.uploadApiUrl}/stream`, request, { responseType: 'blob' });\n }\n\n public getUploadInfo(request: FileUploadRequest):\n Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]> {\n return this.http.post<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>\n (`${this.uploadApiUrl}/info`, request);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UploadService } from './../../services/upload.service';\nimport { forkJoin } from 'rxjs';\n\n@Component({\n selector: 'cp-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n @ViewChild('file', { static: true }) file;\n public files: Set<File> = new Set();\n existingFileConflict: string;\n\n // State\n progress;\n canBeClosed = true;\n primaryButtonText: string;\n showCancelButton = true;\n uploading = false;\n uploadSuccessful = false;\n\n // UI configuration\n uploadDialogTitle: string;\n uploadDialogAddFilesButtonText: string;\n uploadDialogCancelButtonText: string;\n uploadDialogUploadButtonText: string;\n uploadDialogFinishButtonText: string;\n\n constructor(public dialogRef: MatDialogRef<UploadDialogComponent>, public uploadService: UploadService) { }\n\n ngOnInit() {\n this.uploadDialogTitle = this.uploadService.uploadDialogTitle ?\n this.uploadService.uploadDialogTitle :\n 'Upload Files';\n\n this.uploadDialogAddFilesButtonText = this.uploadService.uploadDialogAddFilesButtonText ?\n this.uploadService.uploadDialogAddFilesButtonText :\n 'Add Files';\n\n this.uploadDialogCancelButtonText = this.uploadService.uploadDialogCancelButtonText ?\n this.uploadService.uploadDialogCancelButtonText :\n 'Cancel';\n\n this.uploadDialogUploadButtonText = this.uploadService.uploadDialogUploadButtonText ?\n this.uploadService.uploadDialogUploadButtonText :\n 'Upload';\n\n this.uploadDialogFinishButtonText = this.uploadService.uploadDialogFinishButtonText ?\n this.uploadService.uploadDialogFinishButtonText :\n 'Finish';\n\n this.primaryButtonText = this.uploadDialogUploadButtonText;\n }\n\n addFiles() {\n this.file.nativeElement.click();\n }\n\n onFilesAdded() {\n const files: { [key: string]: File } = this.file.nativeElement.files;\n for (const key in files) {\n if (!isNaN(parseInt(key))) {\n // See if the file already exists\n this.uploadService.exists(files[key].name)\n .subscribe(exists => {\n if (exists) {\n this.existingFileConflict = files[key].name;\n }\n\n if (!exists) {\n this.files.add(files[key]);\n }\n });\n }\n }\n }\n\n closeDialog() {\n // if everything was uploaded already, just close the dialog\n if (this.uploadSuccessful) {\n return this.dialogRef.close();\n }\n\n // set the component state to \"uploading\"\n this.uploading = true;\n\n // start the upload and save the progress map\n this.progress = this.uploadService.upload(this.files);\n\n // convert the progress map into an array\n const allProgressObservables = [];\n\n for (let key in this.progress) {\n allProgressObservables.push(this.progress[key].progress);\n }\n\n // Adjust the state variables\n\n // The OK-button should have the text \"Finish\" now\n this.primaryButtonText = this.uploadDialogFinishButtonText;\n\n // The dialog should not be closed while uploading\n this.canBeClosed = false;\n this.dialogRef.disableClose = true;\n\n // Hide the cancel-button\n this.showCancelButton = false;\n\n // When all progress-observables are completed...\n forkJoin(allProgressObservables).subscribe(end => {\n // ... the dialog can be closed again...\n this.canBeClosed = true;\n this.dialogRef.disableClose = false;\n\n // ... the upload was successful...\n this.uploadSuccessful = true;\n\n // ... and the component is no longer uploading\n this.uploading = false;\n });\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';\nimport { UploadService } from './../../services/upload.service';\n\n@Component({\n selector: 'cp-upload',\n template: '<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>'\n})\nexport class UploadComponent implements OnInit {\n @Output() dialogClosed = new EventEmitter();\n uploadButtonText: string;\n\n constructor(public dialog: MatDialog, public uploadService: UploadService) { }\n\n ngOnInit(): void {\n this.uploadButtonText = this.uploadService.uploadButtonText ?\n this.uploadService.uploadButtonText :\n 'Upload';\n }\n\n public openUploadDialog() {\n this.dialog.open(UploadDialogComponent, { width: '50%' })\n .afterClosed().subscribe(() => this.dialogClosed.emit());\n }\n}\n","//#region Imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations'\nimport { HttpClientModule } from '@angular/common/http';\n\n// Angular Material\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n// Services\nimport { UploadServiceConfig } from './model/upload.service.config';\nimport { UploadService } from './services/upload.service';\n\n// Components\nimport { UploadDialogComponent } from './components/upload-dialog/upload-dialog.component';\nimport { UploadComponent } from './components/upload/upload.component';\n//#endregion\n\n//#region Exports\n// Model\nexport * from './model/database-file-info';\nexport * from './model/file-upload-request';\nexport * from './model/filesystem-file-info';\nexport * from './model/upload.service.config';\n\n// Services\nexport * from './services/upload.service';\n\n// Components\nexport * from './components/upload-dialog/upload-dialog.component';\nexport * from './components/upload/upload.component';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n HttpClientModule,\n\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n MatProgressBarModule],\n declarations: [\n UploadComponent,\n UploadDialogComponent\n ],\n exports: [\n UploadComponent,\n UploadDialogComponent\n ],\n entryComponents: [\n UploadDialogComponent\n ]\n })\n export class UploadModule {\n static forRoot(uploadConfig: UploadServiceConfig): ModuleWithProviders<UploadModule> {\n return {\n ngModule: UploadModule,\n providers: [\n UploadService,\n { provide: UploadServiceConfig, useValue: uploadConfig }\n ]\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: UploadModule) {\n if (parentModule) {\n throw new Error(\n 'UploadModule is already loaded. Import it in the AppModule only');\n }\n }\n }\n","// This pipe whitelists URLs so that they aren't prefixed with 'unsafe:' when they render in the DOM\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeUrl'\n})\nexport class SafeUrlPipe implements PipeTransform {\n\n constructor(private domSanitizer: DomSanitizer) { }\n\n transform(value: string): SafeUrl {\n return this.domSanitizer.bypassSecurityTrustUrl(value);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'uriScheme',\n pure: false\n})\nexport class UriSchemePipe implements PipeTransform {\n // https://docs.microsoft.com/en-us/office/client-developer/office-uri-schemes\n\n transform(value: string): string {\n if (!localStorage.getItem('useUriScheme')) { return value; }\n\n const urlSplit = value.split('.');\n const extension = urlSplit[urlSplit.length - 1];\n\n if (!extension) { return value; }\n\n const command = this.command(extension);\n const app = this.app(extension);\n\n return `ms-${app}:${command}|u|${value}`;\n }\n\n private app(extension: string): string {\n switch (extension.toLowerCase()) {\n // documents\n case 'doc': case 'docx':\n case 'docm': case 'docb':\n case 'dot': case 'dotx': case 'dotm': // templates\n return 'word';\n case 'xls': case 'xlsx':\n case 'xlm': case 'xlsm': case 'xlsb': case 'xlw':\n case 'xlt': case 'xltx': case 'xltm': // templates\n return 'excel';\n case 'ppt': case 'pptx':\n case 'pps': case 'ppsx': case 'pptm': case 'ppsm':\n case 'sldx': case 'sldm':\n case 'pot': case 'potx': case 'potm': // templates\n return 'powerpoint';\n case 'vsd': case 'vsdx':\n case 'vst': case 'vstx': // templates\n return 'visio';\n case 'mdb': case 'accdb': case 'accde': case 'accdr':\n case 'accdt': // templates\n return 'access';\n case 'mpp': case 'mppx':\n case 'mpt': // templates\n return 'project';\n case 'pub':\n return 'publisher';\n case 'xsn':\n return 'infopath';\n }\n }\n\n private command(extension: string): string {\n switch (extension.toLowerCase()) {\n case 'dot': case 'dotx': case 'dotm':\n case 'xlt': case 'xltx': case 'xltm':\n case 'pot': case 'potx': case 'potm':\n case 'vst': case 'vstx':\n case 'accdt':\n case 'mpt':\n return 'nft'; // new from template\n default:\n const openMode = 'v'; // for view, or 'e' or edit\n return `of${openMode}`; // default: open file as view/edit\n }\n }\n}\n","//#region Imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n// Pipes\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\nimport { UriSchemePipe } from './pipes/uri-scheme.pipe';\n//#endregion\n\n//#region Exports\n// Pipes\nexport * from './pipes/safe-url.pipe';\nexport * from './pipes/uri-scheme.pipe';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n SafeUrlPipe,\n UriSchemePipe\n ],\n exports: [\n SafeUrlPipe,\n UriSchemePipe\n ],\n entryComponents: [ ]\n})\nexport class UrlModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {DialogComponent as ɵa} from './src/dialog/components/_dialog/dialog.component';"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export interface SharePointListItemsRequest {
2
- list: string;
3
- site: string;
4
- additionalPropertiesToRetrieve?: string[];
5
- stripMetadataProperties?: boolean;
6
- maxResults?: number;
7
- digestContextUrl?: string;
8
- username?: string;
9
- password?: string;
10
- }
@@ -1,5 +0,0 @@
1
- export interface SharePointUriRequest {
2
- uri: string;
3
- username?: string;
4
- password?: string;
5
- }
@@ -1,6 +0,0 @@
1
- export interface SharePointUserRequest {
2
- site: string;
3
- id?: number;
4
- username?: string;
5
- password?: string;
6
- }
@@ -1,8 +0,0 @@
1
- export interface SharePointUser {
2
- id: number;
3
- isHiddenInUI: boolean;
4
- loginName: string;
5
- title: string;
6
- email: string;
7
- isSiteAdmin: boolean;
8
- }