Commit 1ba832b3f0b7526486f6830469962906473ce15e

Authored by trainee
1 parent 2ce7949d
Exists in master

ยิง api ทุก 10 นาที กับ ทำคอมเม้น

src/app/app.module.ts
@@ -13,10 +13,12 @@ import { CommonService } from './services/common/common.service'; @@ -13,10 +13,12 @@ import { CommonService } from './services/common/common.service';
13 import { AppComponent } from './app.component'; 13 import { AppComponent } from './app.component';
14 import { LayoutComponent } from './layout/layout.component'; 14 import { LayoutComponent } from './layout/layout.component';
15 import { DashboardComponent } from './dashboard/dashboard.component'; 15 import { DashboardComponent } from './dashboard/dashboard.component';
  16 +import { ShortPipe } from './dashboard/short';
16 17
17 @NgModule({ 18 @NgModule({
18 declarations: [ 19 declarations: [
19 AppComponent, 20 AppComponent,
  21 + ShortPipe,
20 LayoutComponent, 22 LayoutComponent,
21 DashboardComponent 23 DashboardComponent
22 ], 24 ],
src/app/dashboard/dashboard.component.html
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 [ngStyle] = "{'background-color': getColorDay(item.days.toFixed(0))}"> 8 [ngStyle] = "{'background-color': getColorDay(item.days.toFixed(0))}">
9 <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> --> 9 <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
10 <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> --> 10 <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
11 - <div class="avater" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}" style="font-size: 26px; text-align: center; font-weight: bold;" >{{(item.days).toFixed(0)}}D</div> 11 + <div class="avater" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}" style="font-size: 25px; text-align: center; font-weight: bold;" >{{item.days.toFixed(0)}}D</div>
12 <div class="visual"> 12 <div class="visual">
13 <i class="fa fa-comments"></i> 13 <i class="fa fa-comments"></i>
14 </div> 14 </div>
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <span data-counter="counterup" data-value="">{{item.custgroupName}}</span> 19 <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
20 </div> 20 </div>
21 <div class="desc" style=" color: black;">{{item.team}}</div><br> 21 <div class="desc" style=" color: black;">{{item.team}}</div><br>
22 - <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{item.COMMENT | slice:0:20 }} ....</div> 22 + <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{item.COMMENT | short}}</div>
23 <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> --> 23 <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
24 </div> 24 </div>
25 </a> 25 </a>
src/app/dashboard/dashboard.component.scss
@@ -14,9 +14,7 @@ @@ -14,9 +14,7 @@
14 14
15 } 15 }
16 16
17 -  
18 -  
19 .dashboard-stat { 17 .dashboard-stat {
20 overflow: visible; 18 overflow: visible;
21 - height: 200px; 19 + height: 220px;
22 } 20 }
src/app/dashboard/dashboard.component.ts
@@ -2,6 +2,7 @@ import { Component, OnInit } from &#39;@angular/core&#39;; @@ -2,6 +2,7 @@ import { Component, OnInit } from &#39;@angular/core&#39;;
2 import { ActivatedRoute, Router } from '@angular/router'; 2 import { ActivatedRoute, Router } from '@angular/router';
3 import { ApiService } from '../services/api.service'; 3 import { ApiService } from '../services/api.service';
4 import { CommonService } from '../services/common/common.service'; 4 import { CommonService } from '../services/common/common.service';
  5 +import { async } from 'rxjs/internal/scheduler/async';
5 6
6 @Component({ 7 @Component({
7 selector: 'app-dashboard', 8 selector: 'app-dashboard',
@@ -36,13 +37,21 @@ export class DashboardComponent implements OnInit { @@ -36,13 +37,21 @@ export class DashboardComponent implements OnInit {
36 ) { } 37 ) { }
37 38
38 async ngOnInit() { 39 async ngOnInit() {
39 - const data = {  
40 - // tslint:disable-next-line:max-line-length  
41 - 'query': 'SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname is not null , vtiger_groups.groupname , vu.user_name) as team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( \'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D\' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN \'Closed\' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , \' (\' , vtiger_cf_568.day_amount , \')\') AS type , IFNULL(( SELECT \'Wait for response by\' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = \'Wait for response\' ORDER BY updatetime DESC LIMIT 0 , 1) , \'Created by\') userType , IFNULL(( SELECT concat(\'\' , assigned_by , \'\') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = \'Wait for response\' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = \'HelpDesk\' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != \'\' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = \'set (ติดตั้ง)\' AND LCASE(vtiger_troubletickets. STATUS) != \'closed\') GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100',  
42 - 'params': ['vtiger_crmentity']  
43 - }; 40 +
  41 + setInterval(async() => {
  42 + await this.getData();
  43 + }, 600000);
  44 +
  45 + }
  46 +
  47 + async getData() {
44 try { 48 try {
45 - const response = await this._apiService.post('dynamic', data); 49 + const data = {
  50 + // tslint:disable-next-line:max-line-length
  51 + 'query': 'SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname is not null , vtiger_groups.groupname , vu.user_name) as team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( \'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D\' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN \'Closed\' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , \' (\' , vtiger_cf_568.day_amount , \')\') AS type , IFNULL(( SELECT \'Wait for response by\' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = \'Wait for response\' ORDER BY updatetime DESC LIMIT 0 , 1) , \'Created by\') userType , IFNULL(( SELECT concat(\'\' , assigned_by , \'\') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = \'Wait for response\' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = \'HelpDesk\' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != \'\' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = \'set (ติดตั้ง)\' AND LCASE(vtiger_troubletickets. STATUS) != \'closed\') GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100',
  52 + 'params': ['vtiger_crmentity']
  53 + };
  54 + let response = await this._apiService.post('dynamic', data);
46 if (response !== null) { 55 if (response !== null) {
47 this.resultData = response; 56 this.resultData = response;
48 this.resultData.link = decodeURIComponent(decodeURIComponent(this.resultData.link)); 57 this.resultData.link = decodeURIComponent(decodeURIComponent(this.resultData.link));
@@ -59,7 +68,8 @@ export class DashboardComponent implements OnInit { @@ -59,7 +68,8 @@ export class DashboardComponent implements OnInit {
59 console.log(error); 68 console.log(error);
60 } 69 }
61 } 70 }
62 - } 71 +
  72 +}
63 73
64 // getColor(color) { 74 // getColor(color) {
65 // console.log(color) 75 // console.log(color)
src/app/dashboard/short.ts 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +import { PipeTransform, Pipe } from "@angular/core";
  2 +
  3 +@Pipe ({
  4 + name: 'short'
  5 +})
  6 +export class ShortPipe implements PipeTransform {
  7 + transform(value: string): string {
  8 + return value.substr(0, 30) + ' ...';
  9 + }
  10 +}
0 \ No newline at end of file 11 \ No newline at end of file