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 :
ZK-5874
1JamesChu172.70.206.483kqs4mlJan 15, 2025 6:42:41 AMlinkBarcode scanner - workaround Final
5JamesChu172.70.207.1821dd97kgJan 15, 2025 4:50:23 AMlinkBarcode scanner - workaround Final
4JamesChu172.70.215.781dd97kgJan 15, 2025 4:49:14 AMlinkBarcode scanner - workaround Final
3JamesChu172.69.34.1731dd97kgJan 15, 2025 4:44:07 AMlinkBarcode scanner - workaround Final
2JamesChu172.69.34.1731dd97kgJan 15, 2025 4:43:52 AMlinkBarcode scanner - workaround3
1JamesChu172.70.210.1291dd97kgJan 15, 2025 4:33:36 AMlinkBarcode scanner - workaround2
4JamesChu172.70.207.1821fd4ia1Jan 15, 2025 3:32:37 AMlinkBarcode scanner - workaround2
3JamesChu172.70.211.621fd4ia1Jan 15, 2025 3:27:27 AMlinkBarcode scanner - workaround2
2JamesChu172.70.214.421fd4ia1Jan 15, 2025 3:21:15 AMlinkBarcode scanner - workaround2
1JamesChu172.70.214.421fd4ia1Jan 15, 2025 3:21:01 AMlinkZK-5874
1JamesChu172.70.206.483kqs4mlJan 15, 2025 6:42:41 AMlinkresources
index.zulzul<zk>
<script><![CDATA[
zk.afterLoad('zkmax.barscanner', function() {
var xBarcodescanner = {};
zk.override(zkmax.barscanner.Barcodescanner, xBarcodescanner ,{
_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);
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
}
},
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;
}),
errorFactor = 0;
if (errors.length > 0) {
// ZK-4498: errors is empty in codabar
var 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();
}
}
});
}
});//zk.override
zkmax.barscanner.Barcodescanner._initLibrary()
var xBarcodescanner1 = {};
zk.override(zkmax.barscanner.Barcodescanner.prototype, xBarcodescanner1 ,{
_requestCamera: function (callback) {
if (this._type == 'QR') { // do original behavior with zxing library
xBarcodescanner1._requestCamera.call(this, callback);
return;
}
callback();
}
});//zk.override
});//zk.afterLoad
]]>
</script>
<window id="win" apply="pkg$.TestComposer">
<button onClick="bs.setEnable(false)" label="disable" />
<button onClick="bs.setEnable(true)" label="enable" />
<button id="deBtn" label="detach" />
<button id="atBtn" label="attach" />
<button id="addBtn" label="add new" />
<barcodescanner id="bs" width="300px" height="300px" onDetect='Clients.log(event.getType() + " " + event.getResult())'/>
</window>
</zk>
TestComposer.javajavaimport org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.ui.select.annotation.*;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zkmax.zul.Barcodescanner;
import org.zkoss.zkmax.zul.event.DetectEvent;
import org.zkoss.zul.*;
public class TestComposer extends SelectorComposer {
@Wire
Barcodescanner bs;
@Wire
Window win;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
@Listen("onClick=#deBtn")
public void doDetach() {
bs.detach();
}
@Listen("onClick=#atBtn")
public void doReattach() {
bs.setParent(win);
}
@Listen("onClick=#addBtn")
public void addScanner() {
Barcodescanner scanner = new Barcodescanner();
scanner.setType("CODE128");
scanner.setContinuous(true);
scanner.setInterval(1000);
scanner.setHeight("100px");
scanner.addEventListener("onDetect", new EventListener<DetectEvent>() {
public void onEvent(DetectEvent event) throws Exception {
Clients.log(event.getType() + " " + event.getResult());
}
});
win.appendChild(scanner);
}
}