{"version":3,"file":"barcoding-widget-piecework-in.mjs","sources":["../../src/lib/piece-work-in-form/piece-work-in-form.component.ts","../../src/lib/piece-work-in-form/piece-work-in-form.component.html","../../src/lib/config/config.component.ts","../../src/lib/config/modal.html","../../src/lib/widget-piecework-in.component.ts","../../src/lib/widget-piecework-in.component.html","../../src/lib/widget-piecework-in.module.ts","../../src/public-api.ts","../../src/barcoding-widget-piecework-in.ts"],"sourcesContent":["import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\nimport { FocusService } from '@barcoding/frontend-core';\nimport {\n  FaultsCategoryControllerService,\n  FaultControllerService,\n  FaultsCategoryWithRelations,\n  FaultWithRelations,\n  PieceWorkLineWithRelations,\n  SessionWithRelations,\n  User,\n  UserControllerService,\n  UserWithRelations,\n} from '@barcoding/sdk';\nimport { Store } from '@ngxs/store';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkLineControllerService } from '@barcoding/sdk';\n\n@Component({\n  selector: 'piece-work-in-form',\n  styles: [\n    `\n      kendo-textbox-container {\n        width: 100%;\n      }\n\n      .h_t {\n        font: normal normal normal 10px/40px IBM Plex Sans;\n        letter-spacing: 0px;\n        color: #666666;\n        opacity: 1;\n      }\n\n      .v_t {\n        font: normal normal normal 18px/40px IBM Plex Sans;\n        letter-spacing: 0px;\n        color: #666666;\n        opacity: 1;\n      }\n\n      .spacer {\n        display: flex;\n        flex-grow: 1;\n      }\n    `,\n  ],\n  templateUrl: 'piece-work-in-form.component.html',\n})\nexport class PieceWorkInForm implements OnInit, OnDestroy {\n  line: PieceWorkLineWithRelations;\n  public finish = false;\n  public qty_in = 0;\n  constructor(\n    private focusService: FocusService,\n    private pieceWorkLineApi: PieceWorkLineControllerService,\n    public dialogRef: MatDialogRef<PieceWorkInForm>,\n    private store: Store,\n    @Inject(MAT_DIALOG_DATA) public data: any\n  ) {\n    this.line = Object.assign({}, data.line);\n    this.qty_in = this.line.out - this.line.in;\n  }\n\n  ngOnInit() {\n    this.focusService.unFocus();\n  }\n\n  ngOnDestroy() {\n    this.focusService.setFocus();\n  }\n  cancel() {\n    this.dialogRef.close();\n  }\n\n  save(qty_in, finish) {\n    this.pieceWorkLineApi\n      .find({\n        filter: JSON.stringify({\n          where: { piecework_id: this.line.piecework_id },\n        }),\n      })\n      .subscribe(lines => {\n        let isFinished = false;\n        const totalLines = lines.length;\n        let totalFinishedLines = 0;\n\n        lines.forEach(line => {\n          if (line.piecework_line_status_id === 2) {\n            totalFinishedLines++;\n          }\n        });\n        if (qty_in === this.line.out) {\n          totalFinishedLines++;\n        }\n        if (totalFinishedLines === totalLines) {\n          isFinished = true;\n        }\n\n        this.dialogRef.close({\n          qty_in,\n          finish,\n          isFinished,\n        });\n      });\n  }\n}\n","<div fxLayout=\"column\" style=\"width: 100%\" fxLayoutAlign=\" none\">\n  <h4>Piece Work</h4>\n  <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n    <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n      <span class=\"h_t\">Assembly Name</span>\n      <span class=\"v_t\">{{ line.part?.part_number }}</span>\n    </div>\n\n    <div class=\"spacer\"></div>\n\n    <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n      <span class=\"h_t\">Mode</span>\n      <span class=\"v_t\">{{ line.mode?.controller }}</span>\n    </div>\n\n    <div class=\"spacer\"></div>\n\n    <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n      <span class=\"h_t\">Allocated Time</span>\n      <span class=\"v_t\">--</span>\n    </div>\n  </div>\n  <form class=\"k-form\" autocomplete=\"off\" #pieceWork=\"ngForm\">\n    <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"20px\">\n      <kendo-floatinglabel fxFlex=\"80%\" text=\"Qty\">\n        <kendo-numerictextbox\n          [format]=\"'n0'\"\n          style=\"width: 100%\"\n          [min]=\"1\"\n          required\n          [(ngModel)]=\"qty_in\"\n          [name]=\"'in'\"\n          [max]=\"line.out\"\n          type=\"number\"></kendo-numerictextbox>\n      </kendo-floatinglabel>\n      <mat-checkbox fxFlexAlign=\"center\" name=\"finish\" [(ngModel)]=\"finish\">\n        Finish\n      </mat-checkbox>\n    </div>\n  </form>\n</div>\n<div\n  style=\"margin-top: 25px\"\n  fxLayoutGap=\"10px\"\n  fxLayout=\"row\"\n  fxLayoutAlign=\"end none\">\n  <button (click)=\"cancel()\" mat-raised-button class=\"t_btn cancel\">\n    Cancel\n  </button>\n  <button\n    (click)=\"save(qty_in, finish)\"\n    [disabled]=\"!pieceWork.valid\"\n    mat-raised-button\n    class=\"t_btn success\">\n    Save\n  </button>\n</div>\n","import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport {\n  ExternalDashboardControllerService,\n  ExternalDashboardWithRelations,\n} from '@barcoding/sdk';\n@Component({\n  selector: 'assignmentFormDialog',\n  templateUrl: 'modal.html',\n  styleUrls: ['./style.css'],\n})\nexport class PieceworkInConfigModal implements OnInit {\n  public config: any = {};\n  constructor(\n    public dialogRef: MatDialogRef<PieceworkInConfigModal>,\n    @Inject(MAT_DIALOG_DATA) public data: any\n  ) {\n    this.config = Object.assign({}, data.currentConfig);\n  }\n\n  ngOnInit() {}\n\n  save(config) {\n    this.dialogRef.close(config);\n  }\n\n  onNoClick(): void {\n    this.dialogRef.close();\n  }\n}\n","<form class=\"k-form\" autocomplete=\"off\" #configForm=\"ngForm\">\n  <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n    <div fxLayout=\"column\" fxLayoutAlign=\" stretch\">\n      <fieldset>\n        <legend>Main</legend>\n        <label fxFlex class=\"k-form-field\">\n          <span>Current User</span>\n          <kendo-switch\n            name=\"current_user\"\n            [(ngModel)]=\"config.current_user\"\n            [onLabel]=\"'Yes'\"\n            [offLabel]=\"'No'\"></kendo-switch>\n        </label>\n        <label fxFlex class=\"k-form-field\">\n          <span>Simple Version</span>\n          <kendo-switch\n            name=\"simple_version\"\n            [(ngModel)]=\"config.simple_version\"\n            [onLabel]=\"'Yes'\"\n            [offLabel]=\"'No'\"></kendo-switch>\n        </label>\n      </fieldset>\n    </div>\n\n    <div\n      fxLayoutGap=\"20px\"\n      style=\"margin-top: 10px\"\n      fxLayout=\"row\"\n      fxLayoutAlign=\"space-around end\">\n      <button\n        fxFlex\n        (click)=\"onNoClick()\"\n        mat-raised-button\n        class=\"t_btn cancel\">\n        Cancel\n      </button>\n      <button\n        fxFlex\n        [disabled]=\"!configForm.form.valid\"\n        (click)=\"save(config)\"\n        class=\"t_btn success\"\n        mat-raised-button>\n        Save\n      </button>\n    </div>\n  </div>\n</form>\n","import {\n  ChangeDetectorRef,\n  Component,\n  OnDestroy,\n  OnInit,\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Select, Store } from '@ngxs/store';\nimport {\n  ConfigInterfaceDashboard,\n  WidgetInterface,\n  WidgetParams,\n} from '@barcoding/gridster-core';\nimport {\n  ModeAccessViewWithRelations,\n  ModeControllerService,\n  ModeWithRelations,\n  ModuleWithRelations,\n  PieceWorkLineControllerService,\n  PieceWorkLineStatusControllerService,\n  PieceWorkLineStatusWithRelations,\n  PieceWorkLineWithRelations,\n  PieceworkTransactionStatusControllerService,\n  PieceworkTransactionStatusWithRelations,\n  PieceWorkWithRelations,\n  UserControllerService,\n  UserWithRelations,\n  WidgetConfigWithRelations,\n} from '@barcoding/sdk';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport {\n  ResetStorePieceWork,\n  FindPieceWorkEmployee,\n} from '@barcoding/module-piecework';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n  ChangeStatePieceWork,\n  isMode,\n  ModeState,\n  PieceWorkState,\n  PieceWorkCollect,\n} from '@barcoding/frontend-core';\nimport { ModuleState } from '@barcoding/core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport {\n  CompositeFilterDescriptor,\n  FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { DataStateChangeEvent } from '@progress/kendo-angular-grid';\nimport { PageEvent } from '@angular/material/paginator';\n\nexport interface PieceWorkInFilters {\n  pw_id?: number;\n  document?: string;\n  user?: UserWithRelations;\n  mode?: ModeWithRelations;\n  status?: PieceWorkLineStatusWithRelations;\n}\n\n@Component({\n  selector: 'widget-piece-work-in',\n  styleUrls: ['./widget-piecework-in.component.scss'],\n  templateUrl: './widget-piecework-in.component.html',\n})\nexport class WidgetPieceworkInComponent\n  extends ConfigInterfaceDashboard\n  implements OnInit, OnDestroy, WidgetInterface\n{\n  public configChanged$: Subject<any> = new Subject<any>();\n  public myConfigSubscription: Subscription;\n  public isAdmin = false;\n  public item: WidgetConfigWithRelations;\n  public params: WidgetParams;\n  public filters: any = {\n    logic: 'and',\n    filters: [\n      {\n        field: 'piecework_line_status_id',\n        value: 1,\n      },\n    ],\n  };\n  displayedColumnsOrg = [\n    'pw_line',\n    'employee',\n    'document',\n    'assembly',\n    'mode',\n    'unit_price',\n    'percentage',\n    'qty',\n    'in',\n    'finish',\n    'total',\n    'status',\n  ];\n  displayedColumns = [\n    'pw_line',\n    'employee',\n    'document',\n    'assembly',\n    'mode',\n    'unit_price',\n    'percentage',\n    'qty',\n    'in',\n    'finish',\n    'total',\n    'status',\n  ]; // column display value\n  displayedColumnsSimple = [\n    'employee',\n    'document',\n    'assembly',\n    'finish',\n    'total',\n  ]; // column display value\n  dataSource: MatTableDataSource<any>;\n  @Select(PieceWorkState.pieceworks) pieceworks$: Observable<\n    PieceWorkLineWithRelations[]\n  >;\n  @Select(PieceWorkState.total) total$: Observable<number>;\n\n  public pieceworkSubscription: Subscription;\n  public employee = null;\n  public status = 1;\n  public object;\n  public barcodes: Array<string> = [];\n  public users: UserWithRelations[] = [];\n  public objectSubscription: Subscription;\n  public statuses: PieceWorkLineStatusWithRelations[] = [];\n  public currentUserConfig;\n  public state: Observable<any>;\n  public stateSubscription: Subscription;\n  @Select(PieceWorkState.state) state$: Observable<DataStateChangeEvent>;\n  public modes: ModeWithRelations[] = [];\n  public defaultItemMode: any = { id: null, controller: 'Show all...' };\n  public defaultItemStatus: any = { id: null, name: 'Show all...' };\n\n  constructor(\n    public modeApi: ModeControllerService,\n    private userApi: UserControllerService,\n    public store: Store,\n    private cdr: ChangeDetectorRef,\n    public dialog: MatDialog,\n    private statusesApi: PieceWorkLineStatusControllerService,\n    private pieceWorkLineApi: PieceWorkLineControllerService\n  ) {\n    super(dialog, PieceworkInConfigModal, store, '60%');\n  }\n\n  getValue(field: string, isMultiLine = false) {\n    if (!this.filters) {\n      return null;\n    }\n\n    if (!this.filters.filters) {\n      return null;\n    }\n    const data: any = this.filters.filters.find(\n      (value: FilterDescriptor) => value.field === field\n    );\n\n    if (isMultiLine) {\n      if (data && data.value && data.value.length) {\n        return data.value.join('\\n');\n      }\n    }\n\n    return data ? data.value : '';\n  }\n  ngOnInit() {\n    this.modeApi\n      .find({ filter: JSON.stringify({ where: { is_piecework: true } }) })\n      .subscribe(_ => {\n        this.modes = _;\n      });\n\n    this.statusesApi.find().subscribe(_ => {\n      this.statuses = _;\n    });\n    const currentUser = this.store.selectSnapshot<UserWithRelations>(\n      AuthState.user\n    );\n    // example of default filter on start\n    // this.filters.filters.push({\n    //   operator: 'eq',\n    //   field: 'piecework_id',\n    //   value: 200,\n    // });\n    // this.store.dispatch(\n    //   new ChangeStatePieceWork({\n    //     skip: 0,\n    //     sort: [{ field: 'id', dir: 'desc' }],\n    //     take: 10,\n    //     filter: this.filters,\n    //   })\n    // );\n    this.stateSubscription = this.state$.subscribe(_ => {\n      if (_.filter) {\n        this.filters = _.filter;\n      }\n    });\n\n    const mode = this.store.selectSnapshot<ModeAccessViewWithRelations | {}>(\n      ModeState.mode\n    );\n\n    const currentModule = this.store.selectSnapshot<ModuleWithRelations>(\n      ModuleState.module\n    );\n\n    if (currentModule) {\n      const isAdmin = currentUser.groups.find(\n        value => value.module_group_id === currentModule.admin_group_id\n      );\n      if (isAdmin) {\n        this.isAdmin = true;\n      }\n    }\n\n    if (mode && isMode(mode)) {\n      const isAdminMode = currentUser.groups.find(\n        value => value.module_group_id === mode.admin_group_id\n      );\n      const isModeratorMode = currentUser.groups.find(\n        value => value.module_group_id === mode.moderator_group_id\n      );\n\n      if (isModeratorMode || isAdminMode) {\n        this.isAdmin = true;\n      }\n    }\n\n    const currentUserConfig =\n      this.item.config && this.item.config.current_user ? true : false;\n    if (currentUserConfig) {\n      this.isAdmin = false;\n    }\n\n    if (!this.isAdmin) {\n      const currentUser = this.store.selectSnapshot<UserWithRelations>(\n        AuthState.user\n      );\n\n      this.users.push(currentUser);\n      let filters: any = {};\n\n      if (this.item.config.simple_version) {\n        this.displayedColumns = this.displayedColumnsSimple.slice();\n        filters = {\n          logic: 'and',\n          filters: [\n            {\n              field: 'user_id',\n              value: currentUser.id,\n            },\n            {\n              field: 'piecework_line_status_id',\n              value: 2,\n            },\n          ],\n        };\n      } else {\n        filters = {\n          logic: 'and',\n          filters: [\n            {\n              field: 'piecework_line_status_id',\n              value: 1,\n            },\n            {\n              field: 'user_id',\n              value: currentUser.id,\n            },\n          ],\n        };\n      }\n      this.store.dispatch(\n        new ChangeStatePieceWork({\n          skip: 0,\n          sort: [{ field: 'id', dir: 'desc' }],\n          take: 20,\n          filter: filters,\n        })\n      );\n    }\n\n    if (this.isAdmin) {\n      this.displayedColumns = [\n        'pw_line',\n        'employee',\n        'document',\n        'mode',\n        'percentage',\n        'qty',\n        'finish',\n        'total',\n        'status',\n        'actions',\n      ]; // column display value\n    }\n\n    /**\n     * example set filter outside\n     */\n    // setTimeout(() => {\n    //   const filters: CompositeFilterDescriptor = {\n    //     logic: 'and',\n    //     filters: [\n    //       {\n    //         operator: 'eq',\n    //         field: 'piecework_id',\n    //         value: 202,\n    //       },\n    //     ],\n    //   };\n    //   this.store.dispatch(\n    //     new ChangeStatePieceWork({\n    //       skip: 0,\n    //       sort: [{ field: 'id', dir: 'desc' }],\n    //       take: 10,\n    //       filter: filters,\n    //     })\n    //   );\n    // }, 8000);\n\n    this.pieceworkSubscription = this.pieceworks$.subscribe(_ => {\n      const data = _.map(value => {\n        return {\n          ...value,\n          formIn: value.out - value.in,\n        };\n      });\n      this.dataSource = new MatTableDataSource(data);\n    });\n  }\n\n  getMax(row: PieceWorkLineWithRelations) {\n    return row.out - row.in;\n  }\n\n  registerIn(row: PieceWorkLineWithRelations, qty_in: number, finish) {\n    this.pieceWorkLineApi\n      .find({\n        filter: JSON.stringify({\n          where: { piecework_id: row.piecework_id },\n        }),\n      })\n      .subscribe(lines => {\n        let isFinished = false;\n        const totalLines = lines.length;\n        let totalFinishedLines = 0;\n\n        lines.forEach(line => {\n          if (line.piecework_line_status_id === 2) {\n            totalFinishedLines++;\n          }\n        });\n        if (qty_in === row.out) {\n          totalFinishedLines++;\n        }\n        if (totalFinishedLines === totalLines) {\n          isFinished = true;\n        }\n\n        const user_id = this.store.selectSnapshot<UserWithRelations>(\n          AuthState.user\n        ).id;\n        const finishObject = finish ? qty_in : 0;\n        this.store.dispatch(\n          new PieceWorkCollect(\n            row.piecework_id,\n            qty_in,\n            row.id,\n            user_id,\n            finishObject,\n            isFinished\n          )\n        );\n      });\n  }\n\n  buildBarcodeList(value: string) {\n    this.barcodes = value\n      .split('\\n')\n      .filter(value => value != null && value.length > 0)\n      .map(value => value.trim());\n  }\n\n  valueChange(field, event) {\n    if (!this.filters.filters) {\n      this.filters.filters = [];\n    }\n\n    const filterExists = this.filters.filters.findIndex(\n      (value: FilterDescriptor) => value.field === field\n    );\n\n    if (filterExists >= 0) {\n      this.filters.filters[filterExists].value = event;\n    } else {\n      this.filters.filters.push({\n        operator: 'eq',\n        field,\n        value: event,\n      });\n    }\n\n    this.store.dispatch(\n      new ChangeStatePieceWork({\n        skip: 0,\n        sort: [{ field: 'id', dir: 'desc' }],\n        take: 10,\n        filter: this.filters,\n      })\n    );\n  }\n\n  filterChange(event) {\n    if (event) {\n      this.userApi\n        .find({\n          filter: JSON.stringify({\n            limit: 5,\n            where: { full_name: { like: `%${event}%` } },\n          }),\n        })\n        .subscribe(_ => {\n          this.users = _;\n        });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.pieceworkSubscription) {\n      this.pieceworkSubscription.unsubscribe();\n    }\n    if (this.myConfigSubscription) {\n      this.myConfigSubscription.unsubscribe();\n    }\n    if (this.objectSubscription) {\n      this.objectSubscription.unsubscribe();\n    }\n\n    if (this.stateSubscription) {\n      this.stateSubscription.unsubscribe();\n    }\n    this.store.dispatch(new ResetStorePieceWork());\n    super.destroy();\n  }\n\n  openInForm(row: PieceWorkLineWithRelations) {\n    const dialogRef = this.dialog.open(PieceWorkInForm, {\n      width: '40%',\n      data: { line: row },\n    });\n    dialogRef.afterClosed().subscribe(data => {\n      if (data) {\n        const user_id = this.store.selectSnapshot<UserWithRelations>(\n          AuthState.user\n        ).id;\n        const finish = data.finish ? data.qty_in : 0;\n        this.store.dispatch(\n          new PieceWorkCollect(\n            row.piecework_id,\n            data.qty_in,\n            row.id,\n            user_id,\n            finish,\n            data.isFinished\n          )\n        );\n      }\n    });\n  }\n\n  changePage(event: PageEvent) {\n    const take = event.pageSize;\n    const skip = event.pageIndex > 0 ? event.pageIndex * event.pageSize : 0;\n\n    this.store.dispatch(\n      new ChangeStatePieceWork({\n        skip,\n        sort: [{ field: 'id', dir: 'desc' }],\n        take,\n        filter: this.filters,\n      })\n    );\n  }\n\n  formatCurrency(value, currency) {\n    const region = currency.region;\n    const symbol = currency.symbol;\n\n    return value\n      ? value.toLocaleString(region, { style: 'currency', currency: symbol })\n      : 0;\n  }\n}\n@Pipe({ name: 'formatTime' })\nexport class FormatTime implements PipeTransform {\n  convertTime(input, separator) {\n    const pad = input => {\n      return input < 10 ? '0' + input : input;\n    };\n    return [\n      pad(Math.floor(input / 3600)),\n      pad(Math.floor((input % 3600) / 60)),\n      pad(Math.floor(input % 60)),\n    ].join(typeof separator !== 'undefined' ? separator : ':');\n  }\n\n  transform(value: any): any {\n    return value ? this.convertTime(value, ':') : '00:00:00';\n  }\n}\n","<div fxLayout=\"column\" fxLayoutGap=\"20px\">\n  <label *ngIf=\"!item.config?.simple_version\" fxFlex class=\"k-form-field\">\n    <form class=\"k-form\" id=\"piecework_in_form\">\n      <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n        <label fxFlex class=\"k-form-field\">\n          <span>Barcode</span>\n          <kendo-textarea\n            placeholder=\"Scan barcodes here\"\n            [resizable]=\"'vertical'\"\n            [rows]=\"3\"\n            [value]=\"getValue('barcodes', true)\"\n            (valueChange)=\"buildBarcodeList($event)\"\n            flow=\"vertical\">\n          </kendo-textarea>\n        </label>\n        <button\n          fxFlex=\"50px\"\n          (click)=\"valueChange('barcodes', barcodes)\"\n          matTooltip=\"Filter\"\n          [matTooltipPosition]=\"'above'\"\n          mat-icon-button\n          color=\"primary\"\n          aria-label=\"Example icon button with a heart icon\">\n          <mat-icon>refresh</mat-icon>\n        </button>\n      </div>\n      <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n        <label fxFlex=\"25%\" class=\"k-form-field\">\n          <span>PW ID</span>\n          <input\n            style=\"width: 100%\"\n            kendoTextBox\n            [value]=\"getValue('piecework_id')\"\n            (input)=\"valueChange('piecework_id', $event.target.value)\"\n            name=\"piecework_id\"\n            type=\"text\" />\n        </label>\n\n        <!-- <label fxFlex=\"20%\" class=\"k-form-field\">\n          <span>Barcode</span>\n          <kendo-textarea\n            [style.marginBottom.px]=\"10\"\n            placeholder=\"Event name\"\n            resizable=\"auto\"\n            flow=\"horizontal\"\n          >\n          </kendo-textarea>\n\n          <!-- <input\n            style=\"width: 100%\"\n            kendoTextBox\n            [value]=\"getValue('barcode')\"\n            (input)=\"valueChange('barcode', $event.target.value)\"\n            name=\"barcode\"\n            type=\"text\"\n          /> -->\n\n        <label fxFlex=\"25%\" class=\"k-form-field\">\n          <span>Employee</span>\n          <kendo-combobox\n            style=\"width: 100%\"\n            name=\"user_id\"\n            [value]=\"getValue('user_id')\"\n            [filterable]=\"true\"\n            (filterChange)=\"filterChange($event)\"\n            (valueChange)=\"valueChange('user_id', $event)\"\n            [data]=\"users\"\n            [textField]=\"'full_name'\"\n            [disabled]=\"!isAdmin\"\n            [valueField]=\"'id'\"\n            [valuePrimitive]=\"true\">\n          </kendo-combobox>\n        </label>\n\n        <label fxFlex=\"25%\" class=\"k-form-field\">\n          <span>Mode</span>\n          <kendo-dropdownlist\n            [defaultItem]=\"defaultItemMode\"\n            [data]=\"modes\"\n            [value]=\"getValue('mode_id')\"\n            [valuePrimitive]=\"true\"\n            (valueChange)=\"valueChange('mode_id', $event)\"\n            [textField]=\"'controller'\"\n            [valueField]=\"'id'\"\n            name=\"true\">\n          </kendo-dropdownlist>\n        </label>\n\n        <label fxFlex=\"25%\" class=\"k-form-field\">\n          <span>Status</span>\n          <kendo-dropdownlist\n            [defaultItem]=\"defaultItemStatus\"\n            [data]=\"statuses\"\n            [value]=\"getValue('piecework_line_status_id')\"\n            [valuePrimitive]=\"true\"\n            (valueChange)=\"valueChange('piecework_line_status_id', $event)\"\n            [textField]=\"'name'\"\n            [valueField]=\"'id'\"\n            name=\"true\">\n          </kendo-dropdownlist>\n        </label>\n      </div>\n    </form>\n  </label>\n\n  <mat-table #table [dataSource]=\"dataSource\">\n    <ng-container cdkColumnDef=\"pw_line\">\n      <mat-header-cell *cdkHeaderCellDef>PW</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ row.piecework?.id }}/{{ row.piecework_order_line }}</span>\n      </mat-cell>\n    </ng-container>\n    <ng-container cdkColumnDef=\"employee\">\n      <mat-header-cell *cdkHeaderCellDef>Employee</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ row?.piecework?.prepared_for?.full_name }}</span>\n      </mat-cell>\n    </ng-container>\n    <ng-container cdkColumnDef=\"document\">\n      <mat-header-cell *cdkHeaderCellDef>Document</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ row.document?.barcode }}</span>\n      </mat-cell>\n    </ng-container>\n    <ng-container cdkColumnDef=\"assembly\">\n      <mat-header-cell *cdkHeaderCellDef>Assembly</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ row.part?.part_number }}</span>\n      </mat-cell>\n    </ng-container>\n    <!-- <ng-container cdkColumnDef=\"qty_max\">\n        <mat-header-cell *cdkHeaderCellDef>Qty</mat-header-cell>\n        <mat-cell *cdkCellDef=\"let row\">\n          <span>{{ getMaxQtyLeftForRow(row)}}</span>\n        </mat-cell>\n      </ng-container> -->\n    <ng-container cdkColumnDef=\"mode\">\n      <mat-header-cell *cdkHeaderCellDef>Mode</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ row.mode?.controller }}</span>\n      </mat-cell>\n    </ng-container>\n    <ng-container cdkColumnDef=\"unit_price\">\n      <mat-header-cell *cdkHeaderCellDef>Unit Price</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ formatCurrency(row.unit_price, row.currency) }}\n      </mat-cell>\n    </ng-container>\n    <ng-container cdkColumnDef=\"percentage\">\n      <mat-header-cell *cdkHeaderCellDef>Job %</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ row.work_percentage | percent }}\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"qty\">\n      <mat-header-cell *cdkHeaderCellDef>Out / In</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ row.out }} / {{ !row.in ? 0 : row.in }}\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"in\">\n      <mat-header-cell *cdkHeaderCellDef>Qty In</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ !row.in ? 0 : row.in }}\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"finish\">\n      <mat-header-cell *cdkHeaderCellDef>Qty Finish</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ row.finish }}\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"status\">\n      <mat-header-cell *cdkHeaderCellDef>Status</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        {{ row.line_status?.name }}\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"total\">\n      <mat-header-cell *cdkHeaderCellDef>Total</mat-header-cell>\n      <mat-cell *cdkCellDef=\"let row\">\n        <span>{{ formatCurrency(row.value, row.currency) }}</span>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container cdkColumnDef=\"actions\">\n      <mat-header-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkHeaderCellDef\n        >Actions</mat-header-cell\n      >\n      <mat-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkCellDef=\"let row\">\n        <ng-container *ngIf=\"row.piecework_line_status_id == 1\">\n          <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n            <kendo-numerictextbox\n              [format]=\"'n0'\"\n              style=\"width: 100%\"\n              [min]=\"1\"\n              [(ngModel)]=\"row.formIn\"\n              [name]=\"'in_' + row.id\"\n              [max]=\"getMax(row)\"\n              type=\"number\"></kendo-numerictextbox>\n            <mat-checkbox\n              matTooltip=\"Finish\"\n              [matTooltipPosition]=\"'above'\"\n              fxFlexAlign=\"center\"\n              [name]=\"'finish_' + row.id\"\n              [(ngModel)]=\"row.formFinish\">\n            </mat-checkbox>\n            <button\n              [disabled]=\"row.in == row.out || row.formIn > row.out - row.in\"\n              matTooltip=\"Save\"\n              (click)=\"registerIn(row, row.formIn, row.formFinish)\"\n              [matTooltipPosition]=\"'above'\"\n              mat-icon-button\n              color=\"warn\"\n              aria-label=\"Example icon button with a heart icon\">\n              <mat-icon>save</mat-icon>\n            </button>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"row.piecework_line_status_id == 2\">\n          <span>Line finished</span>\n        </ng-container>\n      </mat-cell>\n    </ng-container>\n\n    <mat-header-row *cdkHeaderRowDef=\"displayedColumns\"></mat-header-row>\n    <mat-row *cdkRowDef=\"let row; columns: displayedColumns\"></mat-row>\n  </mat-table>\n  <mat-paginator\n    #paginator\n    [length]=\"total$ | async\"\n    [pageIndex]=\"0\"\n    (page)=\"changePage($event)\"\n    [pageSize]=\"10\"\n    [pageSizeOptions]=\"[5, 10, 25, 100]\">\n  </mat-paginator>\n</div>\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { NgxsModule } from '@ngxs/store';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { InputsModule, SwitchModule } from '@progress/kendo-angular-inputs';\nimport { DynamicComponentLoaderModule } from '@barcoding/gridster-core';\nimport { PieceWorkState } from '@barcoding/frontend-core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n  FormatTime,\n  WidgetPieceworkInComponent,\n} from './widget-piecework-in.component';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n  declarations: [\n    WidgetPieceworkInComponent,\n    FormatTime,\n    PieceWorkInForm,\n    PieceworkInConfigModal,\n  ],\n  imports: [\n    CommonModule,\n    FlexLayoutModule,\n    MatDialogModule,\n    CdkTableModule,\n    MatTableModule,\n    MatButtonModule,\n    MatCheckboxModule,\n    MatPaginatorModule,\n    MatIconModule,\n    FormsModule,\n    InputsModule,\n    MatTooltipModule,\n    DropDownsModule,\n    InputsModule,\n    FormsModule,\n    SwitchModule,\n    NgxsModule.forFeature([PieceWorkFrontState, PieceWorkState]),\n    DynamicComponentLoaderModule.forChild(WidgetPieceworkInComponent),\n  ],\n  exports: [WidgetPieceworkInComponent],\n})\nexport class WidgetPieceworkInModule {}\n","/*\n * Public API Surface of widget-piecework-in\n */\n\nexport * from './lib/widget-piecework-in.component';\nexport * from './lib/widget-piecework-in.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i9","i2","i3","i4","i5","i1","i6","i7","i8","i10","i13"],"mappings":"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"}