Blame view

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

cc65fa102   DANG   Custom control
63
64
65
66
  		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
67

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

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

2f4c31749   DANG   Fix text design a...
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
  		$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...
145
146
147
148
149
150
151
152
153
  					},1000);
  					break;
  				}
  				case 'text': {
  					break;
  				}
  			}
  		};
  		$scope.showDesignTab('default');
cc65fa102   DANG   Custom control
154

aff3eb043   TRUONG   update illustrati...
155
156
157
  		
  		function onIllustrationAdded(options){
  			var object = options.target;
aff3eb043   TRUONG   update illustrati...
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
  		
  		    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
177
  		function onIllustrationModifield(options){
d7aae10e2   TRUONG   update fix delete...
178
  			$('.object-border').hide();
c3bee6bb3   TRUONG   fix trash icon ef...
179
180
  			//
  		    var pointer = canvas.getPointer(options.e);
53828b4e7   TRUONG   process save/rest...
181
  			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...
182
  				canvas.getActiveObject().remove();
3ab3e50f8   TRUONG   update, fix trash...
183
  				$('.design-content .trash-design img').attr({'src':'images/trash.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
184
185
186
187
  				return;
  			}
  			
  			//
aff3eb043   TRUONG   update illustrati...
188
  			var objOffset = canvas.getActiveObject().getBoundingRect();
c3bee6bb3   TRUONG   fix trash icon ef...
189
  			var cH = canvas.height, cW = canvas.width, H0 = 20, W0 = 20;
1d6ddfa62   TRUONG   merge
190
  			//console.log(objOffset,canvas.height,canvas.width);
aff3eb043   TRUONG   update illustrati...
191
192
193
194
195
196
197
198
199
200
  			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...
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
  		    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...
216
217
218
  		    refreshObj = true;
  		}
  		
6f105dbd5   Truong LD   add source code i...
219
  		function onIllustrationChange(options) {
e872619e5   Dang YoungWorld   delete comment
220

6f105dbd5   Truong LD   add source code i...
221
  		}
c3bee6bb3   TRUONG   fix trash icon ef...
222
223
  		
  		function onIllustrationMoving(options) {
d7aae10e2   TRUONG   update fix delete...
224
  			var object = options.target;
c3bee6bb3   TRUONG   fix trash icon ef...
225
  			var pointer = canvas.getPointer(options.e);
53828b4e7   TRUONG   process save/rest...
226
227
  			// 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...
228
  				$('.design-content .trash-design img').attr({'src':'images/trash-hover.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
229
  			}else{
3ab3e50f8   TRUONG   update, fix trash...
230
  				$('.design-content .trash-design img').attr({'src':'images/trash.png'});
c3bee6bb3   TRUONG   fix trash icon ef...
231
  			}
d7aae10e2   TRUONG   update fix delete...
232
  			
f2c8c5649   TRUONG   fix & update
233
  			// console.log(object.oCoords,object.originalState);
d7aae10e2   TRUONG   update fix delete...
234
235
  			object.setCoords();
  			var Coords = object.oCoords;
c674a3608   TRUONG   fix delete effect
236
237
238
239
240
241
  			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...
242
243
244
245
246
247
  			$('.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...
248
  		}
6f105dbd5   Truong LD   add source code i...
249

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

aff3eb043   TRUONG   update illustrati...
255
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
  		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...
295
  		}
80ff9bbd4   TRUONG   fix bugs and optimal
296
297
  		
  		$scope.canvasClearAll = function(){
60b61386b   TRUONG   fix text
298
  			if (confirm('配置されたすべての文字や画像を消去します')){
80ff9bbd4   TRUONG   fix bugs and optimal
299
300
301
  				canvas.clear();
  			}
  		}
92271fd7c   DANG   add event
302
303
304
  
  		function onObjectSelected(options) {
  			var currentObj = options.target;
2f4c31749   DANG   Fix text design a...
305

92271fd7c   DANG   add event
306
  			$scope.typeObject = currentObj.type;
c8bfdfd96   DANG   event click object
307
308
  			switch ($scope.typeObject) {
  				case 'i-text' :
c8bfdfd96   DANG   event click object
309
  					$rootScope.isShowLeftPanel = 'text';
92271fd7c   DANG   add event
310
311
312
313
314
  					var text = currentObj.text;
  					if(text != '') {
  						$scope.designText = text;
  						$scope.designTextValue = text;
  					}
c8bfdfd96   DANG   event click object
315
316
317
318
319
  					break;
  
  				case 'path-group' :
  					$rootScope.isShowLeftPanel = 'illustration';
  					break;
e5669639a   TRUONG   merge #1759
320
321
322
323
  					
  				case 'image':
  					$rootScope.isShowLeftPanel = 'image';
  					break;
c8bfdfd96   DANG   event click object
324
325
326
327
328
329
  
  				default :
  					$rootScope.isShowLeftPanel = 'default';
  					break;
  			}
  			$rootScope.safeApply();
6f105dbd5   Truong LD   add source code i...
330
331
332
333
334
  		}
  
  		// Illustration process
  		$scope.changeIllustrationCategory = function(currentIllustration){
  			$scope.currentIllustrationCate = $illustration.getList(currentIllustration);
422e7837d   DANG   Change color t-shirt
335
  		};
6f105dbd5   Truong LD   add source code i...
336
337
338
339
  
  		$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...
340
  				canvas.add(shape.scale(0.6));
53828b4e7   TRUONG   process save/rest...
341
  				shape.set({ left: 150, top: 100 }).setCoords();
6f105dbd5   Truong LD   add source code i...
342
343
344
  				canvas.renderAll();
  				canvas.setActiveObject(shape);
  			});
422e7837d   DANG   Change color t-shirt
345
  		};
