emblemscanner: add log and fix camera state
This commit is contained in:
parent
b87693a717
commit
c8be7e4ce4
@ -24,7 +24,7 @@
|
|||||||
// - Special device rules: camera rules API can override with web_view: true
|
// - Special device rules: camera rules API can override with web_view: true
|
||||||
// - no_web_view parameter can override web_view rules for testing
|
// - no_web_view parameter can override web_view rules for testing
|
||||||
|
|
||||||
// Import utility functions from library
|
// Import utility functions fromsimplify api
|
||||||
const {
|
const {
|
||||||
get_system_info,
|
get_system_info,
|
||||||
get_camera_rule,
|
get_camera_rule,
|
||||||
@ -78,6 +78,7 @@ Page({
|
|||||||
debug_image_data_url: '',
|
debug_image_data_url: '',
|
||||||
debug_last_result: null,
|
debug_last_result: null,
|
||||||
debug_current_frame_url: '', // Current frame being processed
|
debug_current_frame_url: '', // Current frame being processed
|
||||||
|
logs: [], // Backend logging messages (like camera.js)
|
||||||
qrtool_ready: false,
|
qrtool_ready: false,
|
||||||
// Frame processing statistics
|
// Frame processing statistics
|
||||||
frames_processed: 0,
|
frames_processed: 0,
|
||||||
@ -111,6 +112,10 @@ Page({
|
|||||||
return_page: options.return_page || '/pages/test_result_page/test_result_page',
|
return_page: options.return_page || '/pages/test_result_page/test_result_page',
|
||||||
no_web_view: no_web_view
|
no_web_view: no_web_view
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Log page load for backend reporting (like camera.js)
|
||||||
|
this.log("emblemscanner page load");
|
||||||
|
this.log("options", JSON.stringify(options));
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchRealIP() {
|
fetchRealIP() {
|
||||||
@ -156,6 +161,10 @@ Page({
|
|||||||
|
|
||||||
console.log(`Phone model: ${phone_model}, Use worker: ${use_worker}`);
|
console.log(`Phone model: ${phone_model}, Use worker: ${use_worker}`);
|
||||||
|
|
||||||
|
// Log system info for backend reporting (like camera.js)
|
||||||
|
this.log("phone model:", phone_model);
|
||||||
|
this.log("window width", systemInfo.windowWidth, "height", systemInfo.windowHeight);
|
||||||
|
this.log("use worker:", use_worker);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -713,7 +722,7 @@ Page({
|
|||||||
gd.image_data_urls = dataUrls;
|
gd.image_data_urls = dataUrls;
|
||||||
gd.qr_code = qrCode;
|
gd.qr_code = qrCode;
|
||||||
|
|
||||||
upload_image_data_urls(dataUrls, success, fail, "emblemscanner verification");
|
upload_image_data_urls(dataUrls, success, fail, this.data.logs.join("\n"));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@ -843,9 +852,23 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add debug message to debug overlay
|
* Log function for backend reporting (like camera.js)
|
||||||
|
*/
|
||||||
|
log(...what) {
|
||||||
|
console.log(...what);
|
||||||
|
this.setData({
|
||||||
|
logs: this.data.logs.concat([new Date() + ": " + what.join(" ")])
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add debug message to debug overlay and backend logs
|
||||||
*/
|
*/
|
||||||
addDebugMessage(message) {
|
addDebugMessage(message) {
|
||||||
|
// Always add to backend logs for reporting
|
||||||
|
this.log(message);
|
||||||
|
|
||||||
|
// Only show in debug overlay if debug is enabled
|
||||||
if (!this.data.enable_debug) return;
|
if (!this.data.enable_debug) return;
|
||||||
|
|
||||||
const timestamp = new Date().toLocaleTimeString();
|
const timestamp = new Date().toLocaleTimeString();
|
||||||
@ -910,6 +933,9 @@ Page({
|
|||||||
onShow() {
|
onShow() {
|
||||||
console.log('EmblemScanner page shown - initializing');
|
console.log('EmblemScanner page shown - initializing');
|
||||||
|
|
||||||
|
// Log page show for backend reporting (like camera.js)
|
||||||
|
this.log("emblemscanner page show");
|
||||||
|
|
||||||
// Reset state machine to initial state
|
// Reset state machine to initial state
|
||||||
this.setData({
|
this.setData({
|
||||||
app_state: 'loading_rules',
|
app_state: 'loading_rules',
|
||||||
@ -948,6 +974,23 @@ Page({
|
|||||||
onHide() {
|
onHide() {
|
||||||
console.log('EmblemScanner page hidden - cleaning up');
|
console.log('EmblemScanner page hidden - cleaning up');
|
||||||
this.cleanupListener();
|
this.cleanupListener();
|
||||||
|
|
||||||
|
// Reset worker processing state to prevent stale state
|
||||||
|
this.setData({
|
||||||
|
worker_processing: false,
|
||||||
|
app_state: 'loading_rules',
|
||||||
|
busy: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// Clear frame timing and image collection
|
||||||
|
this.lastFrameTime = 0;
|
||||||
|
this.image_data_urls = [];
|
||||||
|
|
||||||
|
// Clear logs to prevent memory buildup
|
||||||
|
this.setData({ logs: [] });
|
||||||
|
|
||||||
|
// Clear zoom function reference
|
||||||
|
this.on_first_qr_found = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -958,7 +1001,7 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clean up camera frame listener
|
* Clean up camera frame listener and camera context
|
||||||
*/
|
*/
|
||||||
cleanupListener() {
|
cleanupListener() {
|
||||||
if (this.listener) {
|
if (this.listener) {
|
||||||
@ -966,6 +1009,15 @@ Page({
|
|||||||
this.listener = null;
|
this.listener = null;
|
||||||
this.addDebugMessage('Camera frame listener stopped');
|
this.addDebugMessage('Camera frame listener stopped');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear camera context to prevent multiple camera elements
|
||||||
|
if (this.camera_context) {
|
||||||
|
this.camera_context = null;
|
||||||
|
this.addDebugMessage('Camera context cleared');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up worker state
|
||||||
|
this.cleanupWorkerState();
|
||||||
},
|
},
|
||||||
|
|
||||||
get_worker() {
|
get_worker() {
|
||||||
@ -974,6 +1026,23 @@ Page({
|
|||||||
gd.emblemscanner_worker = this.setupWorker();
|
gd.emblemscanner_worker = this.setupWorker();
|
||||||
}
|
}
|
||||||
return gd.emblemscanner_worker;
|
return gd.emblemscanner_worker;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up worker state without terminating the worker
|
||||||
|
*/
|
||||||
|
cleanupWorkerState() {
|
||||||
|
if (this.data.use_worker) {
|
||||||
|
// Reset worker processing flag
|
||||||
|
this.setData({
|
||||||
|
worker_processing: false
|
||||||
|
});
|
||||||
|
|
||||||
|
// Clear stored worker frame reference
|
||||||
|
this.lastWorkerFrame = null;
|
||||||
|
|
||||||
|
this.addDebugMessage('Worker state cleaned up');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user