dashboard-page.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const app = require('../app')
  2. app.component('appDashboardPage', {
  3. template: html`
  4. <app-user-area title-text="Dashboard">
  5. <div flex layout="row">
  6. <md-card flex ng-repeat="serviceCategory in $ctrl.statistics.serviceCategories">
  7. <md-card-content>
  8. <h2>{{::$ctrl.serviceCategories[serviceCategory.serviceCategory].name}}</h2>
  9. <div ng-repeat="terminal in serviceCategory.terminals">
  10. <h3>{{::$ctrl.terminals[terminal.terminal].name}}</h3>
  11. <table md-table>
  12. <tbody>
  13. <tr ng-repeat="laborCategory in terminal.laborCategories">
  14. <th align="left">{{::$ctrl.laborCategories[laborCategory.laborCategory].name}}</th>
  15. <td align="right">{{laborCategory.costPerCarton | currency}}</td>
  16. </tr>
  17. <tr ng-if="terminal.laborCategories.length > 1">
  18. <th align="left">All</th>
  19. <td align="right">{{terminal.costPerCarton | currency}}</td>
  20. </tr>
  21. </tbody>
  22. </table>
  23. <hr />
  24. </div>
  25. <div ng-if="serviceCategory.terminals.length > 1">
  26. <h3>Overall</h3>
  27. <table md-table>
  28. <tbody>
  29. <tr ng-repeat="laborCategory in serviceCategory.laborCategories">
  30. <th align="left">{{::$ctrl.laborCategories[laborCategory.laborCategory].name}}</th>
  31. <td align="right">{{laborCategory.costPerCarton | currency}}</td>
  32. </tr>
  33. <tr ng-if="serviceCategory.laborCategories.length > 1">
  34. <th align="left">All</th>
  35. <td align="right">{{serviceCategory.costPerCarton | currency}}</td>
  36. </tr>
  37. </tbody>
  38. </table>
  39. </div>
  40. </md-card-content>
  41. </md-card>
  42. </div>
  43. <div flex layout="column" layout-gt-sm="row">
  44. <md-card flex="50" class="mg-margin md-padding">
  45. <md-card-title>
  46. <md-card-title-text>
  47. <span class="md-headline">Labor Costs</span>
  48. <span class="md-subhead"></span>
  49. </md-card-title-text>
  50. </md-card-title>
  51. <md-card-content>
  52. <div style="width: 520px; height: 260px;" >
  53. <canvas class="chart chart-line" chart-data="$ctrl.charts.laborCost.data" chart-colors="$ctrl.charts.laborCost.colors"
  54. chart-labels="$ctrl.charts.laborCost.labels" chart-series="$ctrl.charts.laborCost.series" chart-options="$ctrl.charts.laborCost.options">
  55. </canvas>
  56. </div>
  57. <div ng-repeat="color in $ctrl.charts.laborCost.colors">
  58. <div style="background-color: {{color}}; width: 16px; height: 16px; display: inline-block; margin: 0 4px;"></div>
  59. {{$ctrl.charts.laborCost.series[$index]}}
  60. </div>
  61. </md-card-content>
  62. </md-card>
  63. <md-card flex="50" class="mg-margin md-padding">
  64. <md-card-title>
  65. <md-card-title-text>
  66. <span class="md-headline">Efficiency</span>
  67. <span class="md-subhead"></span>
  68. </md-card-title-text>
  69. </md-card-title>
  70. <md-card-content>
  71. <div style="width: 520px; height: 260px;" >
  72. <canvas class="chart chart-line" chart-data="$ctrl.charts.efficiency.data" chart-colors="$ctrl.charts.efficiency.colors"
  73. chart-labels="$ctrl.charts.efficiency.labels" chart-series="$ctrl.charts.efficiency.series" chart-options="$ctrl.charts.efficiency.options">
  74. </canvas>
  75. </div>
  76. <div ng-repeat="color in $ctrl.charts.efficiency.colors">
  77. <div style="background-color: {{color}}; width: 16px; height: 16px; display: inline-block; margin: 0 4px;"></div>
  78. {{$ctrl.charts.efficiency.series[$index]}}
  79. </div>
  80. </md-card-content>
  81. </md-card>
  82. </div>
  83. </app-user-area>
  84. `,
  85. controller: function(api, statistics) {
  86. api.statistics().then(stats => {
  87. this.statistics = stats
  88. this.charts = statistics.charts(stats.metricsOverTime)
  89. })
  90. api.terminals().then(terminals => {
  91. this.terminals = terminals
  92. })
  93. api.laborCategories().then(laborCategories => {
  94. this.laborCategories = laborCategories
  95. })
  96. api.serviceCategories().then(serviceCategories => {
  97. this.serviceCategories = serviceCategories
  98. })
  99. // statistics.efficiency().then(statistics => {
  100. // Object.assign(this, statistics)
  101. // })
  102. }
  103. })