Fix multiple notifications & indetermined state

This commit is contained in:
RubenPX 2022-04-07 14:59:19 +02:00
parent 9489a70597
commit 5fbcc6ba05
1 changed files with 20 additions and 7 deletions

View File

@ -268,21 +268,34 @@ async function processSelectedDevices() {
* @param {number} deviceID device id * @param {number} deviceID device id
*/ */
manage(event, lotID, deviceListID) { manage(event, lotID, deviceListID) {
const checked = event.srcElement.checked event.preventDefault()
const indeterminate = event.srcElement.indeterminate
const checked = !event.srcElement.checked
var found = this.list.filter(list => list.lotID == lotID)[0] var found = this.list.filter(list => list.lotID == lotID)[0]
var foundIndex = found != undefined ? this.list.findLastIndex(x => x.lotID == found.lotID) : -1
if (checked) { if (checked) {
if (found != undefined && found.type == "Remove") { if (found != undefined && found.type == "Remove") {
this.list = this.list.filter(list => list.lotID != lotID) if (found.isFromIndeterminate == true) {
found.type = "Add"
this.list[foundIndex] = found
} else {
this.list = this.list.filter(list => list.lotID != lotID)
}
} else { } else {
this.list.push({ type: "Add", lotID: lotID, devices: deviceListID }) this.list.push({ type: "Add", lotID: lotID, devices: deviceListID, isFromIndeterminate: indeterminate })
} }
} else { } else {
if (found != undefined && found.type == "Add") { if (found != undefined && found.type == "Add") {
this.list = this.list.filter(list => list.lotID != lotID) if (found.isFromIndeterminate == true) {
found.type = "Remove"
this.list[foundIndex] = found
} else {
this.list = this.list.filter(list => list.lotID != lotID)
}
} else { } else {
this.list.push({ type: "Remove", lotID: lotID, devices: deviceListID }) this.list.push({ type: "Remove", lotID: lotID, devices: deviceListID, isFromIndeterminate: indeterminate })
} }
} }
@ -313,8 +326,8 @@ async function processSelectedDevices() {
document.getElementById("NotificationsContainer").appendChild(toast) document.getElementById("NotificationsContainer").appendChild(toast)
if (!isError) { if (!isError) {
setTimeout(() => toast.classList.remove("show"), 3000) setTimeout(() => toast.classList.remove("show"), 3000)
setTimeout(() => toast.remove(), 3500)
} }
setTimeout(() => document.getElementById("NotificationsContainer").innerHTML == "", 3500)
} }
/** /**
@ -371,7 +384,7 @@ async function processSelectedDevices() {
doc.children[0].indeterminate = true; doc.children[0].indeterminate = true;
} }
doc.children[0].addEventListener('change', (ev) => actions.manage(ev, lotID, selectedDevicesIDs)) doc.children[0].addEventListener('mouseup', (ev) => actions.manage(ev, lotID, selectedDevicesIDs))
elementTarget.append(doc) elementTarget.append(doc)
} }