diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js index 71ac3af..0c8466e 100644 --- a/3CX_TAPI.user.js +++ b/3CX_TAPI.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 3CX TAPI // @namespace http://cp-solutions.at -// @version 8.0.1 +// @version 9.0.0 // @author Daniel Triendl // @copyright Copyright 2021 CP Solutions GmbH // @source https://source.cp-austria.at/git/CPATRD/3cx_tapi.git @@ -8013,17 +8013,11 @@ class CallHistory { this.callerIds = {}; } updateCallHistoryEntry(call, callerId) { - var span = call.querySelector('span'); - this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId); + var span = call.querySelector(':scope > span'); + this.showTimeManager(call, call.querySelector('.date').textContent, callerId); if (callerId && callerId.tD_NAME !== '') { var text = span.textContent; - span.textContent = callerId.tD_NAME; - var br = document.createElement('br'); - var span2 = document.createElement('span'); - span2.style.fontSize = 'small'; - span2.textContent = text; - span.parentNode.insertBefore(br, span.nextSibling); - span.parentNode.insertBefore(span2, span.nextSibling); + span.textContent = callerId.tD_NAME + ' ' + callerId.tD_NUMBER; } } showTimeManager(call, date, callerId) { @@ -8050,7 +8044,7 @@ class CallHistory { parsedDate.getHours().toString().padStart(2, '0') + parsedDate.getMinutes().toString().padStart(2, '0'); var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString(); - var toolbar = call.querySelector('.wcToolbarTiles'); + var toolbar = call.querySelector('call-history-options'); var href = 'domizil://PM/Zeitbuchung?'; if (callerId && callerId.tD_ID) { href += 'KontaktId=' + callerId.tD_ID + '&'; @@ -8062,7 +8056,7 @@ class CallHistory { a.onclick = () => { window.open(href); }; - a.innerHTML = '' + + a.innerHTML = '' + '' + ' ' + ' ' + - ' ' + - '
' + - ' ' + - ' ' + - '
' + - '
' + - ' ' + - ' ' + - '
' + - '
' + - ' '; - '
'; - var dropdown = document.createElement('div'); - dropdown.classList.add('tapi-dropdown-content'); - dropdown.classList.add('panel-body'); - dropdown.id = 'tapi-zc-dropdown'; - dropdown.innerHTML = html; - div.appendChild(dropdown); - element.insertBefore(div, element.firstChild); - var zcUser = document.getElementById('tapi-zc-user'); - zcUser.value = this._user; - zcUser.onchange = () => { - this._user = zcUser.value; - GM.setValue('tapi-zc-user', this._user); - console.log('tapi-zc-user', this._user); - this._currentStatus = undefined; - }; - var zcEnabled = document.getElementById('tapi-zc-enabled'); - zcEnabled.checked = this._enabled; - zcEnabled.onchange = () => { - this._enabled = zcEnabled.checked; - GM.setValue('tapi-zc-enabled', this._enabled); - console.log('tapi-zc-enabled', this._enabled); - this._currentStatus = undefined; - this.checkStatus(); - }; - var zcOn = document.getElementById('tapi-zc-on'); - zcOn.value = this._statusOn; - zcOn.onchange = () => { - this._statusOn = zcOn.value; - GM.setValue('tapi-zc-on', this._statusOn); - console.log('tapi-zc-on', this._statusOn); - this._currentStatus = undefined; - }; - var zcOff = document.getElementById('tapi-zc-off'); - zcOff.value = this._statusOff; - zcOff.onchange = () => { - this._statusOff = zcOff.value; - GM.setValue('tapi-zc-off', this._statusOff); - console.log('tapi-zc-off', this._statusOff); - this._currentStatus = undefined; - }; this.checkStatus(); + waitForKeyElements("wc-account-menu > div > ul", (element) => { this.addZcStatusPopup(element); }, true); }); } checkStatus() { @@ -8461,7 +8385,7 @@ class Status { if (this._currentStatus !== status.loggedIn) { this._currentStatus = status.loggedIn; console.log('New status, loggedIn', this._currentStatus); - document.getElementsByClassName("current-status")[0].click(); + document.getElementsByTagName("wcavatar")[0].click(); setTimeout(() => { var statusId = this._currentStatus ? this._statusOn : this._statusOff; document.getElementById(statusId).click(); @@ -8476,6 +8400,104 @@ class Status { } }); } + addZcStatusPopup(element) { + var divider = document.createElement('li'); + divider.classList.add('divider'); + divider.classList.add('dropdown-divider'); + element.appendChild(divider); + var menu = document.createElement('li'); + element.appendChild(menu); + var link = document.createElement('a'); + link.id = 'tapi-zc-button'; + link.innerText = 'ZeitConsens'; + link.classList.add('dropdown-item'); + link.classList.add('d-flex'); + link.onclick = () => { + document.getElementById('zc-modal').classList.toggle('show'); + }; + menu.appendChild(link); + var html = ''; + var modal = document.createElement('modal-container'); + modal.id = 'zc-modal'; + modal.classList.add('modal'); + modal.classList.add('fade'); + modal.innerHTML = html; + var body = document.getElementsByTagName('body')[0].appendChild(modal); + var btnClose = document.getElementById('zc-btnClose'); + btnClose.onclick = () => { + document.getElementById('zc-modal').classList.toggle('show'); + }; + var zcUser = document.getElementById('tapi-zc-user'); + zcUser.value = this._user; + zcUser.onchange = () => { + this._user = zcUser.value; + GM.setValue('tapi-zc-user', this._user); + console.log('tapi-zc-user', this._user); + this._currentStatus = undefined; + }; + var zcEnabled = document.getElementById('tapi-zc-enabled'); + zcEnabled.checked = this._enabled; + zcEnabled.onchange = () => { + this._enabled = zcEnabled.checked; + GM.setValue('tapi-zc-enabled', this._enabled); + console.log('tapi-zc-enabled', this._enabled); + this._currentStatus = undefined; + this.checkStatus(); + }; + var zcOn = document.getElementById('tapi-zc-on'); + zcOn.value = this._statusOn; + zcOn.onchange = () => { + this._statusOn = zcOn.value; + GM.setValue('tapi-zc-on', this._statusOn); + console.log('tapi-zc-on', this._statusOn); + this._currentStatus = undefined; + }; + var zcOff = document.getElementById('tapi-zc-off'); + zcOff.value = this._statusOff; + zcOff.onchange = () => { + this._statusOff = zcOff.value; + GM.setValue('tapi-zc-off', this._statusOff); + console.log('tapi-zc-off', this._statusOff); + this._currentStatus = undefined; + }; + } } ;// CONCATENATED MODULE: ./src/index.js @@ -8488,7 +8510,7 @@ class Status { console.log('script start'); const search = new Search(); // eslint-disable-next-line no-undef -waitForKeyElements('div.nav-search', element => { +waitForKeyElements('ongoing-call-button', element => { search.createSearchWindow(element); }, true); const callNotification = new CallNotification(); // eslint-disable-next-line no-undef @@ -8503,7 +8525,7 @@ waitForKeyElements('.call-history-list call', element => { }, false); const src_status_0 = new Status(); // eslint-disable-next-line no-undef -waitForKeyElements('#status-change', element => { +waitForKeyElements('wc-account-menu', element => { src_status_0.showStatus(element); }, false); }(); diff --git a/package.json b/package.json index b434ca2..7bca00a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "3cp-tapi", - "description": "Build your UserScript with webpack", - "version": "8.0.1", + "name": "3cx-tapi", + "description": "3CX CP Tapi and Projectmanager integration", + "version": "9.0.0", "author": { "name": "Daniel Triendl", "email": "d.triendl@cp-solutions.at"