This commit is contained in:
yumoqing 2026-02-24 18:11:55 +08:00
parent 9c4a8f7bf3
commit 2a7686ef71
4 changed files with 45 additions and 2 deletions

View File

@ -11,7 +11,8 @@ SOURCES=" page_data_loader.js factory.js uitypesdef.js utils.js uitype.js \
llm.js websocket.js datarow.js tabular.js continueaudio.js \
line.js pie.js bar.js gobang.js period.js iconbarpage.js \
keypress.js asr.js webspeech.js countdown.js progressbar.js \
qaframe.js svg.js videoplayer.js sctter.js radar.js kline.js heatmap.js map.js"
qaframe.js svg.js videoplayer.js sctter.js radar.js kline.js \
heatmap.js map.js qr.js "
echo ${SOURCES}
cat ${SOURCES} > ../dist/bricks.js
# uglifyjs --compress --mangle -- ../dist/bricks.js > ../dist/bricks.min.js

View File

@ -32,6 +32,7 @@
<script src="{{entire_url('/bricks/3parties/recorder.wav.min.js')}}"></script>
<script src="{{entire_url('/bricks/3parties/hls.js')}}"></script>
<script src="{{entire_url('/bricks/3parties/dash.all.min.js')}}"></script>
<script src="https://unpkg.com/html5-qrcode@2.3.8/html5-qrcode.min.js"></script>
<script type="module"
src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js">
</script>

View File

@ -58,7 +58,7 @@ bricks.Menu = class extends bricks.VScrollPanel {
}
}
var w = await bricks.widgetBuild(desc, this);
if (w && ! w.parent){
if (w && ! bricks.Factory.isWidgetType(w, 'Popup')){
t.clear_widgets();
t.add_widget(w);
} else {

41
bricks/qr.js Normal file
View File

@ -0,0 +1,41 @@
var bricks = window.bricks || {};
bricks.QRCodeScan = class extends bricks.VBox {
constructor(opts){
opts.width = '300px';
opts.height = '300px';
super(opts);
this.scan_config = {
fps: 10, // 每秒尝试识别次数
qrbox: { width: 250, height: 250 }, // 扫描框大小
aspectRatio: 1.0, // 保持正方形
disableFlip: false // 是否禁用镜像(移动端前置摄像头会镜像)
};
this.bind('click', this.stop.bind(this))
schedule_once(this.start.bind(this), 0.5)
}
get_qr_result(decodedText, decodedResult){
this.dispatch('recognized', decodedText)
console.log('decodeText=', decodedText)
this.stop()
}
errorhandle(msg){
console.log("识别失败:", msg);
}
start(){
this.scanner = new Html5Qrcode(this.widget_id);
this.scanner.start({ facingMode: "environment" },
this.scan_config,
this.get_qr_result.bind(this),
this.errorhandle.bind(this)
).catch(err => {
console.error('启动摄像头失败')
});
}
stop(){
if this.scanner && this.scanner.getState() !== Html5QrcodeScannerState.NOT_STARTED) {
this.scanner.stop()
}
}
}
bricks.Factory.register('QRCodeScan', bricks.QRCodeScan);