summaryrefslogtreecommitdiffstats
path: root/web/js/labitrack.d/38-labelform.js
blob: 04031cf6be3fb42096eac257e05ba88d0a832937 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
(function(){

	λ.labelform = function(opts){
		var model = opts.model;
		var canvas = $('#label')[0];
		var label = new λ.label();
		label.set_data(model.toJSON());
		label.set_canvas(canvas);

		var rendertime = $('#rendertime');
		function updateimg(data, ms) {
			rendertime.text(ms);
		}

		var f = $('#labelform');
		function update_data(){
			var t = this;
			setTimeout(function(){
				var v = t.value;
				var foo = {};
				foo[t.name] = model.get(t.name);
				switch (t.type) {
				case 'text':
				case 'textarea':
					v = v.trim();
					if (v.length === 0) {
						v = $(t).attr('placeholder');
					}
					foo[t.name] = v.trim();
					break;
				case 'checkbox':
					var i = $.inArray(v, foo[t.name]);
					if (t.checked) {
						if (i === -1) {
							foo[t.name].push(t.value);
						}
					} else if (i !== -1) {
						foo[t.name].splice(i, 1);
					}
					break;
				}
				model.set(foo);
				label.set_data(model.toJSON());
				label.render(updateimg);
			}, 0);
		};
		f.find(':input').each(function (i,e){
			$(e).bind('keypress', update_data);
			$(e).bind('click', update_data);
			$(e).bind('change', update_data);
			update_data.apply(this);
		});
		label.render(updateimg);

		f.bind('submit', function(){
			opts.submit(label, model);
			return false;
		});
	};
}());