Commit a8892711409cdda7ca84637b09d6fcff5ec2014f
1 parent
6aa0d866
Exists in
master
เพิ่มแท็บใหม่และ api ใหม่ และเพิ่มวงกลมของวันที่ในแท็บใหม่ เพิ่มปุ่มค้นหาในแท็บใ…
…หม่ และแก้ไขบัคที่ปุ่มค้นหาไม่ตรงตาม type
Showing
4 changed files
with
410 additions
and
5 deletions
Show diff stats
src/app/dashboard/dashboard.component.html
| @@ -41,6 +41,11 @@ | @@ -41,6 +41,11 @@ | ||
| 41 | <span class="badge"> {{resultNum8}} </span> | 41 | <span class="badge"> {{resultNum8}} </span> |
| 42 | </a> | 42 | </a> |
| 43 | </li> | 43 | </li> |
| 44 | + <li class="sbold"> | ||
| 45 | + <a href="#tab9" data-toggle="tab" aria-expanded="false">Follow | ||
| 46 | + <span class="badge"> {{resultNum9}} </span> | ||
| 47 | + </a> | ||
| 48 | + </li> | ||
| 44 | </ul> | 49 | </ul> |
| 45 | <div class="tab-content"> | 50 | <div class="tab-content"> |
| 46 | <div class="panel tab-pane active" id="tab1"> | 51 | <div class="panel tab-pane active" id="tab1"> |
| @@ -910,6 +915,127 @@ | @@ -910,6 +915,127 @@ | ||
| 910 | </div> | 915 | </div> |
| 911 | </div> | 916 | </div> |
| 912 | </div> | 917 | </div> |
| 918 | + <div class="panel tab-pane" id="tab9"> | ||
| 919 | + <div class="caption"> | ||
| 920 | + <h1 class="icon-bubble font-green-sharp"> | ||
| 921 | + <span class="caption-subject font-green-sharp sbold font"> Active</span> | ||
| 922 | + </h1> | ||
| 923 | + | ||
| 924 | + <div class="input-group" style="float: right; margin-top: 11px;"> | ||
| 925 | + <div class="input-icon right"> | ||
| 926 | + <i class="icon-magnifier"> | ||
| 927 | + </i> | ||
| 928 | + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch"> | ||
| 929 | + </div> | ||
| 930 | + </div> | ||
| 931 | + <br> | ||
| 932 | + <br> | ||
| 933 | + <button type="button" class="btn btn-circle button " *ngFor="let name of ButtonValue" (click)="getButton9(name.valueN);getButton9Onhold(name.valueN);" | ||
| 934 | + style="margin-left: 5px; margin-top: 2px;">{{ name.name }}</button> | ||
| 935 | + <hr> | ||
| 936 | + <div *ngIf="showSecret1"> | ||
| 937 | + <p style="text-align: left; font-size: 30px;">0 Tricket</p> | ||
| 938 | + </div> | ||
| 939 | + <br> | ||
| 940 | + </div> | ||
| 941 | + <div class="panel-body"> | ||
| 942 | + <div class="row"> | ||
| 943 | + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData9 | filter:FilterSearch: '' "> | ||
| 944 | + <a class="dashboard-stat dashboard-stat-v2 red " href="{{item.link}}" target="_blank" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}"> | ||
| 945 | + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> --> | ||
| 946 | + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> --> | ||
| 947 | + <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 | ||
| 948 | + <div class="avater2" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}" style="font-size: 26px; text-align: center; font-weight: bold;">{{item.days2.toFixed(0)}}D</div> | ||
| 949 | + </div> | ||
| 950 | + <div class="visual"> | ||
| 951 | + <i class="fa fa-comments"></i> | ||
| 952 | + </div> | ||
| 953 | + <table> | ||
| 954 | + <tr> | ||
| 955 | + <div class="details" style="width: calc(100% - 50px);"> | ||
| 956 | + <div style="text-align: right; margin-top: -60px; color: black;">{{item.type | textshort}}</div> | ||
| 957 | + <div style="text-align: right; color: black;">{{item.STATUS}}</div> | ||
| 958 | + <div class="number" style=" color: black; display: block; text-align: right; margin-top: -7px;"> | ||
| 959 | + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span> | ||
| 960 | + </div> | ||
| 961 | + <div class="desc" style=" color: black;">{{item.team}}</div> | ||
| 962 | + <br> | ||
| 963 | + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> --> | ||
| 964 | + </div> | ||
| 965 | + </tr> | ||
| 966 | + <tr> | ||
| 967 | + <div class="details" style="width: calc(100% - 50px);"> | ||
| 968 | + <div class="desc" style="text-align: left; color: black; margin-top: 120px;">{{item.COMMENT | short}}</div> | ||
| 969 | + <!-- <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> --> | ||
| 970 | + <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> | ||
| 971 | + </div> | ||
| 972 | + </tr> | ||
| 973 | + </table> | ||
| 974 | + </a> | ||
| 975 | + </div> | ||
| 976 | + </div> | ||
| 977 | + </div> | ||
| 978 | + <br> | ||
| 979 | + <br> | ||
| 980 | + <br> | ||
| 981 | + <br> | ||
| 982 | + <!-- On Hold --> | ||
| 983 | + | ||
| 984 | + <div class="caption"> | ||
| 985 | + <h1 class="icon-bubble font-grey-gallery"> | ||
| 986 | + <span class="caption-subject font-grey-gallery sbold font"> On Hold</span> | ||
| 987 | + </h1> | ||
| 988 | + <div class="input-group" style="float: right; margin-top: 11px;"> | ||
| 989 | + <div class="input-icon right"> | ||
| 990 | + <i class="icon-magnifier"> | ||
| 991 | + </i> | ||
| 992 | + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold"> | ||
| 993 | + </div> | ||
| 994 | + </div> | ||
| 995 | + <!-- <br><br> | ||
| 996 | + <button *ngFor="let name of ButtonValue" (click)="getButton(name.valueN)">{{ name.name }}</button> --> | ||
| 997 | + <hr> | ||
| 998 | + <br> | ||
| 999 | + <div *ngIf="showSecret2"> | ||
| 1000 | + <p style="text-align: left; font-size: 30px;">0 Tricket</p> | ||
| 1001 | + </div> | ||
| 1002 | + </div> | ||
| 1003 | + <div class="panel-body"> | ||
| 1004 | + <div class="row"> | ||
| 1005 | + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold9 | filter:FilterSearchOnHold: '' "> | ||
| 1006 | + <a class="dashboard-stat dashboard-stat-v2 red " href="{{item.link}}" target="_blank" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}"> | ||
| 1007 | + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> --> | ||
| 1008 | + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> --> | ||
| 1009 | + <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> | ||
| 1010 | + <div class="visual"> | ||
| 1011 | + <i class="fa fa-comments"></i> | ||
| 1012 | + </div> | ||
| 1013 | + <table> | ||
| 1014 | + <tr> | ||
| 1015 | + <div class="details" style="width: calc(100% - 50px);"> | ||
| 1016 | + <div style="text-align: right; margin-top: -60px; color: black;">{{item.type | textshort}}</div> | ||
| 1017 | + <div style="text-align: right; color: black;">{{item.STATUS}}</div> | ||
| 1018 | + <div class="number" style=" color: black; display: block; text-align: right; margin-top: -7px;"> | ||
| 1019 | + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span> | ||
| 1020 | + </div> | ||
| 1021 | + <div class="desc" style=" color: black;">{{item.team}}</div> | ||
| 1022 | + <br> | ||
| 1023 | + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> --> | ||
| 1024 | + </div> | ||
| 1025 | + </tr> | ||
| 1026 | + <tr> | ||
| 1027 | + <div class="details" style="width: calc(100% - 50px);"> | ||
| 1028 | + <div class="desc" style="text-align: left; color: black; margin-top: 120px;">{{item.COMMENT | short}}</div> | ||
| 1029 | + <!-- <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> --> | ||
| 1030 | + <div class="a desc" style="text-align: left; color: black;">{{item.COMMENT | font}}</div> | ||
| 1031 | + </div> | ||
| 1032 | + </tr> | ||
| 1033 | + </table> | ||
| 1034 | + </a> | ||
| 1035 | + </div> | ||
| 1036 | + </div> | ||
| 1037 | + </div> | ||
| 1038 | + </div> | ||
| 913 | <!-- <div class="panel tab-pane active" id="tab8"> | 1039 | <!-- <div class="panel tab-pane active" id="tab8"> |
| 914 | <div class="caption"> | 1040 | <div class="caption"> |
| 915 | <h1 class="icon-bubble font-green-sharp"> | 1041 | <h1 class="icon-bubble font-green-sharp"> |
src/app/dashboard/dashboard.component.scss
| @@ -11,8 +11,22 @@ | @@ -11,8 +11,22 @@ | ||
| 11 | padding-top: 15px; | 11 | padding-top: 15px; |
| 12 | top: -20px; | 12 | top: -20px; |
| 13 | left: -3px; | 13 | left: -3px; |
| 14 | - | ||
| 15 | } | 14 | } |
| 15 | +.avater2 { | ||
| 16 | + background-color: black; | ||
| 17 | + color: black; | ||
| 18 | + position: relative; | ||
| 19 | + width: 70px; | ||
| 20 | + height: 70px; | ||
| 21 | + border-radius: 50% !important; | ||
| 22 | + border-style: solid; | ||
| 23 | + border-color: black; | ||
| 24 | + text-align: center; | ||
| 25 | + padding-top: 15px; | ||
| 26 | + top: -55px; | ||
| 27 | + left: 70px; | ||
| 28 | +} | ||
| 29 | + | ||
| 16 | 30 | ||
| 17 | .a { | 31 | .a { |
| 18 | white-space: nowrap; | 32 | white-space: nowrap; |
src/app/dashboard/dashboard.component.ts
| @@ -74,6 +74,10 @@ export class DashboardComponent implements OnInit { | @@ -74,6 +74,10 @@ export class DashboardComponent implements OnInit { | ||
| 74 | resultNum8: number = 0; | 74 | resultNum8: number = 0; |
| 75 | resultDataOnHold8: any; | 75 | resultDataOnHold8: any; |
| 76 | 76 | ||
| 77 | + resultData9: any; | ||
| 78 | + resultNum9: number = 0; | ||
| 79 | + resultDataOnHold9: any; | ||
| 80 | + | ||
| 77 | Show1: any = []; | 81 | Show1: any = []; |
| 78 | Show1Onhold: any = []; | 82 | Show1Onhold: any = []; |
| 79 | Show2: any = []; | 83 | Show2: any = []; |
| @@ -88,6 +92,10 @@ export class DashboardComponent implements OnInit { | @@ -88,6 +92,10 @@ export class DashboardComponent implements OnInit { | ||
| 88 | Show6Onhold: any = []; | 92 | Show6Onhold: any = []; |
| 89 | Show7: any = []; | 93 | Show7: any = []; |
| 90 | Show7Onhold: any = []; | 94 | Show7Onhold: any = []; |
| 95 | + Show8: any = []; | ||
| 96 | + Show8Onhold: any = []; | ||
| 97 | + Show9: any = []; | ||
| 98 | + Show9Onhold: any = []; | ||
| 91 | 99 | ||
| 92 | ShowNull:any = []; | 100 | ShowNull:any = []; |
| 93 | ButtonValue = [ | 101 | ButtonValue = [ |
| @@ -763,6 +771,69 @@ setInterval(async () => { | @@ -763,6 +771,69 @@ setInterval(async () => { | ||
| 763 | await this.getDataOnHold8(); | 771 | await this.getDataOnHold8(); |
| 764 | }, 600000); | 772 | }, 600000); |
| 765 | 773 | ||
| 774 | + // ----------------------------9------------------------ | ||
| 775 | + try { | ||
| 776 | + const data9 = { | ||
| 777 | + // tslint:disable-next-line:max-line-length | ||
| 778 | + "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 ,( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.modifiedtime)) / 86400 AS days2 , vtiger_ticketcf.cf_568 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) NOT IN('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid HAVING days2 > 2 ORDER BY vtiger_crmentity.modifiedtime ASC", | ||
| 779 | + "params": ["vtiger_crmentity"] | ||
| 780 | + }; | ||
| 781 | + const response = await this._apiService.post('dynamic', data9); | ||
| 782 | + if (response !== null) { | ||
| 783 | + this.resultData9 = response; | ||
| 784 | + this.resultData9.link = decodeURIComponent(decodeURIComponent(this.resultData9.link)); | ||
| 785 | + console.log('link: ', this.resultData9.link); | ||
| 786 | + // tslint:disable-next-line:forin | ||
| 787 | + for (const i in this.resultData9) { | ||
| 788 | + this.resultData9[i].link = this._common.decodeURI(this.resultData9[i].link); | ||
| 789 | + this.resultData9[i].birth_date = this._common.convertDate(this.resultData9[i].birth_date); | ||
| 790 | + this.resultNum9 = this.resultData9.length; | ||
| 791 | + this.Show9.push(this.resultData9[i]); | ||
| 792 | + } | ||
| 793 | + | ||
| 794 | + // this.Show = Object.assign(this.resultData7); | ||
| 795 | + | ||
| 796 | + } else { | ||
| 797 | + this.resultData9 = []; | ||
| 798 | + } | ||
| 799 | +} catch (error) { | ||
| 800 | + console.log(error); | ||
| 801 | +} | ||
| 802 | + | ||
| 803 | +setInterval(async () => { | ||
| 804 | + await this.getData9(); | ||
| 805 | +}, 600000); | ||
| 806 | + | ||
| 807 | + | ||
| 808 | +// OnHold | ||
| 809 | +try { | ||
| 810 | + const dataOnHold9 = { | ||
| 811 | + // tslint:disable-next-line:max-line-length | ||
| 812 | + "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 ,( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.modifiedtime)) / 86400 AS days2 , vtiger_ticketcf.cf_568 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) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ", | ||
| 813 | + "params": ["vtiger_crmentity"] | ||
| 814 | + }; | ||
| 815 | + const response = await this._apiService.post('dynamic', dataOnHold9); | ||
| 816 | + if (response !== null) { | ||
| 817 | + this.resultDataOnHold9 = response; | ||
| 818 | + this.resultDataOnHold9.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold9.link)); | ||
| 819 | + console.log('link: ', this.resultDataOnHold9.link); | ||
| 820 | + // tslint:disable-next-line:forin | ||
| 821 | + for (const i in this.resultDataOnHold9) { | ||
| 822 | + this.resultDataOnHold9[i].link = this._common.decodeURI(this.resultDataOnHold9[i].link); | ||
| 823 | + this.resultDataOnHold9[i].birth_date = this._common.convertDate(this.resultDataOnHold9[i].birth_date); | ||
| 824 | + this.Show9Onhold.push(this.resultDataOnHold9[i]); | ||
| 825 | + } | ||
| 826 | + } else { | ||
| 827 | + this.resultDataOnHold9 = []; | ||
| 828 | + } | ||
| 829 | +} catch (error) { | ||
| 830 | + console.log(error); | ||
| 831 | +} | ||
| 832 | + | ||
| 833 | +setInterval(async () => { | ||
| 834 | + await this.getDataOnHold9(); | ||
| 835 | +}, 600000); | ||
| 836 | + | ||
| 766 | } | 837 | } |
| 767 | // btnSelect(selVal) { | 838 | // btnSelect(selVal) { |
| 768 | // // console.log(selVal); | 839 | // // console.log(selVal); |
| @@ -1146,7 +1217,7 @@ setInterval(async () => { | @@ -1146,7 +1217,7 @@ setInterval(async () => { | ||
| 1146 | } | 1217 | } |
| 1147 | 1218 | ||
| 1148 | var string2 = valueN.toLowerCase(); | 1219 | var string2 = valueN.toLowerCase(); |
| 1149 | - if (st.indexOf(string2) > -1) { | 1220 | + if (st.startsWith(string2)) { |
| 1150 | // console.log(st); | 1221 | // console.log(st); |
| 1151 | resultArray.push(item); | 1222 | resultArray.push(item); |
| 1152 | } | 1223 | } |
| @@ -1181,7 +1252,7 @@ setInterval(async () => { | @@ -1181,7 +1252,7 @@ setInterval(async () => { | ||
| 1181 | } | 1252 | } |
| 1182 | 1253 | ||
| 1183 | var string2 = valueN.toLowerCase(); | 1254 | var string2 = valueN.toLowerCase(); |
| 1184 | - if (st.indexOf(string2) > -1) { | 1255 | + if (st.startsWith(string2)) { |
| 1185 | console.log(st); | 1256 | console.log(st); |
| 1186 | resultArray.push(item); | 1257 | resultArray.push(item); |
| 1187 | } | 1258 | } |
| @@ -1198,6 +1269,146 @@ setInterval(async () => { | @@ -1198,6 +1269,146 @@ setInterval(async () => { | ||
| 1198 | 1269 | ||
| 1199 | } | 1270 | } |
| 1200 | 1271 | ||
| 1272 | + getButton8(valueN) { | ||
| 1273 | + console.log(valueN); | ||
| 1274 | + | ||
| 1275 | + if (this.Show8.length === 0) { | ||
| 1276 | + return this.Show8; | ||
| 1277 | + } | ||
| 1278 | + | ||
| 1279 | + const resultArray = []; | ||
| 1280 | + for (const item of this.Show8) { | ||
| 1281 | + // console.log('item: ', item); | ||
| 1282 | + | ||
| 1283 | + var st = ''; | ||
| 1284 | + // st = item['team'].toLowerCase() + item['COMMENT'].toLowerCase() + item['custgroupName'].toLowerCase() + item['STATUS'].toLowerCase() ; | ||
| 1285 | + if (item['type']) { | ||
| 1286 | + st = item['type'].toLowerCase(); | ||
| 1287 | + } | ||
| 1288 | + | ||
| 1289 | + var string2 = valueN.toLowerCase(); | ||
| 1290 | + if (st.indexOf(string2) > -1) { | ||
| 1291 | + // console.log(st); | ||
| 1292 | + resultArray.push(item); | ||
| 1293 | + } | ||
| 1294 | + } | ||
| 1295 | + if (resultArray.length === 0) { | ||
| 1296 | + if (valueN !== "") { | ||
| 1297 | + this.showSecret1 = true; | ||
| 1298 | + } | ||
| 1299 | + }else if(resultArray.length > 0) { | ||
| 1300 | + this.showSecret1 = false; | ||
| 1301 | + } | ||
| 1302 | + | ||
| 1303 | + this.resultData8 = resultArray; | ||
| 1304 | + } | ||
| 1305 | + | ||
| 1306 | +/* buttondataOnhold8 */ | ||
| 1307 | + getButton8Onhold(valueN) { | ||
| 1308 | + console.log(valueN); | ||
| 1309 | + | ||
| 1310 | + if (this.Show8Onhold.length === 0) { | ||
| 1311 | + return this.Show8Onhold; | ||
| 1312 | + } | ||
| 1313 | + | ||
| 1314 | + const resultArray = []; | ||
| 1315 | + for (const item of this.Show8Onhold) { | ||
| 1316 | + console.log('item: ', item); | ||
| 1317 | + | ||
| 1318 | + var st = ''; | ||
| 1319 | + // st = item['team'].toLowerCase() + item['COMMENT'].toLowerCase() + item['custgroupName'].toLowerCase() + item['STATUS'].toLowerCase() ; | ||
| 1320 | + if (item['type']) { | ||
| 1321 | + st = item['type'].toLowerCase(); | ||
| 1322 | + } | ||
| 1323 | + | ||
| 1324 | + var string2 = valueN.toLowerCase(); | ||
| 1325 | + if (st.indexOf(string2) > -1) { | ||
| 1326 | + console.log(st); | ||
| 1327 | + resultArray.push(item); | ||
| 1328 | + } | ||
| 1329 | + | ||
| 1330 | + } | ||
| 1331 | + if (resultArray.length === 0) { | ||
| 1332 | + if (valueN !== "") { | ||
| 1333 | + this.showSecret2 = true; | ||
| 1334 | + } | ||
| 1335 | + }else if(resultArray.length > 0) { | ||
| 1336 | + this.showSecret2 = false; | ||
| 1337 | + } | ||
| 1338 | + this.resultDataOnHold8 = resultArray; | ||
| 1339 | + | ||
| 1340 | +} | ||
| 1341 | + | ||
| 1342 | + getButton9(valueN) { | ||
| 1343 | + console.log(valueN); | ||
| 1344 | + | ||
| 1345 | + if (this.Show9.length === 0) { | ||
| 1346 | + return this.Show9; | ||
| 1347 | + } | ||
| 1348 | + | ||
| 1349 | + const resultArray = []; | ||
| 1350 | + for (const item of this.Show9) { | ||
| 1351 | + // console.log('item: ', item); | ||
| 1352 | + | ||
| 1353 | + var st = ''; | ||
| 1354 | + // st = item['team'].toLowerCase() + item['COMMENT'].toLowerCase() + item['custgroupName'].toLowerCase() + item['STATUS'].toLowerCase() ; | ||
| 1355 | + if (item['type']) { | ||
| 1356 | + st = item['type'].toLowerCase(); | ||
| 1357 | + } | ||
| 1358 | + | ||
| 1359 | + var string2 = valueN.toLowerCase(); | ||
| 1360 | + if (st.startsWith(string2)) { | ||
| 1361 | + // console.log(st); | ||
| 1362 | + resultArray.push(item); | ||
| 1363 | + } | ||
| 1364 | + } | ||
| 1365 | + if (resultArray.length === 0) { | ||
| 1366 | + if (valueN !== "") { | ||
| 1367 | + this.showSecret1 = true; | ||
| 1368 | + } | ||
| 1369 | + }else if(resultArray.length > 0) { | ||
| 1370 | + this.showSecret1 = false; | ||
| 1371 | + } | ||
| 1372 | + | ||
| 1373 | + this.resultData9 = resultArray; | ||
| 1374 | +} | ||
| 1375 | + | ||
| 1376 | + /* buttondataOnhold9 */ | ||
| 1377 | + getButton9Onhold(valueN) { | ||
| 1378 | + console.log(valueN); | ||
| 1379 | + | ||
| 1380 | + if (this.Show9Onhold.length === 0) { | ||
| 1381 | + return this.Show9Onhold; | ||
| 1382 | + } | ||
| 1383 | + | ||
| 1384 | + const resultArray = []; | ||
| 1385 | + for (const item of this.Show9Onhold) { | ||
| 1386 | + console.log('item: ', item); | ||
| 1387 | + | ||
| 1388 | + var st = ''; | ||
| 1389 | + // st = item['team'].toLowerCase() + item['COMMENT'].toLowerCase() + item['custgroupName'].toLowerCase() + item['STATUS'].toLowerCase() ; | ||
| 1390 | + if (item['type']) { | ||
| 1391 | + st = item['type'].toLowerCase(); | ||
| 1392 | + } | ||
| 1393 | + | ||
| 1394 | + var string2 = valueN.toLowerCase(); | ||
| 1395 | + if (st.startsWith(string2)) { | ||
| 1396 | + console.log(st); | ||
| 1397 | + resultArray.push(item); | ||
| 1398 | + } | ||
| 1399 | + | ||
| 1400 | + } | ||
| 1401 | + if (resultArray.length === 0) { | ||
| 1402 | + if (valueN !== "") { | ||
| 1403 | + this.showSecret2 = true; | ||
| 1404 | + } | ||
| 1405 | + }else if(resultArray.length > 0) { | ||
| 1406 | + this.showSecret2 = false; | ||
| 1407 | + } | ||
| 1408 | + this.resultDataOnHold9 = resultArray; | ||
| 1409 | + | ||
| 1410 | +} | ||
| 1411 | + | ||
| 1201 | /////////////Get data come to use////////////////////// | 1412 | /////////////Get data come to use////////////////////// |
| 1202 | 1413 | ||
| 1203 | 1414 | ||
| @@ -1304,6 +1515,7 @@ setInterval(async () => { | @@ -1304,6 +1515,7 @@ setInterval(async () => { | ||
| 1304 | console.log(error); | 1515 | console.log(error); |
| 1305 | } | 1516 | } |
| 1306 | } | 1517 | } |
| 1518 | + | ||
| 1307 | //----------------------------3------------------------ | 1519 | //----------------------------3------------------------ |
| 1308 | // Active | 1520 | // Active |
| 1309 | async getData3() { | 1521 | async getData3() { |
| @@ -1617,4 +1829,57 @@ setInterval(async () => { | @@ -1617,4 +1829,57 @@ setInterval(async () => { | ||
| 1617 | console.log(error); | 1829 | console.log(error); |
| 1618 | } | 1830 | } |
| 1619 | } | 1831 | } |
| 1832 | + | ||
| 1833 | + // ----------------------------9------------------------ | ||
| 1834 | + // Active | ||
| 1835 | + async getData9() { | ||
| 1836 | + try { | ||
| 1837 | + const data9 = { | ||
| 1838 | + // tslint:disable-next-line:max-line-length | ||
| 1839 | + "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 ,( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.modifiedtime)) / 86400 AS days2 , vtiger_ticketcf.cf_568 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) NOT IN('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid HAVING days2 > 2 ORDER BY vtiger_crmentity.modifiedtime ASC", | ||
| 1840 | + "params": ["vtiger_crmentity"] | ||
| 1841 | + }; | ||
| 1842 | + const response = await this._apiService.post('dynamic', data9); | ||
| 1843 | + if (response !== null) { | ||
| 1844 | + this.resultData9 = response; | ||
| 1845 | + this.resultData9.link = decodeURIComponent(decodeURIComponent(this.resultData9.link)); | ||
| 1846 | + console.log('link: ', this.resultData9.link); | ||
| 1847 | + // tslint:disable-next-line:forin | ||
| 1848 | + for (const i in this.resultData9) { | ||
| 1849 | + this.resultData9[i].link = this._common.decodeURI(this.resultData9[i].link); | ||
| 1850 | + this.resultData9[i].birth_date = this._common.convertDate(this.resultData9[i].birth_date); | ||
| 1851 | + this.Show9.push(this.resultData9[i]); | ||
| 1852 | + } | ||
| 1853 | + } else { | ||
| 1854 | + this.resultData9 = []; | ||
| 1855 | + } | ||
| 1856 | + } catch (error) { | ||
| 1857 | + console.log(error); | ||
| 1858 | + } | ||
| 1859 | + } | ||
| 1860 | + // On Hold | ||
| 1861 | + async getDataOnHold9() { | ||
| 1862 | + try { | ||
| 1863 | + const dataOnHold9 = { | ||
| 1864 | + // tslint:disable-next-line:max-line-length | ||
| 1865 | + "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 ,( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.modifiedtime)) / 86400 AS days2 , vtiger_ticketcf.cf_568 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) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC ", | ||
| 1866 | + "params": ["vtiger_crmentity"] | ||
| 1867 | + }; | ||
| 1868 | + const response = await this._apiService.post('dynamic', dataOnHold9); | ||
| 1869 | + if (response !== null) { | ||
| 1870 | + this.resultDataOnHold9 = response; | ||
| 1871 | + this.resultDataOnHold9.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold9.link)); | ||
| 1872 | + console.log('link: ', this.resultDataOnHold9.link); | ||
| 1873 | + // tslint:disable-next-line:forin | ||
| 1874 | + for (const i in this.resultDataOnHold9) { | ||
| 1875 | + this.resultDataOnHold9[i].link = this._common.decodeURI(this.resultDataOnHold9[i].link); | ||
| 1876 | + this.resultDataOnHold9[i].birth_date = this._common.convertDate(this.resultDataOnHold9[i].birth_date); | ||
| 1877 | + } | ||
| 1878 | + } else { | ||
| 1879 | + this.resultDataOnHold9 = []; | ||
| 1880 | + } | ||
| 1881 | + } catch (error) { | ||
| 1882 | + console.log(error); | ||
| 1883 | + } | ||
| 1884 | + } | ||
| 1620 | } | 1885 | } |
| 1621 | \ No newline at end of file | 1886 | \ No newline at end of file |
src/app/dashboard/texrshort.ts
| @@ -8,8 +8,8 @@ export class TextShortPipe implements PipeTransform { | @@ -8,8 +8,8 @@ export class TextShortPipe implements PipeTransform { | ||
| 8 | if(value === null){ | 8 | if(value === null){ |
| 9 | value = ''; | 9 | value = ''; |
| 10 | } | 10 | } |
| 11 | - if (value.length > 28) { | ||
| 12 | - return value.substr(0, 28) + ' ...'; | 11 | + if (value.length > 20) { |
| 12 | + return value.substr(0, 20) + ' ...'; | ||
| 13 | } | 13 | } |
| 14 | return value; | 14 | return value; |
| 15 | } | 15 | } |