vhobjects-user 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ export declare class AtwFrameProductRelate implements OnInit {
8
8
  private vhQueryAutoWeb;
9
9
  private route;
10
10
  private vhEventMediator;
11
- private functionService;
11
+ functionService: FunctionService;
12
12
  private element;
13
13
  pipeFrameService: PipeFrameService;
14
14
  private platformId;
@@ -25,13 +25,13 @@ export declare class AtwFrameProductRelate implements OnInit {
25
25
  product: any;
26
26
  isComponentExist: ElementRef<HTMLDivElement>;
27
27
  private setinterval;
28
- private pageCurrent;
28
+ pageCurrent: number;
29
29
  private link_page;
30
30
  private link_object;
31
31
  private link_category;
32
32
  private id_category;
33
- private totalPages;
34
- private listProducts;
33
+ totalPages: number;
34
+ listProducts: any;
35
35
  private maxZIndex;
36
36
  private selectingItemOnFrame;
37
37
  class: {
@@ -42,6 +42,11 @@ export declare class AtwFrameProductRelate implements OnInit {
42
42
  'frame-products__right-arrow': {};
43
43
  'frame-products__left-arrow--icon': {};
44
44
  'frame-products__right-arrow--icon': {};
45
+ 'frame-products__pagination': {};
46
+ 'frame-products__pagination-list-button': {};
47
+ 'frame-products__pagination-list-button--controll': {};
48
+ 'frame-products__pagination-list-button--page-number': {};
49
+ 'frame-products__pagination-list-button--active': {};
45
50
  };
46
51
  config: any;
47
52
  loadComplete: boolean;
@@ -73,6 +78,16 @@ export declare class AtwFrameProductRelate implements OnInit {
73
78
  private observer;
74
79
  private subscription;
75
80
  private isItemVisible;
81
+ /** ----------------- PAGINATION --------------------- */
82
+ pageShowChoose: any;
83
+ pageGoto: number;
84
+ /** ----------------- PAGINATION --------------------- */
85
+ private heightFrameDB;
86
+ heightFrameProducts: any;
87
+ private totalDocs;
88
+ prevHeight: any;
89
+ hanldleProcessResizeOffset: EventEmitter<any>;
90
+ loading: boolean;
76
91
  constructor(vhQueryAutoWeb: VhQueryAutoWeb, route: ActivatedRoute, vhEventMediator: VhEventMediator, functionService: FunctionService, element: ElementRef, // Dùng cho hàm setAnimationVisible trong functionService
77
92
  pipeFrameService: PipeFrameService, platformId: Object);
78
93
  ngOnInit(): void;
@@ -116,6 +131,46 @@ export declare class AtwFrameProductRelate implements OnInit {
116
131
  */
117
132
  onDrop(event: DragEvent): void;
118
133
  private onGetProduct;
134
+ /** ----------------- PAGINATION --------------------- */
135
+ /** Chuyển trang -----------------
136
+ *
137
+ * @param value
138
+ */
139
+ transferFn(value: number): void;
140
+ /** Chuyển về trang trước đó
141
+ *
142
+ */
143
+ private previewFn;
144
+ /** Chuyển đến trang kế tiếp
145
+ *
146
+ */
147
+ private nextFn;
148
+ /** Chuyển trang đến trang trước
149
+ *
150
+ */
151
+ gotoPreviousPage(): void;
152
+ /** Chuyển trang đến trang sau
153
+ *
154
+ */
155
+ gotoNextPage(): void;
156
+ private changePage;
157
+ /** ----------------- PAGINATION --------------------- */
158
+ private setHeight;
159
+ /**
160
+ * Kiểm tra sự thay đổi kích thước của object
161
+ */
162
+ private checkResizeOffset;
163
+ /** Hàm này trả về một chuỗi để chia layout cho grid
164
+ * @param value
165
+ *
166
+ * @example
167
+ * cols = 4
168
+ * gap = 12
169
+ * Kết quả: calc(25% - 9px)
170
+ * @return calc(${100/cols}% - ${(gap/cols)*(cols-1)}px)
171
+ *
172
+ */
173
+ private calcSpaceGrid;
119
174
  static ɵfac: i0.ɵɵFactoryDeclaration<AtwFrameProductRelate, never>;
120
- static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductRelate, "atw-frame-product-relate", never, { "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; "array_object_selected": "array_object_selected"; }, { "showToolBarObject": "showToolBarObject"; }, never, never>;
175
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductRelate, "atw-frame-product-relate", never, { "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; "array_object_selected": "array_object_selected"; }, { "showToolBarObject": "showToolBarObject"; "hanldleProcessResizeOffset": "hanldleProcessResizeOffset"; }, never, never>;
121
176
  }
@@ -22,6 +22,7 @@ export declare class AtwFrameProductsFavorited implements OnInit {
22
22
  isPressingShift: any;
23
23
  isClone: any;
24
24
  showToolBarObject: EventEmitter<any>;
25
+ hanldleProcessResizeOffset: EventEmitter<any>;
25
26
  private indexObject;
26
27
  translateX: any;
27
28
  private setinterval;
@@ -29,16 +30,20 @@ export declare class AtwFrameProductsFavorited implements OnInit {
29
30
  listProducts: any;
30
31
  private selectingItemOnFrame;
31
32
  products2D: any;
32
- class: {
33
- 'frame-products': {};
34
- 'frame-products__products': {};
35
- 'frame-products__products--item': {};
36
- 'frame-products__left-arrow': {};
37
- 'frame-products__right-arrow': {};
38
- 'frame-products__left-arrow--icon': {};
39
- 'frame-products__right-arrow--icon': {};
40
- };
33
+ /** ----------------- PAGINATION --------------------- */
34
+ pageCurrent: number;
35
+ totalPages: number;
36
+ pageShowChoose: any;
37
+ pageGoto: number;
38
+ /** ----------------- PAGINATION --------------------- */
39
+ private heightFrameDB;
40
+ heightFrameProducts: any;
41
+ private totalDocs;
42
+ prevHeight: any;
43
+ class: any;
41
44
  config: any;
45
+ private classUpdates;
46
+ private configUpdates;
42
47
  private iconLeft;
43
48
  private iconRight;
44
49
  loadComplete: boolean;
@@ -109,6 +114,46 @@ export declare class AtwFrameProductsFavorited implements OnInit {
109
114
  * @param event
110
115
  */
111
116
  onDrop(event: DragEvent): void;
117
+ /** Hàm này trả về một chuỗi để chia layout cho grid
118
+ * @param value
119
+ *
120
+ * @example
121
+ * cols = 4
122
+ * gap = 12
123
+ * Kết quả: calc(25% - 9px)
124
+ * @return calc(${100/cols}% - ${(gap/cols)*(cols-1)}px)
125
+ *
126
+ */
127
+ private calcSpaceGrid;
128
+ /** ----------------- PAGINATION --------------------- */
129
+ /** Chuyển trang -----------------
130
+ *
131
+ * @param value
132
+ */
133
+ transferFn(value: number): void;
134
+ /** Chuyển về trang trước đó
135
+ *
136
+ */
137
+ private previewFn;
138
+ /** Chuyển đến trang kế tiếp
139
+ *
140
+ */
141
+ private nextFn;
142
+ /** Chuyển trang đến trang trước
143
+ *
144
+ */
145
+ gotoPreviousPage(): void;
146
+ /** Chuyển trang đến trang sau
147
+ *
148
+ */
149
+ gotoNextPage(): void;
150
+ private changePage;
151
+ /** ----------------- PAGINATION --------------------- */
152
+ private setHeight;
153
+ /**
154
+ * Kiểm tra sự thay đổi kích thước của object
155
+ */
156
+ private checkResizeOffset;
112
157
  static ɵfac: i0.ɵɵFactoryDeclaration<AtwFrameProductsFavorited, never>;
113
- static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductsFavorited, "atw-frame-products-favorited", never, { "array_object_selected": "array_object_selected"; "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; }, { "showToolBarObject": "showToolBarObject"; }, never, never>;
158
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductsFavorited, "atw-frame-products-favorited", never, { "array_object_selected": "array_object_selected"; "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; }, { "showToolBarObject": "showToolBarObject"; "hanldleProcessResizeOffset": "hanldleProcessResizeOffset"; }, never, never>;
114
159
  }
@@ -8,7 +8,7 @@ export declare class AtwFrameProductsViewed implements OnInit {
8
8
  private vhQueryAutoWeb;
9
9
  pipeFrameService: PipeFrameService;
10
10
  private vhEventMediator;
11
- private functionService;
11
+ functionService: FunctionService;
12
12
  private element;
13
13
  private platformId;
14
14
  array_object_selected: any[];
@@ -22,24 +22,26 @@ export declare class AtwFrameProductsViewed implements OnInit {
22
22
  isPressingShift: any;
23
23
  isClone: any;
24
24
  showToolBarObject: EventEmitter<any>;
25
+ hanldleProcessResizeOffset: EventEmitter<any>;
25
26
  isComponentExist: ElementRef<HTMLDivElement>;
26
27
  private indexObject;
27
28
  translateX: any;
28
29
  private setinterval;
29
30
  private rows;
30
- private listProducts;
31
+ listProducts: any;
31
32
  private selectingItemOnFrame;
32
33
  products2D: any;
33
- class: {
34
- 'frame-products': {};
35
- 'frame-products__products': {};
36
- 'frame-products__products--item': {};
37
- 'frame-products__left-arrow': {};
38
- 'frame-products__right-arrow': {};
39
- 'frame-products__left-arrow--icon': {};
40
- 'frame-products__right-arrow--icon': {};
41
- 'frame-products-viewed__no-data': {};
42
- };
34
+ /** ----------------- PAGINATION --------------------- */
35
+ pageCurrent: number;
36
+ totalPages: number;
37
+ pageShowChoose: any;
38
+ pageGoto: number;
39
+ /** ----------------- PAGINATION --------------------- */
40
+ private heightFrameDB;
41
+ heightFrameProducts: any;
42
+ private totalDocs;
43
+ prevHeight: any;
44
+ class: any;
43
45
  config: any;
44
46
  private iconLeft;
45
47
  private iconRight;
@@ -108,6 +110,46 @@ export declare class AtwFrameProductsViewed implements OnInit {
108
110
  * @param event
109
111
  */
110
112
  onDrop(event: DragEvent): void;
113
+ /** ----------------- PAGINATION --------------------- */
114
+ /** Chuyển trang -----------------
115
+ *
116
+ * @param value
117
+ */
118
+ transferFn(value: number): void;
119
+ /** Chuyển về trang trước đó
120
+ *
121
+ */
122
+ private previewFn;
123
+ /** Chuyển đến trang kế tiếp
124
+ *
125
+ */
126
+ private nextFn;
127
+ /** Chuyển trang đến trang trước
128
+ *
129
+ */
130
+ gotoPreviousPage(): void;
131
+ /** Chuyển trang đến trang sau
132
+ *
133
+ */
134
+ gotoNextPage(): void;
135
+ private changePage;
136
+ /** ----------------- PAGINATION --------------------- */
137
+ private setHeight;
138
+ /**
139
+ * Kiểm tra sự thay đổi kích thước của object
140
+ */
141
+ private checkResizeOffset;
142
+ /** Hàm này trả về một chuỗi để chia layout cho grid
143
+ * @param value
144
+ *
145
+ * @example
146
+ * cols = 4
147
+ * gap = 12
148
+ * Kết quả: calc(25% - 9px)
149
+ * @return calc(${100/cols}% - ${(gap/cols)*(cols-1)}px)
150
+ *
151
+ */
152
+ private calcSpaceGrid;
111
153
  static ɵfac: i0.ɵɵFactoryDeclaration<AtwFrameProductsViewed, never>;
112
- static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductsViewed, "atw-frame-products-viewed", never, { "array_object_selected": "array_object_selected"; "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; }, { "showToolBarObject": "showToolBarObject"; }, never, never>;
154
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwFrameProductsViewed, "atw-frame-products-viewed", never, { "array_object_selected": "array_object_selected"; "resolution": "resolution"; "data": "data"; "id_subproject": "id_subproject"; "type": "type"; "objectChoosing": "objectChoosing"; "device": "device"; "blockChoosing": "blockChoosing"; "isPressingShift": "isPressingShift"; "isClone": "isClone"; }, { "showToolBarObject": "showToolBarObject"; "hanldleProcessResizeOffset": "hanldleProcessResizeOffset"; }, never, never>;
113
155
  }
@@ -3,6 +3,7 @@ import { VhAlgorithm, VhEventMediator, VhQueryAutoWeb } from 'vhautowebdb';
3
3
  import { Router } from '@angular/router';
4
4
  import { Subscription } from 'rxjs';
5
5
  import { FunctionService } from 'vhobjects-service/src/services';
6
+ import { DomSanitizer } from '@angular/platform-browser';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class AtwIcon implements OnInit {
8
9
  private vhQueryAutoWeb;
@@ -11,6 +12,7 @@ export declare class AtwIcon implements OnInit {
11
12
  private element;
12
13
  private vhEventMediator;
13
14
  private functionService;
15
+ sanitizer: DomSanitizer;
14
16
  private platformId;
15
17
  data: any;
16
18
  type: string;
@@ -26,7 +28,7 @@ export declare class AtwIcon implements OnInit {
26
28
  observer: IntersectionObserver;
27
29
  loading: boolean;
28
30
  configChangedSubscription: any;
29
- constructor(vhQueryAutoWeb: VhQueryAutoWeb, router: Router, vhAlgorithm: VhAlgorithm, element: ElementRef, vhEventMediator: VhEventMediator, functionService: FunctionService, platformId: Object);
31
+ constructor(vhQueryAutoWeb: VhQueryAutoWeb, router: Router, vhAlgorithm: VhAlgorithm, element: ElementRef, vhEventMediator: VhEventMediator, functionService: FunctionService, sanitizer: DomSanitizer, platformId: Object);
30
32
  ngOnInit(): void;
31
33
  ngAfterViewInit(): void;
32
34
  getDetailObject(): void;
@@ -0,0 +1,106 @@
1
+ import { ElementRef, EventEmitter, OnInit, SimpleChanges } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { Subscription } from 'rxjs';
5
+ import { VhEventMediator, VhImage, VhQueryAutoWeb } from 'vhautowebdb';
6
+ import { FunctionService } from 'vhobjects-service/src/services';
7
+ import * as i0 from "@angular/core";
8
+ export declare class AtwImageDetailRepeat implements OnInit {
9
+ private router;
10
+ private route;
11
+ private vhImage;
12
+ private matDialog;
13
+ functionService: FunctionService;
14
+ private vhQueryAutoWeb;
15
+ private element;
16
+ private vhEventMediator;
17
+ private platformId;
18
+ product: any;
19
+ resolution: any;
20
+ data: any;
21
+ type: any;
22
+ device: any;
23
+ id_subproject: any;
24
+ index: any;
25
+ onSomething: EventEmitter<any>;
26
+ addObjectDuplicate: EventEmitter<any>;
27
+ save: EventEmitter<any>;
28
+ deleteTools: EventEmitter<any>;
29
+ isComponentExist: ElementRef<HTMLDivElement>;
30
+ config: any;
31
+ cutWebMan: boolean;
32
+ animation: any;
33
+ staticdata: any;
34
+ class: any;
35
+ visible_config_tool: boolean;
36
+ visible_config_tool_image: boolean;
37
+ filter: string;
38
+ show_button_config: boolean;
39
+ show_button_router: boolean;
40
+ id_image: string;
41
+ cropper: any;
42
+ cropImageModal: boolean;
43
+ isOpenInputLink: boolean;
44
+ imageCroppedSize: any;
45
+ idImage: string;
46
+ zoomData: any;
47
+ carouselState: any;
48
+ isCarouselActive: boolean;
49
+ isCarouselOtherImageActive: boolean;
50
+ isHoverZoomActive: boolean;
51
+ gridClass: string;
52
+ gridObjSelected: any;
53
+ effectCarouselClass: any;
54
+ object_ID: string;
55
+ arrayImage: any;
56
+ counterIndex: number;
57
+ ImageIndex: number;
58
+ swipeCoord?: [number, number];
59
+ swipeTime?: number;
60
+ intervalId: any;
61
+ observer: IntersectionObserver;
62
+ subscription: Subscription;
63
+ dataItem: any;
64
+ constructor(router: Router, route: ActivatedRoute, vhImage: VhImage, matDialog: MatDialog, functionService: FunctionService, vhQueryAutoWeb: VhQueryAutoWeb, element: ElementRef, // Dùng cho hàm setAnimationVisible trong functionService
65
+ vhEventMediator: VhEventMediator, platformId: Object);
66
+ ngOnInit(): void;
67
+ ngOnChanges(change: SimpleChanges): void;
68
+ ngAfterViewInit(): void;
69
+ /**
70
+ *
71
+ * @description Hàm này dùng để chuyển tiếp tự động hiệu ứng.
72
+ */
73
+ initAutoPlay(id: any): void;
74
+ ngOnDestroy(): void;
75
+ resetInterval(id: any): void;
76
+ getSizeImage(): void;
77
+ createElementID(): void;
78
+ hanldeNext(id: any): void;
79
+ hanldePrev(id: any): void;
80
+ swipe(e: TouchEvent, when: string, id: any): void;
81
+ onImageNext(id: any): void;
82
+ onImagePrev(id: any): void;
83
+ gotoImageIndex(id: any, number: any): void;
84
+ onMouseDown(id: any, event: any): void;
85
+ onMouseUp(id: any, event: any): void;
86
+ onMouseEnter_Carousel(id: any, event: any): void;
87
+ onMouseMove_Carousel(id: any, event: any): void;
88
+ checkBoundary(id: any): void;
89
+ onMouseEnter_Zoom(imgID: any, resultID: any, event: any): void;
90
+ onMouseMove_Zoom(e: any): void;
91
+ onMouseOut_Zoom(event: any): void;
92
+ getCursorPos(e: any): {
93
+ x: number;
94
+ y: number;
95
+ };
96
+ /**
97
+ * Điều hướng tới link hoặc hyper_link khi có.
98
+ */
99
+ navigate(event: any): void;
100
+ /**
101
+ * Hàm chờ khối xuất hiện và cuộn đến
102
+ * */
103
+ private scrollToBlockWhenAvailable;
104
+ static ɵfac: i0.ɵɵFactoryDeclaration<AtwImageDetailRepeat, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwImageDetailRepeat, "atw-image-detail-repeat", never, { "product": "product"; "resolution": "resolution"; "data": "data"; "type": "type"; "device": "device"; "id_subproject": "id_subproject"; "index": "index"; }, { "onSomething": "onSomething"; "addObjectDuplicate": "addObjectDuplicate"; "save": "save"; "deleteTools": "deleteTools"; }, never, never>;
106
+ }
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter, OnInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnInit, TemplateRef } from '@angular/core';
2
2
  import { MatDialog } from '@angular/material/dialog';
3
3
  import { Router } from '@angular/router';
4
4
  import { VhEventMediator, VhQueryAutoWeb } from 'vhautowebdb';
@@ -29,6 +29,7 @@ export declare class AtwButtonOrder implements OnInit {
29
29
  id_subproject: any;
30
30
  hanldleProcessResizeOffset: EventEmitter<any>;
31
31
  isComponentExist: ElementRef<HTMLDivElement>;
32
+ simpleDialog: TemplateRef<any>;
32
33
  prevHeight: any;
33
34
  clientSize: any;
34
35
  block_popup: any;
@@ -32,7 +32,9 @@ export declare class AtwTableOfContent {
32
32
  constructor(functionService: FunctionService, vhQueryAutoWeb: VhQueryAutoWeb, platformId: Object);
33
33
  ngOnInit(): void;
34
34
  ngAfterViewInit(): void;
35
+ ngOnChanges(changes: any): void;
35
36
  ngOnDestroy(): void;
37
+ private initObserver;
36
38
  /**
37
39
  * Lấy ra component field của frame để gán
38
40
  * vào selector để truy xuất cho phù hợp
@@ -4,6 +4,7 @@ import { VhEventMediator, VhImage, VhQueryAutoWeb } from 'vhautowebdb';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
5
  import { FunctionService } from 'vhobjects-service/src/services';
6
6
  import { Subscription } from 'rxjs';
7
+ import { DomSanitizer } from '@angular/platform-browser';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class AtwImageDetail implements OnInit {
9
10
  private router;
@@ -15,6 +16,7 @@ export declare class AtwImageDetail implements OnInit {
15
16
  private element;
16
17
  private vhEventMediator;
17
18
  private platformId;
19
+ private sanitizer;
18
20
  product: any;
19
21
  resolution: any;
20
22
  data: any;
@@ -59,8 +61,10 @@ export declare class AtwImageDetail implements OnInit {
59
61
  intervalId: any;
60
62
  observer: IntersectionObserver;
61
63
  subscription: Subscription;
64
+ loadingVideo: boolean;
65
+ srcIframe: any;
62
66
  constructor(router: Router, route: ActivatedRoute, vhImage: VhImage, matDialog: MatDialog, functionService: FunctionService, vhQueryAutoWeb: VhQueryAutoWeb, element: ElementRef, // Dùng cho hàm setAnimationVisible trong functionService
63
- vhEventMediator: VhEventMediator, platformId: Object);
67
+ vhEventMediator: VhEventMediator, platformId: Object, sanitizer: DomSanitizer);
64
68
  ngOnInit(): void;
65
69
  ngOnChanges(change: SimpleChanges): void;
66
70
  ngAfterViewInit(): void;
@@ -99,6 +103,17 @@ export declare class AtwImageDetail implements OnInit {
99
103
  * hàm này để set local những sp đã xem khi click xem chi tiết sp
100
104
  */
101
105
  private setProductViewed;
106
+ /** Định nghĩa pattern lấy ID từ link embed (hỗ trợ cả nocookie) */
107
+ private youtubeEmbedPattern;
108
+ isYoutubeLink(src: string): boolean;
109
+ /**
110
+ * Lấy link ảnh
111
+ * - Nếu là ảnh thật thì trực tiếp trả về chính nó không cần xử lý thêm
112
+ * - Nếu là link youtube thì xử lý lấy id và dùng với link thumbnail
113
+ * @param src link ảnh/link youtube
114
+ */
115
+ getUrlImage(src: string): string;
116
+ private initVideoIframe;
102
117
  static ɵfac: i0.ɵɵFactoryDeclaration<AtwImageDetail, never>;
103
118
  static ɵcmp: i0.ɵɵComponentDeclaration<AtwImageDetail, "atw-image-detail", never, { "product": "product"; "resolution": "resolution"; "data": "data"; "type": "type"; "device": "device"; "id_subproject": "id_subproject"; }, { "onSomething": "onSomething"; "addObjectDuplicate": "addObjectDuplicate"; "save": "save"; "deleteTools": "deleteTools"; }, never, never>;
104
119
  }
@@ -0,0 +1,26 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { FunctionService } from 'vhobjects-service/src/services';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AtwVideoProduct implements OnInit {
6
+ private sanitizer;
7
+ functionService: FunctionService;
8
+ device: any;
9
+ data: any;
10
+ type: any;
11
+ index?: any;
12
+ product: any;
13
+ class: any;
14
+ private config;
15
+ private cutWebMan;
16
+ loading: boolean;
17
+ staticdata: any;
18
+ SrcIframe: any;
19
+ private src;
20
+ constructor(sanitizer: DomSanitizer, functionService: FunctionService);
21
+ ngOnInit(): void;
22
+ private getDetailObject;
23
+ private formatEmbedUrl;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<AtwVideoProduct, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwVideoProduct, "atw-video-product", never, { "device": "device"; "data": "data"; "type": "type"; "index": "index"; "product": "product"; }, {}, never, never>;
26
+ }
@@ -0,0 +1,102 @@
1
+ import { ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { Subscription } from 'rxjs';
5
+ import { FunctionService } from 'vhobjects-service/src/services';
6
+ import { VhImage, VhQueryAutoWeb } from 'vhautowebdb';
7
+ import { LanguageService } from 'vhobjects-service/src/services';
8
+ import * as i0 from "@angular/core";
9
+ interface Review {
10
+ id: string;
11
+ username: string;
12
+ rating: number;
13
+ variant: string;
14
+ content: string;
15
+ images: string[];
16
+ sellerResponse?: string;
17
+ likes: number;
18
+ }
19
+ export declare class AtwReview implements OnInit {
20
+ functionService: FunctionService;
21
+ private router;
22
+ private sanitizer;
23
+ private vhQueryAutoWeb;
24
+ private route;
25
+ private vhImage;
26
+ private languageService;
27
+ data: any;
28
+ device: string;
29
+ addObjectDuplicate: EventEmitter<any>;
30
+ hanldleProcessResizeOffset: EventEmitter<any>;
31
+ type: any;
32
+ componentChoosing: any;
33
+ resolution: any;
34
+ id_subproject: string;
35
+ blockChoosing: any;
36
+ product: any;
37
+ private cutWebMan;
38
+ isComponentExist: ElementRef<HTMLDivElement>;
39
+ pageCurrent: number;
40
+ pageGoto: number;
41
+ totalPages: number;
42
+ pageShowChoose: number[];
43
+ loading: boolean;
44
+ prevHeight: any;
45
+ averageRating: number;
46
+ totalReviews: number;
47
+ newReview: any;
48
+ selectedFiles: File[];
49
+ previewUrls: any;
50
+ ratingBreakdown: {
51
+ stars: number;
52
+ count: number;
53
+ }[];
54
+ totalWithMedia: number;
55
+ totalWithComments: number;
56
+ selectedFilter: string;
57
+ reviews: Review[];
58
+ class: any;
59
+ config: any;
60
+ staticdata: any;
61
+ private animation;
62
+ queryParamsSubscription: Subscription;
63
+ routerSubscription: Subscription;
64
+ constructor(functionService: FunctionService, router: Router, sanitizer: DomSanitizer, vhQueryAutoWeb: VhQueryAutoWeb, route: ActivatedRoute, vhImage: VhImage, languageService: LanguageService);
65
+ ngOnInit(): void;
66
+ ngAfterViewInit(): void;
67
+ getObject(): void;
68
+ getReviews(): Promise<void>;
69
+ getAllRatingStats(): void;
70
+ calculateRatingBreakdownFromAll(allReviews: any[]): void;
71
+ calculateAverageRating(): void;
72
+ getStarArray(rating: number): boolean[];
73
+ filterReviews(filter: string): void;
74
+ likeReview(reviewId: string): void;
75
+ getFilteredReviews(): Review[];
76
+ isVideoUrl(url: string): boolean;
77
+ canShowReviewForm(): boolean;
78
+ canSubmit(): boolean;
79
+ redirectToLogin(): void;
80
+ removeImage(i: number): void;
81
+ resetForm(): void;
82
+ /** ----------------- PAGINATION --------------------- */
83
+ /** Chuyển trang -----------------
84
+ *
85
+ * @param value
86
+ */
87
+ transferFn(value: number): void;
88
+ /** Chuyển trang đến trang trước
89
+ *
90
+ */
91
+ gotoPreviousPage(): void;
92
+ /** Chuyển trang đến trang sau
93
+ *
94
+ */
95
+ gotoNextPage(): void;
96
+ onFileChange(evt: Event): void;
97
+ submitReview(): Promise<void>;
98
+ private uploadSelectedImages;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<AtwReview, never>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<AtwReview, "app-review", never, { "data": "data"; "device": "device"; "type": "type"; "componentChoosing": "componentChoosing"; "resolution": "resolution"; "id_subproject": "id_subproject"; "blockChoosing": "blockChoosing"; "product": "product"; }, { "addObjectDuplicate": "addObjectDuplicate"; "hanldleProcessResizeOffset": "hanldleProcessResizeOffset"; }, never, never>;
101
+ }
102
+ export {};