From: miha-q <> Date: Sat, 3 Aug 2024 02:17:51 +0000 (-0400) Subject: Fri Aug 2 10:17:51 PM EDT 2024 X-Git-Url: http://www.foleosoft.com/?a=commitdiff_plain;h=1c2174afccb9c4b602ad7cc57973d38e226c1d7a;p=QAnsel.git Fri Aug 2 10:17:51 PM EDT 2024 --- diff --git a/src/gui.html b/src/gui.html index 4011569..1dd6937 100644 --- a/src/gui.html +++ b/src/gui.html @@ -122,7 +122,7 @@ -
+
@@ -178,38 +178,39 @@ break; } if (compare == undefined) return r; - compare = compare.replace(/[\"]/g, "'").trim(); - return compare == r; + return compare.toString().replace(/[\"]/g, "'").trim() == r; } var INSTRUCTIONS = [ - "X", - "Y", - "Z", - "H", - "S", - "T", - "S", - "T", - "CX", - "CCX", - "SW", - "CSW", - "Rx", - "Ry", - "Rz", - "|0⟩", - "|1⟩", - "🔍", - "=1", - "=0", + "X", "Pauli-X", + "Y", "Pauli-Y", + "Z", "Pauli-Z", + "H", "Hadamard", + "S", "Phase-S", + "T", "Phase-T", + "S", "Phase-S Hermitian Transpose", + "T", "Phase-T Hermitian Transpose", + "CX", "Controlled-NOT", + "CCX", "Toffoli", + "SW", "Swap", + "CSW", "Fredkin", + "Rx", "Rotation-X", + "Ry", "Rotation-Y", + "Rz", "Rotation-Z", + "|0⟩", "Qubit Set", + "|1⟩", "Qubit Reset", + "🔍", "Measure", + "=1", "Conditional Set", + "=0", "Conditional Reset" ]; var ProgramTrack = { SCALE: 64, STATE: [ [], [], [], [], [], [], [], [], [], [], [], [], [], [], [] ], DRAG: "", + DRAGPOS: [0, 0], + DRAGELEM: undefined, init: () => { for (var i = 0; i < ProgramTrack.STATE.length; i++) @@ -369,6 +370,7 @@ var h = e.innerHTML.replace(/[<].*?[>]/g, ""); h = e.innerHTML; ProgramTrack.DRAG = h; + ProgramTrack.DRAGPOS = [evt.clientX, evt.clientY]; $(".program-drag")[0].innerHTML = tr + td + h + ""; $(".program-drag")[0].style.visibility = ""; } @@ -416,14 +418,13 @@ td = ""; + html += td + "title='" + INSTRUCTIONS[i + 1] + "'" + ">" + INSTRUCTIONS[i] + ""; itr++; - if (itr > 4 && i != INSTRUCTIONS.length - 1) + if (itr > 4 && i != INSTRUCTIONS.length - 2) { html += "" + tr; itr = 0; @@ -445,8 +446,13 @@ $(".program-track-container")[0].style.width = $(".program-track-container")[0].parentNode.getBoundingClientRect().width + "px" }; + document.body.addEventListener("keydown", e => + { + modalFixes(); + }); document.body.addEventListener("mousemove", e => { + modalFixes(); var x = $(".program-drag")[0]; var w = parseFloat(getComputedStyle(x).width.replace("px", "")) / 2; var h = parseFloat(getComputedStyle(x).height.replace("px", "")) / 2; @@ -463,6 +469,7 @@ if (str) {} else {str = ""}; if (str.includes(",") && (trackerElem.innerHTML == "..." || trackerElem.innerHTML == "")) { + ProgramTrack.DRAGELEM = trackerElem; $(".program-instr")[0].style.display = "none"; $(".program-instr")[0].className = $(".program-instr")[0].className.replace("menu-hidden", "").trim(); $(".program-instr")[0].className += " menu-reveal"; @@ -482,7 +489,10 @@ ProgramTrack.draw(); $(".program-drag")[0].style.visibility = "hidden"; ProgramTrack.DRAG = ""; + var elem = document.elementFromPoint(e.clientX, e.clientY); + var dist = Math.sqrt(Math.pow(ProgramTrack.DRAGPOS[0] - e.clientX, 2) + Math.pow(ProgramTrack.DRAGPOS[1] - e.clientY, 2)); + if (dist < 8) elem = ProgramTrack.DRAGELEM; var attr = elem.getAttribute("pidx"); if (attr == null) return; attr = attr.split(","); @@ -499,12 +509,73 @@ default: if (!qubit) return; } + var f = [0, 0, 0]; switch (html) { - case "CX": html = overline("CX", "10"); break; - case "SW": html = overline("SW", "10"); break; - case "CCX": html = overline("CCX", "100"); break; - case "CSW": html = overline("CSW", "100"); break; + case "CX": + if (ProgramTrack.STATE[attr[0]].length > attr[1]) + { + for (var i = 0; i < ProgramTrack.STATE.length; i++) + { + if (i != attr[0]) + { + if (overline("CX", "10", ProgramTrack.STATE[i][attr[1]])) f[0] = 1; + if (overline("CX", "01", ProgramTrack.STATE[i][attr[1]])) f[1] = 1; + } + } + } + if (!f[0]) html = overline("CX", "10"); + else html = overline("CX", "01"); + break; + case "SW": + if (ProgramTrack.STATE[attr[0]].length > attr[1]) + { + for (var i = 0; i < ProgramTrack.STATE.length; i++) + { + if (i != attr[0]) + { + if (overline("SW", "10", ProgramTrack.STATE[i][attr[1]])) f[0] = 1; + if (overline("SW", "01", ProgramTrack.STATE[i][attr[1]])) f[1] = 1; + } + } + } + if (!f[0]) html = overline("SW", "10"); + else html = overline("SW", "01"); + break; + case "CCX": + if (ProgramTrack.STATE[attr[0]].length > attr[1]) + { + for (var i = 0; i < ProgramTrack.STATE.length; i++) + { + if (i != attr[0]) + { + if (overline("CCX", "100", ProgramTrack.STATE[i][attr[1]])) f[0] = 1; + if (overline("CCX", "010", ProgramTrack.STATE[i][attr[1]])) f[1] = 1; + if (overline("CCX", "001", ProgramTrack.STATE[i][attr[1]])) f[2] = 1; + } + } + } + if (!f[0]) html = overline("CCX", "100"); + else if (!f[1]) html = overline("CCX", "010"); + else html = overline("CCX", "001"); + break; + case "CSW": + if (ProgramTrack.STATE[attr[0]].length > attr[1]) + { + for (var i = 0; i < ProgramTrack.STATE.length; i++) + { + if (i != attr[0]) + { + if (overline("CSW", "100", ProgramTrack.STATE[i][attr[1]])) f[0] = 1; + if (overline("CSW", "010", ProgramTrack.STATE[i][attr[1]])) f[1] = 1; + if (overline("CSW", "001", ProgramTrack.STATE[i][attr[1]])) f[2] = 1; + } + } + } + if (!f[0]) html = overline("CSW", "100"); + else if (!f[1]) html = overline("CSW", "010"); + else html = overline("CSW", "001"); + break; case "🔍": html = "🔍0"; break; case "=1": html = "=10"; break; case "=0": html = "=00"; break; @@ -529,7 +600,7 @@ ProgramTrack.draw(); if (elem.innerHTML.trim() == "...") { - $(".program-track-container")[0].scrollLeft = $(".program-track-container")[0].scrollLeftMax; + $(".program-track-container")[0].scrollLeft = 999999; } }); //Chart @@ -586,6 +657,8 @@ key = key ? key : ""; if (key.split(":").length != 3) { + $("#blocker-div")[0].remove(); + $("#blocker-img")[0].remove(); errorModal("Please click the gear icon and input your API key."); return; } @@ -630,7 +703,12 @@ { errorModal(x.response, 1); } - }).catch(x => errorModal(x.message, 1)); + }).catch(x => + { + $("#blocker-div")[0].remove(); + $("#blocker-img")[0].remove(); + errorModal(x.message, 1); + }); }); MicroModal.init(); function menu(cmd) @@ -641,9 +719,9 @@ case "clear": $("#modal-main-title")[0].innerHTML = "Clear Project"; $("#modal-main-content")[0].innerHTML = "

Are you sure you want to clear this project?

"; + $("#modal-main-cancel")[0].style.display = ""; $("#modal-main-confirm")[0].style.display = ""; $("#modal-main-confirm")[0].setAttribute("onclick", "ProgramTrack.init(); closeModal();"); - $(".istina-basis")[0].style.visibility = "hidden"; MicroModal.show("modal-main"); break; case "settings": @@ -667,7 +745,6 @@ $("#apikey")[0].value = apikey; $("#modal-main-confirm")[0].style.display = ""; $("#modal-main-confirm")[0].setAttribute("onclick", "localStorage.setItem('apikey', $('#modal-main-content input')[0].value); closeModal();"); - $(".istina-basis")[0].style.visibility = "hidden"; MicroModal.show("modal-main"); break; case "save": @@ -704,12 +781,10 @@ $("#modal-main-cancel")[0].style.display = "none"; $("#modal-main-title")[0].innerHTML = "An Error Occurred"; $("#modal-main-content")[0].innerHTML = "

" + err + "

"; - $(".istina-basis")[0].style.visibility = "hidden"; MicroModal.show("modal-main"); } function closeModal() { - $(".istina-basis")[0].style.visibility = ""; MicroModal.close(); } $("#file-input")[0].addEventListener("change", e => @@ -755,7 +830,17 @@ document.body.appendChild(div); document.body.appendChild(img); } - + function modalFixes() + { + if (getComputedStyle($("#modal-main")[0]).display == "none") + { + $(".istina-basis")[0].style.visibility = ""; + } + else + { + $(".istina-basis")[0].style.visibility = "hidden"; + } + } diff --git a/src/qansel.h b/src/qansel.h index da84358..dc62aeb 100644 --- a/src/qansel.h +++ b/src/qansel.h @@ -3,7 +3,7 @@ #define QANSEL_MAX_SIZE 1073741824 -#define QANSEL_SHOTS_DEFAULT 1000 +#define QANSEL_SHOTS_DEFAULT 10000 #define QANSEL_QUBITS_MAX 16 #define QANSEL_MODE_BARE 0 #define QANSEL_MODE_SMART 1