<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://battery.knowledge-graph.eu/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACamScanner.js</id>
	<title>MediaWiki:CamScanner.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://battery.knowledge-graph.eu/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACamScanner.js"/>
	<link rel="alternate" type="text/html" href="https://battery.knowledge-graph.eu/w/index.php?title=MediaWiki:CamScanner.js&amp;action=history"/>
	<updated>2026-08-14T07:23:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://battery.knowledge-graph.eu/w/index.php?title=MediaWiki:CamScanner.js&amp;diff=1853&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;  $(document).ready(function () { 	if ($(&#039;#cam-scanner&#039;).length === 0) return; //only on pages with a cam-scanner-div 	mw.loader.using( &#039;oojs-ui-core&#039;).done( function () { 	$.when( 		$.getScript(&quot;//rawgit.com/schmich/instascan-builds/master/instascan.min.js&quot;), 		$.Deferred(function (deferred) { 			$(deferred.resolve); 		}) 	).done(function () { 		var textInput = new OO.ui.TextInputWidget( { 			placeholder: &#039;Enter ID or scan QR code&#039; 		} ); 		var scan_button = new OO.ui.B...&quot;</title>
		<link rel="alternate" type="text/html" href="https://battery.knowledge-graph.eu/w/index.php?title=MediaWiki:CamScanner.js&amp;diff=1853&amp;oldid=prev"/>
		<updated>2024-06-24T21:08:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;  $(document).ready(function () { 	if ($(&amp;#039;#cam-scanner&amp;#039;).length === 0) return; //only on pages with a cam-scanner-div 	mw.loader.using( &amp;#039;oojs-ui-core&amp;#039;).done( function () { 	$.when( 		$.getScript(&amp;quot;//rawgit.com/schmich/instascan-builds/master/instascan.min.js&amp;quot;), 		$.Deferred(function (deferred) { 			$(deferred.resolve); 		}) 	).done(function () { 		var textInput = new OO.ui.TextInputWidget( { 			placeholder: &amp;#039;Enter ID or scan QR code&amp;#039; 		} ); 		var scan_button = new OO.ui.B...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
	if ($(&amp;#039;#cam-scanner&amp;#039;).length === 0) return; //only on pages with a cam-scanner-div&lt;br /&gt;
	mw.loader.using( &amp;#039;oojs-ui-core&amp;#039;).done( function () {&lt;br /&gt;
	$.when(&lt;br /&gt;
		$.getScript(&amp;quot;//rawgit.com/schmich/instascan-builds/master/instascan.min.js&amp;quot;),&lt;br /&gt;
		$.Deferred(function (deferred) {&lt;br /&gt;
			$(deferred.resolve);&lt;br /&gt;
		})&lt;br /&gt;
	).done(function () {&lt;br /&gt;
		var textInput = new OO.ui.TextInputWidget( {&lt;br /&gt;
			placeholder: &amp;#039;Enter ID or scan QR code&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		var scan_button = new OO.ui.ButtonWidget( {&lt;br /&gt;
			label: &amp;#039;Scan&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		var search_button = new OO.ui.ButtonWidget( {&lt;br /&gt;
			label: &amp;#039;Search&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		var open_button = new OO.ui.ButtonWidget( {&lt;br /&gt;
			label: &amp;#039;Open&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		var popup = new OO.ui.PopupWidget( {&lt;br /&gt;
		//style=&amp;quot;width:400px;height:400px;&amp;quot;&lt;br /&gt;
		$content: $( &amp;#039;&amp;lt;div style=&amp;quot;width:400px;height:400px;&amp;quot;&amp;gt;&amp;lt;video width=&amp;quot;400&amp;quot; height=&amp;quot;400&amp;quot; id=&amp;quot;cam-scanner-preview&amp;quot;&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; ),&lt;br /&gt;
		padded: true,&lt;br /&gt;
		width: 450,&lt;br /&gt;
		height: 450,&lt;br /&gt;
		head: true,&lt;br /&gt;
		label: &amp;#039;CamScanner&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		&lt;br /&gt;
		$(&amp;#039;#cam-scanner&amp;#039;).append(textInput.$element);&lt;br /&gt;
		$(&amp;#039;#cam-scanner&amp;#039;).append(scan_button.$element);&lt;br /&gt;
		$(&amp;#039;#cam-scanner&amp;#039;).append(search_button.$element);&lt;br /&gt;
		$(&amp;#039;#cam-scanner&amp;#039;).append(open_button.$element);&lt;br /&gt;
		$(&amp;#039;#cam-scanner&amp;#039;).append(popup.$element);&lt;br /&gt;
		var qr_detected = false;&lt;br /&gt;
		scan_button.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			qr_detected = false;&lt;br /&gt;
			// To display the popup, toggle the visibility to &amp;#039;true&amp;#039;.&lt;br /&gt;
			popup.toggle( true );&lt;br /&gt;
			textInput.setValue(&amp;quot;Scanning...&amp;quot;);&lt;br /&gt;
			let scanner = new Instascan.Scanner({&lt;br /&gt;
				video: document.getElementById(&amp;#039;cam-scanner-preview&amp;#039;)&lt;br /&gt;
			});&lt;br /&gt;
			scanner.addListener(&amp;#039;scan&amp;#039;, function (content) {&lt;br /&gt;
				console.log(content);&lt;br /&gt;
				textInput.setValue(content);&lt;br /&gt;
				qr_detected = true;&lt;br /&gt;
				popup.toggle( false );&lt;br /&gt;
			});&lt;br /&gt;
			Instascan.Camera.getCameras().then(function (cameras) {&lt;br /&gt;
				if (cameras.length &amp;gt; 0) {&lt;br /&gt;
					scanner.start(cameras[0]);&lt;br /&gt;
				} else {&lt;br /&gt;
					console.error(&amp;#039;No cameras found.&amp;#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}).catch(function (e) {&lt;br /&gt;
				console.error(e);&lt;br /&gt;
			});&lt;br /&gt;
			popup.on( &amp;#039;toggle&amp;#039;, function (visible) {&lt;br /&gt;
				if (!visible){&lt;br /&gt;
					console.log(&amp;quot;Stop scanner&amp;quot;);&lt;br /&gt;
					if (!qr_detected) textInput.setValue(&amp;quot;&amp;quot;);&lt;br /&gt;
					scanner.stop();&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
		search_button.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			window.location = &amp;quot;/w/index.php?title=_Special:Search&amp;amp;search=&amp;quot; + textInput.getValue() + &amp;quot;&amp;amp;go=Page&amp;quot;;&lt;br /&gt;
		});&lt;br /&gt;
		open_button.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			window.location = textInput.getValue();&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	});&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>