Commit 1b630ad721c408dd3a1333982f7676072b0a500b

Authored by trainee
1 parent 67c72eea
Exists in master

กดปุ่มเพื่อค้นหา

src/app/dashboard/dashboard.component.html
1   -<!-- งานใหม่ -->
2   -<!-- Active -->
3 1 <div class="portlet-body">
4 2 <div class="tabbable-custom nav-justified">
5 3 <ul class="nav nav-tabs">
6   - <li class="sbold font">
7   - <a href="#tab1" data-toggle="tab" aria-expanded="false">ติดตั้ง
  4 + <li class="active sbold font">
  5 + <a href="#tab1" data-toggle="tab" aria-expanded="true">ติดตั้ง
8 6 <span class="badge"> {{resultNum}} </span>
9 7 </a>
10 8 </li>
... ... @@ -38,14 +36,14 @@
38 36 <span class="badge"> {{resultNum6}} </span>
39 37 </a>
40 38 </li>
41   - <li class="active sbold">
42   - <a href="#tab8" data-toggle="tab" aria-expanded="true">Smart IT
43   - <span class="badge"> {{resultNum}} </span>
  39 + <li class="sbold">
  40 + <a href="#tab8" data-toggle="tab" aria-expanded="false">Smart IT
  41 + <span class="badge"> {{resultNum8}} </span>
44 42 </a>
45 43 </li>
46 44 </ul>
47 45 <div class="tab-content">
48   - <div class="panel tab-pane " id="tab1">
  46 + <div class="panel tab-pane active" id="tab1">
