Improve date parsing

This commit is contained in:
Daniel Triendl 2020-11-04 23:34:03 +01:00
parent 7db79afca2
commit ecb9097f5f
3 changed files with 27 additions and 25 deletions

View File

@ -3532,7 +3532,7 @@ class call_history_CallHistory {
updateCallHistoryEntry(call, callerId) { updateCallHistoryEntry(call, callerId) {
if (callerId.tD_NAME !== '') { if (callerId.tD_NAME !== '') {
var span = call.querySelector('span'); var span = call.querySelector('span');
this.showTimeManager(call, span.nextSibling.textContent, callerId); this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId);
var text = span.textContent; var text = span.textContent;
span.textContent = callerId.tD_NAME; span.textContent = callerId.tD_NAME;
var br = document.createElement('br'); var br = document.createElement('br');
@ -3543,30 +3543,30 @@ class call_history_CallHistory {
span.parentNode.insertBefore(span2, span.nextSibling); span.parentNode.insertBefore(span2, span.nextSibling);
} }
} }
showTimeManager(call, time, callerId) { showTimeManager(call, date, callerId) {
if (!callerId.tD_ID) { if (!callerId.tD_ID) {
return; return;
} }
var timeParts = time.split(/, /); var dateParts = date.match(/^(?<date>.*), (?<duration>[0-9]{2}:[0-9]{2}:[0-9]{2})$/);
var duration = '00:00:00'; var duration = '00:00:00';
if (timeParts.length >= 1) { if (dateParts) {
time = timeParts[0]; date = dateParts.groups.date;
duration = dateParts.groups.duration;
} }
if (timeParts.length >= 2) { var parsedDate = dist["de"].parseDate(date);
duration = timeParts[1];
}
var parsedDate = dist["de"].parseDate(time);
if (!parsedDate) { if (!parsedDate) {
parsedDate = dist["parseDate"](time); parsedDate = dist["parseDate"](date);
} }
if (!parsedDate) { if (!parsedDate) {
return; 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); 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() + var connect = parsedDate.getFullYear().toString() +
(parsedDate.getMonth() + 1).toString().padStart(2, '0') + // (January gives 0) (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.getHours().toString().padStart(2, '0') +
parsedDate.getMinutes().toString().padStart(2, '0'); parsedDate.getMinutes().toString().padStart(2, '0');
var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString(); var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString();

View File

@ -1,7 +1,7 @@
{ {
"name": "3cp-tapi", "name": "3cp-tapi",
"description": "Build your UserScript with webpack", "description": "Build your UserScript with webpack",
"version": "7.0.0", "version": "7.0.1",
"author": { "author": {
"name": "Daniel Triendl", "name": "Daniel Triendl",
"email": "d.triendl@cp-solutions.at" "email": "d.triendl@cp-solutions.at"

View File

@ -9,7 +9,7 @@ export class CallHistory {
if (callerId.tD_NAME !== '') { if (callerId.tD_NAME !== '') {
var span = call.querySelector('span') var span = call.querySelector('span')
this.showTimeManager(call, span.nextSibling.textContent, callerId) this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId)
var text = span.textContent var text = span.textContent
span.textContent = callerId.tD_NAME 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) { if (!callerId.tD_ID) {
return return
} }
var timeParts = time.split(/, /) var dateParts = date.match(/^(?<date>.*), (?<duration>[0-9]{2}:[0-9]{2}:[0-9]{2})$/)
var duration = '00:00:00' var duration = '00:00:00'
if (timeParts.length >= 1) { if (dateParts) {
time = timeParts[0] date = dateParts.groups.date
duration = dateParts.groups.duration
} }
if (timeParts.length >= 2) {
duration = timeParts[1] var parsedDate = chrono.de.parseDate(date)
}
var parsedDate = chrono.de.parseDate(time)
if (!parsedDate) { if (!parsedDate) {
parsedDate = chrono.parseDate(time) parsedDate = chrono.parseDate(date)
} }
if (!parsedDate) { if (!parsedDate) {
return 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) 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() + var connect = parsedDate.getFullYear().toString() +
(parsedDate.getMonth() + 1).toString().padStart(2, '0') + // (January gives 0) (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.getHours().toString().padStart(2, '0') +
parsedDate.getMinutes().toString().padStart(2, '0') parsedDate.getMinutes().toString().padStart(2, '0')