Przeglądaj źródła

wip almost done

master
Daniel 2 lat temu
rodzic
commit
86ad620a85
71 zmienionych plików z 2153 dodań i 4694 usunięć
  1. +1741
    -2610
      httpdocs/plp-angular/package-lock.json
  2. +18
    -18
      httpdocs/plp-angular/package.json
  3. +0
    -9
      httpdocs/plp-angular/src/app/app-routing.module.ts
  4. +0
    -1
      httpdocs/plp-angular/src/app/app.component.html
  5. +7
    -15
      httpdocs/plp-angular/src/app/app.module.ts
  6. +4
    -5
      httpdocs/plp-angular/src/app/components/ag-grid-component.ts
  7. +12
    -7
      httpdocs/plp-angular/src/app/components/form-component.ts
  8. +1
    -3
      httpdocs/plp-angular/src/app/components/modal/modal.component.ts
  9. +0
    -362
      httpdocs/plp-angular/src/app/factory/factory.ts
  10. +1
    -3
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts
  11. +6
    -5
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-editor-component.ts
  12. +0
    -7
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-factory.ts
  13. +5
    -7
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts
  14. +0
    -1
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts
  15. +6
    -4
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-renderer-component.ts
  16. +13
    -15
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts
  17. +3
    -37
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts
  18. +9
    -12
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts
  19. +0
    -1
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-editor/grid-text-editor.component.ts
  20. +3
    -4
      httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts
  21. +0
    -1
      httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts
  22. +2
    -12
      httpdocs/plp-angular/src/app/model/entities/customer-meeting.ts
  23. +2
    -11
      httpdocs/plp-angular/src/app/model/entities/internal-meeting.ts
  24. +0
    -21
      httpdocs/plp-angular/src/app/model/entities/operator-contact.ts
  25. +0
    -6
      httpdocs/plp-angular/src/app/model/entities/operator-meeting-participant.ts
  26. +0
    -33
      httpdocs/plp-angular/src/app/model/entities/operator-meeting.ts
  27. +0
    -22
      httpdocs/plp-angular/src/app/model/entities/operator-note.ts
  28. +0
    -29
      httpdocs/plp-angular/src/app/model/entities/operator.ts
  29. +0
    -21
      httpdocs/plp-angular/src/app/model/entities/production-contact.ts
  30. +0
    -6
      httpdocs/plp-angular/src/app/model/entities/production-meeting-participant.ts
  31. +0
    -33
      httpdocs/plp-angular/src/app/model/entities/production-meeting.ts
  32. +0
    -22
      httpdocs/plp-angular/src/app/model/entities/production-note.ts
  33. +0
    -29
      httpdocs/plp-angular/src/app/model/entities/production.ts
  34. +0
    -21
      httpdocs/plp-angular/src/app/model/entities/service-contact.ts
  35. +0
    -6
      httpdocs/plp-angular/src/app/model/entities/service-meeting-participant.ts
  36. +0
    -33
      httpdocs/plp-angular/src/app/model/entities/service-meeting.ts
  37. +0
    -22
      httpdocs/plp-angular/src/app/model/entities/service-note.ts
  38. +0
    -29
      httpdocs/plp-angular/src/app/model/entities/service.ts
  39. +13
    -0
      httpdocs/plp-angular/src/app/model/interface/meeting-interface.ts
  40. +0
    -6
      httpdocs/plp-angular/src/app/model/virtual/meeting-data.ts
  41. +0
    -9
      httpdocs/plp-angular/src/app/model/virtual/operator-data.ts
  42. +0
    -9
      httpdocs/plp-angular/src/app/model/virtual/production-data.ts
  43. +0
    -9
      httpdocs/plp-angular/src/app/model/virtual/service-data.ts
  44. +34
    -60
      httpdocs/plp-angular/src/app/services/customer.service.ts
  45. +5
    -27
      httpdocs/plp-angular/src/app/services/http.service.ts
  46. +41
    -274
      httpdocs/plp-angular/src/app/services/meeting.service.ts
  47. +2
    -3
      httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.html
  48. +9
    -8
      httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts
  49. +0
    -1
      httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.html
  50. +4
    -4
      httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.html
  51. +31
    -45
      httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts
  52. +6
    -9
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts
  53. +4
    -4
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.html
  54. +4
    -7
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts
  55. +2
    -2
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-view/customer-data-view.component.html
  56. +26
    -33
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts
  57. +7
    -17
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts
  58. +4
    -4
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.html
  59. +1
    -8
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts
  60. +4
    -10
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts
  61. +4
    -4
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-view/customer-note-view.component.html
  62. +18
    -24
      httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-view/customer-note-view.component.ts
  63. +6
    -11
      httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts
  64. +6
    -12
      httpdocs/plp-angular/src/app/views/start/internal-meeting-edit/internal-meeting-edit.component.ts
  65. +33
    -215
      httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts
  66. +0
    -1
      httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.html
  67. +40
    -183
      httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts
  68. +8
    -38
      httpdocs/plp-angular/src/app/views/start/start.component.html
  69. +3
    -169
      httpdocs/plp-angular/src/app/views/start/start.component.ts
  70. +3
    -3
      httpdocs/plp-angular/src/scss/styles.scss
  71. +2
    -2
      httpdocs/plp-angular/tsconfig.app.json

+ 1741
- 2610
httpdocs/plp-angular/package-lock.json
Plik diff jest za duży
Wyświetl plik


+ 18
- 18
httpdocs/plp-angular/package.json Wyświetl plik

@@ -11,23 +11,25 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular-devkit/build-angular": "^16.0.0",
"@angular-devkit/schematics": "^16.0.0",
"@angular/animations": "^16.0.0",
"@angular/common": "^16.0.0",
"@angular/compiler": "^16.0.0",
"@angular/core": "^16.0.0",
"@angular/forms": "^16.0.0",
"@angular/platform-browser": "^16.0.0",
"@angular/platform-browser-dynamic": "^16.0.0",
"@angular/router": "^16.0.0",
"@angular-devkit/build-angular": "^15.2.8",
"@angular-devkit/schematics": "^15.2.8",
"@angular/animations": "^15.2.8",
"@angular/common": "^15.2.8",
"@angular/compiler": "^15.2.8",
"@angular/core": "^15.2.8",
"@angular/forms": "^15.2.8",
"@angular/platform-browser": "^15.2.8",
"@angular/platform-browser-dynamic": "^15.2.8",
"@angular/router": "^15.2.8",
"@ng-bootstrap/ng-bootstrap": "^14.1.1", "@ng-bootstrap/ng-bootstrap": "^14.1.1",
"ag-grid-angular": "^21.2.2",
"ag-grid-community": "^21.2.2",
"@npmcli/fs": "^3.1.0",
"ag-grid-angular": "^29.3.5",
"ag-grid-community": "^29.3.5",
"angular-calendar": "^0.31.0", "angular-calendar": "^0.31.0",
"angularx-flatpickr": "^6.2.0", "angularx-flatpickr": "^6.2.0",
"codelyzer": "^6.0.2", "codelyzer": "^6.0.2",
"date-fns": "^1.30.1", "date-fns": "^1.30.1",
"eslint": "^8.40.0",
"file-saver": "^2.0.2", "file-saver": "^2.0.2",
"flatpickr": "^4.6.13", "flatpickr": "^4.6.13",
"ng6-breadcrumbs": "^1.0.7", "ng6-breadcrumbs": "^1.0.7",
@@ -36,13 +38,13 @@
"zone.js": "~0.13.0" "zone.js": "~0.13.0"
}, },
"devDependencies": { "devDependencies": {
"@angular/cli": "^16.0.0",
"@angular/compiler-cli": "^16.0.0",
"@angular/language-service": "^16.0.0",
"@angular/cli": "^15.2.8",
"@angular/compiler-cli": "^15.2.8",
"@angular/language-service": "^15.2.8",
"@types/file-saver": "^2.0.1", "@types/file-saver": "^2.0.1",
"@types/jasmine": "~3.3.8", "@types/jasmine": "~3.3.8",
"@types/jasminewd2": "^2.0.8", "@types/jasminewd2": "^2.0.8",
"@types/node": "~8.9.4",
"@types/node": "^20.1.5",
"jasmine-core": "~3.8.0", "jasmine-core": "~3.8.0",
"jasmine-spec-reporter": "~5.0.0", "jasmine-spec-reporter": "~5.0.0",
"karma": "^6.4.2", "karma": "^6.4.2",
@@ -50,9 +52,7 @@
"karma-coverage-istanbul-reporter": "~3.0.2", "karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~4.0.0", "karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0", "karma-jasmine-html-reporter": "^1.5.0",
"protractor": "^7.0.0",
"ts-node": "~7.0.0", "ts-node": "~7.0.0",
"tslint": "~6.1.0",
"typescript": "~4.9.5" "typescript": "~4.9.5"
} }
} }

+ 0
- 9
httpdocs/plp-angular/src/app/app-routing.module.ts Wyświetl plik

@@ -7,9 +7,6 @@ import {RouteInterceptor} from './interceptor/route-interceptor';
import {AccountingComponent} from './views/accounting/accounting.component'; import {AccountingComponent} from './views/accounting/accounting.component';
import {TechniqueComponent} from './views/technique/technique.component'; import {TechniqueComponent} from './views/technique/technique.component';
import {SalesComponent} from './views/sales/sales.component'; import {SalesComponent} from './views/sales/sales.component';
import {OperatorsComponent} from './views/operators/operators.component';
import {ProductionsComponent} from './views/productions/productions.component';
import {ServicesComponent} from './views/services/services.component';




