Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
Another new ZK fiddle
1guest172.69.22.1683bi5dd0Mar 14, 2025 8:57:53 AMlinkZK Chosenbox Sample
135guest172.70.55.1021e133otMar 14, 2025 8:56:12 AMlinkZK 8 x EL 3.0
4guest172.71.215.28smcii2Mar 13, 2025 10:17:02 AMlinkZK 8 x EL 3.0
3guest172.71.215.27smcii2Mar 13, 2025 10:16:37 AMlinkZK 8 x EL 3.0
2guest172.71.215.28smcii2Mar 13, 2025 10:16:23 AMlinkgrid deselect
1guest172.71.155.44d0eqcvMar 13, 2025 8:30:45 AMlinkAnother new ZK fiddle
22guest172.71.155.4320846g3Mar 13, 2025 8:24:21 AMlinkAnother new ZK fiddle
21guest172.71.155.4420846g3Mar 13, 2025 8:23:21 AMlinkAnother new ZK fiddle
20guest172.71.155.4420846g3Mar 13, 2025 8:22:52 AMlinkAnother new ZK fiddle
19guest172.71.155.4420846g3Mar 13, 2025 8:22:31 AMlinkquagga listener not clean on unbind
1guest118.232.105.1811hv4ehqJul 8, 2019 10:44:56 AMlinkresources
index.zulzul<zk>
<div>
<!-- <script><![CDATA[
zk.afterLoad('zkmax.barscanner', function() {
var xBarcodescannerStatic = {};
zk.override(zkmax.barscanner.Barcodescanner, xBarcodescannerStatic ,{
_quaggaInit: function (wgt, video, canvas, target) {
//zkmax.barscanner.Barcodescanner.quaggaApp.init(wgt);
var readerType = [],
reader = wgt._QUAGGAReader;
wgt.debug = false;
reader._ready = false;
readerType = zkmax.barscanner.Barcodescanner._quaggaTypeFilter(wgt);
//Before quagga.init, the video status should be 4, so it has videoWidth and videoHeight attribute to set the
//size of canvas
new Promise(function (resolve, reject) {
var waitVideo = setInterval(function () {
if (video.readyState == 4) {
clearInterval(waitVideo);
resolve();
}
}, 50, wgt);
}).then(function () {
reader.init({
locate: true,
inputStream: {
name: 'Live',
type: 'LiveStream',
target: target, // Or '#yourElement' (optional)
area: { // defines rectangle of the detection/localization area
top: '0%', // top offset
right: '0%', // right offset
left: '0%', // left offset
bottom: '0%' // bottom offset
},
size: zkmax.barscanner.Barcodescanner._quaggaCanvasDim(wgt).width
},
frequency: 1000,
decoder: {
readers: readerType, // List of active readers
debug: {
drawBoundingBox: false,
showFrequency: false,
drawScanline: false,
showPattern: false
},
multiple: false
},
locator: {
halfSample: false,
patchSize: 'medium', // x-small, small, medium, large, x-large
debug: {
showCanvas: wgt.debug,
showPatches: wgt.debug,
showFoundPatches: wgt.debug,
showSkeleton: wgt.debug,
showLabels: wgt.debug,
showPatchLabels: wgt.debug,
showRemainingPatchLabels: wgt.debug,
boxFromPatches: {
showTransformed: wgt.debug,
showTransformedBox: wgt.debug,
showBB: wgt.debug
}
}
},
debug: wgt.debug
}, function (err) {
if (err) {
zk.error(err);
return;
}
reader.canvas = jq.extend(true, {}, zkmax.barscanner.quagga.canvas);
reader._ready = true;
reader._reset = true;
reader._consistencyBuffer = [];
});
});
var onProcessedCallback = function (result) {
if(wgt.$n() == null){
reader.offProcessed(onProcessedCallback);
return;
}
var q = zkmax.barscanner.quagga,
drawingCanvas = wgt.$n('canvas'),
drawingCtx = drawingCanvas.getContext('2d');
if (result) {
if (result.boxes) {
drawingCtx.clearRect(0, 0, parseInt(drawingCanvas.getAttribute('width')), parseInt(drawingCanvas.getAttribute('height')));
result.boxes
.filter(function (box) { return box !== result.box; })
.forEach(function (box) {
q.ImageDebug.drawPath(box, {x: 0, y: 1}, drawingCtx, {color: 'green', lineWidth: 2});
});
}
if (result.box)
q.ImageDebug.drawPath(result.box, {x: 0, y: 1}, drawingCtx, {color: 'blue', lineWidth: 2});
if (result.codeResult && result.codeResult.code)
q.ImageDebug.drawPath(result.line, {x: 'x', y: 'y'}, drawingCtx, {color: 'red', lineWidth: 3});
}
}
reader.onProcessed(onProcessedCallback);
reader.onDetected(function (result) {
if (result[0] != undefined) {
result = result[0];
}
var errors = result.codeResult.decodedCodes
.filter(function (i) { return i.error !== undefined; })
.map(function (i) { return i.error; }),
errorSum = errors.reduce(function (prev, next) { return prev + next; }),
errorFactor = errorSum / errors.length;
if (errorFactor <= wgt._errorAcceptance) {
var format = result.codeResult.format.replace('_', ''),
value = result.codeResult.code,
buf = reader._consistencyBuffer;
buf.push(value);
if (buf.length > wgt._consistencyBufferSize) buf.shift();
if (buf.filter(function (v) { return v === value; }).length >= wgt._consistencyThreshold) {
reader._consistencyBuffer = [];
wgt._doDetect(format, value);
reader.processing = false;
reader.pause();
}
}
});
}
});
zkmax.barscanner.Barcodescanner._initLibrary();
});//zk.afterLoad
]]></script> -->
<vlayout>
<barcodescanner id="bcs" type="qr,code128" continuous="true" interval="1000" height="100px" onDetect='lb1.setValue(event.getResult());Clients.log("bcs1 "+event.getType() + " " + event.getResult())'/>
<label id="lb1"/>
<button label="remove" onClick='bcs.getParent().removeChild(bcs)'/>
</vlayout>
</div>
</zk>