Blame view

app/scripts/controllers/tshirtdesign.js 18.4 KB
6f105dbd5   Truong LD   add source code i...
1
  define(['app'], function (app) {
faf1542f8   TRUONG   fix lazy border w...
2
  	app.controller('TshirtdesignCtrl', function ($scope, $rootScope, $window, $timeout, $illustration, $favorite) {
2681003ca   TRUONG   update #1808, #1809
3
  		$scope.Math = window.Math;
faf1542f8   TRUONG   fix lazy border w...
4
  		$scope.savedFrameView = 'views/design_part/tshirt-saved.html?ver='+VERSION;
6f105dbd5   Truong LD   add source code i...
5
  		var canvas = new fabric.Canvas('main-design-container');
53828b4e7   TRUONG   process save/rest...
6
7
8
  		var diffX = 40, diffY = 40;
  		var _coorTrash_x = 567;
  		var _coorTrash_y = 545;
2f4c31749   DANG   Fix text design a...
9
  		//Set width and height canvas
360081503   DANG   Fix reponsive
10
  		function setSizeCanvas() {
4ae9cc634   DANG   fix reponsive
11
12
  			if(typeof $rootScope.placeTshirt.place == 'undefined')
  				return;
360081503   DANG   Fix reponsive
13
14
  			var _modalWidth = $('.modal-dialog').width();
  			var _windowWidth = window.innerWidth;
4ae9cc634   DANG   fix reponsive
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
  			var place = $rootScope.placeTshirt.place;
  
  			switch (place) {
  				case 't_shirt_p_1' :
  					$scope.designCanvasClass = 'design-content-t_shirt_p_1';
  					if(_windowWidth > 762) {
  						var _contentCanvasWidth = (_modalWidth*8/12)/1.2;
  						var _contentCanvasHeight = _contentCanvasWidth;
  					} else {
  						var _contentCanvasWidth = _windowWidth-70;
  						var _contentCanvasHeight = _contentCanvasWidth;
  					}
  					break;
  				case 't_shirt_p_2' :
  					$scope.designCanvasClass = 'design-content-t_shirt_p_2';
  					if(_windowWidth > 762) {
  						var _contentCanvasWidth = (_modalWidth*8/12)/1.2;
  						var _contentCanvasHeight = (_modalWidth*8/12)/2.2;
  
  					} else {
  						var _contentCanvasWidth = _windowWidth-70;
  						var _contentCanvasHeight = (_windowWidth)/2.5;
  					}
  					break;
  				default:
  					break;
360081503   DANG   Fix reponsive
41
  			}
53828b4e7   TRUONG   process save/rest...
42
  			
360081503   DANG   Fix reponsive
43
  			canvas.setWidth(_contentCanvasWidth);
4ae9cc634   DANG   fix reponsive
44
  			canvas.setHeight(_contentCanvasHeight);
53828b4e7   TRUONG   process save/rest...
45
46
47
48
49
50
51
52
53
  			
  			var mainDsWidth = (_modalWidth*8/12)-30;
  			var mainDsHeight = (place == 't_shirt_p_1' ? 80 : 400) + _contentCanvasHeight;
  			// console.log(mainDsWidth, mainDsHeight);
  			diffX = 40;
  			diffY = (mainDsHeight - _contentCanvasHeight)/2;
  			_coorTrash_x = _contentCanvasWidth + 20;
  			_coorTrash_y = _contentCanvasHeight + diffY - 90;
  			console.log(_coorTrash_x, _coorTrash_y);
2f4c31749   DANG   Fix text design a...
54
  		}
360081503   DANG   Fix reponsive
55
56
57
58
59
  		setSizeCanvas();
  		//Window resize event
  		$(window).resize(function () {
  			setSizeCanvas();
  		});
2f4c31749   DANG   Fix text design a...
60
  		//Custom control
21a01f6ac   Dang YoungWorld   fix bug action "O...
61
  		fabric.Object.prototype.transparentCorners = true;
cc65fa102   DANG   Custom control
62
  		fabric.Object.prototype.hasRotatingPoint = false;
e6cd2bf54   DANG   update version
63

cc65fa102   DANG   Custom control
64
65
66
67
  		var ctrVisible = {tl: false, ml:false, bl:false, mb: false, br: true, mr: false, tr: true, mt: true, mtr: false};
  		for(key in ctrVisible) {
  			fabric.Object.prototype.setControlVisible(key,ctrVisible[key]);
  		}
e6cd2bf54   DANG   update version
68

cc65fa102   DANG   Custom control
69
70
71
72
73
74
75
76
77
  		fabric.Object.prototype.customiseCornerIcons({
  			settings: {
  				borderColor: '#0000ff',
  				cornerSize: 25,
  				cornerShape: 'circle',
  				cornerBackgroundColor: '#0171b4',
  				cornerPadding: 6
  			},
  			mt: {
39a1e279b   DANG   update
78
  				icon: 'images/control-icon/ok.png'
cc65fa102   DANG   Custom control
79
80
81
82
83
84
85
86
87
88
89
90
  			},
  			br: {
  				icon: 'images/control-icon/resize.png'
  			},
  			tr: {
  				icon: 'images/control-icon/rotate.png'
  			}
  		});
  
  		fabric.Canvas.prototype.customiseControls({
  			mt: {
  				cursor: 'pointer',
2f4c31749   DANG   Fix text design a...
91
  				action: function(e, target) {
21a01f6ac   Dang YoungWorld   fix bug action "O...
92
93
  					fabric.Object.prototype.selectable = false;
  					canvas.deactivateAll();
360081503   DANG   Fix reponsive
94
95
  					delete currentObj;
  					$scope.designTextValue = '';
21a01f6ac   Dang YoungWorld   fix bug action "O...
96
97
98
  					$timeout(function(){
  						fabric.Object.prototype.selectable = true;
  					},20);
cc65fa102   DANG   Custom control
99
100
101
102
103
104
105
106
107
108
  				}
  			},
  			br: {
  
  			},
  			tr: {
  				action: 'rotate',
  				cursor: 'crosshair'
  			}
  		});
6f105dbd5   Truong LD   add source code i...
109

6f105dbd5   Truong LD   add source code i...
110
  		canvas.on({
92271fd7c   DANG   add event
111
  			'object:added'      : onIllustrationAdded,
c3bee6bb3   TRUONG   fix trash icon ef...
112
  			'object:moving'     : onIllustrationMoving,
92271fd7c   DANG   add event
113
114
115
116
117
  			'object:scaling'    : onIllustrationChange,
  			'object:rotating'   : onIllustrationChange,
  			'object:selected'   : onObjectSelected,
  			'object:modified'   : onIllustrationModifield,
  			'selection:cleared' : onObjectOut,
6f105dbd5   Truong LD   add source code i...
118
  		});
aff3eb043   TRUONG   update illustrati...
119
120
121
122
123
124
125
126
  		
  		var currentObj;
  		var listObj = [];
  		var stateObj = [];
  		var indexCurr = 0;
  		var indexCurr2 = 0;
  		var actionObj = false;
  		var refreshObj = true;
92271fd7c   DANG   add event
127
  		var spacingNum = 0;
2f4c31749   DANG   Fix text design a...
128
  		$scope.itemFont = 0;
cc65fa102   DANG   Custom control
129

2f4c31749   DANG   Fix text design a...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
  		$scope.showDesignTab = function(tab){
  			canvas.deactivateAll().renderAll();
  			$rootScope.isShowLeftPanel = tab;
  			switch (tab) {
  				case 'illustration': {
  					$scope.IllustrationList = $illustration.getAll();
  					$rootScope.outputImage = false;
  					$scope.illustrationSelectConfig = {
  						allowClear:true
  					};
  					$timeout(function(){
  						$('.illstration-item').tooltip({
  							animated: 'fade',
  							placement: 'bottom',
  							html: true
  						});
2f4c31749   DANG   Fix text design a...
146
147
148
149
150
151
152
153
154
  					},1000);
  					break;
  				}
  				case 'text': {
  					break;
  				}
  			}
  		};
  		$scope.showDesignTab('default');
cc65fa102   DANG   Custom control
155

aff3eb043   TRUONG   update illustrati...
156
157
158
  		
  		function onIllustrationAdded(options){
  			var object = options.target;
aff3eb043   TRUONG   update illustrati...
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
  		
  		    if (actionObj === true) {
  		        stateObj = [stateObj[indexCurr2]];
  		        listObj = [listObj[indexCurr2]];
  		
  		        actionObj = false;
  		        console.log(stateObj);
  		        indexCurr = 1;
  		    }
  		    object.saveState();
  		
  		    console.log(object.originalState);
  		    stateObj[indexCurr] = JSON.stringify(object.originalState);
  		    listObj[indexCurr] = object;
  		    indexCurr++;
  		    indexCurr2 = indexCurr - 1;
  		    refreshObj = true;
  		}
  		
1d6ddfa62   TRUONG   merge
178
  		function onIllustrationModifield(options){
d7aae10e2   TRUONG   update fix delete...
179
  			$('.object-border').hide();
c3bee6bb3   TRUONG   fix trash icon ef...
180
181
  			//
  		    var pointer = canvas.getPointer(options.e);
53828b4e7   TRUONG   process save/rest...
182
  			if (pointer.x >= _coorTrash_x && pointer.y >= _coorTrash_y && pointer.x <= _coorTrash_x+50 && pointer.y <= _coorTrash_y+70){
c3bee6bb3   TRUONG   fix trash icon ef...
183
  				canvas.getActiveObject().remove();
3ab3e50f8   TRUONG   update, fix trash...
184
  				$('.design-content .trash-design img').attr({'src':'images/trash.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
185
186
187
188
  				return;
  			}
  			
  			//
aff3eb043   TRUONG   update illustrati...
189
  			var objOffset = canvas.getActiveObject().getBoundingRect();
c3bee6bb3   TRUONG   fix trash icon ef...
190
  			var cH = canvas.height, cW = canvas.width, H0 = 20, W0 = 20;
1d6ddfa62   TRUONG   merge
191
  			//console.log(objOffset,canvas.height,canvas.width);
aff3eb043   TRUONG   update illustrati...
192
193
194
195
196
197
198
199
200
201
  			if (objOffset.left<W0-objOffset.width || objOffset.left>cW-W0 || objOffset.top<H0-objOffset.height || objOffset.top>cH-H0){
  				if (confirm('削除してもよろしいですか')){
  					canvas.getActiveObject().remove();
  				}else{
  					undoCanvas();
  					return;
  				}
  			}
  			
  			var object = options.target;
aff3eb043   TRUONG   update illustrati...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
  		    if (actionObj === true) {
  		        stateObj = [stateObj[indexCurr2]];
  		        listObj = [listObj[indexCurr2]];
  		
  		        actionObj = false;
  		        console.log(stateObj);
  		        indexCurr = 1;
  		    }
  		
  		    object.saveState();
  		
  		    stateObj[indexCurr] = JSON.stringify(object.originalState);
  		    listObj[indexCurr] = object;
  		    indexCurr++;
  		    indexCurr2 = indexCurr - 1;
aff3eb043   TRUONG   update illustrati...
217
218
219
  		    refreshObj = true;
  		}
  		
6f105dbd5   Truong LD   add source code i...
220
  		function onIllustrationChange(options) {
e872619e5   Dang YoungWorld   delete comment
221

6f105dbd5   Truong LD   add source code i...
222
  		}
c3bee6bb3   TRUONG   fix trash icon ef...
223
224
  		
  		function onIllustrationMoving(options) {
d7aae10e2   TRUONG   update fix delete...
225
  			var object = options.target;
c3bee6bb3   TRUONG   fix trash icon ef...
226
  			var pointer = canvas.getPointer(options.e);
53828b4e7   TRUONG   process save/rest...
227
228
  			// console.log(pointer.x, pointer.y);
  			if (pointer.x >= _coorTrash_x && pointer.y >= _coorTrash_y && pointer.x <= _coorTrash_x+50 && pointer.y <= _coorTrash_y+70){
3ab3e50f8   TRUONG   update, fix trash...
229
  				$('.design-content .trash-design img').attr({'src':'images/trash-hover.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
230
  			}else{
3ab3e50f8   TRUONG   update, fix trash...
231
  				$('.design-content .trash-design img').attr({'src':'images/trash.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
232
  			}
d7aae10e2   TRUONG   update fix delete...
233
  			
f2c8c5649   TRUONG   fix & update
234
  			// console.log(object.oCoords,object.originalState);
d7aae10e2   TRUONG   update fix delete...
235
236
  			object.setCoords();
  			var Coords = object.oCoords;
c674a3608   TRUONG   fix delete effect
237
238
239
240
241
242
  			var xAngle = Math.cos(object.getAngle() * (Math.PI / 180))/2;
  			var yAngle = Math.sin(object.getAngle() * (Math.PI / 180))/2;
  			$('#object-border-left').css({'height':Math.ceil(object.originalState.height*object.scaleY), top: Coords.tl.y+diffY, left: Coords.tl.x+diffX});
  			$('#object-border-right').css({'height':Math.ceil(object.originalState.height*object.scaleY), top: Coords.tr.y+diffY, left: Coords.tr.x+diffX});
  			$('#object-border-top').css({'width':Math.ceil(object.originalState.width*object.scaleX), top: Coords.tl.y+diffY, left: Coords.tl.x+diffX});
  			$('#object-border-bottom').css({'width':Math.ceil(object.originalState.width*object.scaleX), top: Coords.bl.y+diffY, left: Coords.bl.x+diffX});
d7aae10e2   TRUONG   update fix delete...
243
244
245
246
247
248
  			$('.object-border').css({
  				'-ms-transform': 'rotate('+object.getAngle()+'deg)', /* IE 9 */
      			'-webkit-transform': 'rotate('+object.getAngle()+'deg)', /* Safari */
      			'transform': 'rotate('+object.getAngle()+'deg)' /* Standard syntax */
  			});
  			$('.object-border').show();
c3bee6bb3   TRUONG   fix trash icon ef...
249
  		}
6f105dbd5   Truong LD   add source code i...
250

92271fd7c   DANG   add event
251
252
253
  		function onObjectOut() {
  			delete currentObj;
  			$scope.designTextValue = '';
aff3eb043   TRUONG   update illustrati...
254
  		}
6f105dbd5   Truong LD   add source code i...
255

aff3eb043   TRUONG   update illustrati...
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
  		function undoCanvas() {
  		    if (indexCurr <= 0) {
  		        indexCurr = 0;
  		        return;
  		    }
  		
  		    if (refreshObj === true) {
  		        indexCurr--;
  		        refreshObj = false;
  		    }
  		
  		    console.log('undo');
  		
  		    indexCurr2 = indexCurr - 1;
  		    currentObj = listObj[indexCurr2];
  		    if (currentObj){
  		    	currentObj.setOptions(JSON.parse(indexCurr[indexCurr2]));
  		    }
  		
  		    indexCurr--;
  		    currentObj.setCoords();
  		    canvas.renderAll();
  		    actionObj = true;
  		}
  		
  		function redoCanvas() {
  		    actionObj = true;
  		    if (indexCurr >= stateObj.length - 1) {
  		        return;
  		    }
  		
  		    console.log('redo');
  		
  		    indexCurr2 = indexCurr + 1;
  		    currentObj = listObj[indexCurr2];
  		    currentObj.setOptions(JSON.parse(indexCurr[indexCurr2]));
  		
  		    indexCurr++;
  		    currentObj.setCoords();
  		    canvas.renderAll();
6f105dbd5   Truong LD   add source code i...
296
  		}
80ff9bbd4   TRUONG   fix bugs and optimal
297
298
  		
  		$scope.canvasClearAll = function(){
60b61386b   TRUONG   fix text
299
  			if (confirm('配置されたすべての文字や画像を消去します')){
80ff9bbd4   TRUONG   fix bugs and optimal
300
301
302
  				canvas.clear();
  			}
  		}
92271fd7c   DANG   add event
303
304
305
  
  		function onObjectSelected(options) {
  			var currentObj = options.target;
2f4c31749   DANG   Fix text design a...
306

92271fd7c   DANG   add event
307
  			$scope.typeObject = currentObj.type;
c8bfdfd96   DANG   event click object
308
309
  			switch ($scope.typeObject) {
  				case 'i-text' :
c8bfdfd96   DANG   event click object
310
  					$rootScope.isShowLeftPanel = 'text';
92271fd7c   DANG   add event
311
312
313
314
315
  					var text = currentObj.text;
  					if(text != '') {
  						$scope.designText = text;
  						$scope.designTextValue = text;
  					}
c8bfdfd96   DANG   event click object
316
317
318
319
320
  					break;
  
  				case 'path-group' :
  					$rootScope.isShowLeftPanel = 'illustration';
  					break;
e5669639a   TRUONG   merge #1759
321
322
323
324
  					
  				case 'image':
  					$rootScope.isShowLeftPanel = 'image';
  					break;
c8bfdfd96   DANG   event click object
325
326
327
328
329
330
  
  				default :
  					$rootScope.isShowLeftPanel = 'default';
  					break;
  			}
  			$rootScope.safeApply();
6f105dbd5   Truong LD   add source code i...
331
332
333
334
335
  		}
  
  		// Illustration process
  		$scope.changeIllustrationCategory = function(currentIllustration){
  			$scope.currentIllustrationCate = $illustration.getList(currentIllustration);
422e7837d   DANG   Change color t-shirt
336
  		};
6f105dbd5   Truong LD   add source code i...
337
338
339
340
  
  		$scope.insertSvg = function(item){
  			fabric.loadSVGFromURL(item.path, function(objects, options) {
  				var shape = fabric.util.groupSVGElements(objects, options);
6f105dbd5   Truong LD   add source code i...
341
  				canvas.add(shape.scale(0.6));
53828b4e7   TRUONG   process save/rest...
342
  				shape.set({ left: 150, top: 100 }).setCoords();
6f105dbd5   Truong LD   add source code i...
343
344
345
  				canvas.renderAll();
  				canvas.setActiveObject(shape);
  			});
422e7837d   DANG   Change color t-shirt
346
  		};
6f105dbd5   Truong LD   add source code i...
347
348
  
  		// color pattern
6f105dbd5   Truong LD   add source code i...
349
  		$scope.listColorPatterns = [
aff3eb043   TRUONG   update illustrati...
350
351
352
353
  			'#000000','#ffff00','#ff6600','#ff0000','#ff6262','#ffa19c','#ff9933','#c45d01','#5d2b03','#ffffcc',
  			'#ffff99','#ffd500','#c0db50','#21a52a','#00663f','#abfcab','#36ffaa','#89eaea','#00938c','#005450',
  			'#0badff','#006cff','#839aff','#0410a0','#ffb2ff','#f93fff','#6600ca','#ff6699','#999999','#666666',
  			'#333333'
422e7837d   DANG   Change color t-shirt
354
  		];
80ff9bbd4   TRUONG   fix bugs and optimal
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
  		
  		$scope.changeColorPattern = function(color){
  			var obj = canvas.getActiveObject();
  			if (!color){
  				color = 'none';
  			}
  			if (obj instanceof fabric.PathGroup) {
  			  obj.getObjects().forEach(function(o) {
  			  	o.fill = color;
  			  });
  			}
  			else {
  			  obj.fill = color;
  			}
  			canvas.renderAll();
80ff9bbd4   TRUONG   fix bugs and optimal
370
371
  		};
  		
04cbb68af   DANG   design text basic
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
  		//Font
  		$scope.listFontFamily = [
  			{
  				name : 'GN Aki iro Sesami Cookies',
  				slug : 'gn_aki_iro_sesami_cookies',
  			},
  			{
  				name : 'GN-Fuyu-iro_Script_Bold',
  				slug : 'gn_fuyu_iro_script_bold'
  			},
  			{
  				name : 'GN Killgothic U Kanana',
  				slug : 'gn_killgothic_u_kanana'
  			},
  			{
  				name : 'GN-Kin-iro_Alphabet_Cookies',
  				slug : 'gn_kin_iro_alphabet_cookies'
  
  			},
  			{
  				name : 'GN-Kin-iro_SansSerif',
  				slug : 'gn_kin_iro_sansserif'
  
  			},
  			{
  				name : 'GN-Koharuiro_Sunray',
  				slug : 'gn_koharuiro_sunray'
  
  			},
  			{
  				name : 'GN-Kyu-pin',
  				slug : 'gn_kyu_pin'
  			},
  			{
  				name : 'gn_natsu_iro_schedule',
  				slug : 'gn_natsu_iro_schedule'
  
  			},
  			{
  				name : 'gnkana_kiniro_sansserif_l',
  				slug : 'gnkana_kiniro_sansserif_l'
  
  			},
  			{
  				name : 'gnkana_kiniro_sansserif_st',
  				slug : 'gnkana_kiniro_sansserif_st'
  			},
  			{
  				name : 'gnkana_kon_iro_nightfall',
  				slug : 'gnkana_kon_iro_nightfall'
  
  			},
  			{
  				name : 'ms_gothic',
  				slug : 'ms_gothic'
  
  			},
  			{
  				name : 'msmincho',
  				slug : 'msmincho'
  			},
  			{
  				name : 'ufonts_com_ms_pgothic',
  				slug : 'ufonts_com_ms_pgothic'
  			}
  		];
682a3b12d   TRUONG   fix illustration ...
438
  		
682a3b12d   TRUONG   fix illustration ...
439
  		// layer process
92271fd7c   DANG   add event
440
441
442
  		$scope.layerProcess = function(mode) {
  			// console.log('layerProcess');
  			var activeObject = canvas.getActiveObject();
682a3b12d   TRUONG   fix illustration ...
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
  			if (activeObject){
  				switch (mode) {
  					case 1:
  						activeObject.bringForward();
  						break;
  					case 2:
  						activeObject.sendBackwards();
  						break;
  					case 3:
  						activeObject.bringToFront();
  						break;
  					case 4:
  						activeObject.sendToBack();
  						break;
  				}
e0ee74c15   TRUONG   update fix layer ...
458
  				canvas.deactivateAll().renderAll();
682a3b12d   TRUONG   fix illustration ...
459
  			}
04cbb68af   DANG   design text basic
460
  		};
422e7837d   DANG   Change color t-shirt
461

92271fd7c   DANG   add event
462
463
464
  		$scope.focusInputText = function(text) {
  			currentObj = canvas.getActiveObject();
  			if(typeof currentObj == 'undefined' || currentObj == null) {
ba689b493   DANG   canvas font text
465
466
467
  				$scope.iText = new fabric.IText('', {
  					left: 150,
  					top: 200,
ee675eec1   DANG   Update font
468
  					fontFamily: typeof $scope.itemFont != 'undefined' ? $scope.listFontFamily[$scope.itemFont].slug : $scope.listFontFamily[0].slug,
ba689b493   DANG   canvas font text
469
  					fontWeight: 'normal',
92271fd7c   DANG   add event
470
  					textAlign:  'center',
ba689b493   DANG   canvas font text
471
  					fontSize: 28,
83f7186e9   DANG   fix bug reponsive
472
473
  					fill: 'black',
  					editable: false
ba689b493   DANG   canvas font text
474
  				});
92271fd7c   DANG   add event
475
476
477
478
479
  			} else {
  				if(currentObj.type != 'i-text') {
  					$scope.iText = new fabric.IText('', {
  						left: 150,
  						top: 200,
ee675eec1   DANG   Update font
480
  						fontFamily: typeof $scope.itemFont != 'undefined' ? $scope.listFontFamily[$scope.itemFont].slug : $scope.listFontFamily[0].slug,
92271fd7c   DANG   add event
481
482
483
  						fontWeight: 'normal',
  						textAlign:  'center',
  						fontSize: 28,
83f7186e9   DANG   fix bug reponsive
484
485
  						fill: 'black',
  						editable: false
92271fd7c   DANG   add event
486
487
488
489
490
  					});
  				} else{
  					$scope.iText = currentObj;
  				}
  			}
c8bfdfd96   DANG   event click object
491
  		};
422e7837d   DANG   Change color t-shirt
492

98acd3acd   DANG   Change text
493
494
  		//Design text
  		$scope.inputText = function(e) {
92271fd7c   DANG   add event
495
496
  			if(typeof $scope.iText != "undefined") {
  				var iText = $scope.iText;
ba689b493   DANG   canvas font text
497
  				iText.text = e;
ba689b493   DANG   canvas font text
498
499
500
501
  				canvas.add(iText);
  				canvas.renderAll();
  				canvas.setActiveObject(iText);
  			}
c8bfdfd96   DANG   event click object
502
  		};
2f4c31749   DANG   Fix text design a...
503
504
  		$scope.setFontFamily = function(font,index) {
  			$scope.itemFont = index;
ba689b493   DANG   canvas font text
505
  			if(canvas.getActiveObject()) {
92271fd7c   DANG   add event
506
507
508
  				var currentObj = canvas.getActiveObject();
  				if(currentObj.type == 'i-text') {
  					currentObj.set('fontFamily', font);
ba689b493   DANG   canvas font text
509
  					canvas.renderAll();
92271fd7c   DANG   add event
510
  					canvas.setActiveObject(currentObj);
ba689b493   DANG   canvas font text
511
512
513
  				}
  
  			}
04cbb68af   DANG   design text basic
514
515
  		};
  		//Set letter spacing text
04cbb68af   DANG   design text basic
516
517
  		$scope.setLetterSpacingText = function(e) {
  			if(canvas.getActiveObject()) {
92271fd7c   DANG   add event
518
519
  				var currentObj = canvas.getActiveObject();
  				if(currentObj.type == 'i-text') {
04cbb68af   DANG   design text basic
520
521
  					if(e == 'plus')
  						spacingNum = spacingNum + 30;
2f4c31749   DANG   Fix text design a...
522
  					else if (spacingNum >= -30){
04cbb68af   DANG   design text basic
523
524
  						spacingNum = spacingNum - 30;
  					}
83f7186e9   DANG   fix bug reponsive
525
526
  					if(e == 'default')
  						spacingNum = 0;
2f4c31749   DANG   Fix text design a...
527

2f4c31749   DANG   Fix text design a...
528
529
530
531
532
533
  					currentObj.set('charSpacing', spacingNum);
  					canvas.renderAll();
  					canvas.setActiveObject(currentObj);
  				}
  			}
  		};
e5669639a   TRUONG   merge #1759
534
535
536
  		
  		
  		/**** process insert image */
bd0414901   TRUONG   update store rece...
537
538
539
540
541
  		if (typeof($window.localStorage.recentImages) != 'undefined'){
  			$scope.recentImages = JSON.parse($window.localStorage.recentImages);
  		}else{
  			$scope.recentImages = {};
  		}
2f4c31749   DANG   Fix text design a...
542

bd0414901   TRUONG   update store rece...
543
544
545
546
547
548
  		var addToRecentImage = function(name, data){
  			if (typeof($window.localStorage.recentImages) != 'undefined'){
  				$scope.recentImages = JSON.parse($window.localStorage.recentImages);
  			}else{
  				$scope.recentImages = {};
  			}
2f4c31749   DANG   Fix text design a...
549

bd0414901   TRUONG   update store rece...
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
  			if (typeof($scope.recentImages[name]) == 'undefined'){
  				var ii=0;
  				var II = 0;
  				for(var item in $scope.recentImages){
  					if (II==0){
  						II = item;
  					}
  					ii++;
  				}
  				if (ii>16 && II!=0){
  					delete $scope.recentImages[II];
  				}
  				$scope.recentImages[name] = data;
  				$window.localStorage.recentImages = JSON.stringify($scope.recentImages);
  			}
  		}
  		$scope.chooseImage = function(e){//console.log(e);
0181c19ff   TRUONG   fix bugs and opti...
567
  			if (e.target.files[0] && e.target.files[0].size > 5*1024*1024){
60b61386b   TRUONG   fix text
568
  				alert('アップロードできませんでした');
0181c19ff   TRUONG   fix bugs and opti...
569
570
  				return;
  			}
e5669639a   TRUONG   merge #1759
571
  			var reader = new FileReader();
0181c19ff   TRUONG   fix bugs and opti...
572
  		    reader.onload = function (event) {
bd0414901   TRUONG   update store rece...
573
574
  		    	addToRecentImage ($('#imgLoader').val(), event.target.result);
  		        var imgObj = new Image();//console.log($('#imgLoader').val());
e5669639a   TRUONG   merge #1759
575
576
577
578
579
580
581
582
583
  		        imgObj.src = event.target.result;
  		        imgObj.onload = function () {
  		            // start fabricJS stuff
  		            
  		            var image = new fabric.Image(imgObj);
  		            image.set({
  		                left: 50,
  		                top: 50
  		            });
2f4c31749   DANG   Fix text design a...
584
  		            //image.scale(getRandomNum(0.1, 0.25)).setCoords();
e5669639a   TRUONG   merge #1759
585
586
587
588
589
590
  		            image.scaleToWidth(200);
  		            canvas.add(image);
  		        }
  		    }
      		reader.readAsDataURL(e.target.files[0]);
  		}
2f4c31749   DANG   Fix text design a...
591

bd0414901   TRUONG   update store rece...
592
593
594
595
596
  		$scope.insertRecentImage = function(data){
  	        var imgObj = new Image();
  	        imgObj.src = data;
  	        imgObj.onload = function () {
  	            // start fabricJS stuff
2f4c31749   DANG   Fix text design a...
597

bd0414901   TRUONG   update store rece...
598
599
600
601
602
603
604
605
606
  	            var image = new fabric.Image(imgObj);
  	            image.set({
  	                left: 50,
  	                top: 50
  	            });
  	            image.scaleToWidth(200);
  	            canvas.add(image);
  	        }
  		}
2f4c31749   DANG   Fix text design a...
607

92271fd7c   DANG   add event
608
609
610
611
612
613
614
615
616
617
618
  		//Traslation text
  		$scope.rotateText =  function(style) {
  			if(canvas.getActiveObject()) {
  				var currentObj = canvas.getActiveObject();
  				if(currentObj.type == 'i-text') {
  					currentObj.set('rotate', Math.PI / 4);
  					canvas.renderAll();
  					canvas.setActiveObject(currentObj);
  				}
  			}
  		};
80ff9bbd4   TRUONG   fix bugs and optimal
619
620
621
622
623
624
625
626
  		
  		
  		/* Process output */
  		$scope.outputDesign = function(){
  			$rootScope.outputImage = canvas.toDataURL('png');
  			// console.log();
  			$('#tshirt-design').modal('hide');
  		}
faf1542f8   TRUONG   fix lazy border w...
627
628
  		
  		$scope.showRecommend = function(){
53828b4e7   TRUONG   process save/rest...
629
630
  			$scope.recommendList = $favorite.getAll();
  			$scope.favoriteList = $favorite.getAll();
faf1542f8   TRUONG   fix lazy border w...
631
632
633
634
  			$('#tshirt-design-saved').modal({
  				backdrop: 'static',
  				keyboard: false
  			});
53828b4e7   TRUONG   process save/rest...
635
636
637
638
639
640
641
  			$timeout(function(){
  				$('.saved-item').tooltip({
  					animated: 'fade',
  					placement: 'bottom',
  					html: true
  				});
  			},1000);
faf1542f8   TRUONG   fix lazy border w...
642
643
644
645
646
647
648
  		}
  		
  		$scope.closeSavedModal = function(){
  			$('#tshirt-design-saved').modal('hide');
  		}
  		
  		$scope.openSavedTab = function(tab){
faf1542f8   TRUONG   fix lazy border w...
649
650
651
652
653
654
  			$('#tshirt-design-saved .subframe-design .nav-tabs li').removeClass('active');
  			$('#tab-saved-'+tab).addClass('active');
  			$('#tshirt-design-saved .subframe-design .tab-content .tab-pane').removeClass('active');
  			$('#content-saved-'+tab).addClass('active');
  			
  			$timeout(function(){
2681003ca   TRUONG   update #1808, #1809
655
  				$('.saved-item img').tooltip({
faf1542f8   TRUONG   fix lazy border w...
656
657
658
659
  					animated: 'fade',
  					placement: 'bottom',
  					html: true
  				});
2681003ca   TRUONG   update #1808, #1809
660
  			},500);
faf1542f8   TRUONG   fix lazy border w...
661
662
  		}
  		
53828b4e7   TRUONG   process save/rest...
663
  		$favorite.loadFromRemote();
faf1542f8   TRUONG   fix lazy border w...
664
  		$scope.saveFavorite = function(){
2681003ca   TRUONG   update #1808, #1809
665
666
667
  			if (!confirm('Do you want to put current design to your favorite?')){
  				return;
  			}
faf1542f8   TRUONG   fix lazy border w...
668
669
  			var dataDump = {
  				thumb: canvas.toDataURL('png'),
2681003ca   TRUONG   update #1808, #1809
670
  				data: JSON.stringify(canvas)
faf1542f8   TRUONG   fix lazy border w...
671
672
673
674
  			}
  			$favorite.addToFavorite({
  				data: dataDump
  			})
2681003ca   TRUONG   update #1808, #1809
675
  			// console.log(JSON.stringify(dataDump));
53828b4e7   TRUONG   process save/rest...
676
677
678
679
  			alert('saved');
  		}
  		
  		$scope.restoreSaved = function(item){
2681003ca   TRUONG   update #1808, #1809
680
681
682
  			if (!confirm('this may be clear all current design frame, are you sure ?')){
  				return;
  			}
53828b4e7   TRUONG   process save/rest...
683
684
  			$('#tshirt-design-saved').modal('hide');
  			canvas.loadFromJSON(item.data,canvas.renderAll.bind(canvas));
faf1542f8   TRUONG   fix lazy border w...
685
  		}
2681003ca   TRUONG   update #1808, #1809
686
687
688
689
690
691
692
693
694
695
  		
  		$scope.deleteFavorite = function(idx){
  			if (confirm('are you sure?')){
  				$favorite.removeFromFavorite({
  					idx: idx
  				});
  				$scope.recommendList = $favorite.getAll();
  				$scope.favoriteList = $favorite.getAll();
  			}
  		}
6f105dbd5   Truong LD   add source code i...
696
697
  	});
  });