@ozdao/prometheus-framework 0.2.243 → 0.2.245
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs +7 -5
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs.map +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.js +7 -5
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.js.map +1 -1
- package/dist/prometheus-framework/src/modules/pages/pages.client.cjs +819 -821
- package/dist/prometheus-framework/src/modules/pages/pages.client.js +819 -821
- package/package.json +1 -1
- package/src/modules/events/components/elements/ButtonCheck.vue +19 -11
- package/src/modules/events/components/elements/ButtonCheck1.vue +0 -107
- package/src/modules/events/components/elements/ButtonCheck2.vue +0 -76
package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs
CHANGED
@@ -14,6 +14,7 @@ const _hoisted_2 = {
|
|
14
14
|
class: "zoom-ratio-wrapper"
|
15
15
|
};
|
16
16
|
const _hoisted_3 = ["min", "max"];
|
17
|
+
const SCAN_TIMEOUT = 5e3;
|
17
18
|
const _sfc_main = {
|
18
19
|
__name: "ButtonCheck",
|
19
20
|
emits: ["qrcodecheck"],
|
@@ -48,7 +49,6 @@ const _sfc_main = {
|
|
48
49
|
}
|
49
50
|
(_a = document.querySelector("body")) == null ? void 0 : _a.classList.add("barcode-scanner-active");
|
50
51
|
(_b = document.querySelector("html")) == null ? void 0 : _b.classList.add("barcode-scanner-active-html");
|
51
|
-
index.BarcodeScanner.hideBackground();
|
52
52
|
isScanning.value = true;
|
53
53
|
await index.BarcodeScanner.addListener("barcodeScanned", async (result) => {
|
54
54
|
if (!isProcessing.value) {
|
@@ -89,11 +89,13 @@ const _sfc_main = {
|
|
89
89
|
const response = await tickets.actions.update({ _id: barcode.rawValue, status: "used", check: true });
|
90
90
|
alert("Ticket checked. And it's all right!");
|
91
91
|
emits("qrcodecheck");
|
92
|
+
setTimeout(() => {
|
93
|
+
isProcessing.value = false;
|
94
|
+
}, SCAN_TIMEOUT);
|
92
95
|
} catch (e) {
|
93
96
|
console.error(e);
|
94
|
-
alert(`Ticket is not found, already used or deactivated!`);
|
95
|
-
} finally {
|
96
97
|
isProcessing.value = false;
|
98
|
+
alert(`Ticket is not found, already used or deactivated!`);
|
97
99
|
}
|
98
100
|
}
|
99
101
|
async function setZoomRatio(event) {
|
@@ -126,7 +128,7 @@ const _sfc_main = {
|
|
126
128
|
])) : vue.createCommentVNode("", true),
|
127
129
|
vue.createVNode(Button.default, {
|
128
130
|
onClick: stopScan,
|
129
|
-
class: "stop-scan-button"
|
131
|
+
class: "bg-white t-black stop-scan-button"
|
130
132
|
}, {
|
131
133
|
default: vue.withCtx(() => _cache[1] || (_cache[1] = [
|
132
134
|
vue.createTextVNode("Stop Scan")
|
@@ -136,7 +138,7 @@ const _sfc_main = {
|
|
136
138
|
isTorchAvailable.value ? (vue.openBlock(), vue.createBlock(Button.default, {
|
137
139
|
key: 1,
|
138
140
|
onClick: toggleTorch,
|
139
|
-
class: "torch-button"
|
141
|
+
class: "bg-white torch-button"
|
140
142
|
}, {
|
141
143
|
default: vue.withCtx(() => _cache[2] || (_cache[2] = [
|
142
144
|
vue.createTextVNode(" Toggle Torch ")
|
package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ButtonCheck.vue.cjs","sources":["../../../../../../../src/modules/events/components/elements/ButtonCheck.vue"],"sourcesContent":["<template>\n <div>\n <Button @click=\"startScan\" class=\"bg-main button-small radius-extra button\">\n Check Tickets\n </Button>\n <div v-if=\"isScanning\" class=\"barcode-scanner-modal\">\n <div class=\"square\"></div>\n <div class=\"zoom-ratio-wrapper\" v-if=\"minZoomRatio !== undefined && maxZoomRatio !== undefined\">\n <input type=\"range\" :min=\"minZoomRatio\" :max=\"maxZoomRatio\" @input=\"setZoomRatio\" />\n </div>\n <Button @click=\"stopScan\" class=\"stop-scan-button\">Stop Scan</Button>\n <Button v-if=\"isTorchAvailable\" @click=\"toggleTorch\" class=\"torch-button\">\n Toggle Torch\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport * as tickets from '@pf/src/modules/events/store/tickets'\n\nconst emits = defineEmits(['qrcodecheck'])\nconst error = ref('')\nconst isScanning = ref(false)\nconst isTorchAvailable = ref(false)\nconst minZoomRatio = ref(undefined)\nconst maxZoomRatio = ref(undefined)\nconst isProcessing = ref(false)\n\nonMounted(async () => {\n const { supported } = await BarcodeScanner.isSupported()\n if (!supported) {\n error.value = 'Barcode scanning is not supported on this device'\n }\n const { available } = await BarcodeScanner.isTorchAvailable()\n isTorchAvailable.value = available\n})\n\nonUnmounted(async () => {\n await stopScan()\n})\n\nasync function startScan() {\n try {\n const { camera } = await BarcodeScanner.checkPermissions()\n if (camera !== 'granted') {\n const { camera: newStatus } = await BarcodeScanner.requestPermissions()\n if (newStatus !== 'granted') {\n throw new Error('Camera permission is required to scan barcodes')\n }\n }\n document.querySelector('body')?.classList.add('barcode-scanner-active')\n document.querySelector('html')?.classList.add('barcode-scanner-active-html')\n
|
1
|
+
{"version":3,"file":"ButtonCheck.vue.cjs","sources":["../../../../../../../src/modules/events/components/elements/ButtonCheck.vue"],"sourcesContent":["<template>\n <div>\n <Button @click=\"startScan\" class=\"bg-main button-small radius-extra button\">\n Check Tickets\n </Button>\n <div v-if=\"isScanning\" class=\"barcode-scanner-modal\">\n <div class=\"square\"></div>\n <div class=\"zoom-ratio-wrapper\" v-if=\"minZoomRatio !== undefined && maxZoomRatio !== undefined\">\n <input type=\"range\" :min=\"minZoomRatio\" :max=\"maxZoomRatio\" @input=\"setZoomRatio\" />\n </div>\n <Button @click=\"stopScan\" class=\"bg-white t-black stop-scan-button\">Stop Scan</Button>\n <Button v-if=\"isTorchAvailable\" @click=\"toggleTorch\" class=\"bg-white torch-button\">\n Toggle Torch\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport * as tickets from '@pf/src/modules/events/store/tickets'\n\nconst emits = defineEmits(['qrcodecheck'])\nconst error = ref('')\nconst isScanning = ref(false)\nconst isTorchAvailable = ref(false)\nconst minZoomRatio = ref(undefined)\nconst maxZoomRatio = ref(undefined)\nconst isProcessing = ref(false)\n\nonMounted(async () => {\n const { supported } = await BarcodeScanner.isSupported()\n if (!supported) {\n error.value = 'Barcode scanning is not supported on this device'\n }\n const { available } = await BarcodeScanner.isTorchAvailable()\n isTorchAvailable.value = available\n})\n\nonUnmounted(async () => {\n await stopScan()\n})\n\nconst SCAN_TIMEOUT = 5000 // 5 секунд (можно изменить по вашему усмотрению)\n\nasync function startScan() {\n try {\n const { camera } = await BarcodeScanner.checkPermissions()\n if (camera !== 'granted') {\n const { camera: newStatus } = await BarcodeScanner.requestPermissions()\n if (newStatus !== 'granted') {\n throw new Error('Camera permission is required to scan barcodes')\n }\n }\n document.querySelector('body')?.classList.add('barcode-scanner-active')\n document.querySelector('html')?.classList.add('barcode-scanner-active-html')\n isScanning.value = true\n await BarcodeScanner.addListener('barcodeScanned', async (result) => {\n if (!isProcessing.value) {\n await processBarcode(result.barcode)\n }\n })\n await BarcodeScanner.startScan()\n const { zoomRatio: min } = await BarcodeScanner.getMinZoomRatio()\n const { zoomRatio: max } = await BarcodeScanner.getMaxZoomRatio()\n minZoomRatio.value = min\n maxZoomRatio.value = max\n } catch (e) {\n error.value = e.message\n alert(`Error: ${error.value}`)\n }\n}\n\nasync function stopScan() {\n try {\n document.querySelector('body')?.classList.remove('barcode-scanner-active')\n document.querySelector('html')?.classList.remove('barcode-scanner-active-html')\n isScanning.value = false\n await BarcodeScanner.stopScan()\n await BarcodeScanner.removeAllListeners()\n } catch (e) {\n error.value = e.message\n alert(`Error stopping scan: ${error.value}`)\n }\n}\n\nasync function processBarcode(barcode) {\n if (isProcessing.value) return\n isProcessing.value = true\n try {\n if (!barcode || !barcode.rawValue) {\n throw new Error('Invalid barcode data')\n }\n console.log('barcode is', barcode)\n\n const response = await tickets.actions.update({ _id: barcode.rawValue, status: 'used', check: true })\n alert(\"Ticket checked. And it's all right!\")\n emits('qrcodecheck')\n\n // Устанавливаем таймаут перед следующим сканированием\n setTimeout(() => {\n isProcessing.value = false\n }, SCAN_TIMEOUT)\n\n } catch (e) {\n console.error(e)\n isProcessing.value = false\n alert(`Ticket is not found, already used or deactivated!`)\n // Сбрасываем флаг isProcessing в случае ошибки, чтобы можно было попробовать снова\n \n }\n}\n\nasync function setZoomRatio(event) {\n const zoomRatio = parseFloat(event.target.value)\n await BarcodeScanner.setZoomRatio({ zoomRatio })\n}\n\nasync function toggleTorch() {\n await BarcodeScanner.toggleTorch()\n}\n</script>\n\n<style>\n.barcode-scanner-modal {\n visibility: visible;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0);\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.square {\n width: 200px;\n height: 200px;\n border: 2px solid white;\n border-radius: 10px;\n}\n\n.zoom-ratio-wrapper {\n width: 80%;\n margin-top: 20px;\n}\n\n.stop-scan-button,\n.torch-button {\n margin-top: 20px;\n}\n\n/* Existing styles */\nbody.barcode-scanner-active {\n visibility: hidden !important;\n background: transparent !important;\n --background: transparent;\n --ion-background-color: transparent;\n}\n\nhtml.barcode-scanner-active-html {\n background: transparent !important;\n}\n</style>\n"],"names":["ref","onMounted","BarcodeScanner","onUnmounted","tickets.actions"],"mappings":"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"}
|
@@ -12,6 +12,7 @@ const _hoisted_2 = {
|
|
12
12
|
class: "zoom-ratio-wrapper"
|
13
13
|
};
|
14
14
|
const _hoisted_3 = ["min", "max"];
|
15
|
+
const SCAN_TIMEOUT = 5e3;
|
15
16
|
const _sfc_main = {
|
16
17
|
__name: "ButtonCheck",
|
17
18
|
emits: ["qrcodecheck"],
|
@@ -46,7 +47,6 @@ const _sfc_main = {
|
|
46
47
|
}
|
47
48
|
(_a = document.querySelector("body")) == null ? void 0 : _a.classList.add("barcode-scanner-active");
|
48
49
|
(_b = document.querySelector("html")) == null ? void 0 : _b.classList.add("barcode-scanner-active-html");
|
49
|
-
BarcodeScanner.hideBackground();
|
50
50
|
isScanning.value = true;
|
51
51
|
await BarcodeScanner.addListener("barcodeScanned", async (result) => {
|
52
52
|
if (!isProcessing.value) {
|
@@ -87,11 +87,13 @@ const _sfc_main = {
|
|
87
87
|
const response = await actions.update({ _id: barcode.rawValue, status: "used", check: true });
|
88
88
|
alert("Ticket checked. And it's all right!");
|
89
89
|
emits("qrcodecheck");
|
90
|
+
setTimeout(() => {
|
91
|
+
isProcessing.value = false;
|
92
|
+
}, SCAN_TIMEOUT);
|
90
93
|
} catch (e) {
|
91
94
|
console.error(e);
|
92
|
-
alert(`Ticket is not found, already used or deactivated!`);
|
93
|
-
} finally {
|
94
95
|
isProcessing.value = false;
|
96
|
+
alert(`Ticket is not found, already used or deactivated!`);
|
95
97
|
}
|
96
98
|
}
|
97
99
|
async function setZoomRatio(event) {
|
@@ -124,7 +126,7 @@ const _sfc_main = {
|
|
124
126
|
])) : createCommentVNode("", true),
|
125
127
|
createVNode(_sfc_main$1, {
|
126
128
|
onClick: stopScan,
|
127
|
-
class: "stop-scan-button"
|
129
|
+
class: "bg-white t-black stop-scan-button"
|
128
130
|
}, {
|
129
131
|
default: withCtx(() => _cache[1] || (_cache[1] = [
|
130
132
|
createTextVNode("Stop Scan")
|
@@ -134,7 +136,7 @@ const _sfc_main = {
|
|
134
136
|
isTorchAvailable.value ? (openBlock(), createBlock(_sfc_main$1, {
|
135
137
|
key: 1,
|
136
138
|
onClick: toggleTorch,
|
137
|
-
class: "torch-button"
|
139
|
+
class: "bg-white torch-button"
|
138
140
|
}, {
|
139
141
|
default: withCtx(() => _cache[2] || (_cache[2] = [
|
140
142
|
createTextVNode(" Toggle Torch ")
|
package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ButtonCheck.vue.js","sources":["../../../../../../../src/modules/events/components/elements/ButtonCheck.vue"],"sourcesContent":["<template>\n <div>\n <Button @click=\"startScan\" class=\"bg-main button-small radius-extra button\">\n Check Tickets\n </Button>\n <div v-if=\"isScanning\" class=\"barcode-scanner-modal\">\n <div class=\"square\"></div>\n <div class=\"zoom-ratio-wrapper\" v-if=\"minZoomRatio !== undefined && maxZoomRatio !== undefined\">\n <input type=\"range\" :min=\"minZoomRatio\" :max=\"maxZoomRatio\" @input=\"setZoomRatio\" />\n </div>\n <Button @click=\"stopScan\" class=\"stop-scan-button\">Stop Scan</Button>\n <Button v-if=\"isTorchAvailable\" @click=\"toggleTorch\" class=\"torch-button\">\n Toggle Torch\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport * as tickets from '@pf/src/modules/events/store/tickets'\n\nconst emits = defineEmits(['qrcodecheck'])\nconst error = ref('')\nconst isScanning = ref(false)\nconst isTorchAvailable = ref(false)\nconst minZoomRatio = ref(undefined)\nconst maxZoomRatio = ref(undefined)\nconst isProcessing = ref(false)\n\nonMounted(async () => {\n const { supported } = await BarcodeScanner.isSupported()\n if (!supported) {\n error.value = 'Barcode scanning is not supported on this device'\n }\n const { available } = await BarcodeScanner.isTorchAvailable()\n isTorchAvailable.value = available\n})\n\nonUnmounted(async () => {\n await stopScan()\n})\n\nasync function startScan() {\n try {\n const { camera } = await BarcodeScanner.checkPermissions()\n if (camera !== 'granted') {\n const { camera: newStatus } = await BarcodeScanner.requestPermissions()\n if (newStatus !== 'granted') {\n throw new Error('Camera permission is required to scan barcodes')\n }\n }\n document.querySelector('body')?.classList.add('barcode-scanner-active')\n document.querySelector('html')?.classList.add('barcode-scanner-active-html')\n
|
1
|
+
{"version":3,"file":"ButtonCheck.vue.js","sources":["../../../../../../../src/modules/events/components/elements/ButtonCheck.vue"],"sourcesContent":["<template>\n <div>\n <Button @click=\"startScan\" class=\"bg-main button-small radius-extra button\">\n Check Tickets\n </Button>\n <div v-if=\"isScanning\" class=\"barcode-scanner-modal\">\n <div class=\"square\"></div>\n <div class=\"zoom-ratio-wrapper\" v-if=\"minZoomRatio !== undefined && maxZoomRatio !== undefined\">\n <input type=\"range\" :min=\"minZoomRatio\" :max=\"maxZoomRatio\" @input=\"setZoomRatio\" />\n </div>\n <Button @click=\"stopScan\" class=\"bg-white t-black stop-scan-button\">Stop Scan</Button>\n <Button v-if=\"isTorchAvailable\" @click=\"toggleTorch\" class=\"bg-white torch-button\">\n Toggle Torch\n </Button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onUnmounted } from 'vue'\nimport { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning'\nimport Button from '@pf/src/components/Button/Button.vue'\nimport * as tickets from '@pf/src/modules/events/store/tickets'\n\nconst emits = defineEmits(['qrcodecheck'])\nconst error = ref('')\nconst isScanning = ref(false)\nconst isTorchAvailable = ref(false)\nconst minZoomRatio = ref(undefined)\nconst maxZoomRatio = ref(undefined)\nconst isProcessing = ref(false)\n\nonMounted(async () => {\n const { supported } = await BarcodeScanner.isSupported()\n if (!supported) {\n error.value = 'Barcode scanning is not supported on this device'\n }\n const { available } = await BarcodeScanner.isTorchAvailable()\n isTorchAvailable.value = available\n})\n\nonUnmounted(async () => {\n await stopScan()\n})\n\nconst SCAN_TIMEOUT = 5000 // 5 секунд (можно изменить по вашему усмотрению)\n\nasync function startScan() {\n try {\n const { camera } = await BarcodeScanner.checkPermissions()\n if (camera !== 'granted') {\n const { camera: newStatus } = await BarcodeScanner.requestPermissions()\n if (newStatus !== 'granted') {\n throw new Error('Camera permission is required to scan barcodes')\n }\n }\n document.querySelector('body')?.classList.add('barcode-scanner-active')\n document.querySelector('html')?.classList.add('barcode-scanner-active-html')\n isScanning.value = true\n await BarcodeScanner.addListener('barcodeScanned', async (result) => {\n if (!isProcessing.value) {\n await processBarcode(result.barcode)\n }\n })\n await BarcodeScanner.startScan()\n const { zoomRatio: min } = await BarcodeScanner.getMinZoomRatio()\n const { zoomRatio: max } = await BarcodeScanner.getMaxZoomRatio()\n minZoomRatio.value = min\n maxZoomRatio.value = max\n } catch (e) {\n error.value = e.message\n alert(`Error: ${error.value}`)\n }\n}\n\nasync function stopScan() {\n try {\n document.querySelector('body')?.classList.remove('barcode-scanner-active')\n document.querySelector('html')?.classList.remove('barcode-scanner-active-html')\n isScanning.value = false\n await BarcodeScanner.stopScan()\n await BarcodeScanner.removeAllListeners()\n } catch (e) {\n error.value = e.message\n alert(`Error stopping scan: ${error.value}`)\n }\n}\n\nasync function processBarcode(barcode) {\n if (isProcessing.value) return\n isProcessing.value = true\n try {\n if (!barcode || !barcode.rawValue) {\n throw new Error('Invalid barcode data')\n }\n console.log('barcode is', barcode)\n\n const response = await tickets.actions.update({ _id: barcode.rawValue, status: 'used', check: true })\n alert(\"Ticket checked. And it's all right!\")\n emits('qrcodecheck')\n\n // Устанавливаем таймаут перед следующим сканированием\n setTimeout(() => {\n isProcessing.value = false\n }, SCAN_TIMEOUT)\n\n } catch (e) {\n console.error(e)\n isProcessing.value = false\n alert(`Ticket is not found, already used or deactivated!`)\n // Сбрасываем флаг isProcessing в случае ошибки, чтобы можно было попробовать снова\n \n }\n}\n\nasync function setZoomRatio(event) {\n const zoomRatio = parseFloat(event.target.value)\n await BarcodeScanner.setZoomRatio({ zoomRatio })\n}\n\nasync function toggleTorch() {\n await BarcodeScanner.toggleTorch()\n}\n</script>\n\n<style>\n.barcode-scanner-modal {\n visibility: visible;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0);\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.square {\n width: 200px;\n height: 200px;\n border: 2px solid white;\n border-radius: 10px;\n}\n\n.zoom-ratio-wrapper {\n width: 80%;\n margin-top: 20px;\n}\n\n.stop-scan-button,\n.torch-button {\n margin-top: 20px;\n}\n\n/* Existing styles */\nbody.barcode-scanner-active {\n visibility: hidden !important;\n background: transparent !important;\n --background: transparent;\n --ion-background-color: transparent;\n}\n\nhtml.barcode-scanner-active-html {\n background: transparent !important;\n}\n</style>\n"],"names":["tickets.actions"],"mappings":"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"}
|