const routes: Routes = [ const routes: Routes = [
@@ -17,9 +14,6 @@ const routes: Routes = [
{path: 'login', component: LoginComponent, data: {breadcrumb: 'Login'}}, {path: 'login', component: LoginComponent, data: {breadcrumb: 'Login'}},
{path: 'start', component: StartComponent, data: {breadcrumb: 'Home'}, canActivate: [RouteInterceptor]}, {path: 'start', component: StartComponent, data: {breadcrumb: 'Home'}, canActivate: [RouteInterceptor]},
{path: 'customer-management', component: CustomerManagementComponent, data: {breadcrumb: 'Kunden'}, canActivate: [RouteInterceptor]}, {path: 'customer-management', component: CustomerManagementComponent, data: {breadcrumb: 'Kunden'}, canActivate: [RouteInterceptor]},
{path: 'operators', component: OperatorsComponent, data: {breadcrumb: 'Betreiber'}, canActivate: [RouteInterceptor]},
{path: 'productions', component: ProductionsComponent, data: {breadcrumb: 'Produzenten'}, canActivate: [RouteInterceptor]},
{path: 'service', component: ServicesComponent, data: {breadcrumb: 'Service'}, canActivate: [RouteInterceptor]},
// {path: 'accounting', component: AccountingComponent, data: {breadcrumb: 'Buchhaltung'}, canActivate: [RouteInterceptor]}, // {path: 'accounting', component: AccountingComponent, data: {breadcrumb: 'Buchhaltung'}, canActivate: [RouteInterceptor]},
// {path: 'technique', component: TechniqueComponent, data: {breadcrumb: 'Technik'}, canActivate: [RouteInterceptor]}, // {path: 'technique', component: TechniqueComponent, data: {breadcrumb: 'Technik'}, canActivate: [RouteInterceptor]},
// {path: 'sales', component: SalesComponent, data: {breadcrumb: 'Vertrieb'}, canActivate: [RouteInterceptor]}, // {path: 'sales', component: SalesComponent, data: {breadcrumb: 'Vertrieb'}, canActivate: [RouteInterceptor]},
@@ -39,10 +33,7 @@ export const routingComponents = [
LoginComponent, LoginComponent,
StartComponent, StartComponent,
CustomerManagementComponent, CustomerManagementComponent,
OperatorsComponent,
AccountingComponent, AccountingComponent,
ProductionsComponent,
ServicesComponent,
TechniqueComponent, TechniqueComponent,
SalesComponent, SalesComponent,
]; ];

+ 0
- 1
httpdocs/plp-angular/src/app/app.component.html Wyświetl plik

@@ -1,6 +1,5 @@
<div id="wrapper"> <div id="wrapper">
<header id="header"> <header id="header">
<breadcrumb></breadcrumb>
<div class="user" *ngIf="activeUser != null">{{activeUser.firstname}} {{activeUser.lastname}} ({{activeUser.v_translated_role}})</div> <div class="user" *ngIf="activeUser != null">{{activeUser.firstname}} {{activeUser.lastname}} ({{activeUser.v_translated_role}})</div>
</header> </header>
<div id="content"> <div id="content">


+ 7
- 15
httpdocs/plp-angular/src/app/app.module.ts Wyświetl plik

@@ -6,7 +6,6 @@ import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
import {AppRoutingModule, routingComponents} from './app-routing.module'; import {AppRoutingModule, routingComponents} from './app-routing.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { StartComponent } from './views/start/start.component'; import { StartComponent } from './views/start/start.component';
import {BreadcrumbsModule} from 'ng6-breadcrumbs';
import { BrowserAnimationsModule} from '@angular/platform-browser/animations'; import { BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {CalendarModule, DateAdapter} from 'angular-calendar'; import {CalendarModule, DateAdapter} from 'angular-calendar';
import { adapterFactory} from 'angular-calendar/date-adapters/date-fns'; import { adapterFactory} from 'angular-calendar/date-adapters/date-fns';
@@ -38,7 +37,6 @@ import { CustomerContactPersonEditComponent } from './views/customer-management/
import { CustomerNoteViewComponent } from './views/customer-management/customer-view/customer-note-view/customer-note-view.component'; import { CustomerNoteViewComponent } from './views/customer-management/customer-view/customer-note-view/customer-note-view.component';
import { CustomerNoteEditComponent } from './views/customer-management/customer-view/customer-note-edit/customer-note-edit.component'; import { CustomerNoteEditComponent } from './views/customer-management/customer-view/customer-note-edit/customer-note-edit.component';
import {CustomerService} from './services/customer.service'; import {CustomerService} from './services/customer.service';
import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to';
import { CustomerNoteDetailComponent } from './views/customer-management/customer-view/customer-note-detail/customer-note-detail.component'; import { CustomerNoteDetailComponent } from './views/customer-management/customer-view/customer-note-detail/customer-note-detail.component';
import {GridCheckboxRendererComponent} from './grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component'; import {GridCheckboxRendererComponent} from './grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component';
import {GridCheckboxEditorComponent} from './grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component'; import {GridCheckboxEditorComponent} from './grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component';
@@ -61,11 +59,12 @@ import { CustomerContactListComponent } from './views/customer-management/custom
import { MeetingListComponent } from './views/start/meeting-list/meeting-list.component'; import { MeetingListComponent } from './views/start/meeting-list/meeting-list.component';
import { MeetingCalendarComponent } from './views/start/meeting-calendar/meeting-calendar.component'; import { MeetingCalendarComponent } from './views/start/meeting-calendar/meeting-calendar.component';
import { CustomerContactPersonDetailComponent } from './views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component'; import { CustomerContactPersonDetailComponent } from './views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component';
import {MeetingService} from './services/meeting.service';
import { InternalMeetingEditComponent } from './views/start/internal-meeting-edit/internal-meeting-edit.component'; import { InternalMeetingEditComponent } from './views/start/internal-meeting-edit/internal-meeting-edit.component';
import { InternalMeetingDetailComponent } from './views/start/internal-meeting-detail/internal-meeting-detail.component'; import { InternalMeetingDetailComponent } from './views/start/internal-meeting-detail/internal-meeting-detail.component';
import { CalendarLegendComponent } from './components/calendar-legend/calendar-legend.component'; import { CalendarLegendComponent } from './components/calendar-legend/calendar-legend.component';
import { CommonService } from './services/common.service'; import { CommonService } from './services/common.service';
import {GridRendererComponent} from './grid-cellrenderer/grid-renderer-component';
import {GridEditorComponent} from './grid-cellrenderer/grid-editor-component';




registerLocaleData(localeDe); registerLocaleData(localeDe);
@@ -92,6 +91,8 @@ registerLocaleData(localeDe);
CustomerNoteViewComponent, CustomerNoteViewComponent,
CustomerNoteEditComponent, CustomerNoteEditComponent,
CustomerNoteDetailComponent, CustomerNoteDetailComponent,
GridRendererComponent,
GridEditorComponent,
GridCheckboxRendererComponent, GridCheckboxRendererComponent,
GridCheckboxEditorComponent, GridCheckboxEditorComponent,
GridSelectEditorComponent, GridSelectEditorComponent,
@@ -124,23 +125,15 @@ registerLocaleData(localeDe);
FlatpickrModule.forRoot(), FlatpickrModule.forRoot(),
AppRoutingModule, AppRoutingModule,
HttpClientModule, HttpClientModule,
BreadcrumbsModule,
ReactiveFormsModule, ReactiveFormsModule,
FormsModule, FormsModule,
BrowserAnimationsModule, BrowserAnimationsModule,
ScrollToModule.forRoot(),
// ScrollToModule.forRoot(),
CalendarModule.forRoot({ CalendarModule.forRoot({
provide: DateAdapter, provide: DateAdapter,
useFactory: adapterFactory useFactory: adapterFactory
}), }),
AgGridModule.withComponents([
GridCheckboxRendererComponent, GridCheckboxEditorComponent,
GridSelectRendererComponent, GridSelectEditorComponent,
GridDateRendererComponent, GridDateEditorComponent,
GridInputRendererComponent, GridInputEditorComponent,
GridTextRendererComponent, GridTextEditorComponent,
GridBlockedRendererComponent, GridBlockedEditorComponent
])
AgGridModule,
], ],
providers: [ providers: [
AppService, AppService,
@@ -148,8 +141,7 @@ registerLocaleData(localeDe);
CacheService, CacheService,
MessageService, MessageService,
HttpService, HttpService,
CustomerService
MeetingService,
CustomerService,
CommonService, CommonService,
{provide: HTTP_INTERCEPTORS, useClass: HttpClientInterceptor, multi: true}, {provide: HTTP_INTERCEPTORS, useClass: HttpClientInterceptor, multi: true},
], ],


+ 4
- 5
httpdocs/plp-angular/src/app/components/ag-grid-component.ts Wyświetl plik

@@ -1,4 +1,3 @@
import {isUndefined} from 'util';
import {path} from '../../environments/path'; import {path} from '../../environments/path';
import {AgGridLocale} from '../lang/ag-gridlocale'; import {AgGridLocale} from '../lang/ag-gridlocale';
import {IGridValidationErrors} from '../model/virtual/grid-validation-errors'; import {IGridValidationErrors} from '../model/virtual/grid-validation-errors';
@@ -128,7 +127,7 @@ export class AgGridComponent {
* Resizes grid * Resizes grid
*/ */
public gridSizeChanged(params: any): void { public gridSizeChanged(params: any): void {
if (!isUndefined(this.gridParamsApi)) {
if (undefined !== this.gridParamsApi) {
this.gridParamsApi.sizeColumnsToFit(); this.gridParamsApi.sizeColumnsToFit();
} }
} }
@@ -202,8 +201,8 @@ export class AgGridComponent {
const errors: IGridValidationErrors[] = []; const errors: IGridValidationErrors[] = [];


primaryColumns.forEach((value) => { primaryColumns.forEach((value) => {
if (!isUndefined(value.colDef.cellEditorParams)) {
if (!isUndefined(value.colDef.cellEditorParams.mandatory) && value.colDef.cellEditorParams.mandatory === true) {
if (undefined !== value.colDef.cellEditorParams) {
if (undefined !== value.colDef.cellEditorParams.mandatory && true === value.colDef.cellEditorParams.mandatory) {
errorColumn.push(value.colDef.field); errorColumn.push(value.colDef.field);
} }
} }
@@ -211,7 +210,7 @@ export class AgGridComponent {


errorColumn.forEach((value, i) => { errorColumn.forEach((value, i) => {
this.params.api.forEachNode((rowNode, index) => { this.params.api.forEachNode((rowNode, index) => {
if (null === rowNode.data[value] || isUndefined(rowNode.data[value])) {
if (null === rowNode.data[value] || undefined === rowNode.data[value]) {
errors.push({ errors.push({
column: value, column: value,
row: index row: index


+ 12
- 7
httpdocs/plp-angular/src/app/components/form-component.ts Wyświetl plik

@@ -1,13 +1,18 @@
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';


export class FormComponent { export class FormComponent {
public errorMsg: string; public errorMsg: string;
public isCreationMode: boolean; public isCreationMode: boolean;
protected scrollToService: ScrollToService;
// protected scrollToService: ScrollToService;




constructor(scrollToService: ScrollToService) {
this.scrollToService = scrollToService;
// constructor(scrollToService: ScrollToService) {
// this.scrollToService = scrollToService;
// this.errorMsg = '';
// this.isCreationMode = false;
// }

constructor() {
this.errorMsg = ''; this.errorMsg = '';
this.isCreationMode = false; this.isCreationMode = false;
} }
@@ -26,7 +31,7 @@ export class FormComponent {
/** /**
* Configures scrollToService - https://www.npmjs.com/package/@nicky-lenaers/ngx-scroll-to * Configures scrollToService - https://www.npmjs.com/package/@nicky-lenaers/ngx-scroll-to
*/ */
public scrollUp(identifier: string): void {
this.scrollToService.scrollTo({target: identifier});
}
// public scrollUp(identifier: string): void {
// this.scrollToService.scrollTo({target: identifier});
// }
} }

+ 1
- 3
httpdocs/plp-angular/src/app/components/modal/modal.component.ts Wyświetl plik

@@ -1,7 +1,7 @@
import {AfterContentInit, Component, EventEmitter, OnInit, Input, Output, Renderer2} from '@angular/core'; import {AfterContentInit, Component, EventEmitter, OnInit, Input, Output, Renderer2} from '@angular/core';


@Component({ @Component({
selector: 'app-modal',
selector: 'app-spt-modal',
templateUrl: './modal.component.html', templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'] styleUrls: ['./modal.component.scss']
}) })
@@ -52,7 +52,6 @@ export class ModalComponent implements OnInit, AfterContentInit {


/** /**
* Closes modal dialog with confirm message * Closes modal dialog with confirm message
* @param {string} message
*/ */
public closeWithConfirm(message: string): boolean { public closeWithConfirm(message: string): boolean {
if (confirm(message)) { if (confirm(message)) {
@@ -73,7 +72,6 @@ export class ModalComponent implements OnInit, AfterContentInit {


/** /**
* Returns if modal is open * Returns if modal is open
* @returns {boolean}
*/ */
public isOpen(): boolean { public isOpen(): boolean {
return this.showModal; return this.showModal;


+ 0
- 362
httpdocs/plp-angular/src/app/factory/factory.ts Wyświetl plik

@@ -7,18 +7,6 @@ import {IUser} from '../model/entities/user';
import {IMeetingType} from '../model/entities/meeting-type'; import {IMeetingType} from '../model/entities/meeting-type';
import {IInternalMeeting} from '../model/entities/internal-meeting'; import {IInternalMeeting} from '../model/entities/internal-meeting';
import {Utils} from '../utils/utils'; import {Utils} from '../utils/utils';
import {IOperator} from '../model/entities/operator';
import {IOperatorContact} from '../model/entities/operator-contact';
import {IOperatorNote} from '../model/entities/operator-note';
import {IOperatorMeeting} from '../model/entities/operator-meeting';
import {IProduction} from '../model/entities/production';
import {IProductionContact} from '../model/entities/production-contact';
import {IProductionNote} from '../model/entities/production-note';
import {IProductionMeeting} from '../model/entities/production-meeting';
import {IService} from '../model/entities/service';
import {IServiceContact} from '../model/entities/service-contact';
import {IServiceNote} from '../model/entities/service-note';
import {IServiceMeeting} from '../model/entities/service-meeting';
export class Factory { export class Factory {


static getEmptyUser(): IUser { static getEmptyUser(): IUser {
@@ -34,14 +22,6 @@ export class Factory {


/** /**
* Returns empty message * Returns empty message
* @param errorCode
* @param errorMsg
* @param successCode
* @param successMsg
* @param infoCode
* @param infoMsg
* @param clientErrorCode
* @param optionalInfo
*/ */
static getEmptyMessage(errorCode: number, errorMsg: string, successCode: number, successMsg: string, static getEmptyMessage(errorCode: number, errorMsg: string, successCode: number, successMsg: string,
infoCode: number, infoMsg: string, clientErrorCode: number, optionalInfo: string = null): IMessage { infoCode: number, infoMsg: string, clientErrorCode: number, optionalInfo: string = null): IMessage {
@@ -173,348 +153,6 @@ export class Factory {
return emptyCustomerMeeting as ICustomerMeeting; return emptyCustomerMeeting as ICustomerMeeting;
} }


/**
* Returns empty operator
*/
static getEmptyOperator(): IOperator {
const emptyOperator: {} = {
id: null,
old_plp_id: null,
name: null,
name_additional: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
url: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
tax_no: null,
invoice_mode: null,
invoice_comment: null,
invoice_key: null,
comment: null,
active: true,
};
return emptyOperator as IOperator;
}

/**
* Returns empty operator contact person
*/
static getEmptyOperatorContact(operatorId: number = null): IOperatorContact {
const emptyOperatorContact: {} = {
id: null,
operator_id: operatorId,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
date_of_birth: null,
comment: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
is_xmas_mail_recipient: false,
};
return emptyOperatorContact as IOperatorContact;
}

static getEmptyOperatorNote(operatorId: number = null, noteDate: string = null): IOperatorNote {
const emptyOperatorNote: {} = {
id: operatorId,
operator_id: null,
operator_contact_id: null,
user_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
title: null,
comment: null,
note_date: noteDate,
creation_date: null,
creation_user_id: null,
creation_user_firstname: null,
creation_user_lastname: null
};
return emptyOperatorNote as IOperatorNote;
}

static getEmptyOperatorMeeting(operatorId: number = null): IOperatorMeeting {
const emptyOperatorMeeting: {} = {
id: null,
operator_id: operatorId,
operator_user_id: null,
owner_user_id: null,
meeting_type_id: null,
is_option_meeting: false,
title: null,
description: null,
start_date: Utils.getCurrentDate() + ' 09:00:00',
end_date: Utils.getCurrentDate() + ' 18:00:00',
operator_contact_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
department: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
report: null,
first_reminder_sent: false,
second_reminder_sent: false,
report_done: false,
report_reminder_sent: false,
creation_date: null,
v_participants: [],
v_is_editable: true
};
return emptyOperatorMeeting as IOperatorMeeting;
}

static getEmptyProduction(): IProduction {
const emptyProduction: {} = {
id: null,
old_plp_id: null,
name: null,
name_additional: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
url: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
tax_no: null,
invoice_mode: null,
invoice_comment: null,
invoice_key: null,
comment: null,
active: true,
};
return emptyProduction as IProduction;
}

static getEmptyProductionContact(productionId: number = null): IProductionContact {
const emptyProductionContact: {} = {
id: null,
production_id: productionId,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
date_of_birth: null,
comment: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
is_xmas_mail_recipient: false,
};
return emptyProductionContact as IProductionContact;
}

static getEmptyProductionNote(productionId: number = null, noteDate: string = null): IProductionNote {
const emptyProductionNote: {} = {
id: productionId,
production_id: null,
production_contact_id: null,
user_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
title: null,
comment: null,
note_date: noteDate,
creation_date: null,
creation_user_id: null,
creation_user_firstname: null,
creation_user_lastname: null
};
return emptyProductionNote as IProductionNote;
}

static getEmptyProductionMeeting(productionId: number = null): IProductionMeeting {
const emptyProductionMeeting: {} = {
id: null,
production_id: productionId,
production_user_id: null,
owner_user_id: null,
meeting_type_id: null,
is_option_meeting: false,
title: null,
description: null,
start_date: Utils.getCurrentDate() + ' 09:00:00',
end_date: Utils.getCurrentDate() + ' 18:00:00',
production_contact_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
department: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
report: null,
first_reminder_sent: false,
second_reminder_sent: false,
report_done: false,
report_reminder_sent: false,
creation_date: null,
v_participants: [],
v_is_editable: true
};
return emptyProductionMeeting as IProductionMeeting;
}

static getEmptyService(): IService {
const emptyService: {} = {
id: null,
old_plp_id: null,
name: null,
name_additional: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
url: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
tax_no: null,
invoice_mode: null,
invoice_comment: null,
invoice_key: null,
comment: null,
active: true,
};
return emptyService as IService;
}

static getEmptyServiceContact(serviceId: number = null): IServiceContact {
const emptyServiceContact: {} = {
id: null,
service_id: serviceId,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
date_of_birth: null,
comment: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
is_xmas_mail_recipient: false,
};
return emptyServiceContact as IServiceContact;
}

static getEmptyServiceNote(serviceId: number = null, noteDate: string = null): IServiceNote {
const emptyProductionNote: {} = {
id: serviceId,
service_id: null,
service_contact_id: null,
user_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
fax_no: null,
department: null,
title: null,
comment: null,
note_date: noteDate,
creation_date: null,
creation_user_id: null,
creation_user_firstname: null,
creation_user_lastname: null
};
return emptyProductionNote as IServiceNote;
}

static getEmptyServiceMeeting(serviceId: number = null): IServiceMeeting {
const emptyServiceMeeting: {} = {
id: null,
service_id: serviceId,
service_user_id: null,
owner_user_id: null,
meeting_type_id: null,
is_option_meeting: false,
title: null,
description: null,
start_date: Utils.getCurrentDate() + ' 09:00:00',
end_date: Utils.getCurrentDate() + ' 18:00:00',
service_contact_id: null,
gender: null,
firstname: null,
lastname: null,
email: null,
phone_no: null,
mobile_no: null,
department: null,
street: null,
street_no: null,
zip: null,
city: null,
country_id: null,
report: null,
first_reminder_sent: false,
second_reminder_sent: false,
report_done: false,
report_reminder_sent: false,
creation_date: null,
v_participants: [],
v_is_editable: true
};
return emptyServiceMeeting as IServiceMeeting;
}

static getEmptyInternalMeeting(): IInternalMeeting { static getEmptyInternalMeeting(): IInternalMeeting {
const emptyInternalMeeting: {} = { const emptyInternalMeeting: {} = {
id: null, id: null,


+ 1
- 3
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts Wyświetl plik

@@ -1,5 +1,4 @@
import {Component} from '@angular/core'; import {Component} from '@angular/core';
import {isUndefined} from 'util';
import {GridRendererComponent} from '../../grid-renderer-component'; import {GridRendererComponent} from '../../grid-renderer-component';


@Component({ @Component({
@@ -14,12 +13,11 @@ export class GridDateRendererComponent extends GridRendererComponent {


/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
super.agInit(params); super.agInit(params);
let tempValue: string[] = []; let tempValue: string[] = [];
if (null === this.value || isUndefined(this.value)) {
if (null === this.value || undefined === this.value) {
this.displayedValue = ''; this.displayedValue = '';
} else { } else {
tempValue = this.value.split('-'); tempValue = this.value.split('-');


+ 6
- 5
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-editor-component.ts Wyświetl plik

@@ -1,8 +1,13 @@
import {ElementRef, OnInit, ViewChild} from '@angular/core';
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {ICellEditorAngularComp} from 'ag-grid-angular'; import {ICellEditorAngularComp} from 'ag-grid-angular';
import {IGridCellParams} from './grid-cell-params'; import {IGridCellParams} from './grid-cell-params';


@Component({
template: '',
})

export class GridEditorComponent implements OnInit, ICellEditorAngularComp { export class GridEditorComponent implements OnInit, ICellEditorAngularComp {

@ViewChild('editorInput', { static: true }) inputField: ElementRef; @ViewChild('editorInput', { static: true }) inputField: ElementRef;


readonly GRID_ERROR_EMPTY: string = 'Bitte geben Sie einen Wert ein.'; readonly GRID_ERROR_EMPTY: string = 'Bitte geben Sie einen Wert ein.';
@@ -25,7 +30,6 @@ export class GridEditorComponent implements OnInit, ICellEditorAngularComp {


/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
this.params = params; this.params = params;
@@ -47,7 +51,6 @@ export class GridEditorComponent implements OnInit, ICellEditorAngularComp {


/** /**
* Cancels before value input (this editor is never editable) * Cancels before value input (this editor is never editable)
* @returns {boolean}
*/ */
public isCancelBeforeStart(): boolean { public isCancelBeforeStart(): boolean {
return false; return false;
@@ -55,7 +58,6 @@ export class GridEditorComponent implements OnInit, ICellEditorAngularComp {


/** /**
* Cancels input of inserted value under certain conditions * Cancels input of inserted value under certain conditions
* @returns {boolean}
*/ */
isCancelAfterEnd(): boolean { isCancelAfterEnd(): boolean {
return false; return false;
@@ -63,7 +65,6 @@ export class GridEditorComponent implements OnInit, ICellEditorAngularComp {


/** /**
* Changes value on click * Changes value on click
* @param e
*/ */
public valueIsChanged = (e) => { public valueIsChanged = (e) => {
this.value = e.srcElement.value; this.value = e.srcElement.value;


+ 0
- 7
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-factory.ts Wyświetl plik

@@ -3,13 +3,6 @@ import {IGridCellParams} from './grid-cell-params';
export class GridFactory { export class GridFactory {
/** /**
* Returns param object for cell renderer and -editors * Returns param object for cell renderer and -editors
* @param {string} type
* @param {number} min
* @param {number} max
* @param {string} unit
* @param {boolean} mandatory
* @param {number} altValue
* @returns {IGridCellParams}
*/ */
static getGridCellParams(type: string = null, min: number = null, static getGridCellParams(type: string = null, min: number = null,
max: number = null, unit: string = null, max: number = null, unit: string = null,


+ 5
- 7
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts Wyświetl plik

@@ -12,7 +12,6 @@ import {Utils} from '../../../utils/utils';
export class GridInputEditorComponent extends GridEditorComponent { export class GridInputEditorComponent extends GridEditorComponent {
/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
super.agInit(params); super.agInit(params);
@@ -37,7 +36,6 @@ export class GridInputEditorComponent extends GridEditorComponent {


/** /**
* Cancels input of inserted value under certain conditions * Cancels input of inserted value under certain conditions
* @returns {boolean}
*/ */
isCancelAfterEnd(): boolean { isCancelAfterEnd(): boolean {
if (this.cellParams.mandatory && (null === this.value || this.value.toString().trim() === '')) { if (this.cellParams.mandatory && (null === this.value || this.value.toString().trim() === '')) {
@@ -46,20 +44,20 @@ export class GridInputEditorComponent extends GridEditorComponent {
return true; return true;
} }


if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT && !Utils.isInteger(this.value)) {
if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_INT && !Utils.isInteger(this.value)) {
// No int value given // No int value given
AgGridComponentConst.setGridInputError(this.GRID_ERROR_INT); AgGridComponentConst.setGridInputError(this.GRID_ERROR_INT);
return true; return true;
} }


if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT && !Utils.isFloat(this.value)) {
if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT && !Utils.isFloat(this.value)) {
// No float value given // No float value given
AgGridComponentConst.setGridInputError(this.GRID_ERROR_FLOAT); AgGridComponentConst.setGridInputError(this.GRID_ERROR_FLOAT);
return true; return true;
} }


if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT ||
this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) {
if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_INT ||
this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) {
const numericVal: number = Number(String(this.value).replace(',', '.')); const numericVal: number = Number(String(this.value).replace(',', '.'));
if (null !== this.cellParams.min && numericVal < Number(this.cellParams.min)) { if (null !== this.cellParams.min && numericVal < Number(this.cellParams.min)) {
// Check on alternative value // Check on alternative value
@@ -101,7 +99,7 @@ export class GridInputEditorComponent extends GridEditorComponent {


/** /**
* Changes value on click * Changes value on click
* @param e
* todo maybe this should get refacotred properly?
*/ */
public valueIsChanged = (e) => { public valueIsChanged = (e) => {
this.value = e.srcElement.value; this.value = e.srcElement.value;


+ 0
- 1
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts Wyświetl plik

@@ -11,7 +11,6 @@ import {AgGridComponentConst} from '../../../components/ag-grid-component-const'
export class GridInputRendererComponent extends GridRendererComponent { export class GridInputRendererComponent extends GridRendererComponent {
/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
super.agInit(params); super.agInit(params);


+ 6
- 4
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-renderer-component.ts Wyświetl plik

@@ -1,8 +1,13 @@
import {OnInit} from '@angular/core';
import {Component, OnInit} from '@angular/core';
import {ICellRendererAngularComp} from 'ag-grid-angular'; import {ICellRendererAngularComp} from 'ag-grid-angular';
import {IGridCellParams} from './grid-cell-params'; import {IGridCellParams} from './grid-cell-params';


@Component({
template: '',
})

export class GridRendererComponent implements OnInit, ICellRendererAngularComp { export class GridRendererComponent implements OnInit, ICellRendererAngularComp {

public value: any; public value: any;
public params: any; public params: any;
public cellParams: IGridCellParams; public cellParams: IGridCellParams;
@@ -16,7 +21,6 @@ export class GridRendererComponent implements OnInit, ICellRendererAngularComp {


/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
this.params = params; this.params = params;
@@ -30,7 +34,6 @@ export class GridRendererComponent implements OnInit, ICellRendererAngularComp {


/** /**
* Sets value * Sets value
* @param value
*/ */
setValue(value: any): void { setValue(value: any): void {
this.value = value; this.value = value;
@@ -38,7 +41,6 @@ export class GridRendererComponent implements OnInit, ICellRendererAngularComp {


/** /**
* Refreshes cell - Gets called after editing * Refreshes cell - Gets called after editing
* @param params
*/ */
refresh(params: any): boolean { refresh(params: any): boolean {
return false; return false;


+ 13
- 15
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts Wyświetl plik

@@ -1,6 +1,5 @@
import {Component} from '@angular/core'; import {Component} from '@angular/core';
import {IGridSelectItem} from '../grid-select-item'; import {IGridSelectItem} from '../grid-select-item';
import {isUndefined} from 'util';
import {GridEditorComponent} from '../../grid-editor-component'; import {GridEditorComponent} from '../../grid-editor-component';
import {GridSelectFactory} from '../grid-select-factory'; import {GridSelectFactory} from '../grid-select-factory';
import {IGridCellEditorParams} from '../../grid-cell-editor-params'; import {IGridCellEditorParams} from '../../grid-cell-editor-params';
@@ -37,7 +36,7 @@ export class GridSelectEditorComponent extends GridEditorComponent {
const itemRange: any[] = (params.node.data.hasOwnProperty(relatedValue) && null !== params.node.data[relatedValue]) ? const itemRange: any[] = (params.node.data.hasOwnProperty(relatedValue) && null !== params.node.data[relatedValue]) ?
cellEditorParams.values[params.node.data[relatedValue]] : null; cellEditorParams.values[params.node.data[relatedValue]] : null;


if (null !== itemRange && !isUndefined(itemRange)) {
if (null !== itemRange && undefined !== itemRange) {
itemRange.forEach(item => { itemRange.forEach(item => {
this.values.push(GridSelectFactory.getGridSelectItem(item, this.itemKey, this.itemValueKeys)); this.values.push(GridSelectFactory.getGridSelectItem(item, this.itemKey, this.itemValueKeys));
}); });
@@ -47,17 +46,17 @@ export class GridSelectEditorComponent extends GridEditorComponent {
// Filter all items used by other selects (compareData) // Filter all items used by other selects (compareData)
const compareExcludeKey: string = cellEditorParams.exclusiveCompareDataKey; const compareExcludeKey: string = cellEditorParams.exclusiveCompareDataKey;
const excludedItemKeys: {} = {}; const excludedItemKeys: {} = {};
for (let i = 0; i < cellEditorParams.exclusiveCompareData.length; i++) {
if (cellEditorParams.exclusiveCompareData[i][compareExcludeKey] != this.value) {
excludedItemKeys[cellEditorParams.exclusiveCompareData[i][compareExcludeKey]] = 1;
cellEditorParams.exclusiveCompareData.forEach(item => {
if (item[compareExcludeKey] !== this.value) {
excludedItemKeys[item[compareExcludeKey]] = 1;
} }
}
});
// This select contains only values that are not selected by other selects and it's own current item // This select contains only values that are not selected by other selects and it's own current item
for (let h = 0; h < cellEditorParams.values.length; h++) {
if (!excludedItemKeys.hasOwnProperty(cellEditorParams.values[h][this.itemKey])) {
this.values.push(GridSelectFactory.getGridSelectItem(cellEditorParams.values[h], this.itemKey, this.itemValueKeys));
cellEditorParams.values.forEach(item => {
if (!excludedItemKeys.hasOwnProperty(item[this.itemKey])) {
this.values.push(GridSelectFactory.getGridSelectItem(item, this.itemKey, this.itemValueKeys));
} }
}
});
} else { } else {
// Static values (default behaviour) // Static values (default behaviour)
this.values = params.values; this.values = params.values;
@@ -74,13 +73,12 @@ export class GridSelectEditorComponent extends GridEditorComponent {


/** /**
* Makes selectItem out of ID * Makes selectItem out of ID
* @param e
*/ */
public getSelectedItem(e: any): IGridSelectItem { public getSelectedItem(e: any): IGridSelectItem {
if (e != null && e != '') {
for (let i = 0; i < this.values.length; i++) {
if (this.values[i].key == e) {
this.newValue = this.values[i];
if (null !== e && e !== '') {
for (const item of this.values) {
if (item.key === e) {
this.newValue = item;
break; break;
} }
} }


+ 3
- 37
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts Wyświetl plik

@@ -5,20 +5,6 @@ import {IGridSelectItem} from './grid-select-item';
export class GridSelectFactory { export class GridSelectFactory {
/** /**
* Returns select item for grid * Returns select item for grid
* @param headerName
* @param field
* @param editable
* @param values
* @param itemKey
* @param itemValueKeys
* @param mandatory
* @param relatesOnDgField
* @param headerClass
* @param pinned
* @param cellClass
* @param exclusive
* @param exclusiveCompareData
* @param exclusiveCompareDataKey
*/ */
static getGridSelect(headerName: string, field: string, editable: boolean, values: any[], itemKey: string, static getGridSelect(headerName: string, field: string, editable: boolean, values: any[], itemKey: string,
itemValueKeys: string[], mandatory: boolean = true, relatesOnDgField: string = null, itemValueKeys: string[], mandatory: boolean = true, relatesOnDgField: string = null,
@@ -51,7 +37,7 @@ export class GridSelectFactory {
} }
}; };
if (mandatory) { if (mandatory) {
res.cellClassRules = {
res['cellClassRules'] = {
error(params) { error(params) {
return params.value == null; return params.value == null;
} }
@@ -62,20 +48,6 @@ export class GridSelectFactory {


/** /**
* Returns select item for grid without renderer and editor * Returns select item for grid without renderer and editor
* @param headerName
* @param field
* @param editable
* @param values
* @param itemKey
* @param itemValueKeys
* @param mandatory
* @param relatesOnDgField
* @param headerClass
* @param pinned
* @param cellClass
* @param exclusive
* @param exclusiveCompareData
* @param exclusiveCompareDataKey
*/ */
static getGridSelectForSelectors(headerName: string, field: string, editable: boolean, values: any[], itemKey: string, static getGridSelectForSelectors(headerName: string, field: string, editable: boolean, values: any[], itemKey: string,
itemValueKeys: string[], mandatory: boolean = true, relatesOnDgField: string = null, itemValueKeys: string[], mandatory: boolean = true, relatesOnDgField: string = null,
@@ -86,17 +58,13 @@ export class GridSelectFactory {
headerName, field, editable, values, itemKey, itemValueKeys, mandatory, relatesOnDgField, headerName, field, editable, values, itemKey, itemValueKeys, mandatory, relatesOnDgField,
headerClass, pinned, cellClass, exclusive, exclusiveCompareData, exclusiveCompareDataKey headerClass, pinned, cellClass, exclusive, exclusiveCompareData, exclusiveCompareDataKey
); );
delete res.cellRenderer;
delete res.cellEditor;
delete res['cellRenderer'];
delete res['cellEditor'];
return res; return res;
} }


/** /**
* Returns array of grid select items * Returns array of grid select items
* @param objArray
* @param key
* @param valueKeys
* @param mandatory
*/ */
static getGridSelectItems(objArray: any[], key: string, valueKeys: string[], mandatory: boolean = true): IGridSelectItem[] { static getGridSelectItems(objArray: any[], key: string, valueKeys: string[], mandatory: boolean = true): IGridSelectItem[] {
const res: IGridSelectItem[] = []; const res: IGridSelectItem[] = [];
@@ -143,8 +111,6 @@ export class GridSelectFactory {


/** /**
* Returns displayed value of grid item * Returns displayed value of grid item
* @param obj
* @param valueKeys
*/ */
static getGridSelectItemValue(obj: any, valueKeys: string[]): string { static getGridSelectItemValue(obj: any, valueKeys: string[]): string {
let value = ''; let value = '';


+ 9
- 12
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts Wyświetl plik

@@ -22,7 +22,6 @@ export class GridSelectRendererComponent extends GridRendererComponent {


/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
super.agInit(params); super.agInit(params);
@@ -37,16 +36,15 @@ export class GridSelectRendererComponent extends GridRendererComponent {


/** /**
* Case for static item range (all items in column have the same select items - default) * Case for static item range (all items in column have the same select items - default)
* @param params
*/ */
private setStaticValue(params: any): void { private setStaticValue(params: any): void {
if (this.itemRange === null || undefined === this.itemRange) { if (this.itemRange === null || undefined === this.itemRange) {
// Item range is the same for all rows // Item range is the same for all rows
this.itemRange = params.colDef.cellEditorParams.values as IGridSelectItem[]; this.itemRange = params.colDef.cellEditorParams.values as IGridSelectItem[];
if (null !== params.value) { if (null !== params.value) {
for (let i = 0; i < this.itemRange.length; i++) {
if (this.itemRange[i].key === params.value) {
this.value = this.itemRange[i].value;
for (const item of this.itemRange) {
if (item.key === params.value) {
this.value = item.value;
break; break;
} }
} }
@@ -58,7 +56,6 @@ export class GridSelectRendererComponent extends GridRendererComponent {


/** /**
* Case for item range related on other dg grid field (Select has always to be updated within init) * Case for item range related on other dg grid field (Select has always to be updated within init)
* @param params
*/ */
private setRelatedValue(params: any): void { private setRelatedValue(params: any): void {
// @TODO: Might be checked // @TODO: Might be checked
@@ -67,14 +64,14 @@ export class GridSelectRendererComponent extends GridRendererComponent {
const itemValueKeys: string[] = params.colDef.cellEditorParams.itemValueKeys; const itemValueKeys: string[] = params.colDef.cellEditorParams.itemValueKeys;


// Get item range by related value // Get item range by related value
this.itemRange = params.data.hasOwnProperty(relatedValue) && null !== params.data[relatedValue]; ) ?
params.colDef.cellEditorParams.values[params.data[relatedValue]]; : null;
this.itemRange = params.data.hasOwnProperty(relatedValue) && null !== params.data[relatedValue] ?
params.colDef.cellEditorParams.values[params.data[relatedValue]] : null;


if (null !== params.value && null !== this.itemRange) { } } {) {
if (null !== params.value && null !== this.itemRange) {
// let value: string = GridFactory.getGridSelectItemValue() // let value: string = GridFactory.getGridSelectItemValue()
for (let i = 0; i < this.itemRange.length; i++) {
if (this.itemRange[i][itemKey] === params.value) {
this.value = GridSelectFactory.getGridSelectItemValue(this.itemRange[i], itemValueKeys);
for (const item of this.itemRange) {
if (item[itemKey] === params.value) {
this.value = GridSelectFactory.getGridSelectItemValue(item, itemValueKeys);
break; break;
} }
} }


+ 0
- 1
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-editor/grid-text-editor.component.ts Wyświetl plik

@@ -10,7 +10,6 @@ import {GridEditorComponent} from '../../grid-editor-component';
export class GridTextEditorComponent extends GridEditorComponent { export class GridTextEditorComponent extends GridEditorComponent {
/** /**
* Cancels before value input (this editor is never editable) * Cancels before value input (this editor is never editable)
* @returns {boolean}
*/ */
public isCancelBeforeStart(): boolean { public isCancelBeforeStart(): boolean {
return true; return true;


+ 3
- 4
httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts Wyświetl plik

@@ -11,17 +11,16 @@ import {AgGridComponentConst} from '../../../components/ag-grid-component-const'
export class GridTextRendererComponent extends GridRendererComponent { export class GridTextRendererComponent extends GridRendererComponent {
/** /**
* Initialize cell renderer (gets called on cell rendering and after editing / refresh) * Initialize cell renderer (gets called on cell rendering and after editing / refresh)
* @param params
*/ */
agInit(params: any): void { agInit(params: any): void {
super.agInit(params); super.agInit(params);
if (undefined !== this.cellParams) { if (undefined !== this.cellParams) {
// Replace "." with "," for display purpose // Replace "." with "," for display purpose
if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) {
this.value = isNaN(this.value) || null === this.value; ) ? ''; : this.value = parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE');
this.value = isNaN(this.value) || null === this.value ? '' : parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE');
} }
if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT) {
this.value = isNaN(this.value) || null === this.value; ) ? ''; : this.value = parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE');
if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_INT) {
this.value = isNaN(this.value) || null === this.value? '' : this.value = parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE');
} }
} }
} }


+ 0
- 1
httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts Wyświetl plik

@@ -11,7 +11,6 @@ export class RouteInterceptor {


/** /**
* Constructor of router service * Constructor of router service
* @param {Router} router
*/ */
constructor(private router: Router, private appService: AppService) { constructor(private router: Router, private appService: AppService) {
// Observe login state // Observe login state


+ 2
- 12
httpdocs/plp-angular/src/app/model/entities/customer-meeting.ts Wyświetl plik

@@ -1,16 +1,11 @@
import {EntityInterface} from '../interface/entity-interface'; import {EntityInterface} from '../interface/entity-interface';
import {ICustomerMeetingParticipant} from './customer-meeting-participant'; import {ICustomerMeetingParticipant} from './customer-meeting-participant';
import {MeetingInterface} from '../interface/meeting-interface';


export interface ICustomerMeeting extends EntityInterface {
export interface ICustomerMeeting extends EntityInterface, MeetingInterface {
customer_id: number; customer_id: number;
creation_user_id: number;
owner_user_id: number;
meeting_type_id: number; meeting_type_id: number;
is_option_meeting: boolean; is_option_meeting: boolean;
title: string;
description: string;
start_date: string;
end_date: string;
customer_contact_id: number; customer_contact_id: number;
gender: string; gender: string;
firstname: string; firstname: string;
@@ -24,11 +19,6 @@ export interface ICustomerMeeting extends EntityInterface {
zip: string; zip: string;
city: string; city: string;
country_id: number; country_id: number;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
v_participants: ICustomerMeetingParticipant[]; v_participants: ICustomerMeetingParticipant[];
v_is_editable: boolean; v_is_editable: boolean;
} }

+ 2
- 11
httpdocs/plp-angular/src/app/model/entities/internal-meeting.ts Wyświetl plik

@@ -1,18 +1,9 @@
import {EntityInterface} from '../interface/entity-interface'; import {EntityInterface} from '../interface/entity-interface';
import {IInternalMeetingParticipant} from './internal-meeting-participant'; import {IInternalMeetingParticipant} from './internal-meeting-participant';
import {MeetingInterface} from '../interface/meeting-interface';


export interface IInternalMeeting extends EntityInterface {
export interface IInternalMeeting extends EntityInterface, MeetingInterface {
creation_user_id: number; creation_user_id: number;
owner_user_id: number;
title: string;
description: string;
start_date: string;
end_date: string;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
v_participants: IInternalMeetingParticipant[]; v_participants: IInternalMeetingParticipant[];
v_is_editable: boolean; v_is_editable: boolean;
} }

+ 0
- 21
httpdocs/plp-angular/src/app/model/entities/operator-contact.ts Wyświetl plik

@@ -1,21 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IOperatorContact extends EntityInterface {
operator_id: string;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
date_of_birth: string;
comment: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
is_xmas_mail_recipient: boolean;
}

+ 0
- 6
httpdocs/plp-angular/src/app/model/entities/operator-meeting-participant.ts Wyświetl plik

@@ -1,6 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IOperatorMeetingParticipant extends EntityInterface {
operator_meeting_id: number;
participant_user_id: number;
}

+ 0
- 33
httpdocs/plp-angular/src/app/model/entities/operator-meeting.ts Wyświetl plik

@@ -1,33 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IOperatorMeetingParticipant} from './operator-meeting-participant';

export interface IOperatorMeeting extends EntityInterface {
operator_id: number;
creation_user_id: number;
owner_user_id: number;
meeting_type_id: number;
title: string;
description: string;
start_date: string;
end_date: string;
operator_contact_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
department: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
v_participants: IOperatorMeetingParticipant[];
v_is_editable: boolean;
}

+ 0
- 22
httpdocs/plp-angular/src/app/model/entities/operator-note.ts Wyświetl plik

@@ -1,22 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IOperatorNote extends EntityInterface {
operator_id: number;
operator_contact_id: number;
user_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
title: string;
comment: string;
note_date: string;
creation_date: string;
creation_user_id: number;
creation_user_firstname: string;
creation_user_lastname: string;
}

+ 0
- 29
httpdocs/plp-angular/src/app/model/entities/operator.ts Wyświetl plik

@@ -1,29 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IOperatorContact} from './operator-contact';
import {IOperatorNote} from './operator-note';
import {IOperatorMeeting} from './operator-meeting';

export interface IOperator extends EntityInterface {
old_plp_id: string;
name: string;
name_additional: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
url: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
comment: string;
tax_no: string;
invoice_mode: string;
invoice_comment: string;
invoice_key: string;
active: boolean;
v_operator_contacts: IOperatorContact[];
v_operator_notes: IOperatorNote[];
v_operator_meetings: IOperatorMeeting[];
}

+ 0
- 21
httpdocs/plp-angular/src/app/model/entities/production-contact.ts Wyświetl plik

@@ -1,21 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IProductionContact extends EntityInterface {
production_id: string;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
date_of_birth: string;
comment: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
is_xmas_mail_recipient: boolean;
}

+ 0
- 6
httpdocs/plp-angular/src/app/model/entities/production-meeting-participant.ts Wyświetl plik

@@ -1,6 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IProductionMeetingParticipant extends EntityInterface {
production_meeting_id: number;
participant_user_id: number;
}

+ 0
- 33
httpdocs/plp-angular/src/app/model/entities/production-meeting.ts Wyświetl plik

@@ -1,33 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IProductionMeetingParticipant} from './production-meeting-participant';

export interface IProductionMeeting extends EntityInterface {
production_id: number;
creation_user_id: number;
owner_user_id: number;
meeting_type_id: number;
title: string;
description: string;
start_date: string;
end_date: string;
production_contact_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
department: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
v_participants: IProductionMeetingParticipant[];
v_is_editable: boolean;
}

+ 0
- 22
httpdocs/plp-angular/src/app/model/entities/production-note.ts Wyświetl plik

@@ -1,22 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IProductionNote extends EntityInterface {
production_id: number;
production_contact_id: number;
user_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
title: string;
comment: string;
note_date: string;
creation_date: string;
creation_user_id: number;
creation_user_firstname: string;
creation_user_lastname: string;
}

+ 0
- 29
httpdocs/plp-angular/src/app/model/entities/production.ts Wyświetl plik

@@ -1,29 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IProductionContact} from './production-contact';
import {IProductionNote} from './production-note';
import {IProductionMeeting} from './production-meeting';

export interface IProduction extends EntityInterface {
old_plp_id: string;
name: string;
name_additional: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
url: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
comment: string;
tax_no: string;
invoice_mode: string;
invoice_comment: string;
invoice_key: string;
active: boolean;
v_production_contacts: IProductionContact[];
v_production_notes: IProductionNote[];
v_production_meetings: IProductionMeeting[];
}

+ 0
- 21
httpdocs/plp-angular/src/app/model/entities/service-contact.ts Wyświetl plik

@@ -1,21 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IServiceContact extends EntityInterface {
service_id: string;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
date_of_birth: string;
comment: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
is_xmas_mail_recipient: boolean;
}

+ 0
- 6
httpdocs/plp-angular/src/app/model/entities/service-meeting-participant.ts Wyświetl plik

@@ -1,6 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IServiceMeetingParticipant extends EntityInterface {
service_meeting_id: number;
participant_user_id: number;
}

+ 0
- 33
httpdocs/plp-angular/src/app/model/entities/service-meeting.ts Wyświetl plik

@@ -1,33 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IServiceMeetingParticipant} from './service-meeting-participant';

export interface IServiceMeeting extends EntityInterface {
service_id: number;
creation_user_id: number;
owner_user_id: number;
meeting_type_id: number;
title: string;
description: string;
start_date: string;
end_date: string;
service_contact_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
department: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
v_participants: IServiceMeetingParticipant[];
v_is_editable: boolean;
}

+ 0
- 22
httpdocs/plp-angular/src/app/model/entities/service-note.ts Wyświetl plik

@@ -1,22 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';

export interface IServiceNote extends EntityInterface {
service_id: number;
service_contact_id: number;
user_id: number;
gender: string;
firstname: string;
lastname: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
department: string;
title: string;
comment: string;
note_date: string;
creation_date: string;
creation_user_id: number;
creation_user_firstname: string;
creation_user_lastname: string;
}

+ 0
- 29
httpdocs/plp-angular/src/app/model/entities/service.ts Wyświetl plik

@@ -1,29 +0,0 @@
import {EntityInterface} from '../interface/entity-interface';
import {IServiceContact} from './service-contact';
import {IServiceNote} from './service-note';
import {IServiceMeeting} from './service-meeting';

export interface IService extends EntityInterface {
old_plp_id: string;
name: string;
name_additional: string;
street: string;
street_no: string;
zip: string;
city: string;
country_id: number;
url: string;
email: string;
phone_no: string;
mobile_no: string;
fax_no: string;
comment: string;
tax_no: string;
invoice_mode: string;
invoice_comment: string;
invoice_key: string;
active: boolean;
v_service_contacts: IServiceContact[];
v_service_notes: IServiceNote[];
v_service_meetings: IServiceMeeting[];
}

+ 13
- 0
httpdocs/plp-angular/src/app/model/interface/meeting-interface.ts Wyświetl plik

@@ -0,0 +1,13 @@
export interface MeetingInterface {
creation_user_id: number;
owner_user_id: number;
title: string;
description: string;
start_date: string;
end_date: string;
report: string;
first_reminder_sent: boolean;
second_reminder_sent: boolean;
report_reminder_sent: boolean;
creation_date: string;
}

+ 0
- 6
httpdocs/plp-angular/src/app/model/virtual/meeting-data.ts Wyświetl plik

@@ -1,13 +1,7 @@
import {ICustomerMeeting} from '../entities/customer-meeting'; import {ICustomerMeeting} from '../entities/customer-meeting';
import {IInternalMeeting} from '../entities/internal-meeting'; import {IInternalMeeting} from '../entities/internal-meeting';
import {IOperatorMeeting} from '../entities/operator-meeting';
import {IProductionMeeting} from '../entities/production-meeting';
import {IServiceMeeting} from '../entities/service-meeting';


export interface IMeetingData { export interface IMeetingData {
customerMeetings: ICustomerMeeting[]; customerMeetings: ICustomerMeeting[];
internalMeetings: IInternalMeeting[]; internalMeetings: IInternalMeeting[];
operatorMeetings: IOperatorMeeting[];
productionMeetings: IProductionMeeting[];
serviceMeetings: IServiceMeeting[];
} }

+ 0
- 9
httpdocs/plp-angular/src/app/model/virtual/operator-data.ts Wyświetl plik

@@ -1,9 +0,0 @@
import {IOperator} from '../entities/operator';
import {IOperatorContact} from '../entities/operator-contact';
import {IOperatorMeeting} from '../entities/operator-meeting';

export interface IOperatorData {
operators: IOperator[];
operatorContacts: IOperatorContact[];
operatorMeetings: IOperatorMeeting[];
}

+ 0
- 9
httpdocs/plp-angular/src/app/model/virtual/production-data.ts Wyświetl plik

@@ -1,9 +0,0 @@
import {IProduction} from '../entities/production';
import {IProductionContact} from '../entities/production-contact';
import {IProductionMeeting} from '../entities/production-meeting';

export interface IProductionData {
productions: IProduction[];
productionContacts: IProductionContact[];
productionMeetings: IProductionMeeting[];
}

+ 0
- 9
httpdocs/plp-angular/src/app/model/virtual/service-data.ts Wyświetl plik

@@ -1,9 +0,0 @@
import {IService} from '../entities/service';
import {IServiceContact} from '../entities/service-contact';
import {IServiceMeeting} from '../entities/service-meeting';

export interface IServiceData {
services: IService[];
serviceContacts: IServiceContact[];
serviceMeetings: IServiceMeeting[];
}

+ 34
- 60
httpdocs/plp-angular/src/app/services/customer.service.ts Wyświetl plik

@@ -37,24 +37,23 @@ export class CustomerService {


/** /**
* Handles service data updates * Handles service data updates
* @param {IAppServiceData} serviceData
*/ */
public handleServiceData(serviceData: IAppServiceData = null): void { public handleServiceData(serviceData: IAppServiceData = null): void {
if (!null === serviceData) { } } {) {
const bSetNewData = false;
const updatedCustomers: ICustomer[] = this.customers.getValue();
const updatedCustomerContacts: ICustomerContact[] = this.customerContacts.getValue();
if (!null === serviceData.customers) { } } {) {
if (null !== serviceData) {
let bSetNewData = false;
let updatedCustomers: ICustomer[] = this.customers.getValue();
let updatedCustomerContacts: ICustomerContact[] = this.customerContacts.getValue();
if (null !== serviceData.customers) {
// Update service data // Update service data
updatedCustomers = ServiceHelper.updateServiceEntries(serviceData.customers, this.customers.getValue()) as ICustomer[]; updatedCustomers = ServiceHelper.updateServiceEntries(serviceData.customers, this.customers.getValue()) as ICustomer[];
bSetNewData = true; bSetNewData = true;
} }
if (!null === serviceData.customerContacts) { } } {) {
if (null !== serviceData.customerContacts) {
// Update service data // Update service data
updatedCustomerContacts = ServiceHelper.updateServiceEntries(serviceData.customerContacts, this.customerContacts.getValue()) as ICustomerContact[]; updatedCustomerContacts = ServiceHelper.updateServiceEntries(serviceData.customerContacts, this.customerContacts.getValue()) as ICustomerContact[];
bSetNewData = true; bSetNewData = true;
} }
if (bSetNewData) {
if (bSetNewData) {
this.setCustomerServiceData(updatedCustomers, updatedCustomerContacts); this.setCustomerServiceData(updatedCustomers, updatedCustomerContacts);
} }
} }
@@ -62,10 +61,8 @@ export class CustomerService {


/** /**
* Sets customer service and cache data * Sets customer service and cache data
* @param customers
* @param customerContacts
*/ */
private setCustomerServiceData(customers: ICustomer[], customerContacts: ICustomerContact[]); {
private setCustomerServiceData(customers: ICustomer[], customerContacts: ICustomerContact[]) {
this.customers.next(customers); this.customers.next(customers);
this.customerContacts.next(customerContacts); this.customerContacts.next(customerContacts);
} }
@@ -73,34 +70,29 @@ export class CustomerService {
/** /**
* Reset service data (on logout) * Reset service data (on logout)
*/ */
public resetCustomerServiceData(); {
public resetCustomerServiceData() {
this.customers.next(null); this.customers.next(null);
this.customerContacts.next(null); this.customerContacts.next(null);
} }


/** /**
* Returns observable of customers * Returns observable of customers
* @returns {Observable<ICustomer[]>}
*/ */
public getCustomers$(); : Observable < ICustomer[] > {
public getCustomers$(): Observable <ICustomer[]> {
return this.dataCustomers$; return this.dataCustomers$;
}; };


/** /**
* Returns observable of customer contacts * Returns observable of customer contacts
* @returns {Observable<ICustomer[]>}
*/ */
public getCustomerContacts$(); : Observable < ICustomerContact[] > {
public getCustomerContacts$(): Observable <ICustomerContact[]> {
return this.dataCustomerContacts$; return this.dataCustomerContacts$;
};


}


/** /**
* Gets all customers * Gets all customers
* @returns {Observable<IApiResponse>}
*/ */
public apiGetCustomerData(); : void {
public apiGetCustomerData(): void {
this.httpService.apiGet('get-customer-data').subscribe( this.httpService.apiGet('get-customer-data').subscribe(
data => { data => {
const res: ICustomerData = data.result_data as ICustomerData; const res: ICustomerData = data.result_data as ICustomerData;
@@ -108,114 +100,96 @@ export class CustomerService {
}, },
error => {} error => {}
); );
};
}


/** /**
* Returns full customer * Returns full customer
* @param {number} customerId
* @returns {Observable<IApiResponse>}
*/ */
public apiGetCustomerFull(customerId: number); : Observable < IApiResponse > {
public apiGetCustomerFull(customerId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerId', JSON.stringify(customerId)); formData.append('customerId', JSON.stringify(customerId));
return this.httpService.apiPost('get-customer-full', formData); return this.httpService.apiPost('get-customer-full', formData);
};
}


/** /**
* Create customer * Create customer
* @param {ICustomer} customer
* @returns {Observable<IApiResponse>}
*/ */
public apiCreateCustomer(customer: ICustomer); : Observable < IApiResponse > {
public apiCreateCustomer(customer: ICustomer): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customer', JSON.stringify(customer)); formData.append('customer', JSON.stringify(customer));
return this.httpService.apiPost('create-customer', formData); return this.httpService.apiPost('create-customer', formData);
};
}


/** /**
* Edit customer * Edit customer
* @param {ICustomer} customer
* @returns {Observable<IApiResponse>}
*/ */
public apiEditCustomer(customer: ICustomer); : Observable < IApiResponse > {
public apiEditCustomer(customer: ICustomer): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customer', JSON.stringify(customer)); formData.append('customer', JSON.stringify(customer));
return this.httpService.apiPost('edit-customer', formData); return this.httpService.apiPost('edit-customer', formData);
};
}


/** /**
* Create customer contact * Create customer contact
* @param customerContact
*/ */
public apiCreateCustomerContact(customerContact: ICustomerContact); : Observable < IApiResponse > {
public apiCreateCustomerContact(customerContact: ICustomerContact): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerContact', JSON.stringify(customerContact)); formData.append('customerContact', JSON.stringify(customerContact));
return this.httpService.apiPost('create-customer-contact', formData); return this.httpService.apiPost('create-customer-contact', formData);
};
}


/** /**
* Edit customer contact * Edit customer contact
* @param {ICustomerContact} customerContact
* @returns {Observable<IApiResponse>}
*/ */
public apiEditCustomerContact(customerContact: ICustomerContact); : Observable < IApiResponse > {
public apiEditCustomerContact(customerContact: ICustomerContact): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerContact', JSON.stringify(customerContact)); formData.append('customerContact', JSON.stringify(customerContact));
return this.httpService.apiPost('edit-customer-contact', formData); return this.httpService.apiPost('edit-customer-contact', formData);
};
}


/** /**
* Delete customer contact * Delete customer contact
* @param {number} customerContactId
* @returns {Observable<IApiResponse>}
*/ */
public apiDeleteCustomerContact(customerContactId: number); : Observable < IApiResponse > {
public apiDeleteCustomerContact(customerContactId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerContactId', JSON.stringify(customerContactId)); formData.append('customerContactId', JSON.stringify(customerContactId));
return this.httpService.apiPost('delete-customer-contact', formData); return this.httpService.apiPost('delete-customer-contact', formData);
};
}


/** /**
* Create customer note * Create customer note
* @param {ICustomerNote} customerNote
* @returns {Observable<IApiResponse>}
*/ */
public apiCreateCustomerNote(customerNote: ICustomerNote); : Observable < IApiResponse > {
public apiCreateCustomerNote(customerNote: ICustomerNote): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerNote', JSON.stringify(customerNote)); formData.append('customerNote', JSON.stringify(customerNote));
return this.httpService.apiPost('create-customer-note', formData); return this.httpService.apiPost('create-customer-note', formData);
};
}


/** /**
* Edit customer note * Edit customer note
* @param {ICustomerNote} customerNote
* @returns {Observable<IApiResponse>}
*/ */
public apiEditCustomerNote(customerNote: ICustomerNote); : Observable < IApiResponse > {
public apiEditCustomerNote(customerNote: ICustomerNote): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerNote', JSON.stringify(customerNote)); formData.append('customerNote', JSON.stringify(customerNote));
return this.httpService.apiPost('edit-customer-note', formData); return this.httpService.apiPost('edit-customer-note', formData);
};
}


/** /**
* Delete customer note * Delete customer note
* @param {number} customerNoteId
* @returns {Observable<IApiResponse>}
*/ */
public apiDeleteCustomerNote(customerNoteId: number); : Observable < IApiResponse > {
public apiDeleteCustomerNote(customerNoteId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerNoteId', JSON.stringify(customerNoteId)); formData.append('customerNoteId', JSON.stringify(customerNoteId));
return this.httpService.apiPost('delete-customer-note', formData); return this.httpService.apiPost('delete-customer-note', formData);
};
}


/** /**
* Edit customer meeting report * Edit customer meeting report
* @param customerMeetingId
*/ */
public apiEditCustomerMeetingReport(customerMeetingId: number, customerMeetingReport: string); : Observable < IApiResponse > {
public apiEditCustomerMeetingReport(customerMeetingId: number, customerMeetingReport: string): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeetingId', JSON.stringify(customerMeetingId)); formData.append('customerMeetingId', JSON.stringify(customerMeetingId));
formData.append('customerMeetingReport', JSON.stringify(customerMeetingReport)); formData.append('customerMeetingReport', JSON.stringify(customerMeetingReport));
return this.httpService.apiPost('edit-customer-meeting-report', formData); return this.httpService.apiPost('edit-customer-meeting-report', formData);
};
}
} }

+ 5
- 27
httpdocs/plp-angular/src/app/services/http.service.ts Wyświetl plik

@@ -3,7 +3,6 @@ import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {BehaviorSubject, Observable} from 'rxjs'; import {BehaviorSubject, Observable} from 'rxjs';
import {environment} from '../../environments/environment'; import {environment} from '../../environments/environment';
import {finalize, tap} from 'rxjs/operators'; import {finalize, tap} from 'rxjs/operators';
import {isUndefined} from 'util';
import {MessageService} from './message.service'; import {MessageService} from './message.service';
import {IApiResponse} from '../model/virtual/api-response'; import {IApiResponse} from '../model/virtual/api-response';
import {CacheService} from './cache.service'; import {CacheService} from './cache.service';
@@ -15,9 +14,6 @@ export class HttpService {


/** /**
* Constructor * Constructor
* @param {HttpClient} httpClient
* @param {MessageService} messageService
* @param {RendererFactory2} rendererFactory
*/ */
constructor(private httpClient: HttpClient, private messageService: MessageService, private rendererFactory: RendererFactory2) { constructor(private httpClient: HttpClient, private messageService: MessageService, private rendererFactory: RendererFactory2) {
this.renderer = this.rendererFactory.createRenderer(null, null); this.renderer = this.rendererFactory.createRenderer(null, null);
@@ -34,7 +30,6 @@ export class HttpService {


/** /**
* Returns location observable * Returns location observable
* @returns {Observable<ILocation[]>}
*/ */
public getServiceData$(): Observable<IAppServiceData> { public getServiceData$(): Observable<IAppServiceData> {
return this.dataServiceData$; return this.dataServiceData$;
@@ -42,32 +37,29 @@ export class HttpService {


/** /**
* Processes optional cache service data delivered by call * Processes optional cache service data delivered by call
* @param data
*/ */
private checkMessages(data: IApiResponse): void { private checkMessages(data: IApiResponse): void {
// Show optional success message // Show optional success message
if (!isUndefined(data.success_code) && null !== data.success_code && data.success_code !== 0) {
if (undefined !== data.success_code && null !== data.success_code && data.success_code !== 0) {
this.messageService.setSuccess(data.success_code, data.success_msg); this.messageService.setSuccess(data.success_code, data.success_msg);
} }


// Show optional info message // Show optional info message
if (!isUndefined(data.info_code) && null !== data.info_code && data.info_code !== 0) {
if (undefined !== data.info_code && null !== data.info_code && data.info_code !== 0) {
this.messageService.setInfoCode(data.info_code, data.info_msg); this.messageService.setInfoCode(data.info_code, data.info_msg);
} }


// Show optional error message // Show optional error message
if (!isUndefined(data.error_code) && null !== data.error_code && data.error_code !== 0) {
if (undefined !== data.error_code && null !== data.error_code && data.error_code !== 0) {
this.messageService.setError(data.error_code, data.error_msg); this.messageService.setError(data.error_code, data.error_msg);
} }
} }


/** /**
* Handles http error repsonse * Handles http error repsonse
* @param {HttpErrorResponse} error
* @param {boolean} serviceDataCheck
*/ */
private handleError(error: HttpErrorResponse, serviceDataCheck: boolean): void { private handleError(error: HttpErrorResponse, serviceDataCheck: boolean): void {
if (error.status == HttpService.AUTHENTICATION_ERROR_CODE) {
if (error.status === HttpService.AUTHENTICATION_ERROR_CODE) {
this.messageService.setError(HttpService.AUTHENTICATION_ERROR_CODE, HttpService.AUTHENTICATION_ERROR_MESSAGE); this.messageService.setError(HttpService.AUTHENTICATION_ERROR_CODE, HttpService.AUTHENTICATION_ERROR_MESSAGE);
} else { } else {
const response: IApiResponse = error.error as IApiResponse; const response: IApiResponse = error.error as IApiResponse;
@@ -80,7 +72,6 @@ export class HttpService {


/** /**
* Toggles loader icon * Toggles loader icon
* @param show
*/ */
public showLoader(show: boolean): void { public showLoader(show: boolean): void {
show ? show ?
@@ -89,12 +80,7 @@ export class HttpService {
} }


/** /**
*
* @param {string} urlResource
* @param {number} id
* @param {boolean} serviceDataCheck
* @param {boolean} loaderIcon
* @returns {Observable<IApiResponse>}
* Api get call
*/ */
public apiGet(urlResource: string, id: number = null, serviceDataCheck: boolean = true, loaderIcon: boolean = true): Observable<IApiResponse> { public apiGet(urlResource: string, id: number = null, serviceDataCheck: boolean = true, loaderIcon: boolean = true): Observable<IApiResponse> {
this.showLoader(true); this.showLoader(true);
@@ -122,11 +108,6 @@ export class HttpService {


/** /**
* Post api call * Post api call
* @param {string} urlResource
* @param {FormData} formData
* @param {boolean} serviceDataCheck
* @param {boolean} withLoaderIcon
* @returns {Observable<any>}
*/ */
public apiPost(urlResource: string, formData: FormData, serviceDataCheck: boolean = true, withLoaderIcon: boolean = true): Observable<any> { public apiPost(urlResource: string, formData: FormData, serviceDataCheck: boolean = true, withLoaderIcon: boolean = true): Observable<any> {
if (withLoaderIcon) { if (withLoaderIcon) {
@@ -159,9 +140,6 @@ export class HttpService {


/** /**
* Post call for excel files * Post call for excel files
* @param {string} urlResource
* @param {FormData} formData
* @returns {Observable<any>}
*/ */
public apiFilePost(urlResource: string, formData: FormData): Observable<any> { public apiFilePost(urlResource: string, formData: FormData): Observable<any> {
this.showLoader(true); this.showLoader(true);


+ 41
- 274
httpdocs/plp-angular/src/app/services/meeting.service.ts Wyświetl plik

@@ -7,13 +7,9 @@ import {IApiResponse} from '../model/virtual/api-response';
import {IAppServiceData} from '../model/virtual/app-service-data'; import {IAppServiceData} from '../model/virtual/app-service-data';
import {saveAs} from 'file-saver'; import {saveAs} from 'file-saver';
import {ServiceHelper} from '../utils/service-helper'; import {ServiceHelper} from '../utils/service-helper';
import {ICustomerNote} from '../model/entities/customer-note';
import {ICustomerMeeting} from '../model/entities/customer-meeting'; import {ICustomerMeeting} from '../model/entities/customer-meeting';
import {IInternalMeeting} from '../model/entities/internal-meeting'; import {IInternalMeeting} from '../model/entities/internal-meeting';
import {IMeetingData} from '../model/virtual/meeting-data'; import {IMeetingData} from '../model/virtual/meeting-data';
import {IOperatorMeeting} from '../model/entities/operator-meeting';
import {IProductionMeeting} from '../model/entities/production-meeting';
import {IServiceMeeting} from '../model/entities/service-meeting';


@Injectable() @Injectable()
export class MeetingService { export class MeetingService {
@@ -22,12 +18,6 @@ export class MeetingService {
private customerMeetings$: Observable<ICustomerMeeting[]>; private customerMeetings$: Observable<ICustomerMeeting[]>;
private internalMeetings: BehaviorSubject<IInternalMeeting[]>; private internalMeetings: BehaviorSubject<IInternalMeeting[]>;
private internalMeetings$: Observable<IInternalMeeting[]>; private internalMeetings$: Observable<IInternalMeeting[]>;
private operatorMeetings: BehaviorSubject<IOperatorMeeting[]>;
private operatorMeetings$: Observable<IOperatorMeeting[]>;
private productionMeetings: BehaviorSubject<IProductionMeeting[]>;
private productionMeetings$: Observable<IProductionMeeting[]>;
private serviceMeetings: BehaviorSubject<IServiceMeeting[]>;
private serviceMeetings$: Observable<IServiceMeeting[]>;
private meetingData: BehaviorSubject<IMeetingData>; private meetingData: BehaviorSubject<IMeetingData>;
private meetingData$: Observable<IMeetingData>; private meetingData$: Observable<IMeetingData>;
private serviceDataSub: Subscription; private serviceDataSub: Subscription;
@@ -37,12 +27,6 @@ export class MeetingService {
this.customerMeetings$ = this.customerMeetings.asObservable(); this.customerMeetings$ = this.customerMeetings.asObservable();
this.internalMeetings = new BehaviorSubject<IInternalMeeting[]>(null); this.internalMeetings = new BehaviorSubject<IInternalMeeting[]>(null);
this.internalMeetings$ = this.internalMeetings.asObservable(); this.internalMeetings$ = this.internalMeetings.asObservable();
this.operatorMeetings = new BehaviorSubject<IOperatorMeeting[]>(null);
this.operatorMeetings$ = this.operatorMeetings.asObservable();
this.productionMeetings = new BehaviorSubject<IProductionMeeting[]>(null);
this.productionMeetings$ = this.productionMeetings.asObservable();
this.serviceMeetings = new BehaviorSubject<IServiceMeeting[]>(null);
this.serviceMeetings$ = this.serviceMeetings.asObservable();


this.meetingData = new BehaviorSubject<IMeetingData>(null); this.meetingData = new BehaviorSubject<IMeetingData>(null);
this.meetingData$ = this.meetingData.asObservable(); this.meetingData$ = this.meetingData.asObservable();
@@ -58,48 +42,27 @@ export class MeetingService {


/** /**
* Handles service data updates * Handles service data updates
* @param {IAppServiceData} serviceData
*/ */
public handleServiceData(serviceData: IAppServiceData = null): void { public handleServiceData(serviceData: IAppServiceData = null): void {
if (!null === serviceData) { } } {) {
const bSetNewData = false;
const updatedCustomerMeetings: ICustomerMeeting[] = this.customerMeetings.getValue();
const updatedInternalMeetings: IInternalMeeting[] = this.internalMeetings.getValue();
const updatedOperatorMeetings: IOperatorMeeting[] = this.operatorMeetings.getValue();
const updatedProductionMeetings: IProductionMeeting[] = this.productionMeetings.getValue();
const updatedServiceMeetings: IServiceMeeting[] = this.serviceMeetings.getValue();
if (!null === serviceData.customerMeetings) { } } {) {
if (null !== serviceData) {
let bSetNewData = false;
let updatedCustomerMeetings: ICustomerMeeting[] = this.customerMeetings.getValue();
let updatedInternalMeetings: IInternalMeeting[] = this.internalMeetings.getValue();
if (null !== serviceData.customerMeetings) {
// Update service data // Update service data
updatedCustomerMeetings = ServiceHelper.updateServiceEntries(serviceData.customerMeetings, this.customerMeetings.getValue()) as ICustomerMeeting[]; updatedCustomerMeetings = ServiceHelper.updateServiceEntries(serviceData.customerMeetings, this.customerMeetings.getValue()) as ICustomerMeeting[];
bSetNewData = true; bSetNewData = true;
} }
if (!null === serviceData.internalMeetings) { } } {) {
if (null !== serviceData.internalMeetings) {
// Update service data // Update service data
updatedInternalMeetings = ServiceHelper.updateServiceEntries(serviceData.internalMeetings, this.internalMeetings.getValue()) as IInternalMeeting[]; updatedInternalMeetings = ServiceHelper.updateServiceEntries(serviceData.internalMeetings, this.internalMeetings.getValue()) as IInternalMeeting[];
bSetNewData = true; bSetNewData = true;
} }
if (!null === serviceData.operatorMeetings) { } } {) {
// Update service data
updatedOperatorMeetings = ServiceHelper.updateServiceEntries(serviceData.operatorMeetings, this.operatorMeetings.getValue()) as IOperatorMeeting[];
bSetNewData = true;
}
if (!null === serviceData.productionMeetings) { } } {) {
// Update service data
updatedProductionMeetings = ServiceHelper.updateServiceEntries(serviceData.productionMeetings, this.productionMeetings.getValue()) as IProductionMeeting[];
bSetNewData = true;
}
if (!null === serviceData.operatorMeetings) { } } {) {
// Update service data
updatedServiceMeetings = ServiceHelper.updateServiceEntries(serviceData.serviceMeetings, this.serviceMeetings.getValue()) as IServiceMeeting[];
bSetNewData = true;
}
if (bSetNewData) {

if (bSetNewData) {
const meetingData: {} = { const meetingData: {} = {
customerMeetings: updatedCustomerMeetings, customerMeetings: updatedCustomerMeetings,
internalMeetings: updatedInternalMeetings, internalMeetings: updatedInternalMeetings,
operatorMeetings: updatedOperatorMeetings,
productionMeetings: updatedProductionMeetings,
serviceMeetings: updatedServiceMeetings,
}; };
this.setMeetingServiceData(meetingData as IMeetingData); this.setMeetingServiceData(meetingData as IMeetingData);
} }
@@ -108,58 +71,38 @@ export class MeetingService {


/** /**
* Sets customer service and cache data * Sets customer service and cache data
* @param meetingData
*/ */
private setMeetingServiceData(meetingData: IMeetingData); {
private setMeetingServiceData(meetingData: IMeetingData) {
this.meetingData.next(meetingData); this.meetingData.next(meetingData);
this.customerMeetings.next(meetingData.customerMeetings); this.customerMeetings.next(meetingData.customerMeetings);
this.internalMeetings.next(meetingData.internalMeetings); this.internalMeetings.next(meetingData.internalMeetings);
this.operatorMeetings.next(meetingData.operatorMeetings);
this.productionMeetings.next(meetingData.productionMeetings);
this.serviceMeetings.next(meetingData.serviceMeetings);
} }


/** /**
* Reset service data (on logout) * Reset service data (on logout)
*/ */
public resetMeetingServiceData(); {
public resetMeetingServiceData() {
this.meetingData.next(null); this.meetingData.next(null);
this.customerMeetings.next(null); this.customerMeetings.next(null);
this.internalMeetings.next(null); this.internalMeetings.next(null);
this.operatorMeetings.next(null);
this.productionMeetings.next(null);
this.serviceMeetings.next(null);
} }


public getMeetingsData$(); : Observable < IMeetingData > {
public getMeetingsData$(): Observable <IMeetingData> {
return this.meetingData$; return this.meetingData$;
};
}


public getCustomerMeetings$(); : Observable < ICustomerMeeting[] > {
public getCustomerMeetings$(): Observable <ICustomerMeeting[]> {
return this.customerMeetings$; return this.customerMeetings$;
};
}


public getInternalMeetings$(); : Observable < IInternalMeeting[] > {
public getInternalMeetings$(): Observable <IInternalMeeting[]> {
return this.internalMeetings$; return this.internalMeetings$;
};

public getOperatorMeetings$(); : Observable < IOperatorMeeting[] > {
return this.operatorMeetings$;
};

public getProductionMeetings$(); : Observable < IProductionMeeting[] > {
return this.productionMeetings$;
};

public getServiceMeetings$(); : Observable < IServiceMeeting[] > {
return this.serviceMeetings$;
};
}


/** /**
* Gets all customers
* @returns {Observable<IApiResponse>}
* Gets meeting data
*/ */
public apiGetMeetingData(); : void {
public apiGetMeetingData(): void {
this.httpService.apiGet('get-meeting-data').subscribe( this.httpService.apiGet('get-meeting-data').subscribe(
data => { data => {
const res: IMeetingData = data.result_data as IMeetingData; const res: IMeetingData = data.result_data as IMeetingData;
@@ -167,280 +110,104 @@ export class MeetingService {
}, },
error => {} error => {}
); );
};
}


/** /**
* Create customer meeting * Create customer meeting
* @param {ICustomerNote} customerMeeting
* @returns {Observable<IApiResponse>}
*/ */
public apiCreateCustomerMeeting(customerMeeting: ICustomerMeeting); : Observable < IApiResponse > {
public apiCreateCustomerMeeting(customerMeeting: ICustomerMeeting): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeeting', JSON.stringify(customerMeeting)); formData.append('customerMeeting', JSON.stringify(customerMeeting));
return this.httpService.apiPost('create-customer-meeting', formData); return this.httpService.apiPost('create-customer-meeting', formData);
};
}


/** /**
* Edit customer meeting * Edit customer meeting
* @param {ICustomerNote} customerMeeting
* @returns {Observable<IApiResponse>}
*/ */
public apiEditCustomerMeeting(customerMeeting: ICustomerMeeting); : Observable < IApiResponse > {
public apiEditCustomerMeeting(customerMeeting: ICustomerMeeting): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeeting', JSON.stringify(customerMeeting)); formData.append('customerMeeting', JSON.stringify(customerMeeting));
return this.httpService.apiPost('edit-customer-meeting', formData); return this.httpService.apiPost('edit-customer-meeting', formData);
};
}


/** /**
* Delete customer meeting * Delete customer meeting
* @param {number} customerMeetingId
* @returns {Observable<IApiResponse>}
*/ */
public apiDeleteCustomerMeeting(customerMeetingId: number); : Observable < IApiResponse > {
public apiDeleteCustomerMeeting(customerMeetingId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeetingId', JSON.stringify(customerMeetingId)); formData.append('customerMeetingId', JSON.stringify(customerMeetingId));
return this.httpService.apiPost('delete-customer-meeting', formData); return this.httpService.apiPost('delete-customer-meeting', formData);
};
}


/** /**
* Checks customer meeting report * Checks customer meeting report
* @param customerMeetingId
*/ */
public apiCheckCustomerMeetingReport(customerMeetingId: number); : Observable < IApiResponse > {
public apiCheckCustomerMeetingReport(customerMeetingId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeetingId', JSON.stringify(customerMeetingId)); formData.append('customerMeetingId', JSON.stringify(customerMeetingId));
return this.httpService.apiPost('check-customer-meeting-report', formData, true); return this.httpService.apiPost('check-customer-meeting-report', formData, true);
};
}


/** /**
* Edit customer meeting report * Edit customer meeting report
* @param customerMeetingId
* @param customerMeetingReport
*/ */
public apiEditCustomerMeetingReport(customerMeetingId: number, customerMeetingReport: string); : Observable < IApiResponse > {
public apiEditCustomerMeetingReport(customerMeetingId: number, customerMeetingReport: string): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('customerMeetingId', JSON.stringify(customerMeetingId)); formData.append('customerMeetingId', JSON.stringify(customerMeetingId));
formData.append('customerMeetingReport', JSON.stringify(customerMeetingReport)); formData.append('customerMeetingReport', JSON.stringify(customerMeetingReport));
return this.httpService.apiPost('edit-customer-meeting-report', formData); return this.httpService.apiPost('edit-customer-meeting-report', formData);
};
}


/** /**
* Create internal meeting * Create internal meeting
* @param internalMeeting
*/ */
public apiCreateInternalMeeting(internalMeeting: IInternalMeeting); : Observable < IApiResponse > {
public apiCreateInternalMeeting(internalMeeting: IInternalMeeting): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('internalMeeting', JSON.stringify(internalMeeting)); formData.append('internalMeeting', JSON.stringify(internalMeeting));
return this.httpService.apiPost('create-internal-meeting', formData); return this.httpService.apiPost('create-internal-meeting', formData);
};
}


/** /**
* Edit internal meeting * Edit internal meeting
* @param internalMeeting
*/ */
public apiEditInternalMeeting(internalMeeting: IInternalMeeting); : Observable < IApiResponse > {
public apiEditInternalMeeting(internalMeeting: IInternalMeeting): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('internalMeeting', JSON.stringify(internalMeeting)); formData.append('internalMeeting', JSON.stringify(internalMeeting));
return this.httpService.apiPost('edit-internal-meeting', formData); return this.httpService.apiPost('edit-internal-meeting', formData);
};
}


/** /**
* Delete internal meeting * Delete internal meeting
* @param internalMeetingId
*/ */
public apiDeleteInternalMeeting(internalMeetingId: number); : Observable < IApiResponse > {
public apiDeleteInternalMeeting(internalMeetingId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('internalMeetingId', JSON.stringify(internalMeetingId)); formData.append('internalMeetingId', JSON.stringify(internalMeetingId));
return this.httpService.apiPost('delete-internal-meeting', formData); return this.httpService.apiPost('delete-internal-meeting', formData);
};
}


/** /**
* Checks internal meeting report * Checks internal meeting report
* @param internalMeetingId
*/ */
public apiCheckInternalMeetingReport(internalMeetingId: number); : Observable < IApiResponse > {
public apiCheckInternalMeetingReport(internalMeetingId: number): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('internalMeetingId', JSON.stringify(internalMeetingId)); formData.append('internalMeetingId', JSON.stringify(internalMeetingId));
return this.httpService.apiPost('check-internal-meeting-report', formData, false); return this.httpService.apiPost('check-internal-meeting-report', formData, false);
};
}


/** /**
* Edit internal meeting report * Edit internal meeting report
* @param internalMeetingId
* @param internalMeetingReport
*/ */
public apiEditInternalMeetingReport(internalMeetingId: number, internalMeetingReport: string); : Observable < IApiResponse > {
public apiEditInternalMeetingReport(internalMeetingId: number, internalMeetingReport: string): Observable <IApiResponse> {
const formData = new FormData(); const formData = new FormData();
formData.append('internalMeetingId', JSON.stringify(internalMeetingId)); formData.append('internalMeetingId', JSON.stringify(internalMeetingId));
formData.append('internalMeetingReport', JSON.stringify(internalMeetingReport)); formData.append('internalMeetingReport', JSON.stringify(internalMeetingReport));
return this.httpService.apiPost('edit-internal-meeting-report', formData); return this.httpService.apiPost('edit-internal-meeting-report', formData);
};

/**
* Create operator meeting
* @param operatorMeeting
*/
public apiCreateOperatorMeeting(operatorMeeting: IOperatorMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('operatorMeeting', JSON.stringify(operatorMeeting));
return this.httpService.apiPost('create-operator-meeting', formData);
};

/**
* Edit operator meeting
* @param operatorMeeting
*/
public apiEditOperatorMeeting(operatorMeeting: IOperatorMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('operatorMeeting', JSON.stringify(operatorMeeting));
return this.httpService.apiPost('edit-operator-meeting', formData);
};

/**
* Delete operator meeting
* @param {number} operatorMeetingId
* @returns {Observable<IApiResponse>}
*/
public apiDeleteOperatorMeeting(operatorMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('operatorMeetingId', JSON.stringify(operatorMeetingId));
return this.httpService.apiPost('delete-operator-meeting', formData);
};

/**
* Checks operator meeting report
* @param operatorMeetingId
*/
public apiCheckOperatorMeetingReport(operatorMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('operatorMeetingId', JSON.stringify(operatorMeetingId));
return this.httpService.apiPost('check-operator-meeting-report', formData, true);
};

/**
* Edit operator meeting report
* @param operatorMeetingId
* @param operatorMeetingReport
*/
public apiEditOperatorMeetingReport(operatorMeetingId: number, operatorMeetingReport: string); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('operatorMeetingId', JSON.stringify(operatorMeetingId));
formData.append('operatorMeetingReport', JSON.stringify(operatorMeetingReport));
return this.httpService.apiPost('edit-operator-meeting-report', formData);
};

/**
* Create production meeting
* @param productionMeeting
*/
public apiCreateProductionMeeting(productionMeeting: IProductionMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('productionMeeting', JSON.stringify(productionMeeting));
return this.httpService.apiPost('create-production-meeting', formData);
};

/**
* Edit production meeting
* @param productionMeeting
*/
public apiEditProductionMeeting(productionMeeting: IProductionMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('productionMeeting', JSON.stringify(productionMeeting));
return this.httpService.apiPost('edit-production-meeting', formData);
};

/**
* Delete production meeting
* @param {number} productionMeetingId
* @returns {Observable<IApiResponse>}
*/
public apiDeleteProductionMeeting(productionMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('productionMeetingId', JSON.stringify(productionMeetingId));
return this.httpService.apiPost('delete-production-meeting', formData);
};

/**
* Checks production meeting report
* @param productionMeetingId
*/
public apiCheckProductionMeetingReport(productionMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('productionMeetingId', JSON.stringify(productionMeetingId));
return this.httpService.apiPost('check-production-meeting-report', formData, true);
};

/**
* Edit production meeting report
* @param productionMeetingId
* @param productionMeetingReport
*/
public apiEditProductionMeetingReport(productionMeetingId: number, productionMeetingReport: string); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('productionMeetingId', JSON.stringify(productionMeetingId));
formData.append('productionMeetingReport', JSON.stringify(productionMeetingReport));
return this.httpService.apiPost('edit-production-meeting-report', formData);
};

/**
* Create service meeting
* @param serviceMeeting
*/
public apiCreateServiceMeeting(serviceMeeting: IServiceMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('serviceMeeting', JSON.stringify(serviceMeeting));
return this.httpService.apiPost('create-service-meeting', formData);
};

/**
* Edit service meeting
* @param serviceMeeting
*/
public apiEditServiceMeeting(serviceMeeting: IServiceMeeting); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('serviceMeeting', JSON.stringify(serviceMeeting));
return this.httpService.apiPost('edit-service-meeting', formData);
};

/**
* Delete service meeting
* @param {number} serviceMeetingId
* @returns {Observable<IApiResponse>}
*/
public apiDeleteServiceMeeting(serviceMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('serviceMeetingId', JSON.stringify(serviceMeetingId));
return this.httpService.apiPost('delete-service-meeting', formData);
};

/**
* Checks production meeting report
* @param serviceMeetingId
*/
public apiCheckServiceMeetingReport(serviceMeetingId: number); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('serviceMeetingId', JSON.stringify(serviceMeetingId));
return this.httpService.apiPost('check-service-meeting-report', formData, true);
};

/**
* Edit service meeting report
* @param serviceMeetingId
* @param serviceMeetingReport
*/
public apiEditServiceMeetingReport(serviceMeetingId: number, serviceMeetingReport: string); : Observable < IApiResponse > {
const formData = new FormData();
formData.append('serviceMeetingId', JSON.stringify(serviceMeetingId));
formData.append('serviceMeetingReport', JSON.stringify(serviceMeetingReport));
return this.httpService.apiPost('edit-service-meeting-report', formData);
};
}


/** /**
* Returns meeting list as excel * Returns meeting list as excel
* @param meetingList
* @param fileName
*/ */
public apiExportMeetingList(meetingList: {}[], fileName: string); : void {
public apiExportMeetingList(meetingList: {}[], fileName: string): void {
const formData = new FormData(); const formData = new FormData();
formData.append('meetingList', JSON.stringify(meetingList)); formData.append('meetingList', JSON.stringify(meetingList));
this.httpService.apiFilePost('export-meeting-list', formData).subscribe( this.httpService.apiFilePost('export-meeting-list', formData).subscribe(
@@ -450,5 +217,5 @@ export class MeetingService {
error => { error => {
} }
); );
};
}
} }

+ 2
- 3
httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.html Wyświetl plik

@@ -15,15 +15,14 @@
[suppressCellSelection]="true" [suppressCellSelection]="true"
[animateRows]="true" [animateRows]="true"
[rowSelection]="rowSelection" [rowSelection]="rowSelection"
[rowDeselection]="true"
(gridReady)="onGridReady($event)" (gridReady)="onGridReady($event)"
(rowClicked)="rowClicked($event)" (rowClicked)="rowClicked($event)"
> >
</ag-grid-angular> </ag-grid-angular>
</div> </div>


<app-modal [overlay]="true" #modalCustomerContactPersonDetailList>
<app-spt-modal [overlay]="true" #modalCustomerContactPersonDetailList>
<app-customer-contact-person-detail #customerContactPersonDetailList (editCustomerContact)="editCustomerContactFunction($event)" <app-customer-contact-person-detail #customerContactPersonDetailList (editCustomerContact)="editCustomerContactFunction($event)"
(deleteCustomerContact)="deleteCustomerContactFunction($event)" (deleteCustomerContact)="deleteCustomerContactFunction($event)"
(shortcut)="shortcutFunction($event)"></app-customer-contact-person-detail> (shortcut)="shortcutFunction($event)"></app-customer-contact-person-detail>
</app-modal>
</app-spt-modal>

+ 9
- 8
httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts Wyświetl plik

@@ -1,4 +1,4 @@
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
import {Component, EventEmitter, NgModule, OnInit, Output, ViewChild} from '@angular/core';
import {AgGridComponent} from '../../../components/ag-grid-component'; import {AgGridComponent} from '../../../components/ag-grid-component';
import {ICustomer} from '../../../model/entities/customer'; import {ICustomer} from '../../../model/entities/customer';
import {ICustomerContact} from '../../../model/entities/customer-contact'; import {ICustomerContact} from '../../../model/entities/customer-contact';
@@ -9,6 +9,7 @@ import {CustomerService} from '../../../services/customer.service';
import {Const} from '../../../utils/const'; import {Const} from '../../../utils/const';
import {AppService} from '../../../services/app.service'; import {AppService} from '../../../services/app.service';
import {CommonService} from '../../../services/common.service'; import {CommonService} from '../../../services/common.service';
import {AgGridAngular} from 'ag-grid-angular';


@Component({ @Component({
selector: 'app-customer-contact-list', selector: 'app-customer-contact-list',
@@ -79,7 +80,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
*/ */
public generateEntries(): void { public generateEntries(): void {
this.rowData = []; this.rowData = [];
if (null !== this.customerContacts) { } } {) {
if (null !== this.customerContacts){
for (let i = 0; i < this.customerContacts.length; i++) { for (let i = 0; i < this.customerContacts.length; i++) {
this.rowData.push({ this.rowData.push({
id: this.customerContacts[i].id, id: this.customerContacts[i].id,
@@ -102,7 +103,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
* Row is clicked * Row is clicked
* @param e * @param e
*/ */
public rowClicked(e: any); {
public rowClicked(e: any): void {
this.modalCustomerContactPersonDetailList.openModal(); this.modalCustomerContactPersonDetailList.openModal();
this.customerContactPersonDetailList.setData(this.customersById[e.data.customer_id], Utils.deepClone(this.customerContactsById[e.data.id]) as ICustomerContact); this.customerContactPersonDetailList.setData(this.customersById[e.data.customer_id], Utils.deepClone(this.customerContactsById[e.data.id]) as ICustomerContact);
} }
@@ -111,7 +112,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
* Edit customer contact * Edit customer contact
* @param customerContact * @param customerContact
*/ */
public editCustomerContactFunction(customerContact: ICustomerContact); : void {
public editCustomerContactFunction(customerContact: ICustomerContact): void {
this.customerService.apiEditCustomerContact(customerContact).subscribe( this.customerService.apiEditCustomerContact(customerContact).subscribe(
data => { data => {
this.customerContactPersonDetailList.updateData(data.result_data as ICustomer); this.customerContactPersonDetailList.updateData(data.result_data as ICustomer);
@@ -124,7 +125,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
* Delete customer contact * Delete customer contact
* @param contactId * @param contactId
*/ */
public deleteCustomerContactFunction(contactId: number); : void {
public deleteCustomerContactFunction(contactId: number): void {
this.customerService.apiDeleteCustomerContact(contactId).subscribe( this.customerService.apiDeleteCustomerContact(contactId).subscribe(
data => { data => {
this.modalCustomerContactPersonDetailList.closeModal(); this.modalCustomerContactPersonDetailList.closeModal();
@@ -137,7 +138,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
* Shortcut to customer detail * Shortcut to customer detail
* @param customer * @param customer
*/ */
public shortcutFunction(customer: ICustomer); : void {
public shortcutFunction(customer: ICustomer): void {
this.modalCustomerContactPersonDetailList.closeModal(); this.modalCustomerContactPersonDetailList.closeModal();
this.shortcut.emit(customer); this.shortcut.emit(customer);
}; };
@@ -145,14 +146,14 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI
/** /**
* Export customer contacts pdf * Export customer contacts pdf
*/ */
public exportCustomerContactsPdf(); : void {
public exportCustomerContactsPdf(): void {
this.commonService.apiExportContactsPdf('Kunden_Kontakte', 'customer'); this.commonService.apiExportContactsPdf('Kunden_Kontakte', 'customer');
}; };


/** /**
* Export customer xmas pdf * Export customer xmas pdf
*/ */
public exportXmasPdf(); : void {
public exportXmasPdf(): void {
this.commonService.apiExportXmasPdf('Kunden_Weihnachten', 'customer'); this.commonService.apiExportXmasPdf('Kunden_Weihnachten', 'customer');
}; };
} }

+ 0
- 1
httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.html Wyświetl plik

@@ -15,7 +15,6 @@
[suppressCellSelection]="true" [suppressCellSelection]="true"
[animateRows]="true" [animateRows]="true"
[rowSelection]="rowSelection" [rowSelection]="rowSelection"
[rowDeselection]="true"
[rowClassRules]="rowClassRules" [rowClassRules]="rowClassRules"
(gridReady)="onGridReady($event)" (gridReady)="onGridReady($event)"
(rowClicked)="rowClicked($event)" (rowClicked)="rowClicked($event)"


+ 4
- 4
httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.html Wyświetl plik

@@ -11,7 +11,7 @@
</app-tabs> </app-tabs>
</div> </div>


<app-modal #modalCM>
<app-spt-modal #modalCM>
<app-customer-view #customerView <app-customer-view #customerView
(editCustomer)="editCustomerFunction($event)" (editCustomer)="editCustomerFunction($event)"
(createCustomerContact)="createCustomerContactFunction($event)" (createCustomerContact)="createCustomerContactFunction($event)"
@@ -25,9 +25,9 @@
(deleteMeeting)="deleteCustomerMeetingFunction($event)" (deleteMeeting)="deleteCustomerMeetingFunction($event)"
(editMeetingReport)="editCustomerMeetingReportFunction($event)" (editMeetingReport)="editCustomerMeetingReportFunction($event)"
(shortcut)="shortcutFunction($event)"></app-customer-view> (shortcut)="shortcutFunction($event)"></app-customer-view>
</app-modal>
<app-modal [overlay]="true" #modalCustomerDataEdit>
</app-spt-modal>
<app-spt-modal [overlay]="true" #modalCustomerDataEdit>
<div id="customer-data-modal"> <div id="customer-data-modal">
<app-customer-data-edit #customerDataEdit (createCustomer)="createCustomerFunction($event)"></app-customer-data-edit> <app-customer-data-edit #customerDataEdit (createCustomer)="createCustomerFunction($event)"></app-customer-data-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 31
- 45
httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts Wyświetl plik

@@ -67,7 +67,7 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn
* Set component data after all data has been received * Set component data after all data has been received
*/ */
private setComponentData() { private setComponentData() {
if (null !== this.customers && null !== this.customerContacts) { } } {) {
if (null !== this.customers && null !== this.customerContacts){
this.customerList.setData(this.customers); this.customerList.setData(this.customers);
this.customerContactList.setData(this.customers, this.customerContacts); this.customerContactList.setData(this.customers, this.customerContacts);
} }
@@ -75,9 +75,8 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn


/** /**
* Customer row is clicked * Customer row is clicked
* @param e
*/ */
public rowClickedCustomer(e: any); {
public rowClickedCustomer(e: any): void {
this.customerService.apiGetCustomerFull(e.data.customer_id).subscribe( this.customerService.apiGetCustomerFull(e.data.customer_id).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
@@ -90,146 +89,135 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn
/** /**
* OnClick Create customer * OnClick Create customer
*/ */
public createCustomer(); : void {
public createCustomer(): void {
this.modalCustomerDataEdit.openModal(); this.modalCustomerDataEdit.openModal();
this.customerDataEdit.setData(Factory.getEmptyCustomer()); this.customerDataEdit.setData(Factory.getEmptyCustomer());
};
}


/** /**
* Creates customer * Creates customer
* @param customer
*/ */
public createCustomerFunction(customer: ICustomer); : void {
public createCustomerFunction(customer: ICustomer): void {
this.customerService.apiCreateCustomer(customer).subscribe( this.customerService.apiCreateCustomer(customer).subscribe(
data => { data => {
this.modalCustomerDataEdit.closeModal(); this.modalCustomerDataEdit.closeModal();
}, },
error => {} error => {}
); );
};
}


/** /**
* Saves customer * Saves customer
* @param customer
*/ */
public editCustomerFunction(customer: ICustomer); : void {
public editCustomerFunction(customer: ICustomer): void {
this.customerService.apiEditCustomer(customer).subscribe( this.customerService.apiEditCustomer(customer).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Creates customer contact * Creates customer contact
* @param customerContact
*/ */
public createCustomerContactFunction(customerContact: ICustomerContact); : void {
public createCustomerContactFunction(customerContact: ICustomerContact): void {
this.customerService.apiCreateCustomerContact(customerContact).subscribe( this.customerService.apiCreateCustomerContact(customerContact).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Edit customer contact * Edit customer contact
* @param customerContact
*/ */
public editCustomerContactFunction(customerContact: ICustomerContact); : void {
public editCustomerContactFunction(customerContact: ICustomerContact): void {
this.customerService.apiEditCustomerContact(customerContact).subscribe( this.customerService.apiEditCustomerContact(customerContact).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer, true); this.customerView.setData(data.result_data as ICustomer, true);
}, },
error => {} error => {}
); );
};
}


/** /**
* Deletes customer contact * Deletes customer contact
* @param contactId
*/ */
public deleteCustomerContactFunction(contactId: number); : void {
public deleteCustomerContactFunction(contactId: number): void {
this.customerService.apiDeleteCustomerContact(contactId).subscribe( this.customerService.apiDeleteCustomerContact(contactId).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Creates customer note entry * Creates customer note entry
* @param customerNote
*/ */
public createCustomerNoteFunction(customerNote: ICustomerNote); : void {
public createCustomerNoteFunction(customerNote: ICustomerNote): void {
this.customerService.apiCreateCustomerNote(customerNote).subscribe( this.customerService.apiCreateCustomerNote(customerNote).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Edits customer note entry * Edits customer note entry
* @param customerNote
*/ */
public editCustomerNoteFunction(customerNote: ICustomerNote); : void {
public editCustomerNoteFunction(customerNote: ICustomerNote): void {
this.customerService.apiEditCustomerNote(customerNote).subscribe( this.customerService.apiEditCustomerNote(customerNote).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer, true); this.customerView.setData(data.result_data as ICustomer, true);
}, },
error => {} error => {}
); );
};
}


/** /**
* Deletes customer note entry * Deletes customer note entry
* @param customerNoteId
*/ */
public deleteCustomerNoteFunction(customerNoteId: number); : void {
public deleteCustomerNoteFunction(customerNoteId: number): void {
this.customerService.apiDeleteCustomerNote(customerNoteId).subscribe( this.customerService.apiDeleteCustomerNote(customerNoteId).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Creates customer meeting entry * Creates customer meeting entry
* @param customerMeeting
*/ */
public createCustomerMeetingFunction(customerMeeting: ICustomerMeeting); : void {
public createCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void {
this.meetingService.apiCreateCustomerMeeting(customerMeeting).subscribe( this.meetingService.apiCreateCustomerMeeting(customerMeeting).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
}, },
error => {} error => {}
); );
};
}


/** /**
* Edits customer meeting entry * Edits customer meeting entry
* @param customerMeeting
*/ */
public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting); : void {
public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void {
this.meetingService.apiEditCustomerMeeting(customerMeeting).subscribe( this.meetingService.apiEditCustomerMeeting(customerMeeting).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer, true); this.customerView.setData(data.result_data as ICustomer, true);
}, },
error => {} error => {}
); );
};
}


/** /**
* Deletes customer meeting entry * Deletes customer meeting entry
* @param customerMeetingId
*/ */
public deleteCustomerMeetingFunction(customerMeetingId: number); : void {
public deleteCustomerMeetingFunction(customerMeetingId: number): void {
this.meetingService.apiDeleteCustomerMeeting(customerMeetingId).subscribe( this.meetingService.apiDeleteCustomerMeeting(customerMeetingId).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
@@ -240,9 +228,8 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn


/** /**
* Edit report after meeting has started * Edit report after meeting has started
* @param reportValues
*/ */
public editCustomerMeetingReportFunction(reportValues: any); : void {
public editCustomerMeetingReportFunction(reportValues: any): void {
const meetingId: number = reportValues.id; const meetingId: number = reportValues.id;
const report: string = reportValues.report; const report: string = reportValues.report;
this.meetingService.apiEditCustomerMeetingReport(meetingId, report).subscribe( this.meetingService.apiEditCustomerMeetingReport(meetingId, report).subscribe(
@@ -251,13 +238,12 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn
}, },
error => {} error => {}
); );
};
}


/** /**
* Shortcut to customer detail * Shortcut to customer detail
* @param customer
*/ */
public shortcutFunction(customer: ICustomer); : void {
public shortcutFunction(customer: ICustomer) : void {
this.customerService.apiGetCustomerFull(customer.id).subscribe( this.customerService.apiGetCustomerFull(customer.id).subscribe(
data => { data => {
this.customerView.setData(data.result_data as ICustomer); this.customerView.setData(data.result_data as ICustomer);
@@ -265,13 +251,13 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn
}, },
error => {} error => {}
); );
};
}


/** /**
* Destroy * Destroy
*/ */
ngOnDestroy(); : void {
if(this.customersSub !== null && this.customersSub !== undefined); {
ngOnDestroy(): void {
if(this.customersSub !== null && this.customersSub !== undefined) {
this.customersSub.unsubscribe(); this.customersSub.unsubscribe();
} }
} }


+ 6
- 9
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts Wyświetl plik

@@ -2,7 +2,7 @@ import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'
import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {ICustomerContact} from '../../../../model/entities/customer-contact';
import {Factory} from '../../../../factory/factory'; import {Factory} from '../../../../factory/factory';
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {AppService} from '../../../../services/app.service'; import {AppService} from '../../../../services/app.service';
import {IConfig} from '../../../../model/virtual/config'; import {IConfig} from '../../../../model/virtual/config';
import {FormComponent} from '../../../../components/form-component'; import {FormComponent} from '../../../../components/form-component';
@@ -23,8 +23,8 @@ export class CustomerContactPersonEditComponent extends FormComponent implements
public customerContact: ICustomerContact; public customerContact: ICustomerContact;
public config: IConfig; public config: IConfig;


constructor(private appService: AppService, protected scrollToService: ScrollToService) {
super(scrollToService);
constructor(private appService: AppService, /*protected scrollToService: ScrollToService*/) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -34,7 +34,6 @@ export class CustomerContactPersonEditComponent extends FormComponent implements


/** /**
* Sets data * Sets data
* @param customerContact
*/ */
public setData(customerContact: ICustomerContact): void { public setData(customerContact: ICustomerContact): void {
this.customerContact = customerContact; this.customerContact = customerContact;
@@ -52,15 +51,13 @@ export class CustomerContactPersonEditComponent extends FormComponent implements


/** /**
* Saves customer * Saves customer
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
if (valid) { if (valid) {
// Check if date is valid // Check if date is valid
if (null === this.customerContact.date_of_birth || if (null === this.customerContact.date_of_birth ||
!(null === this.customerContact.date_of_birth && Utils.isValidDate(this.customerContact.date_of_birth))) {
(null !== this.customerContact.date_of_birth && Utils.isValidDate(this.customerContact.date_of_birth))) {
if (this.isCreationMode) { if (this.isCreationMode) {
this.createCustomerContact.emit(this.customerContact); this.createCustomerContact.emit(this.customerContact);
} else { } else {
@@ -69,10 +66,10 @@ export class CustomerContactPersonEditComponent extends FormComponent implements
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.errorMsg = 'Bitte korrektes Datum eingeben.'; this.errorMsg = 'Bitte korrektes Datum eingeben.';
this.scrollUp(this.isCreationMode ? 'customer-contact-person-modal' : 'customer-contact-person-edit-modal');
// todo this.scrollUp(this.isCreationMode ? 'customer-contact-person-modal' : 'customer-contact-person-edit-modal');
} }
} else { } else {
this.scrollUp(this.isCreationMode ? 'customer-contact-person-modal' : 'customer-contact-person-edit-modal');
// todo this.scrollUp(this.isCreationMode ? 'customer-contact-person-modal' : 'customer-contact-person-edit-modal');
} }
} }




+ 4
- 4
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.html Wyświetl plik

@@ -21,15 +21,15 @@
</ag-grid-angular> </ag-grid-angular>
</div> </div>


<app-modal [overlay]="true" #modalCustomerContactPersonDetail>
<app-spt-modal [overlay]="true" #modalCustomerContactPersonDetail>
<app-customer-contact-person-detail #customerContactPersonDetail (editCustomerContact)="editCustomerContactFunction($event)" <app-customer-contact-person-detail #customerContactPersonDetail (editCustomerContact)="editCustomerContactFunction($event)"
(deleteCustomerContact)="deleteCustomerContactFunction($event)" (deleteCustomerContact)="deleteCustomerContactFunction($event)"
(shortcut)="shortcutFunction($event)"></app-customer-contact-person-detail> (shortcut)="shortcutFunction($event)"></app-customer-contact-person-detail>
</app-modal>
</app-spt-modal>


<app-modal [overlay]="true" #modalCustomerContactPersonEdit>
<app-spt-modal [overlay]="true" #modalCustomerContactPersonEdit>
<div id="customer-contact-person-modal"> <div id="customer-contact-person-modal">
<app-customer-contact-person-edit #customerContactPersonEdit <app-customer-contact-person-edit #customerContactPersonEdit
(createCustomerContact)="createCustomerContactFunction($event)"></app-customer-contact-person-edit> (createCustomerContact)="createCustomerContactFunction($event)"></app-customer-contact-person-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 4
- 7
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts Wyświetl plik

@@ -2,7 +2,7 @@ import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'
import {ICustomer} from '../../../../model/entities/customer'; import {ICustomer} from '../../../../model/entities/customer';
import {Factory} from '../../../../factory/factory'; import {Factory} from '../../../../factory/factory';
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {AppService} from '../../../../services/app.service'; import {AppService} from '../../../../services/app.service';
import {IConfig} from '../../../../model/virtual/config'; import {IConfig} from '../../../../model/virtual/config';
import {FormComponent} from '../../../../components/form-component'; import {FormComponent} from '../../../../components/form-component';
@@ -26,8 +26,8 @@ export class CustomerDataEditComponent extends FormComponent implements OnInit {
public usersById: {}; public usersById: {};
public consultant: IUser; public consultant: IUser;


constructor(private appService: AppService, protected scrollToService: ScrollToService) {
super(scrollToService);
constructor(private appService: AppService, /*protected scrollToService: ScrollToService*/) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -40,7 +40,6 @@ export class CustomerDataEditComponent extends FormComponent implements OnInit {


/** /**
* Sets data * Sets data
* @param customer
*/ */
public setData(customer: ICustomer): void { public setData(customer: ICustomer): void {
this.customer = customer; this.customer = customer;
@@ -58,8 +57,6 @@ export class CustomerDataEditComponent extends FormComponent implements OnInit {


/** /**
* Saves customer * Saves customer
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
@@ -71,7 +68,7 @@ export class CustomerDataEditComponent extends FormComponent implements OnInit {
} }
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.scrollUp(this.isCreationMode ? 'customer-data-modal' : 'customer-data-edit-modal');
// todo this.scrollUp(this.isCreationMode ? 'customer-data-modal' : 'customer-data-edit-modal');
} }
} }




+ 2
- 2
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-view/customer-data-view.component.html Wyświetl plik

@@ -33,8 +33,8 @@
</div> </div>
</div> </div>


<app-modal [overlay]="true" #modalCustomerDataEdit>
<app-spt-modal [overlay]="true" #modalCustomerDataEdit>
<div id="customer-data-edit-modal"> <div id="customer-data-edit-modal">
<app-customer-data-edit #customerDataEdit (editCustomer)="editCustomerFunction($event)"></app-customer-data-edit> <app-customer-data-edit #customerDataEdit (editCustomer)="editCustomerFunction($event)"></app-customer-data-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 26
- 33
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts Wyświetl plik

@@ -17,9 +17,8 @@ import {AppService} from '../../../../services/app.service';
import {IMeetingType} from '../../../../model/entities/meeting-type'; import {IMeetingType} from '../../../../model/entities/meeting-type';
import {IConfig} from '../../../../model/virtual/config'; import {IConfig} from '../../../../model/virtual/config';
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {CustomerService} from '../../../../services/customer.service'; import {CustomerService} from '../../../../services/customer.service';
import {null === ; } from; 'util';
import {MeetingService} from '../../../../services/meeting.service'; import {MeetingService} from '../../../../services/meeting.service';
import {FormComponent} from '../../../../components/form-component'; import {FormComponent} from '../../../../components/form-component';
import {Const} from '../../../../utils/const'; import {Const} from '../../../../utils/const';
@@ -56,8 +55,8 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI
public hasEditRights: boolean; public hasEditRights: boolean;
public hasReportRights: boolean; public hasReportRights: boolean;


constructor(public appService: AppService, private customerService: CustomerService, private meetingService: MeetingService, protected scrollToService: ScrollToService, private ref: ChangeDetectorRef) {
super(scrollToService);
constructor(public appService: AppService, private customerService: CustomerService, private meetingService: MeetingService, /*protected scrollToService: ScrollToService,*/ private ref: ChangeDetectorRef) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -79,8 +78,6 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Set data * Set data
* @param customer
* @param customerMeeting
*/ */
public setData(customer: ICustomer, customerMeeting: ICustomerMeeting): void { public setData(customer: ICustomer, customerMeeting: ICustomerMeeting): void {
this.customer = customer; this.customer = customer;
@@ -97,16 +94,15 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Updates data * Updates data
* @param customer
*/ */
public updateData(customer: ICustomer): void { public updateData(customer: ICustomer): void {
this.customer = customer; this.customer = customer;
if (!null === this.customerMeeting.id) { } } {) {
for (let i = 0; i < this.customer.v_customer_meetings.length; i++) {
if (this.customer.v_customer_meetings[i].id === this.customerMeeting.id) {
this.customerMeeting = this.customer.v_customer_meetings[i];
if (null !== this.customerMeeting.id){
this.customer.v_customer_meetings.forEach(item => {
if (item.id === this.customerMeeting.id) {
this.customerMeeting = item;
} }
}
});
this.setMeetingData(); this.setMeetingData();
} }
} }
@@ -114,16 +110,16 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI
/** /**
* Sets variables for meeting * Sets variables for meeting
*/ */
public setMeetingData(); {
public setMeetingData(): void {
this.errorMsg = ''; this.errorMsg = '';
this.reportFormVisible = false; this.reportFormVisible = false;
this.reportOld = this.customerMeeting.report; this.reportOld = this.customerMeeting.report;
this.creator = this.appService.getConfig().vc_user_by_id[this.customerMeeting.creation_user_id]; this.creator = this.appService.getConfig().vc_user_by_id[this.customerMeeting.creation_user_id];
this.owner = this.appService.getConfig().vc_user_by_id[this.customerMeeting.owner_user_id]; this.owner = this.appService.getConfig().vc_user_by_id[this.customerMeeting.owner_user_id];
this.participants = []; this.participants = [];
for (let i = 0; i < this.customerMeeting.v_participants.length; i++) {
this.participants.push(this.appService.getConfig().vc_user_by_id[this.customerMeeting.v_participants[i].participant_user_id]);
}
this.customerMeeting.v_participants.forEach(item => {
this.participants.push(this.appService.getConfig().vc_user_by_id[item.participant_user_id]);
});
this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.customerMeeting.meeting_type_id]; this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.customerMeeting.meeting_type_id];
this.date = Utils.getDateTimeToDisplay(this.customerMeeting.start_date); this.date = Utils.getDateTimeToDisplay(this.customerMeeting.start_date);
this.timeStart = Utils.getDateTimeToDisplay(this.customerMeeting.start_date, false, true); this.timeStart = Utils.getDateTimeToDisplay(this.customerMeeting.start_date, false, true);
@@ -137,25 +133,24 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI
/** /**
* Edit meeting entry * Edit meeting entry
*/ */
public editEntry(); : void {
public editEntry(): void {
this.isEditMode = true; this.isEditMode = true;
this.customerMeetingDetailEdit.setData(this.customer, Utils.deepClone(this.customerMeeting) as ICustomerMeeting); this.customerMeetingDetailEdit.setData(this.customer, Utils.deepClone(this.customerMeeting) as ICustomerMeeting);
};
}


/** /**
* Edits meeting entry * Edits meeting entry
* @param customerMeeting
*/ */
public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting); {
public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void {
this.editMeeting.emit(customerMeeting); this.editMeeting.emit(customerMeeting);
} }


/** /**
* Delete meeting entry * Delete meeting entry
*/ */
public deleteEntry(); : void {
public deleteEntry(): void {
const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?');
if(confirmAction == true; ) {
if (confirmAction === true) {
this.deleteMeeting.emit(this.customerMeeting.id); this.deleteMeeting.emit(this.customerMeeting.id);
} }
} }
@@ -163,44 +158,42 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI
/** /**
* Check if edit report after meeting has started * Check if edit report after meeting has started
*/ */
public editReport(); : void {
public editReport(): void {
this.meetingService.apiCheckCustomerMeetingReport(this.customerMeeting.id).subscribe( this.meetingService.apiCheckCustomerMeetingReport(this.customerMeeting.id).subscribe(
data => { data => {
this.reportFormVisible = data.result_data as boolean; this.reportFormVisible = data.result_data as boolean;
// NOTE: We need manual change detection in this component // NOTE: We need manual change detection in this component
this.ref.detectChanges(); this.ref.detectChanges();
this.scrollUp('customer-meeting-edit-report');
// todo this.scrollUp('customer-meeting-edit-report');
}, },
error => { error => {
} }
); );
};
}


/** /**
* Resets Form Validation * Resets Form Validation
*/ */
public resetFormValidation(); : void {
if(this.reportFormVisible); {
public resetFormValidation(): void {
if (this.reportFormVisible) {
this.customerMeetingReportForm.form.markAsUntouched(); this.customerMeetingReportForm.form.markAsUntouched();
} }
} }


/** /**
* Saves customer meeting report * Saves customer meeting report
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }); : void {
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
if(valid) {
if (valid) {
this.editMeetingReport.emit({ this.editMeetingReport.emit({
id: this.customerMeeting.id, id: this.customerMeeting.id,
report: this.customerMeeting.report report: this.customerMeeting.report
}); });
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.scrollUp('customer-meeting-edit-report');
// todo this.scrollUp('customer-meeting-edit-report');
} }
};
}


} }

+ 7
- 17
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts Wyświetl plik

@@ -2,7 +2,7 @@ import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {ICustomerMeeting} from '../../../../model/entities/customer-meeting'; import {ICustomerMeeting} from '../../../../model/entities/customer-meeting';
import {ICustomer} from '../../../../model/entities/customer'; import {ICustomer} from '../../../../model/entities/customer';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {Factory} from '../../../../factory/factory'; import {Factory} from '../../../../factory/factory';
import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {ICustomerContact} from '../../../../model/entities/customer-contact';
import {Utils} from '../../../../utils/utils'; import {Utils} from '../../../../utils/utils';
@@ -43,8 +43,8 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni
public contactPersonValue: string; public contactPersonValue: string;
public config: IConfig; public config: IConfig;


constructor(public appService: AppService, protected scrollToService: ScrollToService) {
super(scrollToService);
constructor(public appService: AppService, /*protected scrollToService: ScrollToService*/) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -70,9 +70,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Sets data * Sets data
* @param customer
* @param customerMeeting
* @param isCreationMode
*/ */
public setData(customer: ICustomer, customerMeeting: ICustomerMeeting, isCreationMode: boolean = false): void { public setData(customer: ICustomer, customerMeeting: ICustomerMeeting, isCreationMode: boolean = false): void {
this.customer = customer; this.customer = customer;
@@ -123,7 +120,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select contact * On select contact
* @param e
*/ */
public selectContact(e: any) { public selectContact(e: any) {
this.customerMeeting.customer_contact_id = e.target.value; this.customerMeeting.customer_contact_id = e.target.value;
@@ -149,7 +145,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select owner * On select owner
* @param e
*/ */
public selectOwner(e: any) { public selectOwner(e: any) {
if (e.target.value !== '0: null') { if (e.target.value !== '0: null') {
@@ -170,7 +165,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select meeting type * On select meeting type
* @param e
*/ */
public selectMeetingType(e: any) { public selectMeetingType(e: any) {
this.customerMeeting.meeting_type_id = e.target.value; this.customerMeeting.meeting_type_id = e.target.value;
@@ -178,7 +172,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select participant * On select participant
* @param e
*/ */
public participantsChange(e: any) { public participantsChange(e: any) {
const participantUserId: number = parseInt(e.target.value); const participantUserId: number = parseInt(e.target.value);
@@ -199,7 +192,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Checks if participant is selected * Checks if participant is selected
* @param id
*/ */
public checkParticipants(id: number) { public checkParticipants(id: number) {
return this.selectedParticipantsById.hasOwnProperty(id); return this.selectedParticipantsById.hasOwnProperty(id);
@@ -214,8 +206,6 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Saves customer meeting * Saves customer meeting
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
@@ -224,7 +214,7 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni
// Check if start time before end time // Check if start time before end time
if (parseInt(this.timeStart.replace(/\:/g, '')) - parseInt(this.timeEnd.replace(/\:/g, '')) > 0) { if (parseInt(this.timeStart.replace(/\:/g, '')) - parseInt(this.timeEnd.replace(/\:/g, '')) > 0) {
this.errorMsg = 'Zeit (Ende) darf nicht vor Zeit (Start) liegen.'; this.errorMsg = 'Zeit (Ende) darf nicht vor Zeit (Start) liegen.';
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} else { } else {
this.customerMeeting.start_date = this.startDate + ' ' + this.timeStart + ':00'; this.customerMeeting.start_date = this.startDate + ' ' + this.timeStart + ':00';
this.customerMeeting.end_date = this.startDate + ' ' + this.timeEnd + ':00'; this.customerMeeting.end_date = this.startDate + ' ' + this.timeEnd + ':00';
@@ -235,7 +225,7 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni
this.customerMeeting.v_participants.push(this.selectedParticipantsById[spId]); this.customerMeeting.v_participants.push(this.selectedParticipantsById[spId]);
} }


if (this.customerMeeting.customer_contact_id == -1) {
if (this.customerMeeting.customer_contact_id === -1) {
this.customerMeeting.customer_contact_id = null; this.customerMeeting.customer_contact_id = null;
} }


@@ -247,11 +237,11 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.errorMsg = 'Bitte korrektes Datum eingeben.'; this.errorMsg = 'Bitte korrektes Datum eingeben.';
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} }
} }
} else { } else {
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} }
} }




+ 4
- 4
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.html Wyświetl plik

@@ -20,14 +20,14 @@
</ag-grid-angular> </ag-grid-angular>
</div> </div>


<app-modal [overlay]="true" #modalCustomerMeetingDetail>
<app-spt-modal [overlay]="true" #modalCustomerMeetingDetail>
<app-customer-meeting-detail #customerMeetingDetail (editMeeting)="editCustomerMeetingFunction($event)" <app-customer-meeting-detail #customerMeetingDetail (editMeeting)="editCustomerMeetingFunction($event)"
(deleteMeeting)="deleteCustomerMeetingFunction($event)" (deleteMeeting)="deleteCustomerMeetingFunction($event)"
(editMeetingReport)="editCustomerMeetingReportFunction($event)"></app-customer-meeting-detail> (editMeetingReport)="editCustomerMeetingReportFunction($event)"></app-customer-meeting-detail>
</app-modal>
</app-spt-modal>


<app-modal [overlay]="true" #modalCustomerMeetingEdit>
<app-spt-modal [overlay]="true" #modalCustomerMeetingEdit>
<div id="customer-meeting-modal"> <div id="customer-meeting-modal">
<app-customer-meeting-edit #customerMeetingEdit (createMeeting)="createCustomerMeetingFunction($event)"></app-customer-meeting-edit> <app-customer-meeting-edit #customerMeetingEdit (createMeeting)="createCustomerMeetingFunction($event)"></app-customer-meeting-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 1
- 8
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts Wyświetl plik

@@ -87,8 +87,6 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI


/** /**
* Sets data * Sets data
* @param customer
* @param isUpdate
*/ */
public setData(customer: ICustomer, isUpdate: boolean): void { public setData(customer: ICustomer, isUpdate: boolean): void {
this.customer = customer; this.customer = customer;
@@ -139,13 +137,12 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI
phone: value.phone_no, phone: value.phone_no,
mobile: value.mobile_no, mobile: value.mobile_no,
}); });
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a.date, b.date, false));
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false));
}); });
} }


/** /**
* On row click * On row click
* @param e
*/ */
public rowClicked(e: any) { public rowClicked(e: any) {
this.modalCustomerMeetingDetail.openModal(); this.modalCustomerMeetingDetail.openModal();
@@ -162,7 +159,6 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI


/** /**
* Creates customer meeting * Creates customer meeting
* @param customerMeeting
*/ */
public createCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void { public createCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void {
this.createMeeting.emit(customerMeeting); this.createMeeting.emit(customerMeeting);
@@ -170,7 +166,6 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI


/** /**
* Edits meeting entry * Edits meeting entry
* @param customerMeeting
*/ */
public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting) { public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting) {
this.editMeeting.emit(customerMeeting); this.editMeeting.emit(customerMeeting);
@@ -178,7 +173,6 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI


/** /**
* Deletes customer meeting * Deletes customer meeting
* @param meetingId
*/ */
public deleteCustomerMeetingFunction(meetingId: number): void { public deleteCustomerMeetingFunction(meetingId: number): void {
this.deleteMeeting.emit(meetingId); this.deleteMeeting.emit(meetingId);
@@ -186,7 +180,6 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI


/** /**
* Edit report after meeting has started * Edit report after meeting has started
* @param reportValues
*/ */
public editCustomerMeetingReportFunction(reportValues: any): void { public editCustomerMeetingReportFunction(reportValues: any): void {
this.editMeetingReport.emit(reportValues); this.editMeetingReport.emit(reportValues);


+ 4
- 10
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts Wyświetl plik

@@ -5,7 +5,7 @@ import {Factory} from '../../../../factory/factory';
import {ICustomer} from '../../../../model/entities/customer'; import {ICustomer} from '../../../../model/entities/customer';
import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {ICustomerContact} from '../../../../model/entities/customer-contact';
import {Utils} from '../../../../utils/utils'; import {Utils} from '../../../../utils/utils';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {FormComponent} from '../../../../components/form-component'; import {FormComponent} from '../../../../components/form-component';


@Component({ @Component({
@@ -27,8 +27,8 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit {
public isExistingCustomerContact: boolean; public isExistingCustomerContact: boolean;
public contactId: string; public contactId: string;


constructor(protected scrollToService: ScrollToService) {
super(scrollToService);
constructor(/* protected scrollToService: ScrollToService */) {
super(/* scrollToService */);
} }


ngOnInit() { ngOnInit() {
@@ -44,9 +44,6 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit {


/** /**
* Sets data * Sets data
* @param customer
* @param customerNote
* @param isCreationMode
*/ */
public setData(customer: ICustomer, customerNote: ICustomerNote, isCreationMode = false): void { public setData(customer: ICustomer, customerNote: ICustomerNote, isCreationMode = false): void {
this.customer = customer; this.customer = customer;
@@ -68,7 +65,6 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit {


/** /**
* On select contact * On select contact
* @param e
*/ */
public selectContact(e: any) { public selectContact(e: any) {
this.customerNote.customer_contact_id = e.target.value; this.customerNote.customer_contact_id = e.target.value;
@@ -103,8 +99,6 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit {


/** /**
* Saves customer * Saves customer
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
@@ -119,7 +113,7 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit {
} }
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.scrollUp(this.isCreationMode ? 'customer-note-modal' : 'customer-note-edit-modal');
// todo this.scrollUp(this.isCreationMode ? 'customer-note-modal' : 'customer-note-edit-modal');
} }
} }




+ 4
- 4
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-view/customer-note-view.component.html Wyświetl plik

@@ -20,13 +20,13 @@
</ag-grid-angular> </ag-grid-angular>
</div> </div>


<app-modal [overlay]="true" #modalCustomerNoteDetail>
<app-spt-modal [overlay]="true" #modalCustomerNoteDetail>
<app-customer-note-detail #customerNoteDetail (editNote)="editCustomerNoteFunction($event)" <app-customer-note-detail #customerNoteDetail (editNote)="editCustomerNoteFunction($event)"
(deleteNote)="deleteCustomerNoteFunction($event)"></app-customer-note-detail> (deleteNote)="deleteCustomerNoteFunction($event)"></app-customer-note-detail>
</app-modal>
</app-spt-modal>


<app-modal [overlay]="true" #modalCustomerNoteEdit>
<app-spt-modal [overlay]="true" #modalCustomerNoteEdit>
<div id="customer-note-modal"> <div id="customer-note-modal">
<app-customer-note-edit #customerNoteEdit (createNote)="createCustomerNoteFunction($event)"></app-customer-note-edit> <app-customer-note-edit #customerNoteEdit (createNote)="createCustomerNoteFunction($event)"></app-customer-note-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 18
- 24
httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-view/customer-note-view.component.ts Wyświetl plik

@@ -65,8 +65,6 @@ export class CustomerNoteViewComponent extends AgGridComponent implements OnInit


/** /**
* Sets data * Sets data
* @param customer
* @param isUpdate
*/ */
public setData(customer: ICustomer, isUpdate: boolean): void { public setData(customer: ICustomer, isUpdate: boolean): void {
this.customer = customer; this.customer = customer;
@@ -87,38 +85,37 @@ export class CustomerNoteViewComponent extends AgGridComponent implements OnInit
public generateEntries(): void { public generateEntries(): void {
this.rowData = []; this.rowData = [];
const items: {}[] = []; const items: {}[] = [];
for (let i = 0; i < this.customerNote.length; i++) {
for (const item of this.customerNote) {
let ccGender = ''; let ccGender = '';
if (this.customerNote[i].gender == 'male') {
if (item.gender === 'male') {
ccGender = 'Herr'; ccGender = 'Herr';
} else if (this.customerNote[i].gender == 'female') {
} else if (item.gender === 'female') {
ccGender = 'Frau'; ccGender = 'Frau';
} else if (this.customerNote[i].gender == 'diverse') {
} else if (item.gender === 'diverse') {
ccGender = 'Divers'; ccGender = 'Divers';
} }
items.push({ items.push({
id: this.customerNote[i].id,
date: this.customerNote[i].note_date,
title: this.customerNote[i].title,
comment: this.customerNote[i].comment,
id: item.id,
date: item.note_date,
title: item.title,
comment: item.comment,
gender: ccGender, gender: ccGender,
firstname: this.customerNote[i].firstname,
lastname: this.customerNote[i].lastname,
email: this.customerNote[i].email,
phone_no: this.customerNote[i].phone_no,
mobile_no: this.customerNote[i].mobile_no,
fax_no: this.customerNote[i].fax_no,
department: this.customerNote[i].department,
creation_date: this.customerNote[i].creation_date,
creator: this.customerNote[i].creation_user_firstname + ' ' + this.customerNote[i].creation_user_lastname,
firstname: item.firstname,
lastname: item.lastname,
email: item.email,
phone_no: item.phone_no,
mobile_no: item.mobile_no,
fax_no: item.fax_no,
department: item.department,
creation_date: item.creation_date,
creator: item.creation_user_firstname + ' ' + item.creation_user_lastname,
}); });
} }
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a.date, b.date, false));
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false));
} }


/** /**
* On row click * On row click
* @param e
*/ */
public rowClicked(e: any) { public rowClicked(e: any) {
this.modalCustomerNoteDetail.openModal(); this.modalCustomerNoteDetail.openModal();
@@ -135,7 +132,6 @@ export class CustomerNoteViewComponent extends AgGridComponent implements OnInit


/** /**
* Creates customer note * Creates customer note
* @param customerNote
*/ */
public createCustomerNoteFunction(customerNote: ICustomerNote): void { public createCustomerNoteFunction(customerNote: ICustomerNote): void {
this.createNote.emit(customerNote); this.createNote.emit(customerNote);
@@ -143,7 +139,6 @@ export class CustomerNoteViewComponent extends AgGridComponent implements OnInit


/** /**
* Edits note entry * Edits note entry
* @param customerNote
*/ */
public editCustomerNoteFunction(customerNote: ICustomerNote) { public editCustomerNoteFunction(customerNote: ICustomerNote) {
this.editNote.emit(customerNote); this.editNote.emit(customerNote);
@@ -151,7 +146,6 @@ export class CustomerNoteViewComponent extends AgGridComponent implements OnInit


/** /**
* Deletes customer note * Deletes customer note
* @param noteId
*/ */
public deleteCustomerNoteFunction(noteId: number): void { public deleteCustomerNoteFunction(noteId: number): void {
this.deleteNote.emit(noteId); this.deleteNote.emit(noteId);


+ 6
- 11
httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts Wyświetl plik

@@ -16,7 +16,7 @@ import {IConfig} from '../../../model/virtual/config';
import {AppService} from '../../../services/app.service'; import {AppService} from '../../../services/app.service';
import {IUser} from '../../../model/entities/user'; import {IUser} from '../../../model/entities/user';
import {FormComponent} from '../../../components/form-component'; import {FormComponent} from '../../../components/form-component';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {MeetingService} from '../../../services/meeting.service'; import {MeetingService} from '../../../services/meeting.service';
import {Const} from '../../../utils/const'; import {Const} from '../../../utils/const';


@@ -51,8 +51,8 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI
public reportOld: string; public reportOld: string;
public hasAdminRights: boolean; public hasAdminRights: boolean;


constructor(public appService: AppService, private meetingService: MeetingService, protected scrollToService: ScrollToService, private ref: ChangeDetectorRef) {
super(scrollToService);
constructor(public appService: AppService, private meetingService: MeetingService, /*protected scrollToService: ScrollToService,*/ private ref: ChangeDetectorRef) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -74,7 +74,6 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Set data * Set data
* @param internalMeeting
*/ */
public setData(internalMeeting: IInternalMeeting): void { public setData(internalMeeting: IInternalMeeting): void {
this.internalMeeting = internalMeeting; this.internalMeeting = internalMeeting;
@@ -83,7 +82,6 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Updates data * Updates data
* @param internalMeeting
*/ */
public updateData(internalMeeting: IInternalMeeting): void { public updateData(internalMeeting: IInternalMeeting): void {
if (null !== this.internalMeeting.id) { if (null !== this.internalMeeting.id) {
@@ -125,7 +123,6 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Edits meeting entry * Edits meeting entry
* @param internalMeeting
*/ */
public editInternalMeetingFunction(internalMeeting: IInternalMeeting) { public editInternalMeetingFunction(internalMeeting: IInternalMeeting) {
this.editMeeting.emit(internalMeeting); this.editMeeting.emit(internalMeeting);
@@ -136,7 +133,7 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI
*/ */
public deleteEntry(): void { public deleteEntry(): void {
const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?');
if (confirmAction == true) {
if (confirmAction === true) {
this.deleteMeeting.emit(this.internalMeeting.id); this.deleteMeeting.emit(this.internalMeeting.id);
} }
} }
@@ -150,7 +147,7 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI
this.reportFormVisible = data.result_data as boolean; this.reportFormVisible = data.result_data as boolean;
// NOTE: We need manual change detection in this component // NOTE: We need manual change detection in this component
this.ref.detectChanges(); this.ref.detectChanges();
this.scrollUp('internal-meeting-edit-report');
// todo this.scrollUp('internal-meeting-edit-report');
}, },
error => { error => {
} }
@@ -168,8 +165,6 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI


/** /**
* Saves internal meeting report * Saves internal meeting report
* @param value
* @param valid
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
@@ -180,7 +175,7 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI
}); });
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.scrollUp('internal-meeting-edit-report');
// todo this.scrollUp('internal-meeting-edit-report');
} }
} }




+ 6
- 12
httpdocs/plp-angular/src/app/views/start/internal-meeting-edit/internal-meeting-edit.component.ts Wyświetl plik

@@ -1,7 +1,7 @@
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
import {IConfig} from '../../../model/virtual/config'; import {IConfig} from '../../../model/virtual/config';
import {AppService} from '../../../services/app.service'; import {AppService} from '../../../services/app.service';
import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
// import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to';
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {Factory} from '../../../factory/factory'; import {Factory} from '../../../factory/factory';
import {IInternalMeeting} from '../../../model/entities/internal-meeting'; import {IInternalMeeting} from '../../../model/entities/internal-meeting';
@@ -36,8 +36,8 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni
public timeEnd: string; public timeEnd: string;
public config: IConfig; public config: IConfig;


constructor(public appService: AppService, protected scrollToService: ScrollToService) {
super(scrollToService);
constructor(public appService: AppService, /*protected scrollToService: ScrollToService*/) {
super(/*scrollToService*/);
} }


ngOnInit() { ngOnInit() {
@@ -59,8 +59,6 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Sets data * Sets data
* @param internalMeeting
* @param isCreationMode
*/ */
public setData(internalMeeting: IInternalMeeting, isCreationMode = false): void { public setData(internalMeeting: IInternalMeeting, isCreationMode = false): void {
this.internalMeeting = internalMeeting; this.internalMeeting = internalMeeting;
@@ -102,7 +100,6 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select owner * On select owner
* @param e
*/ */
public selectOwner(e: any) { public selectOwner(e: any) {
if (e.target.value !== '0: null') { if (e.target.value !== '0: null') {
@@ -123,7 +120,6 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni


/** /**
* On select participant * On select participant
* @param e
*/ */
public participantsChange(e: any) { public participantsChange(e: any) {
const participantUserId: number = parseInt(e.target.value); const participantUserId: number = parseInt(e.target.value);
@@ -144,7 +140,6 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Checks if participant is selected * Checks if participant is selected
* @param id
*/ */
public checkParticipants(id: number) { public checkParticipants(id: number) {
if (this.selectedParticipantsById.hasOwnProperty(id)) { if (this.selectedParticipantsById.hasOwnProperty(id)) {
@@ -163,7 +158,6 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni


/** /**
* Saves internal meeting * Saves internal meeting
* @param value
*/ */
public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { public onFormSubmit({value, valid}: { value: any, valid: boolean }): void {
this.errorMsg = 'Bitte beheben Sie alle Fehler.'; this.errorMsg = 'Bitte beheben Sie alle Fehler.';
@@ -174,7 +168,7 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni
const compareDateEnd = new Date(this.dateEnd + 'T' + this.timeEnd + ':00'); const compareDateEnd = new Date(this.dateEnd + 'T' + this.timeEnd + ':00');
if (compareDateStart > compareDateEnd) { if (compareDateStart > compareDateEnd) {
this.errorMsg = 'Datum / Zeit (Ende) darf nicht vor Datum / Zeit (Start) liegen.'; this.errorMsg = 'Datum / Zeit (Ende) darf nicht vor Datum / Zeit (Start) liegen.';
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} else { } else {
this.internalMeeting.start_date = this.dateStart + ' ' + this.timeStart + ':00'; this.internalMeeting.start_date = this.dateStart + ' ' + this.timeStart + ':00';
this.internalMeeting.end_date = this.dateEnd + ' ' + this.timeEnd + ':00'; this.internalMeeting.end_date = this.dateEnd + ' ' + this.timeEnd + ':00';
@@ -193,11 +187,11 @@ export class InternalMeetingEditComponent extends FormComponent implements OnIni
this.errorMsg = ''; this.errorMsg = '';
} else { } else {
this.errorMsg = 'Bitte korrektes Datum eingeben.'; this.errorMsg = 'Bitte korrektes Datum eingeben.';
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} }
} }
} else { } else {
this.scrollUp(identifier);
// todo this.scrollUp(identifier);
} }
} }




+ 33
- 215
httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts Wyświetl plik

@@ -9,12 +9,6 @@ import {Utils} from '../../../utils/utils';
import {IUser} from '../../../model/entities/user'; import {IUser} from '../../../model/entities/user';
import {AppService} from '../../../services/app.service'; import {AppService} from '../../../services/app.service';
import {IInternalMeeting} from '../../../model/entities/internal-meeting'; import {IInternalMeeting} from '../../../model/entities/internal-meeting';
import {IOperatorMeeting} from '../../../model/entities/operator-meeting';
import {IOperator} from '../../../model/entities/operator';
import {IProductionMeeting} from '../../../model/entities/production-meeting';
import {IServiceMeeting} from '../../../model/entities/service-meeting';
import {IProduction} from '../../../model/entities/production';
import {IService} from '../../../model/entities/service';


const colors: any = { const colors: any = {
colorCustomer: { colorCustomer: {
@@ -52,15 +46,9 @@ export class MeetingCalendarComponent implements OnInit {


static MEETING_TYPE_CUSTOMER = 'customer_meeting'; static MEETING_TYPE_CUSTOMER = 'customer_meeting';
static MEETING_TYPE_INTERNAL = 'internal_meeting'; static MEETING_TYPE_INTERNAL = 'internal_meeting';
static MEETING_TYPE_OPERATOR = 'operator_meeting';
static MEETING_TYPE_PRODUCTION = 'production_meeting';
static MEETING_TYPE_SERVICE = 'service_meeting';


@Output() editCustomerMeeting: EventEmitter<ICustomerMeeting> = new EventEmitter<ICustomerMeeting>(); @Output() editCustomerMeeting: EventEmitter<ICustomerMeeting> = new EventEmitter<ICustomerMeeting>();
@Output() editOperatorMeeting: EventEmitter<IOperatorMeeting> = new EventEmitter<IOperatorMeeting>();
@Output() editInternalMeeting: EventEmitter<IInternalMeeting> = new EventEmitter<IInternalMeeting>(); @Output() editInternalMeeting: EventEmitter<IInternalMeeting> = new EventEmitter<IInternalMeeting>();
@Output() editProductionMeeting: EventEmitter<IProductionMeeting> = new EventEmitter<IProductionMeeting>();
@Output() editServiceMeeting: EventEmitter<IServiceMeeting> = new EventEmitter<IServiceMeeting>();


@ViewChild('modalContent', { static: true }) modalContent: TemplateRef<any>; @ViewChild('modalContent', { static: true }) modalContent: TemplateRef<any>;


@@ -81,18 +69,9 @@ export class MeetingCalendarComponent implements OnInit {
public activeDayIsOpen: boolean; public activeDayIsOpen: boolean;
private customerMeetings: ICustomerMeeting[]; private customerMeetings: ICustomerMeeting[];
private internalMeetings: IInternalMeeting[]; private internalMeetings: IInternalMeeting[];
private operatorMeetings: IOperatorMeeting[];
private productionMeetings: IProductionMeeting[];
private serviceMeetings: IServiceMeeting[];
private customerMeetingsById: {}; private customerMeetingsById: {};
private internalMeetingsById: {}; private internalMeetingsById: {};
private operatorMeetingsById: {};
private productionMeetingsById: {};
private serviceMeetingsById: {};
private customersById: {}; private customersById: {};
private operatorsById: {};
private productionsById: {};
private servicesById: {};
public users: IUser[]; public users: IUser[];
public usersById: {}; public usersById: {};
public selectableUsers: IUser[]; public selectableUsers: IUser[];
@@ -103,16 +82,7 @@ export class MeetingCalendarComponent implements OnInit {
this.customerMeetingsById = {}; this.customerMeetingsById = {};
this.internalMeetings = []; this.internalMeetings = [];
this.internalMeetingsById = {}; this.internalMeetingsById = {};
this.operatorMeetings = [];
this.operatorMeetingsById = {};
this.productionMeetings = [];
this.productionMeetingsById = {};
this.serviceMeetings = [];
this.serviceMeetingsById = {};
this.customersById = {}; this.customersById = {};
this.operatorsById = {};
this.productionsById = {};
this.servicesById = {};
this.activeDayIsOpen = false; this.activeDayIsOpen = false;
this.actions = [ this.actions = [
{ {
@@ -135,19 +105,10 @@ export class MeetingCalendarComponent implements OnInit {
*/ */
public setData( public setData(
customersById: {}, customersById: {},
operatorsById: {},
productionsById: {},
servicesById: {},
customerMeetings: ICustomerMeeting[], customerMeetings: ICustomerMeeting[],
internalMeetings: IInternalMeeting[], internalMeetings: IInternalMeeting[],
operatorMeetings: IOperatorMeeting[],
productionMeetings: IProductionMeeting[],
serviceMeetings: IServiceMeeting[]
) { ) {
this.customersById = customersById; this.customersById = customersById;
this.operatorsById = operatorsById;
this.productionsById = productionsById;
this.servicesById = servicesById;
this.users = this.appService.getConfig().users; this.users = this.appService.getConfig().users;
this.usersById = this.appService.getConfig().vc_user_by_id; this.usersById = this.appService.getConfig().vc_user_by_id;
this.activeDayIsOpen = false; this.activeDayIsOpen = false;
@@ -155,18 +116,12 @@ export class MeetingCalendarComponent implements OnInit {
this.customerMeetingsById = Utils.getSortedObjFromArray(this.customerMeetings, 'id'); this.customerMeetingsById = Utils.getSortedObjFromArray(this.customerMeetings, 'id');
this.internalMeetings = internalMeetings; this.internalMeetings = internalMeetings;
this.internalMeetingsById = Utils.getSortedObjFromArray(this.internalMeetings, 'id'); this.internalMeetingsById = Utils.getSortedObjFromArray(this.internalMeetings, 'id');
this.operatorMeetings = operatorMeetings;
this.operatorMeetingsById = Utils.getSortedObjFromArray(this.operatorMeetings, 'id');
this.productionMeetings = productionMeetings;
this.productionMeetingsById = Utils.getSortedObjFromArray(this.productionMeetings, 'id');
this.serviceMeetings = serviceMeetings;
this.serviceMeetingsById = Utils.getSortedObjFromArray(this.serviceMeetings, 'id');
this.selectableUsers = []; this.selectableUsers = [];
for (let i = 0; i < this.users.length; i++) {
if (this.users[i].active === true) {
this.selectableUsers.push(this.users[i]);
this.users.forEach(item => {
if (item.active === true) {
this.selectableUsers.push(item);
} }
}
});
for (let k = 0; k < this.selectableUsers.length; k++) { for (let k = 0; k < this.selectableUsers.length; k++) {
if (this.selectableUsers[k].id === this.appService.getAppUser().id) { if (this.selectableUsers[k].id === this.appService.getAppUser().id) {
this.selectedUserIndex = k + 1; this.selectedUserIndex = k + 1;
@@ -183,32 +138,32 @@ export class MeetingCalendarComponent implements OnInit {
this.events = []; this.events = [];
this.closeOpenMonthViewDay(); this.closeOpenMonthViewDay();
const filterUser: IUser = null !== this.selectedUserIndex ? this.selectableUsers[this.selectedUserIndex - 1] : null; const filterUser: IUser = null !== this.selectedUserIndex ? this.selectableUsers[this.selectedUserIndex - 1] : null;
for (let c = 0; c < this.customerMeetings.length; c++) {
this.customerMeetings.forEach(item => {
if (null !== filterUser) { if (null !== filterUser) {
if (filterUser.id !== this.customerMeetings[c].owner_user_id) {
if (filterUser.id !== item.owner_user_id) {
let isParticipant = false; let isParticipant = false;
for (let p = 0; p < this.customerMeetings[c].v_participants.length; p++) {
if (filterUser.id === this.customerMeetings[c].v_participants[p].participant_user_id) {
item.v_participants.forEach(item1 => {
if (filterUser.id === item1.participant_user_id) {
isParticipant = true; isParticipant = true;
} }
}
});
if (!isParticipant) { if (!isParticipant) {
// Don't show this meeting, since it does not involve filtered user // Don't show this meeting, since it does not involve filtered user
continue;
return;
} }
} }
} }
const customer: ICustomer = this.customersById[this.customerMeetings[c].customer_id];
const user: IUser = this.appService.getConfig().vc_user_by_id[this.customerMeetings[c].owner_user_id];
const title: string = Utils.getDateTimeToDisplay(this.customerMeetings[c].start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(this.customerMeetings[c].end_date, true, true) + ' - ' +
const customer: ICustomer = this.customersById[item.customer_id];
const user: IUser = this.appService.getConfig().vc_user_by_id[item.owner_user_id];
const title: string = Utils.getDateTimeToDisplay(item.start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(item.end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' + user.firstname + ' ' + user.lastname + ': ' +
customer.name + ' [' + this.customerMeetings[c].title + ']';
customer.name + ' [' + item.title + ']';
this.events.push( this.events.push(
{ {
id: MeetingCalendarComponent.MEETING_TYPE_CUSTOMER + ':' + this.customerMeetings[c].id,
start: addHours(Utils.getParsedDate(this.customerMeetings[c].start_date), 1),
end: addHours(Utils.getParsedDate(this.customerMeetings[c].end_date), 1),
id: MeetingCalendarComponent.MEETING_TYPE_CUSTOMER + ':' + item.id,
start: addHours(Utils.getParsedDate(item.start_date), 1),
end: addHours(Utils.getParsedDate(item.end_date), 1),
title, title,
color: colors.colorCustomer, color: colors.colorCustomer,
actions: this.actions, actions: this.actions,
@@ -220,33 +175,33 @@ export class MeetingCalendarComponent implements OnInit {
draggable: false draggable: false
} }
); );
}
});


for (let i = 0; i < this.internalMeetings.length; i++) {
const user: IUser = this.appService.getConfig().vc_user_by_id[this.internalMeetings[i].owner_user_id];
const title: string = Utils.getDateTimeToDisplay(this.internalMeetings[i].start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(this.internalMeetings[i].end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' + 'PLP intern [' + this.internalMeetings[i].title + ']';
this.internalMeetings.forEach(item => {
const user: IUser = this.appService.getConfig().vc_user_by_id[item.owner_user_id];
const title: string = Utils.getDateTimeToDisplay(item.start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(item.end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' + 'PLP intern [' + item.title + ']';
if (null !== filterUser) { if (null !== filterUser) {
if (filterUser.id !== this.internalMeetings[i].owner_user_id) {
if (filterUser.id !== item.owner_user_id) {
let isParticipant = false; let isParticipant = false;
for (let p = 0; p < this.internalMeetings[i].v_participants.length; p++) {
if (filterUser.id === this.internalMeetings[i].v_participants[p].participant_user_id) {
item.v_participants.forEach(item1 => {
if (filterUser.id === item1.participant_user_id) {
isParticipant = true; isParticipant = true;
} }
}
});
if (!isParticipant) { if (!isParticipant) {
// Don't show this meeting, since it does not involve filtered user // Don't show this meeting, since it does not involve filtered user
continue;
return;
} }
} }
} }


this.events.push( this.events.push(
{ {
id: MeetingCalendarComponent.MEETING_TYPE_INTERNAL + ':' + this.internalMeetings[i].id,
start: addHours(Utils.getParsedDate(this.internalMeetings[i].start_date), 1),
end: addHours(Utils.getParsedDate(this.internalMeetings[i].end_date), 1),
id: MeetingCalendarComponent.MEETING_TYPE_INTERNAL + ':' + item.id,
start: addHours(Utils.getParsedDate(item.start_date), 1),
end: addHours(Utils.getParsedDate(item.end_date), 1),
title, title,
color: colors.colorInternal, color: colors.colorInternal,
actions: this.actions, actions: this.actions,
@@ -258,133 +213,12 @@ export class MeetingCalendarComponent implements OnInit {
draggable: false draggable: false
} }
); );
}

for (let o = 0; o < this.operatorMeetings.length; o++) {
const operator: IOperator = this.operatorsById[this.operatorMeetings[o].operator_id];
const user: IUser = this.appService.getConfig().vc_user_by_id[this.operatorMeetings[o].owner_user_id];
const title: string = Utils.getDateTimeToDisplay(this.operatorMeetings[o].start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(this.operatorMeetings[o].end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' +
operator.name + '<span style="background:red"> [' + this.operatorMeetings[o].title + ']</span>';

if (null !== filterUser) {
if (filterUser.id !== this.operatorMeetings[o].owner_user_id) {
let isParticipant = false;
for (let p = 0; p < this.operatorMeetings[o].v_participants.length; p++) {
if (filterUser.id === this.operatorMeetings[o].v_participants[p].participant_user_id) {
isParticipant = true;
}
}
if (!isParticipant) {
// Don't show this meeting, since it does not involve filtered user
continue;
}
}
}
this.events.push(
{
id: MeetingCalendarComponent.MEETING_TYPE_OPERATOR + ':' + this.operatorMeetings[o].id,
start: addHours(Utils.getParsedDate(this.operatorMeetings[o].start_date), 1),
end: addHours(Utils.getParsedDate(this.operatorMeetings[o].end_date), 1),
title,
color: colors.colorOperators,
actions: this.actions,
allDay: false,
resizable: {
beforeStart: true,
afterEnd: true
},
draggable: false
}
);
}
for (let pr = 0; pr < this.productionMeetings.length; pr++) {
const production: IProduction = this.productionsById[this.productionMeetings[pr].production_id];
const user: IUser = this.appService.getConfig().vc_user_by_id[this.productionMeetings[pr].owner_user_id];
const title: string = Utils.getDateTimeToDisplay(this.productionMeetings[pr].start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(this.productionMeetings[pr].end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' +
production.name + '<span style="background:red"> [' + this.productionMeetings[pr].title + ']</span>';

if (null !== filterUser) {
if (filterUser.id !== this.productionMeetings[pr].owner_user_id) {
let isParticipant = false;
for (let p = 0; p < this.productionMeetings[pr].v_participants.length; p++) {
if (filterUser.id === this.productionMeetings[pr].v_participants[p].participant_user_id) {
isParticipant = true;
}
}
if (!isParticipant) {
// Don't show this meeting, since it does not involve filtered user
continue;
}
}
}
this.events.push(
{
id: MeetingCalendarComponent.MEETING_TYPE_PRODUCTION + ':' + this.productionMeetings[pr].id,
start: addHours(Utils.getParsedDate(this.productionMeetings[pr].start_date), 1),
end: addHours(Utils.getParsedDate(this.productionMeetings[pr].end_date), 1),
title,
color: colors.colorProduction,
actions: this.actions,
allDay: false,
resizable: {
beforeStart: true,
afterEnd: true
},
draggable: false
}
);
}
for (let se = 0; se < this.serviceMeetings.length; se++) {
const service: IService = this.servicesById[this.serviceMeetings[se].service_id];
const user: IUser = this.appService.getConfig().vc_user_by_id[this.serviceMeetings[se].owner_user_id];
const title: string = Utils.getDateTimeToDisplay(this.serviceMeetings[se].start_date, true, true) + ' bis ' +
Utils.getDateTimeToDisplay(this.serviceMeetings[se].end_date, true, true) + ' - ' +
user.firstname + ' ' + user.lastname + ': ' +
service.name + '<span style="background:red"> [' + this.serviceMeetings[se].title + ']</span>';

if (null !== filterUser) {
if (filterUser.id !== this.serviceMeetings[se].owner_user_id) {
let isParticipant = false;
for (let p = 0; p < this.serviceMeetings[se].v_participants.length; p++) {
if (filterUser.id === this.serviceMeetings[se].v_participants[p].participant_user_id) {
isParticipant = true;
}
}
if (!isParticipant) {
// Don't show this meeting, since it does not involve filtered user
continue;
}
}
}

this.events.push(
{
id: MeetingCalendarComponent.MEETING_TYPE_SERVICE + ':' + this.serviceMeetings[se].id,
start: addHours(Utils.getParsedDate(this.serviceMeetings[se].start_date), 1),
end: addHours(Utils.getParsedDate(this.serviceMeetings[se].end_date), 1),
title,
color: colors.colorService,
actions: this.actions,
allDay: false,
resizable: {
beforeStart: true,
afterEnd: true
},
draggable: false
}
);
}
});
this.refresh.next(); this.refresh.next();
} }


/** /**
* Day is clicked * Day is clicked
* @param date
* @param events
*/ */
public dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }): void { public dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }): void {
if (isSameMonth(date, this.viewDate)) { if (isSameMonth(date, this.viewDate)) {
@@ -402,9 +236,6 @@ export class MeetingCalendarComponent implements OnInit {


/** /**
* Times changed event * Times changed event
* @param event
* @param newStart
* @param newEnd
*/ */
eventTimesChanged({ eventTimesChanged({
event, event,
@@ -426,8 +257,6 @@ export class MeetingCalendarComponent implements OnInit {


/** /**
* Handles event * Handles event
* @param action
* @param event
*/ */
public handleEvent(action: string, event: CalendarEvent): void { public handleEvent(action: string, event: CalendarEvent): void {
this.modalData = { event, action }; this.modalData = { event, action };
@@ -441,15 +270,6 @@ export class MeetingCalendarComponent implements OnInit {
case MeetingCalendarComponent.MEETING_TYPE_INTERNAL: case MeetingCalendarComponent.MEETING_TYPE_INTERNAL:
this.editInternalMeeting.emit(this.internalMeetingsById[idComponents[1]] as IInternalMeeting); this.editInternalMeeting.emit(this.internalMeetingsById[idComponents[1]] as IInternalMeeting);
break; break;
case MeetingCalendarComponent.MEETING_TYPE_OPERATOR:
this.editOperatorMeeting.emit(this.operatorMeetingsById[idComponents[1]] as IOperatorMeeting);
break;
case MeetingCalendarComponent.MEETING_TYPE_PRODUCTION:
this.editProductionMeeting.emit(this.productionMeetingsById[idComponents[1]] as IProductionMeeting);
break;
case MeetingCalendarComponent.MEETING_TYPE_SERVICE:
this.editServiceMeeting.emit(this.serviceMeetingsById[idComponents[1]] as IServiceMeeting);
break;
} }
} }


@@ -475,7 +295,6 @@ export class MeetingCalendarComponent implements OnInit {


/** /**
* Delete event * Delete event
* @param eventToDelete
*/ */
public deleteEvent(eventToDelete: CalendarEvent) { public deleteEvent(eventToDelete: CalendarEvent) {
this.events = this.events.filter(event => event !== eventToDelete); this.events = this.events.filter(event => event !== eventToDelete);
@@ -483,7 +302,6 @@ export class MeetingCalendarComponent implements OnInit {


/** /**
* Set view * Set view
* @param view
*/ */
public setView(view: CalendarView) { public setView(view: CalendarView) {
this.view = view; this.view = view;


+ 0
- 1
httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.html Wyświetl plik

@@ -22,7 +22,6 @@
[suppressCellSelection]="true" [suppressCellSelection]="true"
[animateRows]="true" [animateRows]="true"
[rowSelection]="rowSelection" [rowSelection]="rowSelection"
[rowDeselection]="true"
(gridReady)="onGridReady($event)" (gridReady)="onGridReady($event)"
(rowClicked)="rowClicked($event)" (rowClicked)="rowClicked($event)"
> >


+ 40
- 183
httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts Wyświetl plik

@@ -6,14 +6,8 @@ import {IUser} from '../../../model/entities/user';
import {IMeetingType} from '../../../model/entities/meeting-type'; import {IMeetingType} from '../../../model/entities/meeting-type';
import {AppService} from '../../../services/app.service'; import {AppService} from '../../../services/app.service';
import {IInternalMeeting} from '../../../model/entities/internal-meeting'; import {IInternalMeeting} from '../../../model/entities/internal-meeting';
import {IOperatorMeeting} from '../../../model/entities/operator-meeting';
import {IOperator} from '../../../model/entities/operator';
import {MeetingService} from '../../../services/meeting.service'; import {MeetingService} from '../../../services/meeting.service';
import {Utils} from '../../../utils/utils'; import {Utils} from '../../../utils/utils';
import {IProductionMeeting} from '../../../model/entities/production-meeting';
import {IServiceMeeting} from '../../../model/entities/service-meeting';
import {IProduction} from '../../../model/entities/production';
import {IService} from '../../../model/entities/service';


@Component({ @Component({
selector: 'app-meeting-list', selector: 'app-meeting-list',
@@ -24,16 +18,10 @@ import {IService} from '../../../model/entities/service';
export class MeetingListComponent extends AgGridComponent implements OnInit, OnDestroy { export class MeetingListComponent extends AgGridComponent implements OnInit, OnDestroy {


@Output() editCustomerMeeting: EventEmitter<ICustomerMeeting> = new EventEmitter<ICustomerMeeting>(); @Output() editCustomerMeeting: EventEmitter<ICustomerMeeting> = new EventEmitter<ICustomerMeeting>();
@Output() editOperatorMeeting: EventEmitter<IOperatorMeeting> = new EventEmitter<IOperatorMeeting>();
@Output() editInternalMeeting: EventEmitter<IInternalMeeting> = new EventEmitter<IInternalMeeting>(); @Output() editInternalMeeting: EventEmitter<IInternalMeeting> = new EventEmitter<IInternalMeeting>();
@Output() editProductionMeeting: EventEmitter<IProductionMeeting> = new EventEmitter<IProductionMeeting>();
@Output() editServiceMeeting: EventEmitter<IServiceMeeting> = new EventEmitter<IServiceMeeting>();


private customerMeetings: ICustomerMeeting[]; private customerMeetings: ICustomerMeeting[];
private internalMeetings: IInternalMeeting[]; private internalMeetings: IInternalMeeting[];
private operatorMeetings: IOperatorMeeting[];
private productionMeetings: IProductionMeeting[];
private serviceMeetings: IServiceMeeting[];
private customersById: {}; private customersById: {};
private operatorsById: {}; private operatorsById: {};
private productionsById: {}; private productionsById: {};
@@ -51,9 +39,6 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD
this.servicesById = {}; this.servicesById = {};
this.customerMeetings = []; this.customerMeetings = [];
this.internalMeetings = []; this.internalMeetings = [];
this.operatorMeetings = [];
this.productionMeetings = [];
this.serviceMeetings = [];
this.customersById = {}; this.customersById = {};
this.participants = []; this.participants = [];


@@ -90,24 +75,12 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD
*/ */
public setData( public setData(
customersById: {}, customersById: {},
operatorsById: {},
productionsById: {},
servicesById: {},
customerMeetings: ICustomerMeeting[], customerMeetings: ICustomerMeeting[],
internalMeetings: IInternalMeeting[],
operatorMeetings: IOperatorMeeting[],
productionMeetings: IProductionMeeting[],
serviceMeetings: IServiceMeeting[]
internalMeetings: IInternalMeeting[]
): void { ): void {
this.customersById = customersById; this.customersById = customersById;
this.operatorsById = operatorsById;
this.productionsById = productionsById;
this.servicesById = servicesById;
this.customerMeetings = customerMeetings; this.customerMeetings = customerMeetings;
this.internalMeetings = internalMeetings; this.internalMeetings = internalMeetings;
this.operatorMeetings = operatorMeetings;
this.productionMeetings = productionMeetings;
this.serviceMeetings = serviceMeetings;
this.generateEntries(); this.generateEntries();
} }


@@ -120,58 +93,58 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD
let owner: IUser = null; let owner: IUser = null;
let meetingType: IMeetingType = null; let meetingType: IMeetingType = null;


for (let c = 0; c < this.customerMeetings.length; c++) {
owner = this.appService.getConfig().vc_user_by_id[this.customerMeetings[c].owner_user_id] as IUser;
meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.customerMeetings[c].meeting_type_id] as IMeetingType;
let customerContactName: string = null !== this.customerMeetings[c].firstname) ?; this.customerMeetings[c].firstname + ' '; : '';
customerContactName += null !== this.customerMeetings[c].lastname; ) ? this.customerMeetings[c].lastname; : '';
const customer: ICustomer = this.customersById[this.customerMeetings[c].customer_id];
const creator: IUser = this.appService.getConfig().vc_user_by_id[this.customerMeetings[c].creation_user_id];
this.customerMeetings.forEach(item => {
owner = this.appService.getConfig().vc_user_by_id[item.owner_user_id] as IUser;
meetingType = this.appService.getConfig().vc_meeting_types_by_id[item.meeting_type_id] as IMeetingType;
let customerContactName: string = null !== item.firstname ? item.firstname + ' ' : '';
customerContactName += null !== item.lastname ? item.lastname : '';
const customer: ICustomer = this.customersById[item.customer_id];
const creator: IUser = this.appService.getConfig().vc_user_by_id[item.creation_user_id];


items.push({ items.push({
that: this, that: this,
itemType: 'customer', itemType: 'customer',
objectId: customer.id, objectId: customer.id,
id: this.customerMeetings[c].id,
meeting: this.customerMeetings[c],
title: this.customerMeetings[c].title,
id: item.id,
meeting: item,
title: item.title,
objectName: customer.name, objectName: customer.name,
dateStart: this.customerMeetings[c].start_date,
dateEnd: this.customerMeetings[c].end_date,
dateStart: item.start_date,
dateEnd: item.end_date,
type: meetingType.name, type: meetingType.name,
typeType: meetingType.type, typeType: meetingType.type,
reportExists: this.customerMeetings[c].report !== null ? 'Ja' : 'Nein',
is_option_meeting: this.customerMeetings[c].is_option_meeting,
street: this.customerMeetings[c].street,
street_no: this.customerMeetings[c].street_no,
zip: this.customerMeetings[c].zip,
city: this.customerMeetings[c].city,
reportExists: item.report !== null ? 'Ja' : 'Nein',
is_option_meeting: item.is_option_meeting,
street: item.street,
street_no: item.street_no,
zip: item.zip,
city: item.city,
owner: owner.firstname + ' ' + owner.lastname, owner: owner.firstname + ' ' + owner.lastname,
creator: creator.firstname + ' ' + creator.lastname, creator: creator.firstname + ' ' + creator.lastname,
contactName: customerContactName, contactName: customerContactName,
participants: this.customerMeetings[c].v_participants,
department: this.customerMeetings[c].department,
email: this.customerMeetings[c].email,
phone: this.customerMeetings[c].phone_no,
mobile: this.customerMeetings[c].mobile_no,
participants: item.v_participants,
department: item.department,
email: item.email,
phone: item.phone_no,
mobile: item.mobile_no,
}); });
}
for (let i = 0; i < this.internalMeetings.length; i++) {
owner = this.appService.getConfig().vc_user_by_id[this.internalMeetings[i].owner_user_id] as IUser;
const creator: IUser = this.appService.getConfig().vc_user_by_id[this.internalMeetings[i].creation_user_id];
});
this.internalMeetings.forEach(item => {
owner = this.appService.getConfig().vc_user_by_id[item.owner_user_id] as IUser;
const creator: IUser = this.appService.getConfig().vc_user_by_id[item.creation_user_id];
items.push({ items.push({
that: this, that: this,
itemType: 'internal', itemType: 'internal',
objectId: null, objectId: null,
id: this.internalMeetings[i].id,
meeting: this.internalMeetings[i],
title: this.internalMeetings[i].title,
id: item.id,
meeting: item,
title: item.title,
objectName: 'PLP Intern', objectName: 'PLP Intern',
dateStart: this.internalMeetings[i].start_date,
dateEnd: this.internalMeetings[i].end_date,
dateStart: item.start_date,
dateEnd: item.end_date,
type: 'Intern', type: 'Intern',
typeType: '', typeType: '',
reportExists: this.internalMeetings[i].report !== null ? 'Ja' : 'Nein',
reportExists: item.report !== null ? 'Ja' : 'Nein',
is_option_meeting: '-', is_option_meeting: '-',
street: '', street: '',
street_no: '', street_no: '',
@@ -180,126 +153,19 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD
owner: owner.firstname + ' ' + owner.lastname, owner: owner.firstname + ' ' + owner.lastname,
creator: creator.firstname + ' ' + creator.lastname, creator: creator.firstname + ' ' + creator.lastname,
contactName: null, contactName: null,
participants: this.internalMeetings[i].v_participants,
participants: item.v_participants,
department: null, department: null,
email: null, email: null,
phone: null, phone: null,
mobile: null, mobile: null,
}); });
}
for (let o = 0; o < this.operatorMeetings.length; o++) {
owner = this.appService.getConfig().vc_user_by_id[this.operatorMeetings[o].owner_user_id];
meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.operatorMeetings[o].meeting_type_id];
let operatorContactName: string = null !== this.operatorMeetings[o].firstname ? this.operatorMeetings[o].firstname + ' ' : '';
operatorContactName += null !== this.operatorMeetings[o].lastname ? this.operatorMeetings[o].lastname : '';
const operator: IOperator = this.operatorsById[this.operatorMeetings[o].operator_id];
const creator: IUser = this.appService.getConfig().vc_user_by_id[this.operatorMeetings[o].creation_user_id];

items.push({
that: this,
itemType: 'operator',
objectId: operator.id,
id: this.operatorMeetings[o].id,
meeting: this.operatorMeetings[o],
title: this.operatorMeetings[o].title,
objectName: operator.name,
dateStart: this.operatorMeetings[o].start_date,
dateEnd: this.operatorMeetings[o].end_date,
type: meetingType.name,
typeType: meetingType.type,
reportExists: this.operatorMeetings[o].report !== null ? 'Ja' : 'Nein',
is_option_meeting: '-',
street: this.operatorMeetings[o].street,
street_no: this.operatorMeetings[o].street_no,
zip: this.operatorMeetings[o].zip,
city: this.operatorMeetings[o].city,
owner: owner.firstname + ' ' + owner.lastname,
creator: creator.firstname + ' ' + creator.lastname,
contactName: operatorContactName,
participants: this.operatorMeetings[o].v_participants,
department: this.operatorMeetings[o].department,
email: this.operatorMeetings[o].email,
phone: this.operatorMeetings[o].phone_no,
mobile: this.operatorMeetings[o].mobile_no,
});
}
for (let p = 0; p < this.productionMeetings.length; p++) {
owner = this.appService.getConfig().vc_user_by_id[this.productionMeetings[p].owner_user_id];
meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.productionMeetings[p].meeting_type_id];
let contactName: string = null !== this.productionMeetings[p].firstname ? this.productionMeetings[p].firstname + ' ' : '';
contactName += null !== this.productionMeetings[p].lastname ? this.productionMeetings[p].lastname : '';
const production: IProduction = this.operatorsById[this.productionMeetings[p].production_id];
const creator: IUser = this.appService.getConfig().vc_user_by_id[this.productionMeetings[p].creation_user_id];
});


items.push({
that: this,
itemType: 'production',
objectId: production.id,
id: this.productionMeetings[p].id,
meeting: this.productionMeetings[p],
title: this.productionMeetings[p].title,
objectName: production.name,
dateStart: this.productionMeetings[p].start_date,
dateEnd: this.productionMeetings[p].end_date,
type: meetingType.name,
typeType: meetingType.type,
reportExists: this.productionMeetings[p].report !== null ? 'Ja' : 'Nein',
is_option_meeting: '-',
street: this.productionMeetings[p].street,
street_no: this.productionMeetings[p].street_no,
zip: this.productionMeetings[p].zip,
city: this.productionMeetings[p].city,
owner: owner.firstname + ' ' + owner.lastname,
creator: creator.firstname + ' ' + creator.lastname,
contactName,
participants: this.productionMeetings[p].v_participants,
department: this.productionMeetings[p].department,
email: this.productionMeetings[p].email,
phone: this.productionMeetings[p].phone_no,
mobile: this.productionMeetings[p].mobile_no,
});
}
for (let s = 0; s < this.serviceMeetings.length; s++) {
owner = this.appService.getConfig().vc_user_by_id[this.serviceMeetings[s].owner_user_id];
meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.serviceMeetings[s].meeting_type_id];
let contactName: string = null !== this.serviceMeetings[s].firstname ? this.serviceMeetings[s].firstname + ' ' : '';
contactName += null !== this.serviceMeetings[s].lastname ? this.serviceMeetings[s].lastname : '';
const service: IService = this.operatorsById[this.serviceMeetings[s].service_id];
const creator: IUser = this.appService.getConfig().vc_user_by_id[this.serviceMeetings[s].creation_user_id];
items.push({
that: this,
itemType: 'service',
objectId: service.id,
id: this.serviceMeetings[s].id,
meeting: this.serviceMeetings[s],
title: this.serviceMeetings[s].title,
objectName: service.name,
dateStart: this.serviceMeetings[s].start_date,
dateEnd: this.serviceMeetings[s].end_date,
type: meetingType.name,
typeType: meetingType.type,
reportExists: this.serviceMeetings[s].report !== null ? 'Ja' : 'Nein',
is_option_meeting: '-',
street: this.serviceMeetings[s].street,
street_no: this.serviceMeetings[s].street_no,
zip: this.serviceMeetings[s].zip,
city: this.serviceMeetings[s].city,
owner: owner.firstname + ' ' + owner.lastname,
creator: creator.firstname + ' ' + creator.lastname,
contactName,
participants: this.serviceMeetings[s].v_participants,
department: this.serviceMeetings[s].department,
email: this.serviceMeetings[s].email,
phone: this.serviceMeetings[s].phone_no,
mobile: this.serviceMeetings[s].mobile_no,
});
}
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a.dateStart, b.dateStart, false));
this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['dateStart'], b['dateStart'], false));
} }


/** /**
* row is clicked * row is clicked
* @param e
*/ */
public rowClicked(e: any): void { public rowClicked(e: any): void {
switch (e.data.itemType) { switch (e.data.itemType) {
@@ -309,25 +175,16 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD
case 'internal': case 'internal':
this.editInternalMeeting.emit(e.data.meeting); this.editInternalMeeting.emit(e.data.meeting);
break; break;
case 'operator':
this.editOperatorMeeting.emit(e.data.meeting);
break;
case 'production':
this.editProductionMeeting.emit(e.data.meeting);
break;
case 'service':
this.editServiceMeeting.emit(e.data.meeting);
break;
} }
} }


public exportFilteredMeetingList(e: any): void { public exportFilteredMeetingList(e: any): void {


const exportData: {}[] = []; const exportData: {}[] = [];
this.gridParamsApi.forEachNodeAfterFilter(function(rowNode, index) {
this.gridParamsApi.forEachNodeAfterFilter((rowNode, index) => {
const exportEntry: {} = rowNode.data; const exportEntry: {} = rowNode.data;
delete exportEntry.that;
delete exportEntry.participants;
delete exportEntry['that'];
delete exportEntry['participants'];
exportData.push(exportEntry); exportData.push(exportEntry);
}); });




+ 8
- 38
httpdocs/plp-angular/src/app/views/start/start.component.html Wyświetl plik

@@ -6,68 +6,38 @@
<app-tab tabTitle="Termin-Kalender" [tabIndex]="0"> <app-tab tabTitle="Termin-Kalender" [tabIndex]="0">
<app-meeting-calendar #meetingCalendar <app-meeting-calendar #meetingCalendar
(editCustomerMeeting)="rowClickedCustomerMeeting($event)" (editCustomerMeeting)="rowClickedCustomerMeeting($event)"
(editOperatorMeeting)="rowClickedOperatorMeeting($event)"
(editInternalMeeting)="rowClickedInternalMeeting($event)"
(editProductionMeeting)="rowClickedProductionMeeting($event)"
(editServiceMeeting)="rowClickedServiceMeeting($event)">
(editInternalMeeting)="rowClickedInternalMeeting($event)">
</app-meeting-calendar> </app-meeting-calendar>
</app-tab> </app-tab>
<app-tab tabTitle="Termin-Liste" [tabIndex]="1"> <app-tab tabTitle="Termin-Liste" [tabIndex]="1">
<app-meeting-list #meetingList <app-meeting-list #meetingList
(editCustomerMeeting)="rowClickedCustomerMeeting($event)" (editCustomerMeeting)="rowClickedCustomerMeeting($event)"
(editOperatorMeeting)="rowClickedOperatorMeeting($event)"
(editInternalMeeting)="rowClickedInternalMeeting($event)"
(editProductionMeeting)="rowClickedProductionMeeting($event)"
(editServiceMeeting)="rowClickedServiceMeeting($event)">
(editInternalMeeting)="rowClickedInternalMeeting($event)">
</app-meeting-list> </app-meeting-list>
</app-tab> </app-tab>
</app-tabs> </app-tabs>
</div> </div>


<app-modal [overlay]="true" #modalCustomerMeetingDetailStart>
<app-spt-modal [overlay]="true" #modalCustomerMeetingDetailStart>
<app-customer-meeting-detail #customerMeetingDetailStart <app-customer-meeting-detail #customerMeetingDetailStart
(editMeeting)="editCustomerMeetingFunction($event)" (editMeeting)="editCustomerMeetingFunction($event)"
(deleteMeeting)="deleteCustomerMeetingFunction($event)" (deleteMeeting)="deleteCustomerMeetingFunction($event)"
(editMeetingReport)="editCustomerMeetingReportFunction($event)"> (editMeetingReport)="editCustomerMeetingReportFunction($event)">
</app-customer-meeting-detail> </app-customer-meeting-detail>
</app-modal>
</app-spt-modal>


<app-modal [overlay]="true" #modalOperatorMeetingDetailStart>
<app-operator-meeting-detail #operatorMeetingDetailStart
(editMeeting)="editOperatorMeetingFunction($event)"
(deleteMeeting)="deleteOperatorMeetingFunction($event)"
(editMeetingReport)="editOperatorMeetingReportFunction($event)">
</app-operator-meeting-detail>
</app-modal>

<app-modal [overlay]="true" #modalInternalMeetingDetailStart>
<app-spt-modal [overlay]="true" #modalInternalMeetingDetailStart>
<app-internal-meeting-detail #internalMeetingDetailStart <app-internal-meeting-detail #internalMeetingDetailStart
(editMeeting)="editInternalMeetingFunction($event)" (editMeeting)="editInternalMeetingFunction($event)"
(deleteMeeting)="deleteInternalMeetingFunction($event)" (deleteMeeting)="deleteInternalMeetingFunction($event)"
(editMeetingReport)="editInternalMeetingReportFunction($event)"> (editMeetingReport)="editInternalMeetingReportFunction($event)">
</app-internal-meeting-detail> </app-internal-meeting-detail>
</app-modal>

<app-modal [overlay]="true" #modalProductionMeetingDetailStart>
<app-production-meeting-detail #productionMeetingDetailStart
(editMeeting)="editProductionMeetingFunction($event)"
(deleteMeeting)="deleteProductionMeetingFunction($event)"
(editMeetingReport)="editProductionMeetingReportFunction($event)">
</app-production-meeting-detail>
</app-modal>

<app-modal [overlay]="true" #modalServiceMeetingDetailStart>
<app-service-meeting-detail #serviceMeetingDetailStart
(editMeeting)="editServiceMeetingFunction($event)"
(deleteMeeting)="deleteServiceMeetingFunction($event)"
(editMeetingReport)="editServiceMeetingReportFunction($event)">
</app-service-meeting-detail>
</app-modal>
</app-spt-modal>


<app-modal [overlay]="true" #modalInternalMeetingEdit>
<app-spt-modal [overlay]="true" #modalInternalMeetingEdit>
<div id="internal-meeting-modal"> <div id="internal-meeting-modal">
<app-internal-meeting-edit #internalMeetingEdit <app-internal-meeting-edit #internalMeetingEdit
(createMeeting)="createMeetingInternal($event)"> (createMeeting)="createMeetingInternal($event)">
</app-internal-meeting-edit> </app-internal-meeting-edit>
</div> </div>
</app-modal>
</app-spt-modal>

+ 3
- 169
httpdocs/plp-angular/src/app/views/start/start.component.ts Wyświetl plik

@@ -1,4 +1,4 @@
import {Component, ChangeDetectionStrategy, ViewChild, OnInit, OnDestroy} from '@angular/core';
import {Component, ChangeDetectionStrategy, ViewChild, OnInit, OnDestroy, NgModule} from '@angular/core';
import {Subscription} from 'rxjs'; import {Subscription} from 'rxjs';
import {AppService} from '../../services/app.service'; import {AppService} from '../../services/app.service';
import {CustomerService} from '../../services/customer.service'; import {CustomerService} from '../../services/customer.service';
@@ -17,19 +17,7 @@ import {InternalMeetingEditComponent} from './internal-meeting-edit/internal-mee
import {Factory} from '../../factory/factory'; import {Factory} from '../../factory/factory';
import {InternalMeetingDetailComponent} from './internal-meeting-detail/internal-meeting-detail.component'; import {InternalMeetingDetailComponent} from './internal-meeting-detail/internal-meeting-detail.component';
import {IMeetingData} from '../../model/virtual/meeting-data'; import {IMeetingData} from '../../model/virtual/meeting-data';
import {IOperatorMeeting} from '../../model/entities/operator-meeting';
import {IOperator} from '../../model/entities/operator';
import {OperatorMeetingDetailComponent} from '../operators/operator-view/operator-meeting-detail/operator-meeting-detail.component';
import {IProduction} from '../../model/entities/production';
import {IService} from '../../model/entities/service';
import {IProductionMeeting} from '../../model/entities/production-meeting';
import {IServiceMeeting} from '../../model/entities/service-meeting';
import {
ProductionMeetingDetailComponent
} from '../productions/production-view/production-meeting-detail/production-meeting-detail.component';
import {
ServiceMeetingDetailComponent
} from '../services/service-view/service-meeting-detail/service-meeting-detail.component';
import {TabComponent} from '../../components/tab/tab.component';


@Component({ @Component({
selector: 'app-start', selector: 'app-start',
@@ -51,32 +39,15 @@ export class StartComponent implements OnInit, OnDestroy {
@ViewChild('modalCustomerMeetingEditStart', {static: true}) modalCustomerMeetingEditStart: ModalComponent; @ViewChild('modalCustomerMeetingEditStart', {static: true}) modalCustomerMeetingEditStart: ModalComponent;
@ViewChild('customerMeetingDetailStart', {static: true}) customerMeetingDetailStart: CustomerMeetingDetailComponent; @ViewChild('customerMeetingDetailStart', {static: true}) customerMeetingDetailStart: CustomerMeetingDetailComponent;
@ViewChild('customerMeetingEditStart', {static: true}) customerMeetingEditStart: CustomerMeetingEditComponent; @ViewChild('customerMeetingEditStart', {static: true}) customerMeetingEditStart: CustomerMeetingEditComponent;
@ViewChild('modalOperatorMeetingDetailStart', {static: true}) modalOperatorMeetingDetailStart: ModalComponent;
@ViewChild('operatorMeetingDetailStart', {static: true}) operatorMeetingDetailStart: OperatorMeetingDetailComponent;
@ViewChild('modalProductionMeetingDetailStart', {static: true}) modalProductionMeetingDetailStart: ModalComponent;
@ViewChild('productionMeetingDetailStart', {static: true}) productionMeetingDetailStart: ProductionMeetingDetailComponent;
@ViewChild('modalServiceMeetingDetailStart', {static: true}) modalServiceMeetingDetailStart: ModalComponent;
@ViewChild('serviceMeetingDetailStart', {static: true}) serviceMeetingDetailStart: ServiceMeetingDetailComponent;


private customers: ICustomer[]; private customers: ICustomer[];
private customersById: {}; private customersById: {};
private operators: IOperator[];
private operatorsById: {}; private operatorsById: {};
private productions: IProduction[];
private productionsById: {};
private services: IService[];
private servicesById: {};
private customersSub: Subscription; private customersSub: Subscription;
private operatorsSub: Subscription;
private productionsSub: Subscription;
private servicesSub: Subscription;
private meetingData: IMeetingData; private meetingData: IMeetingData;
private meetingsSub: Subscription; private meetingsSub: Subscription;
private customerMeetings: ICustomerMeeting[]; private customerMeetings: ICustomerMeeting[];
private internalMeetings: IInternalMeeting[]; private internalMeetings: IInternalMeeting[];
private operatorMeetings: IOperatorMeeting[];
private productionMeetings: IProductionMeeting[];
private serviceMeetings: IServiceMeeting[];


constructor( constructor(
private appService: AppService, private appService: AppService,
@@ -88,13 +59,9 @@ export class StartComponent implements OnInit, OnDestroy {
ngOnInit() { ngOnInit() {
this.customers = null; this.customers = null;
this.customersById = {}; this.customersById = {};
this.operators = null;
this.operatorsById = {}; this.operatorsById = {};
this.customerMeetings = null; this.customerMeetings = null;
this.internalMeetings = null; this.internalMeetings = null;
this.operatorMeetings = null;
this.productionMeetings = null;
this.serviceMeetings = null;


this.customerService.apiGetCustomerData(); this.customerService.apiGetCustomerData();
this.meetingService.apiGetMeetingData(); this.meetingService.apiGetMeetingData();
@@ -113,15 +80,9 @@ export class StartComponent implements OnInit, OnDestroy {
if (null !== data) { if (null !== data) {
this.customerMeetings = data.customerMeetings; this.customerMeetings = data.customerMeetings;
this.internalMeetings = data.internalMeetings; this.internalMeetings = data.internalMeetings;
this.operatorMeetings = data.operatorMeetings;
this.productionMeetings = data.productionMeetings;
this.serviceMeetings = data.serviceMeetings;
} else { } else {
this.customerMeetings = null; this.customerMeetings = null;
this.internalMeetings = null; this.internalMeetings = null;
this.operatorMeetings = null;
this.productionMeetings = null;
this.serviceMeetings = null;
} }
this.setComponentData(); this.setComponentData();
} }
@@ -133,36 +94,17 @@ export class StartComponent implements OnInit, OnDestroy {
*/ */
private setComponentData() { private setComponentData() {
if (null !== this.customers && if (null !== this.customers &&
null !== this.operators &&
null !== this.productions &&
null !== this.services &&
null !== this.customerMeetings && null !== this.customerMeetings &&
null !== this.internalMeetings &&
null !== this.operatorMeetings &&
null !== this.productionMeetings &&
null !== this.serviceMeetings
) {
null !== this.internalMeetings) {
this.meetingCalendar.setData( this.meetingCalendar.setData(
this.customersById, this.customersById,
this.operatorsById,
this.productionsById,
this.servicesById,
this.customerMeetings, this.customerMeetings,
this.internalMeetings, this.internalMeetings,
this.operatorMeetings,
this.productionMeetings,
this.serviceMeetings
); );
this.meetingList.setData( this.meetingList.setData(
this.customersById, this.customersById,
this.operatorsById,
this.productionsById,
this.servicesById,
this.customerMeetings, this.customerMeetings,
this.internalMeetings, this.internalMeetings,
this.operatorMeetings,
this.productionMeetings,
this.serviceMeetings
); );
} }
} }
@@ -172,26 +114,11 @@ export class StartComponent implements OnInit, OnDestroy {
this.customerMeetingDetailStart.setData(this.customersById[e.customer_id], e); this.customerMeetingDetailStart.setData(this.customersById[e.customer_id], e);
} }


public rowClickedOperatorMeeting(e: IOperatorMeeting): void {
this.modalOperatorMeetingDetailStart.openModal();
this.operatorMeetingDetailStart.setData(this.operatorsById[e.operator_id], e);
}

public rowClickedInternalMeeting(e: IInternalMeeting): void { public rowClickedInternalMeeting(e: IInternalMeeting): void {
this.modalInternalMeetingDetailStart.openModal(); this.modalInternalMeetingDetailStart.openModal();
this.internalMeetingDetailStart.setData(e); this.internalMeetingDetailStart.setData(e);
} }


public rowClickedProductionMeeting(e: IProductionMeeting): void {
this.modalProductionMeetingDetailStart.openModal();
this.productionMeetingDetailStart.setData(this.productionsById[e.production_id], e);
}

public rowClickedServiceMeeting(e: IServiceMeeting): void {
this.modalServiceMeetingDetailStart.openModal();
this.serviceMeetingDetailStart.setData(this.servicesById[e.service_id], e);
}

public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void { public editCustomerMeetingFunction(customerMeeting: ICustomerMeeting): void {
this.meetingService.apiEditCustomerMeeting(customerMeeting).subscribe( this.meetingService.apiEditCustomerMeeting(customerMeeting).subscribe(
data => { data => {
@@ -223,37 +150,6 @@ export class StartComponent implements OnInit, OnDestroy {
); );
} }


public editOperatorMeetingFunction(operatorMeeting: IOperatorMeeting): void {
this.meetingService.apiEditOperatorMeeting(operatorMeeting).subscribe(
data => {
this.operatorMeetingDetailStart.updateData(data.result_data as IOperator);
},
error => {
}
);
}

public editOperatorMeetingReportFunction(reportValues: any): void {
const meetingId: number = reportValues.id;
const report: string = reportValues.report;
this.meetingService.apiEditOperatorMeetingReport(meetingId, report).subscribe(
data => {
this.operatorMeetingDetailStart.updateData(data.result_data as IOperator);
},
error => {}
);
}

public deleteOperatorMeetingFunction(operatorMeetingId: number): void {
this.meetingService.apiDeleteOperatorMeeting(operatorMeetingId).subscribe(
data => {
this.modalOperatorMeetingDetailStart.exitModal();
},
error => {
}
);
}

public editInternalMeetingFunction(internalMeeting: IInternalMeeting): void { public editInternalMeetingFunction(internalMeeting: IInternalMeeting): void {
this.meetingService.apiEditInternalMeeting(internalMeeting).subscribe( this.meetingService.apiEditInternalMeeting(internalMeeting).subscribe(
data => { data => {
@@ -299,68 +195,6 @@ export class StartComponent implements OnInit, OnDestroy {
); );
} }


public editProductionMeetingFunction(productionMeeting: IProductionMeeting): void {
this.meetingService.apiEditProductionMeeting(productionMeeting).subscribe(
data => {
this.productionMeetingDetailStart.updateData(data.result_data as IProduction);
},
error => {
}
);
}

public editProductionMeetingReportFunction(reportValues: any): void {
const meetingId: number = reportValues.id;
const report: string = reportValues.report;
this.meetingService.apiEditProductionMeetingReport(meetingId, report).subscribe(
data => {
this.productionMeetingDetailStart.updateData(data.result_data as IProduction);
},
error => {}
);
}

public deleteProductionMeetingFunction(productionMeetingId: number): void {
this.meetingService.apiDeleteProductionMeeting(productionMeetingId).subscribe(
data => {
this.modalProductionMeetingDetailStart.exitModal();
},
error => {
}
);
}

public editServiceMeetingFunction(serviceMeeting: IServiceMeeting): void {
this.meetingService.apiEditServiceMeeting(serviceMeeting).subscribe(
data => {
this.serviceMeetingDetailStart.updateData(data.result_data as IService);
},
error => {
}
);
}

public editServiceMeetingReportFunction(reportValues: any): void {
const meetingId: number = reportValues.id;
const report: string = reportValues.report;
this.meetingService.apiEditServiceMeetingReport(meetingId, report).subscribe(
data => {
this.serviceMeetingDetailStart.updateData(data.result_data as IService);
},
error => {}
);
}

public deleteServiceMeetingFunction(serviceMeetingId: number): void {
this.meetingService.apiDeleteServiceMeeting(serviceMeetingId).subscribe(
data => {
this.modalServiceMeetingDetailStart.exitModal();
},
error => {
}
);
}

/** /**
* Destroy * Destroy
*/ */


+ 3
- 3
httpdocs/plp-angular/src/scss/styles.scss Wyświetl plik

@@ -13,9 +13,9 @@
@import "components/tabs"; @import "components/tabs";


/* angular-cli file: src/styles.css */ /* angular-cli file: src/styles.css */
@import "~angular-calendar/css/angular-calendar.css";
@import "~ag-grid-community/dist/styles/ag-grid.css";
@import "~ag-grid-community/dist/styles/ag-theme-balham.css";
/*@import "~angular-calendar/css/angular-calendar.css";*/
@import "~ag-grid-community/styles/ag-grid.css";
@import "~ag-grid-community/styles/ag-theme-balham.css";


/* apply a natural box layout model to all elements, but allowing person to change */ /* apply a natural box layout model to all elements, but allowing person to change */
html {box-sizing:border-box;} html {box-sizing:border-box;}


+ 2
- 2
httpdocs/plp-angular/tsconfig.app.json Wyświetl plik

@@ -2,7 +2,7 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "./out-tsc/app", "outDir": "./out-tsc/app",
"types": []
"types": ["node"]
}, },
"files": [ "files": [
"src/main.ts", "src/main.ts",
@@ -16,6 +16,6 @@
"src/**/*.spec.ts" "src/**/*.spec.ts"
], ],
"types": [ "types": [
"node"
] ]
} }

Ładowanie…
Anuluj
Zapisz