6f105dbd5   Truong LD   add source code i...
346
347
  
  		// color pattern
6f105dbd5   Truong LD   add source code i...
348
  		$scope.listColorPatterns = [
aff3eb043   TRUONG   update illustrati...
349
350
351
352
  			'#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
353
  		];
80ff9bbd4   TRUONG   fix bugs and optimal
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
  		
  		$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
369
370
  		};
  		
04cbb68af   DANG   design text basic
371
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
  		//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 ...
437
  		
682a3b12d   TRUONG   fix illustration ...
438
  		// layer process
92271fd7c   DANG   add event
439
440
441
  		$scope.layerProcess = function(mode) {
  			// console.log('layerProcess');
  			var activeObject = canvas.getActiveObject();
682a3b12d   TRUONG   fix illustration ...
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
  			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 ...
457
  				canvas.deactivateAll().renderAll();
682a3b12d   TRUONG   fix illustration ...
458
  			}
04cbb68af   DANG   design text basic
459
  		};
422e7837d   DANG   Change color t-shirt
460

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

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

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

bd0414901   TRUONG   update store rece...
542
543
544
545
546
547
  		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...
548

bd0414901   TRUONG   update store rece...
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
  			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...
566
  			if (e.target.files[0] && e.target.files[0].size > 5*1024*1024){
60b61386b   TRUONG   fix text
567
  				alert('アップロードできませんでした');
0181c19ff   TRUONG   fix bugs and opti...
568
569
  				return;
  			}
e5669639a   TRUONG   merge #1759
570
  			var reader = new FileReader();
0181c19ff   TRUONG   fix bugs and opti...
571
  		    reader.onload = function (event) {
bd0414901   TRUONG   update store rece...
572
573
  		    	addToRecentImage ($('#imgLoader').val(), event.target.result);
  		        var imgObj = new Image();//console.log($('#imgLoader').val());
e5669639a   TRUONG   merge #1759
574
575
576
577
578
579
580
581
582
  		        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...
583
  		            //image.scale(getRandomNum(0.1, 0.25)).setCoords();
e5669639a   TRUONG   merge #1759
584
585
586
587
588
589
  		            image.scaleToWidth(200);
  		            canvas.add(image);
  		        }
  		    }
      		reader.readAsDataURL(e.target.files[0]);
  		}
2f4c31749   DANG   Fix text design a...
590

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

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

92271fd7c   DANG   add event
607
608
609
610
611
612
613
614
615
616
617
  		//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
618
619
620
621
622
623
624
625
  		
  		
  		/* Process output */
  		$scope.outputDesign = function(){
  			$rootScope.outputImage = canvas.toDataURL('png');
  			// console.log();
  			$('#tshirt-design').modal('hide');
  		}
faf1542f8   TRUONG   fix lazy border w...
626
627
  		
  		$scope.showRecommend = function(){
53828b4e7   TRUONG   process save/rest...
628
629
  			$scope.recommendList = $favorite.getAll();
  			$scope.favoriteList = $favorite.getAll();
faf1542f8   TRUONG   fix lazy border w...
630
631
632
633
  			$('#tshirt-design-saved').modal({
  				backdrop: 'static',
  				keyboard: false
  			});
53828b4e7   TRUONG   process save/rest...
634
635
636
637
638
639
640
  			$timeout(function(){
  				$('.saved-item').tooltip({
  					animated: 'fade',
  					placement: 'bottom',
  					html: true
  				});
  			},1000);
faf1542f8   TRUONG   fix lazy border w...
641
642
643
644
645
646
647
  		}
  		
  		$scope.closeSavedModal = function(){
  			$('#tshirt-design-saved').modal('hide');
  		}
  		
  		$scope.openSavedTab = function(tab){
faf1542f8   TRUONG   fix lazy border w...
648
649
650
651
652
653
654
655
656
657
658
659
660
661
  			$('#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(){
  				$('.saved-item').tooltip({
  					animated: 'fade',
  					placement: 'bottom',
  					html: true
  				});
  			},1000);
  		}
  		
53828b4e7   TRUONG   process save/rest...
662
  		$favorite.loadFromRemote();
faf1542f8   TRUONG   fix lazy border w...
663
664
665
  		$scope.saveFavorite = function(){
  			var dataDump = {
  				thumb: canvas.toDataURL('png'),
53828b4e7   TRUONG   process save/rest...
666
  				data: canvas.toJSON()
faf1542f8   TRUONG   fix lazy border w...
667
668
669
670
671
  			}
  			$favorite.addToFavorite({
  				data: dataDump
  			})
  			console.log(dataDump);
53828b4e7   TRUONG   process save/rest...
672
673
674
675
676
677
  			alert('saved');
  		}
  		
  		$scope.restoreSaved = function(item){
  			$('#tshirt-design-saved').modal('hide');
  			canvas.loadFromJSON(item.data,canvas.renderAll.bind(canvas));
faf1542f8   TRUONG   fix lazy border w...
678
  		}
6f105dbd5   Truong LD   add source code i...
679
680
  	});
  });