Commit a8892711409cdda7ca84637b09d6fcff5ec2014f

Authored by trainee
1 parent 6aa0d866
Exists in master

เพิ่มแท็บใหม่และ api ใหม่ และเพิ่มวงกลมของวันที่ในแท็บใหม่ เพิ่มปุ่มค้นหาในแท็บใ…

…หม่ และแก้ไขบัคที่ปุ่มค้นหาไม่ตรงตาม type
src/app/dashboard/dashboard.component.html
... ... @@ -41,6 +41,11 @@
41 41 <span class="badge"> {{resultNum8}} </span>
42 42 </a>
43 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 49 </ul>
45 50 <div class="tab-content">
46 51 <div class="panel tab-pane active" id="tab1">
... ... @@ -910,6 +915,127 @@
910 915 </div>
911 916 </div>
912 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 1039 <!-- <div class="panel tab-pane active" id="tab8">
914 1040 <div class="caption">
915 1041 <h1 class="icon-bubble font-green-sharp">
... ...
src/app/dashboard/dashboard.component.scss
... ... @@ -11,8 +11,22 @@
11 11 padding-top: 15px;
12 12 top: -20px;
13 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 31 .a {
18 32 white-space: nowrap;
... ...
src/app/dashboard/dashboard.component.ts
... ... @@ -74,6 +74,10 @@ export class DashboardComponent implements OnInit {
74 74 resultNum8: number = 0;
75 75 resultDataOnHold8: any;
76 76  
  77 + resultData9: any;
  78 + resultNum9: number = 0;
  79 + resultDataOnHold9: any;
  80 +
77 81 Show1: any = [];
78 82 Show1Onhold: any = [];
79 83 Show2: any = [];
... ... @@ -88,6 +92,10 @@ export class DashboardComponent implements OnInit {
88 92 Show6Onhold: any = [];
89 93 Show7: any = [];
90 94 Show7Onhold: any = [];
  95 + Show8: any = [];
  96 + Show8Onhold: any = [];
  97 + Show9: any = [];
  98 + Show9Onhold: any = [];
91 99  
92 100 ShowNull:any = [];
93 101 ButtonValue = [
... ... @@ -763,6 +771,69 @@ setInterval(async () =&gt; {
763 771 await this.getDataOnHold8();
764 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 838 // btnSelect(selVal) {
768 839 // // console.log(selVal);
... ... @@ -1146,7 +1217,7 @@ setInterval(async () =&gt; {
1146 1217 }
1147 1218  
1148 1219 var string2 = valueN.toLowerCase();
1149   - if (st.indexOf(string2) > -1) {
  1220 + if (st.startsWith(string2)) {
1150 1221 // console.log(st);
1151 1222 resultArray.push(item);
1152 1223 }
... ... @@ -1181,7 +1252,7 @@ setInterval(async () =&gt; {
1181 1252 }
1182 1253  
1183 1254 var string2 = valueN.toLowerCase();
1184   - if (st.indexOf(string2) > -1) {
  1255 + if (st.startsWith(string2)) {
1185 1256 console.log(st);
1186 1257 resultArray.push(item);
1187 1258 }
... ... @@ -1198,6 +1269,146 @@ setInterval(async () =&gt; {
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 1412 /////////////Get data come to use//////////////////////
1202 1413  
1203 1414  
... ... @@ -1304,6 +1515,7 @@ setInterval(async () =&gt; {
1304 1515 console.log(error);
1305 1516 }
1306 1517 }
  1518 +
1307 1519 //----------------------------3------------------------
1308 1520 // Active
1309 1521 async getData3() {
... ... @@ -1617,4 +1829,57 @@ setInterval(async () =&gt; {
1617 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 1886 \ No newline at end of file
... ...
src/app/dashboard/texrshort.ts
... ... @@ -8,8 +8,8 @@ export class TextShortPipe implements PipeTransform {
8 8 if(value === null){
9 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 14 return value;
15 15 }
... ...