|
1 | | -(function(QRCode){ |
| 1 | +(function(QRCode) { |
2 | 2 | 'use strict'; |
3 | 3 |
|
4 | 4 | angular.module('ja.qr', []) |
5 | | - .controller('QrCtrl', ['$scope', function($scope){ |
6 | | - $scope.getTypeNumeber = function(){ |
| 5 | + .controller('QrCtrl', ['$scope', function($scope) { |
| 6 | + $scope.getTypeNumeber = function() { |
7 | 7 | return $scope.typeNumber || 0; |
8 | 8 | }; |
9 | 9 |
|
10 | | - $scope.getCorrection = function(){ |
| 10 | + $scope.getCorrection = function() { |
11 | 11 | var levels = { |
12 | 12 | 'L': 1, |
13 | 13 | 'M': 0, |
|
19 | 19 | return levels[correctionLevel] || 0; |
20 | 20 | }; |
21 | 21 |
|
22 | | - $scope.getText = function(){ |
| 22 | + $scope.getText = function() { |
23 | 23 | return $scope.text || ''; |
24 | 24 | }; |
25 | 25 |
|
26 | | - $scope.getSize = function(){ |
| 26 | + $scope.getSize = function() { |
27 | 27 | return $scope.size || 250; |
28 | 28 | }; |
29 | 29 |
|
30 | | - $scope.isNUMBER = function(text){ |
| 30 | + $scope.isNUMBER = function(text) { |
31 | 31 | var ALLOWEDCHARS = /^[0-9]*$/; |
32 | 32 | return ALLOWEDCHARS.test(text); |
33 | 33 | }; |
34 | 34 |
|
35 | | - $scope.isALPHA_NUM = function(text){ |
| 35 | + $scope.isALPHA_NUM = function(text) { |
36 | 36 | var ALLOWEDCHARS = /^[0-9A-Z $%*+\-./:]*$/; |
37 | 37 | return ALLOWEDCHARS.test(text); |
38 | 38 | }; |
39 | 39 |
|
40 | | - $scope.is8bit = function(text){ |
| 40 | + $scope.is8bit = function(text) { |
41 | 41 | for (var i = 0; i < text.length; i++) { |
42 | 42 | var code = text.charCodeAt(i); |
43 | 43 | if (code > 255) { |
|
47 | 47 | return true; |
48 | 48 | }; |
49 | 49 |
|
50 | | - $scope.checkInputMode = function(inputMode, text){ |
| 50 | + $scope.checkInputMode = function(inputMode, text) { |
51 | 51 | if (inputMode === 'NUMBER' && !$scope.isNUMBER(text)) { |
52 | 52 | throw new Error('The `NUMBER` input mode is invalid for text.'); |
53 | 53 | } |
|
64 | 64 | return true; |
65 | 65 | }; |
66 | 66 |
|
67 | | - $scope.getInputMode = function(text){ |
| 67 | + $scope.getInputMode = function(text) { |
68 | 68 | var inputMode = $scope.inputMode; |
69 | 69 | inputMode = inputMode || ($scope.isNUMBER(text) ? 'NUMBER' : undefined); |
70 | 70 | inputMode = inputMode || ($scope.isALPHA_NUM(text) ? 'ALPHA_NUM' : undefined); |
|
73 | 73 | return $scope.checkInputMode(inputMode, text) ? inputMode : ''; |
74 | 74 | }; |
75 | 75 | }]) |
76 | | - .directive('qr', ['$timeout', '$window', function($timeout, $window){ |
| 76 | + .directive('qr', ['$timeout', '$window', function($timeout, $window) { |
77 | 77 |
|
78 | 78 | return { |
79 | 79 | restrict: 'E', |
|
87 | 87 | image: '=' |
88 | 88 | }, |
89 | 89 | controller: 'QrCtrl', |
90 | | - link: function postlink(scope, element, attrs){ |
| 90 | + link: function postlink(scope, element) { |
91 | 91 |
|
92 | | - if (scope.text === undefined) { |
| 92 | + if (!element[0].hasAttribute('text')) { |
93 | 93 | throw new Error('The `text` attribute is required.'); |
94 | 94 | } |
95 | 95 |
|
|
103 | 103 | scope.INPUT_MODE = scope.getInputMode(scope.TEXT); |
104 | 104 | scope.canvasImage = ''; |
105 | 105 |
|
106 | | - var draw = function(context, qr, modules, tile){ |
| 106 | + var draw = function(context, qr, modules, tile) { |
107 | 107 | for (var row = 0; row < modules; row++) { |
108 | 108 | for (var col = 0; col < modules; col++) { |
109 | 109 | var w = (Math.ceil((col + 1) * tile) - Math.floor(col * tile)), |
|
114 | 114 | } |
115 | 115 | }; |
116 | 116 |
|
117 | | - var render = function(canvas, value, typeNumber, correction, size, inputMode){ |
| 117 | + var render = function(canvas, value, typeNumber, correction, size, inputMode) { |
118 | 118 | var trim = /^\s+|\s+$/g; |
119 | 119 | var text = value.replace(trim, ''); |
120 | 120 |
|
|
136 | 136 |
|
137 | 137 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
138 | 138 |
|
139 | | - $timeout(function(){ |
140 | | - scope.$watch('text', function(value, old){ |
| 139 | + $timeout(function() { |
| 140 | + scope.$watch('text', function(value, old) { |
141 | 141 | if (value !== old) { |
142 | 142 | scope.TEXT = scope.getText(); |
143 | 143 | scope.INPUT_MODE = scope.getInputMode(scope.TEXT); |
144 | 144 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
145 | 145 | } |
146 | 146 | }); |
147 | 147 |
|
148 | | - scope.$watch('correctionLevel', function(value, old){ |
| 148 | + scope.$watch('correctionLevel', function(value, old) { |
149 | 149 | if (value !== old) { |
150 | 150 | scope.CORRECTION = scope.getCorrection(); |
151 | 151 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
152 | 152 | } |
153 | 153 | }); |
154 | 154 |
|
155 | | - scope.$watch('typeNumber', function(value, old){ |
| 155 | + scope.$watch('typeNumber', function(value, old) { |
156 | 156 | if (value !== old) { |
157 | 157 | scope.TYPE_NUMBER = scope.getTypeNumeber(); |
158 | 158 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
159 | 159 | } |
160 | 160 | }); |
161 | 161 |
|
162 | | - scope.$watch('size', function(value, old){ |
| 162 | + scope.$watch('size', function(value, old) { |
163 | 163 | if (value !== old) { |
164 | 164 | scope.SIZE = scope.getSize(); |
165 | 165 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
166 | 166 | } |
167 | 167 | }); |
168 | 168 |
|
169 | | - scope.$watch('inputMode', function(value, old){ |
| 169 | + scope.$watch('inputMode', function(value, old) { |
170 | 170 | if (value !== old) { |
171 | 171 | scope.INPUT_MODE = scope.getInputMode(scope.TEXT); |
172 | 172 | render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE); |
|
0 commit comments