diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js index e82c143..b4eb5f9 100644 --- a/3CX_TAPI.user.js +++ b/3CX_TAPI.user.js @@ -3532,7 +3532,7 @@ class call_history_CallHistory { updateCallHistoryEntry(call, callerId) { if (callerId.tD_NAME !== '') { var span = call.querySelector('span'); - this.showTimeManager(call, span.nextSibling.textContent, callerId); + this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId); var text = span.textContent; span.textContent = callerId.tD_NAME; var br = document.createElement('br'); @@ -3543,30 +3543,30 @@ class call_history_CallHistory { span.parentNode.insertBefore(span2, span.nextSibling); } } - showTimeManager(call, time, callerId) { + showTimeManager(call, date, callerId) { if (!callerId.tD_ID) { return; } - var timeParts = time.split(/, /); + var dateParts = date.match(/^(?.*), (?[0-9]{2}:[0-9]{2}:[0-9]{2})$/); var duration = '00:00:00'; - if (timeParts.length >= 1) { - time = timeParts[0]; + if (dateParts) { + date = dateParts.groups.date; + duration = dateParts.groups.duration; } - if (timeParts.length >= 2) { - duration = timeParts[1]; - } - var parsedDate = dist["de"].parseDate(time); + var parsedDate = dist["de"].parseDate(date); if (!parsedDate) { - parsedDate = dist["parseDate"](time); + parsedDate = dist["parseDate"](date); } if (!parsedDate) { return; } + // Date parsing is awful, just assume the first number is the day of month + var day = date.match(/[0-9]+/)[0]; var parsedDuration = dist["parseDate"](duration); - console.log('TAPI call history time:', time, 'parsedDate:', parsedDate, 'duration:', duration, 'parsedDuration:', parsedDuration); + console.log('TAPI call history time:', date, 'parsedDate:', parsedDate, 'duration:', duration, 'parsedDuration:', parsedDuration); var connect = parsedDate.getFullYear().toString() + (parsedDate.getMonth() + 1).toString().padStart(2, '0') + // (January gives 0) - parsedDate.getDate().toString().padStart(2, '0') + + day.toString().padStart(2, '0') + parsedDate.getHours().toString().padStart(2, '0') + parsedDate.getMinutes().toString().padStart(2, '0'); var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString(); diff --git a/package.json b/package.json index cc27a42..a23be65 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "3cp-tapi", "description": "Build your UserScript with webpack", - "version": "7.0.0", + "version": "7.0.1", "author": { "name": "Daniel Triendl", "email": "d.triendl@cp-solutions.at" diff --git a/src/js/call-history.ts b/src/js/call-history.ts index 5d94571..ac7ca9c 100644 --- a/src/js/call-history.ts +++ b/src/js/call-history.ts @@ -9,7 +9,7 @@ export class CallHistory { if (callerId.tD_NAME !== '') { var span = call.querySelector('span') - this.showTimeManager(call, span.nextSibling.textContent, callerId) + this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId) var text = span.textContent span.textContent = callerId.tD_NAME @@ -22,32 +22,34 @@ export class CallHistory { } } - private showTimeManager (call: HTMLElement, time: string, callerId: TapiContact) { + private showTimeManager (call: HTMLElement, date: string, callerId: TapiContact) { if (!callerId.tD_ID) { return } - var timeParts = time.split(/, /) + var dateParts = date.match(/^(?.*), (?[0-9]{2}:[0-9]{2}:[0-9]{2})$/) var duration = '00:00:00' - if (timeParts.length >= 1) { - time = timeParts[0] + if (dateParts) { + date = dateParts.groups.date + duration = dateParts.groups.duration } - if (timeParts.length >= 2) { - duration = timeParts[1] - } - var parsedDate = chrono.de.parseDate(time) + + var parsedDate = chrono.de.parseDate(date) if (!parsedDate) { - parsedDate = chrono.parseDate(time) + parsedDate = chrono.parseDate(date) } if (!parsedDate) { return } + // Date parsing is awful, just assume the first number is the day of month + var day = date.match(/[0-9]+/)[0] + var parsedDuration = chrono.parseDate(duration) - console.log('TAPI call history time:', time, 'parsedDate:', parsedDate, 'duration:', duration, 'parsedDuration:', parsedDuration) + console.log('TAPI call history time:', date, 'parsedDate:', parsedDate, 'duration:', duration, 'parsedDuration:', parsedDuration) var connect = parsedDate.getFullYear().toString() + (parsedDate.getMonth() + 1).toString().padStart(2, '0') + // (January gives 0) - parsedDate.getDate().toString().padStart(2, '0') + + day.toString().padStart(2, '0') + parsedDate.getHours().toString().padStart(2, '0') + parsedDate.getMinutes().toString().padStart(2, '0')