{"version":3,"file":"xema-queue-monitor-table-panel.mjs","sources":["../../../projects/queue-monitor-table-panel/src/lib/queue-monitor-table-panel.service.ts","../../../projects/queue-monitor-table-panel/src/lib/queue-monitor-table-panel.component.ts","../../../projects/queue-monitor-table-panel/src/lib/queue-monitor-table-panel.component.html","../../../projects/queue-monitor-table-panel/src/public-api.ts","../../../projects/queue-monitor-table-panel/src/xema-queue-monitor-table-panel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class QueueMonitorTablePanelService {\n\n  constructor() { }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { QueueState, ServerConnection } from 'jema';\nimport moment from 'moment';\nimport { TimeagoModule } from 'ngx-timeago';\n\nimport * as XLSX from 'xlsx';\n\n@Component({\n  selector: 'xe-queue-monitor-table-panel',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatToolbarModule, MatTableModule, MatSortModule,\n    TimeagoModule,\n  ],\n  templateUrl: './queue-monitor-table-panel.component.html',\n  styleUrl: './queue-monitor-table-panel.component.scss',\n})\nexport class QueueMonitorTablePanelComponent implements OnInit {\n  @Input() serverConnection!: ServerConnection;\n  queueUpdates: Array<QueueState> = [];\n\n  @ViewChild(MatSort) sort!: MatSort;\n  @ViewChild('TABLE') table!: ElementRef;\n\n  dataSource: any;\n  displayedColumns = [\n    'queue',\n    'size',\n    'agentsConnected',\n    'maxWaitTimestamp',\n    'callsEntered',\n    'callsConnected',\n  ];\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.serverConnection.queueStates.subscribe((queueUpdates) => {\n      this.queueUpdates = queueUpdates;\n      this.dataSource = new MatTableDataSource(queueUpdates);\n      this.dataSource.sort = this.sort;\n    });\n  }\n\n  applyFilter(event: any) {\n    this.dataSource.filter = event.target.value.trim().toLowerCase();\n  }\n\n  ExportTOExcel() {\n    const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(\n      this.table.nativeElement\n    );\n    const wb: XLSX.WorkBook = XLSX.utils.book_new();\n    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\n    const now = moment().format('MMMM Do YYYY, h:mm:ss a');\n    /* save to file */\n    XLSX.writeFile(wb, 'QueuesStatus_' + now + '.xlsx');\n  }\n}\n","<mat-toolbar>\n  <mat-toolbar-row class=\"toolbar-row\">\n    <span>Queue Monitor</span>\n    <span class=\"spacer\"></span>\n  </mat-toolbar-row>\n</mat-toolbar>\n\n\n\n<table mat-table #table matSort [dataSource]=\"dataSource\">\n\n  <ng-container matColumnDef=\"queue\" sticky>\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Queue Name</th>\n    <td mat-cell *matCellDef=\"let row\">{{row.queue}}</td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"size\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Calls Waiting</th>\n    <td mat-cell *matCellDef=\"let row\">\n      {{row.size}}</td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"agentsConnected\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Agents Logged In</th>\n    <td mat-cell *matCellDef=\"let row\">{{row.agentsConnected}}</td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"maxWaitTimestamp\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Oldest Call Duration</th>\n    <td mat-cell *matCellDef=\"let row\">\n      <span *ngIf=\"row.maxWaitTimestamp !== null\" class=\"badge badge-danger\">\n        {{row.maxWaitTimestamp | timeago:true}}\n      </span>\n    </td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"callsEntered\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Calls Offered</th>\n    <td mat-cell *matCellDef=\"let row\">{{row.callsEntered}}</td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"callsConnected\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header>Calls Answered</th>\n    <td mat-cell *matCellDef=\"let row\">{{row.callsConnected}}</td>\n  </ng-container>\n\n  <tr mat-header-row *matHeaderRowDef=\"displayedColumns;  sticky: true\"></tr>\n  <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>","/*\n * Public API Surface of queue-monitor-table-panel\n */\n\nexport * from './lib/queue-monitor-table-panel.service';\nexport * from './lib/queue-monitor-table-panel.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}