49 47 <div class="caption">
50 48 <h1 class="icon-bubble font-green-sharp">
51 49 <span class="caption-subject font-green-sharp sbold font"> Active</span>
... ... @@ -57,9 +55,6 @@
57 55 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
58 56 </div>
59 57 </div>
60   - <br>
61   - <br>
62   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton1(name.valueN)" style="margin-left: 5px; margin-top: 3px;">{{ name.name }}</button>
63 58 <hr>
64 59 <br>
65 60 </div>
... ... @@ -116,9 +111,6 @@
116 111 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
117 112 </div>
118 113 </div>
119   - <br>
120   - <br>
121   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton1Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
122 114 <hr>
123 115 <br>
124 116 </div>
... ... @@ -171,9 +163,6 @@
171 163 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
172 164 </div>
173 165 </div>
174   - <br>
175   - <br>
176   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton2(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
177 166 <hr>
178 167 <br>
179 168 </div>
... ... @@ -228,9 +217,6 @@
228 217 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
229 218 </div>
230 219 </div>
231   - <br>
232   - <br>
233   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton2Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
234 220 <hr>
235 221 <br>
236 222 </div>
... ... @@ -282,9 +268,6 @@
282 268 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
283 269 </div>
284 270 </div>
285   - <br>
286   - <br>
287   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton3(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
288 271 <hr>
289 272 <br>
290 273 </div>
... ... @@ -339,9 +322,6 @@
339 322 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
340 323 </div>
341 324 </div>
342   - <br>
343   - <br>
344   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton3Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
345 325 <hr>
346 326 <br>
347 327 </div>
... ... @@ -393,9 +373,6 @@
393 373 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
394 374 </div>
395 375 </div>
396   - <br>
397   - <br>
398   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton4(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
399 376 <hr>
400 377 <br>
401 378 </div>
... ... @@ -450,9 +427,6 @@
450 427 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
451 428 </div>
452 429 </div>
453   - <br>
454   - <br>
455   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton4Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
456 430 <hr>
457 431 <br>
458 432 </div>
... ... @@ -504,9 +478,6 @@
504 478 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
505 479 </div>
506 480 </div>
507   - <br>
508   - <br>
509   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton5(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
510 481 <hr>
511 482 <br>
512 483 </div>
... ... @@ -561,9 +532,6 @@
561 532 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
562 533 </div>
563 534 </div>
564   - <br>
565   - <br>
566   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton5Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
567 535 <hr>
568 536 <br>
569 537 </div>
... ... @@ -615,9 +583,6 @@
615 583 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
616 584 </div>
617 585 </div>
618   - <br>
619   - <br>
620   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton6(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
621 586 <hr>
622 587 <br>
623 588 </div>
... ... @@ -672,9 +637,6 @@
672 637 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
673 638 </div>
674 639 </div>
675   - <br>
676   - <br>
677   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton6Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
678 640 <hr>
679 641 <br>
680 642 </div>
... ... @@ -728,7 +690,7 @@
728 690 </div>
729 691 <br>
730 692 <br>
731   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton7(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
  693 + <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton7(name.valueN);getButton7Onhold(name.valueN);" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
732 694 <hr>
733 695  
734 696 <br>
... ... @@ -785,9 +747,6 @@
785 747 <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
786 748 </div>
787 749 </div>
788   - <br>
789   - <br>
790   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton7Onhold(name.valueN)" style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button>
791 750 <!-- <br><br>
792 751 <button *ngFor="let name of ButtonValue" (click)="getButton(name.valueN)">{{ name.name }}</button> -->
793 752 <hr>
... ... @@ -829,7 +788,112 @@
829 788 </div>
830 789 </div>
831 790 </div>
832   - <div class="panel tab-pane active" id="tab8">
  791 + <div class="panel tab-pane" id="tab8">
  792 + <div class="caption">
  793 + <h1 class="icon-bubble font-green-sharp">
  794 + <span class="caption-subject font-green-sharp sbold font"> Active</span>
  795 + </h1>
  796 +
  797 + <div class="input-group" style="float: right; margin-top: 11px;">
  798 + <div class="input-icon right">
  799 + <i class="icon-magnifier">
  800 + </i>
  801 + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
  802 + </div>
  803 + </div>
  804 + <hr>
  805 + <br>
  806 + </div>
  807 + <div class="panel-body">
  808 + <div class="row">
  809 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData8 | filter:FilterSearch: '' ">
  810 + <a class="dashboard-stat dashboard-stat-v2 red " href="{{item.link}}" target="_blank" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}">
  811 + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
  812 + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
  813 + <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>
  814 + <div class="visual">
  815 + <i class="fa fa-comments"></i>
  816 + </div>
  817 + <table>
  818 + <tr>
  819 + <div class="details" style="width: calc(100% - 50px);">
  820 + <div style="text-align: right; margin-top: -60px; color: black;">{{item.type | textshort}}</div>
  821 + <div style="text-align: right; color: black;">{{item.STATUS}}</div>
  822 + <div class="number" style=" color: black; display: block; text-align: right; margin-top: -7px;">
  823 + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
  824 + </div>
  825 + <div class="desc" style=" color: black;">{{item.team}}</div>
  826 + <br>
  827 + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
  828 + </div>
  829 + </tr>
  830 + <tr>
  831 + <div class="details" style="width: calc(100% - 50px);">
  832 + <div class="desc" style="text-align: left; color: black; margin-top: 120px;">{{item.COMMENT | short}}</div>
  833 + <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div>
  834 + </div>
  835 + </tr>
  836 + </table>
  837 + </a>
  838 + </div>
  839 + </div>
  840 + </div>
  841 + <br>
  842 + <br>
  843 + <br>
  844 + <br>
  845 + <!-- On Hold -->
  846 +
  847 + <div class="caption">
  848 + <h1 class="icon-bubble font-grey-gallery">
  849 + <span class="caption-subject font-grey-gallery sbold font"> On Hold</span>
  850 + </h1>
  851 + <div class="input-group" style="float: right; margin-top: 11px;">
  852 + <div class="input-icon right">
  853 + <i class="icon-magnifier">
  854 + </i>
  855 + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
  856 + </div>
  857 + </div>
  858 + <hr>
  859 + <br>
  860 + </div>
  861 + <div class="panel-body">
  862 + <div class="row">
  863 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold8 | filter:FilterSearchOnHold: '' ">
  864 + <a class="dashboard-stat dashboard-stat-v2 red " href="{{item.link}}" target="_blank" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}">
  865 + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
  866 + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
  867 + <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>
  868 + <div class="visual">
  869 + <i class="fa fa-comments"></i>
  870 + </div>
  871 + <table>
  872 + <tr>
  873 + <div class="details" style="width: calc(100% - 50px);">
  874 + <div style="text-align: right; margin-top: -60px; color: black;">{{item.type | textshort}}</div>
  875 + <div style="text-align: right; color: black;">{{item.STATUS}}</div>
  876 + <div class="number" style=" color: black; display: block; text-align: right; margin-top: -7px;">
  877 + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
  878 + </div>
  879 + <div class="desc" style=" color: black;">{{item.team}}</div>
  880 + <br>
  881 + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
  882 + </div>
  883 + </tr>
  884 + <tr>
  885 + <div class="details" style="width: calc(100% - 50px);">
  886 + <div class="desc" style="text-align: left; color: black; margin-top: 120px;">{{item.COMMENT | short}}</div>
  887 + <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div>
  888 + </div>
  889 + </tr>
  890 + </table>
  891 + </a>
  892 + </div>
  893 + </div>
  894 + </div>
  895 + </div>
  896 + <!-- <div class="panel tab-pane active" id="tab8">
833 897 <div class="caption">
834 898 <h1 class="icon-bubble font-green-sharp">
835 899 <span class="caption-subject font-green-sharp sbold font"> Active</span>
... ... @@ -843,17 +907,31 @@
843 907 </div>
844 908 <br>
845 909 <br>
846   - <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton1(name.valueN)" style="margin-left: 5px; margin-top: 3px;">{{ name.name }}</button>
  910 + <div class="row">
  911 + <div class="form-group">
  912 + <div class="items-collection">
  913 + <div class="info-block block-info clearfix">
  914 + <div data-toggle="buttons" class="btn-group bizmoduleselect">
  915 + <label class="btn btn-success" *ngFor="let name of ButtonValue" (click)="btnSelect(name.valueN)" style="margin-left: 5px; margin-top: 3px;">{{ name.name }}
  916 + <div class="itemcontent">
  917 + <input type="checkbox" [(ngModel)]="Namebtn" autocomplete="off" value="">
  918 + </div>
  919 + </label>
  920 + </div>
  921 + </div>
  922 + </div>
  923 + </div>
  924 + </div>
847 925 <hr>
848 926 <br>
849 927 </div>
850 928 <div class="panel-body">
851 929 <div class="row">
852   - <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData | filter:FilterSearch: ''">
853   - <!-- <p *ngIf="showSecret" style="text-align: center;">0 Tricket</p> -->
  930 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData8 | filter:FilterSearch: ''">
  931 + <p *ngIf="showSecret" style="text-align: center;">0 Tricket</p> // comment
854 932 <a class="dashboard-stat dashboard-stat-v2 red " href="{{item.link}}" target="_blank" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}">
855   - <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
856   - <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
  933 + <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> // comment
  934 + <div class="avater">{{(item.days).toFixed(0)}} D</div> // comment
857 935 <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>
858 936 <div class="visual">
859 937 <i class="fa fa-comments"></i>
... ... @@ -868,48 +946,42 @@
868 946 </div>
869 947 <div class="desc" style=" color: black;">{{item.team}}</div>
870 948 <br>
871   - <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
  949 + <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> // comment
872 950 </div>
873 951 </tr>
874 952 <tr>
875 953 <div class="details" style="width: calc(100% - 50px);">
876 954 <div class="desc" style="text-align: left; color: black; margin-top: 120px;">{{item.COMMENT | short}}</div>
877   - <!-- <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> -->
  955 + <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> // comment
878 956 <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div>
879 957 </div>
880 958 </tr>
881 959 </table>
882 960 </a>
883 961 </div>
  962 +
884 963 </div>
  964 + <button type="button" class="btn btn-circle button" *ngFor="let name of ButtonValue" (click)="getButton1(name.valueN)" style="margin-left: 5px; margin-top: 3px;">{{ name.name }}</button> // comment
885 965 </div>
886   - <br>
887   - <br>
888   - <br>
889   - <br>
890   - <!-- On Hold -->
891   - </div>
892   -
893   - </div>
894   -
895   - <!-- งานเก่า
896   - <div class="row">
897   - <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData">
898   - <a class="dashboard-stat dashboard-stat-v2 {{item.color}}" href="#">
899   - <div class="avater {{item.color}}">{{item.id}} D</div>
900   - <div style="margin-left: 20px; margin-top: 10px; color:aliceblue;">{{item.days + " Days"}}</div>
901   - <div class="visual">
902   - <i class="fa fa-comments"></i>
903   - </div>
904   -
905   - <div class="details" style="width: calc(100% - 50px);">
906   - <div class="number">
907   - <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
  966 + ----- // comment start------
  967 + <div class="row">
  968 + <div class="form-group">
  969 + <div class="items-collection">
  970 + <div class="info-block block-info clearfix">
  971 + <div data-toggle="buttons" class="btn-group bizmoduleselect">
  972 + <label class="btn btn-success" *ngFor="let name of ButtonValue" (click)="getButton1(name.valueN)" style="margin-left: 5px; margin-top: 3px;">{{ name.name }}
  973 + <div class="itemcontent">
  974 + <input type="checkbox" name="var_id[]" autocomplete="off" value="">
  975 + </div>
  976 + </label>
  977 + </div>
908 978 </div>
909   - <div class="desc">{{item.team}}</div>
910   - <div class="desc" style="text-align: left;">{{item.comment}}</div>
  979 + </div>
911 980 </div>
912   -
913   - </a>
914   - </div>
915   - </div> -->
916 981 \ No newline at end of file
  982 + </div>
  983 + ------ // coment end-------
  984 + <hr>
  985 + </div> -->
  986 + </div>
  987 + </div>
  988 +</div>
917 989 \ No newline at end of file
... ...
src/app/dashboard/dashboard.component.ts
... ... @@ -20,7 +20,7 @@ export class DashboardComponent implements OnInit {
20 20  
21 21  
22 22 getColorDay(days) {
23   - console.log(days)
  23 + // console.log(days)
24 24  
25 25 if (days >= 0 && days <= 7) {
26 26 return '#32c5d2';
... ... @@ -70,6 +70,10 @@ export class DashboardComponent implements OnInit {
70 70 resultNum7: number = 0;
71 71 resultDataOnHold7: any;
72 72  
  73 + resultData8: any;
  74 + resultNum8: number = 0;
  75 + resultDataOnHold8: any;
  76 +
73 77 Show1: any = [];
74 78 Show1Onhold: any = [];
75 79 Show2: any = [];
... ... @@ -85,8 +89,17 @@ export class DashboardComponent implements OnInit {
85 89 Show7: any = [];
86 90 Show7Onhold: any = [];
87 91  
  92 + Namebtn:any = [];
  93 +
  94 + selectArr: any;
  95 +
88 96 ButtonValue = [
89 97 {
  98 + id: 33,
  99 + name: 'All',
  100 + valueN: ''
  101 + },
  102 + {
90 103 id: 1,
91 104 name: 'ACC',
92 105 valueN: 'acc'
... ... @@ -245,12 +258,7 @@ export class DashboardComponent implements OnInit {
245 258 id: 32,
246 259 name: 'WEB',
247 260 valueN: 'web'
248   - },
249   - {
250   - id: 33,
251   - name: 'All',
252   - valueN: ''
253   - },
  261 + }
254 262 ];
255 263  
256 264 showSecret = false;
... ... @@ -689,10 +697,90 @@ export class DashboardComponent implements OnInit {
689 697 setInterval(async () => {
690 698 await this.getDataOnHold7();
691 699 }, 600000);
  700 +
  701 +
  702 +// ----------------------------8------------------------
  703 +try {
  704 + const data8 = {
  705 + // tslint:disable-next-line:max-line-length
  706 + "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 CONCAT( xx.createdtime , ' : ' , 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) = 'ITS (SmartIT)' AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ",
  707 + "params": ["vtiger_crmentity"]
  708 + };
  709 + const response = await this._apiService.post('dynamic', data8);
  710 + if (response !== null) {
  711 + this.resultData8 = response;
  712 + this.resultData8.link = decodeURIComponent(decodeURIComponent(this.resultData8.link));
  713 + console.log('link: ', this.resultData8.link);
  714 + // tslint:disable-next-line:forin
  715 + for (const i in this.resultData8) {
  716 + this.resultData8[i].link = this._common.decodeURI(this.resultData8[i].link);
  717 + this.resultData8[i].birth_date = this._common.convertDate(this.resultData8[i].birth_date);
  718 + this.resultNum8 = this.resultData8.length;
  719 + }
  720 +
  721 + // this.Show = Object.assign(this.resultData7);
  722 + console.log('hi', this.Show7)
  723 +
  724 + } else {
  725 + this.resultData8 = [];
  726 + }
  727 +} catch (error) {
  728 + console.log(error);
  729 +}
  730 +
  731 +setInterval(async () => {
  732 + await this.getData8();
  733 +}, 600000);
  734 +
  735 +
  736 +// OnHold
  737 +try {
  738 + const dataOnHold8 = {
  739 + // tslint:disable-next-line:max-line-length
  740 + "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 CONCAT( xx.createdtime , ' : ' , 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) = 'ITS (SmartIT)' AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ",
  741 + "params": ["vtiger_crmentity"]
  742 + };
  743 + const response = await this._apiService.post('dynamic', dataOnHold8);
  744 + if (response !== null) {
  745 + this.resultDataOnHold8 = response;
  746 + this.resultDataOnHold8.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold8.link));
  747 + console.log('link: ', this.resultDataOnHold8.link);
  748 + // tslint:disable-next-line:forin
  749 + for (const i in this.resultDataOnHold8) {
  750 + this.resultDataOnHold8[i].link = this._common.decodeURI(this.resultDataOnHold8[i].link);
  751 + this.resultDataOnHold8[i].birth_date = this._common.convertDate(this.resultDataOnHold8[i].birth_date);
  752 + }
  753 + } else {
  754 + this.resultDataOnHold8 = [];
  755 + }
  756 +} catch (error) {
  757 + console.log(error);
  758 +}
  759 +
  760 +setInterval(async () => {
  761 + await this.getDataOnHold8();
  762 +}, 600000);
  763 +
  764 +}
  765 +
  766 +
  767 +
  768 + btnSelect(selVal) {
  769 + // console.log(selVal);
  770 + let arr = [];
  771 + for (let i in selVal) {
  772 + arr.push(selVal);
  773 + }
  774 +
  775 + // console.log('select1 : ', arr);
  776 +
  777 + this.Namebtn = arr;
  778 +
  779 + console.log('select : ', this.Namebtn);
692 780 }
693 781  
694 782 getButton1(valueN) {
695   - console.log(valueN);
  783 + // console.log(valueN);
696 784  
697 785 if (this.Show1.length === 0) {
698 786 return this.Show1;
... ... @@ -710,14 +798,15 @@ export class DashboardComponent implements OnInit {
710 798  
711 799 var string2 = valueN.toLowerCase();
712 800 if (st.indexOf(string2) > -1) {
713   - console.log(st);
  801 + // console.log(st);
714 802 resultArray.push(item);
  803 + // console.log(resultArray);
715 804 }
716 805  
717 806 }
718 807  
719 808 this.resultData = resultArray;
720   - console.log(this.resultData);
  809 + // console.log(this.resultData);
721 810 }
722 811 /* buttondataOnhold1 */
723 812 getButton1Onhold(valueN) {
... ... @@ -1457,4 +1546,56 @@ export class DashboardComponent implements OnInit {
1457 1546 }
1458 1547 }
1459 1548  
  1549 +// ----------------------------8------------------------
  1550 + // Active
  1551 + async getData8() {
  1552 + try {
  1553 + const data8 = {
  1554 + // tslint:disable-next-line:max-line-length
  1555 + "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 CONCAT( xx.createdtime , ' : ' , 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) = 'ITS (SmartIT)' AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ",
  1556 + "params": ["vtiger_crmentity"]
  1557 + };
  1558 + const response = await this._apiService.post('dynamic', data8);
  1559 + if (response !== null) {
  1560 + this.resultData8 = response;
  1561 + this.resultData8.link = decodeURIComponent(decodeURIComponent(this.resultData8.link));
  1562 + console.log('link: ', this.resultData8.link);
  1563 + // tslint:disable-next-line:forin
  1564 + for (const i in this.resultData8) {
  1565 + this.resultData8[i].link = this._common.decodeURI(this.resultData8[i].link);
  1566 + this.resultData8[i].birth_date = this._common.convertDate(this.resultData8[i].birth_date);
  1567 + this.Show7.push(this.resultData8[i]);
  1568 + }
  1569 + } else {
  1570 + this.resultData8 = [];
  1571 + }
  1572 + } catch (error) {
  1573 + console.log(error);
  1574 + }
  1575 + }
  1576 + // On Hold
  1577 + async getDataOnHold8() {
  1578 + try {
  1579 + const dataOnHold8 = {
  1580 + // tslint:disable-next-line:max-line-length
  1581 + "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 CONCAT( xx.createdtime , ' : ' , 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) = 'ITS (SmartIT)' AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ",
  1582 + "params": ["vtiger_crmentity"]
  1583 + };
  1584 + const response = await this._apiService.post('dynamic', dataOnHold8);
  1585 + if (response !== null) {
  1586 + this.resultDataOnHold8 = response;
  1587 + this.resultDataOnHold8.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold8.link));
  1588 + console.log('link: ', this.resultDataOnHold8.link);
  1589 + // tslint:disable-next-line:forin
  1590 + for (const i in this.resultDataOnHold8) {
  1591 + this.resultDataOnHold8[i].link = this._common.decodeURI(this.resultDataOnHold8[i].link);
  1592 + this.resultDataOnHold8[i].birth_date = this._common.convertDate(this.resultDataOnHold8[i].birth_date);
  1593 + }
  1594 + } else {
  1595 + this.resultDataOnHold8 = [];
  1596 + }
  1597 + } catch (error) {
  1598 + console.log(error);
  1599 + }
  1600 + }
1460 1601 }
1461 1602 \ No newline at end of file
... ...
src/app/dashboard/filter.pipe.ts
... ... @@ -15,7 +15,7 @@ export class FilterPipe implements PipeTransform {
15 15 var txt = "0 hi"
16 16 const resultArray = [];
17 17 for (const item of value) {
18   - console.log('item: ', item);
  18 + // console.log('item: ', item);
19 19  
20 20 var st = '';
21 21 //st = item['team'].toLowerCase() + item['COMMENT'].toLowerCase() + item['custgroupName'].toLowerCase() + item['STATUS'].toLowerCase() ;
... ...