@colijnit/product 260.1.2 → 261.20.0
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.
- package/fesm2022/colijnit-product.mjs +4534 -0
- package/fesm2022/colijnit-product.mjs.map +1 -0
- package/index.d.ts +948 -0
- package/package.json +32 -33
- package/app/bundle/service/local-storage.service.d.ts +0 -14
- package/app/components/core/header/header.component.d.ts +0 -7
- package/app/components/core/header/header.module.d.ts +0 -2
- package/app/components/image-carousel/image-carousel.component.d.ts +0 -48
- package/app/components/image-carousel/image-carousel.module.d.ts +0 -2
- package/app/components/product-additional-description/product-additional-description.component.d.ts +0 -14
- package/app/components/product-additional-description/product-additional-description.module.d.ts +0 -2
- package/app/components/product-additional-info/product-additional-info.component.d.ts +0 -21
- package/app/components/product-additional-info/product-additional-info.module.d.ts +0 -2
- package/app/components/product-addtocart/product-addtocart.component.d.ts +0 -42
- package/app/components/product-addtocart/product-addtocart.module.d.ts +0 -2
- package/app/components/product-delivery/product-delivery.component.d.ts +0 -18
- package/app/components/product-delivery/product-delivery.module.d.ts +0 -2
- package/app/components/product-description/product-description.component.d.ts +0 -7
- package/app/components/product-description/product-description.module.d.ts +0 -2
- package/app/components/product-dialog/product-dialog.component.d.ts +0 -27
- package/app/components/product-dialog/product-dialog.module.d.ts +0 -2
- package/app/components/product-documents/product-document.module.d.ts +0 -2
- package/app/components/product-documents/product-documents.component.d.ts +0 -10
- package/app/components/product-external-source/product-external-source.component.d.ts +0 -51
- package/app/components/product-external-source/product-external-source.module.d.ts +0 -2
- package/app/components/product-hd/product-hd.component.d.ts +0 -25
- package/app/components/product-hd/product-hd.module.d.ts +0 -2
- package/app/components/product-info-tabs/product-info-tabs.component.d.ts +0 -18
- package/app/components/product-info-tabs/product-info-tabs.module.d.ts +0 -2
- package/app/components/product-page/product-page.component.d.ts +0 -66
- package/app/components/product-page/product-page.module.d.ts +0 -2
- package/app/components/product-price/product-price.component.d.ts +0 -19
- package/app/components/product-price/product-price.module.d.ts +0 -2
- package/app/components/product-properties/product-properties.component.d.ts +0 -16
- package/app/components/product-properties/product-properties.module.d.ts +0 -2
- package/app/components/product-related/product-related.component.d.ts +0 -33
- package/app/components/product-related/product-related.module.d.ts +0 -2
- package/app/components/product-selector-type/product-selector-type.component.d.ts +0 -22
- package/app/components/product-selector-type/product-selector-type.module.d.ts +0 -2
- package/app/components/product-stock/product-stock.component.d.ts +0 -20
- package/app/components/product-stock/product-stock.module.d.ts +0 -2
- package/app/components/product-symbols/product-symbols.component.d.ts +0 -10
- package/app/components/product-symbols/product-symbols.module.d.ts +0 -2
- package/app/components/render-carousel/render-carousel.component.d.ts +0 -40
- package/app/components/render-carousel/render-carousel.module.d.ts +0 -2
- package/app/enum/icon.enum.d.ts +0 -22
- package/app/enum/language-code.enum.d.ts +0 -6
- package/app/enum/selector-type.enum.d.ts +0 -5
- package/app/ione-product.component.d.ts +0 -47
- package/app/ione-product.module.d.ts +0 -2
- package/app/model/article-quantity.model.d.ts +0 -5
- package/app/model/icon.d.ts +0 -4
- package/app/model/productSettings.d.ts +0 -18
- package/app/model/render-modes.d.ts +0 -5
- package/app/model/render-parameters.d.ts +0 -7
- package/app/model/settings-options.d.ts +0 -10
- package/app/model/stock-and-delivery.d.ts +0 -5
- package/app/pipe/localize.pipe.d.ts +0 -7
- package/app/pipe/pipe.module.d.ts +0 -2
- package/app/product-version.d.ts +0 -6
- package/app/service/dictionary.service.d.ts +0 -24
- package/app/service/icon-cache.service.d.ts +0 -17
- package/app/service/product-connector-adapter.service.d.ts +0 -43
- package/app/service/product-connector.service.d.ts +0 -43
- package/app/service/product-event.service.d.ts +0 -27
- package/app/service/product-script-loader.service.d.ts +0 -9
- package/app/service/product-settings.service.d.ts +0 -16
- package/app/utils/bit-utils.d.ts +0 -7
- package/app/utils/json-utils.service.d.ts +0 -3
- package/assets/dictionary/text.properties.d.ts +0 -3
- package/bundles/colijnit-product.umd.js +0 -4317
- package/bundles/colijnit-product.umd.js.map +0 -1
- package/colijnit-product.d.ts +0 -49
- package/colijnit-product.metadata.json +0 -1
- package/esm2015/app/bundle/service/local-storage.service.js +0 -37
- package/esm2015/app/components/core/header/header.component.js +0 -26
- package/esm2015/app/components/core/header/header.module.js +0 -19
- package/esm2015/app/components/image-carousel/image-carousel.component.js +0 -288
- package/esm2015/app/components/image-carousel/image-carousel.module.js +0 -23
- package/esm2015/app/components/product-additional-description/product-additional-description.component.js +0 -58
- package/esm2015/app/components/product-additional-description/product-additional-description.module.js +0 -21
- package/esm2015/app/components/product-additional-info/product-additional-info.component.js +0 -108
- package/esm2015/app/components/product-additional-info/product-additional-info.module.js +0 -21
- package/esm2015/app/components/product-addtocart/product-addtocart.component.js +0 -185
- package/esm2015/app/components/product-addtocart/product-addtocart.module.js +0 -26
- package/esm2015/app/components/product-delivery/product-delivery.component.js +0 -49
- package/esm2015/app/components/product-delivery/product-delivery.module.js +0 -23
- package/esm2015/app/components/product-description/product-description.component.js +0 -23
- package/esm2015/app/components/product-description/product-description.module.js +0 -19
- package/esm2015/app/components/product-dialog/product-dialog.component.js +0 -86
- package/esm2015/app/components/product-dialog/product-dialog.module.js +0 -25
- package/esm2015/app/components/product-documents/product-document.module.js +0 -25
- package/esm2015/app/components/product-documents/product-documents.component.js +0 -31
- package/esm2015/app/components/product-external-source/product-external-source.component.js +0 -192
- package/esm2015/app/components/product-external-source/product-external-source.module.js +0 -23
- package/esm2015/app/components/product-hd/product-hd.component.js +0 -124
- package/esm2015/app/components/product-hd/product-hd.module.js +0 -23
- package/esm2015/app/components/product-info-tabs/product-info-tabs.component.js +0 -82
- package/esm2015/app/components/product-info-tabs/product-info-tabs.module.js +0 -29
- package/esm2015/app/components/product-page/product-page.component.js +0 -254
- package/esm2015/app/components/product-page/product-page.module.js +0 -50
- package/esm2015/app/components/product-price/product-price.component.js +0 -75
- package/esm2015/app/components/product-price/product-price.module.js +0 -23
- package/esm2015/app/components/product-properties/product-properties.component.js +0 -61
- package/esm2015/app/components/product-properties/product-properties.module.js +0 -21
- package/esm2015/app/components/product-related/product-related.component.js +0 -137
- package/esm2015/app/components/product-related/product-related.module.js +0 -25
- package/esm2015/app/components/product-selector-type/product-selector-type.component.js +0 -63
- package/esm2015/app/components/product-selector-type/product-selector-type.module.js +0 -26
- package/esm2015/app/components/product-stock/product-stock.component.js +0 -69
- package/esm2015/app/components/product-stock/product-stock.module.js +0 -23
- package/esm2015/app/components/product-symbols/product-symbols.component.js +0 -49
- package/esm2015/app/components/product-symbols/product-symbols.module.js +0 -26
- package/esm2015/app/components/render-carousel/render-carousel.component.js +0 -127
- package/esm2015/app/components/render-carousel/render-carousel.module.js +0 -25
- package/esm2015/app/enum/icon.enum.js +0 -24
- package/esm2015/app/enum/language-code.enum.js +0 -8
- package/esm2015/app/enum/selector-type.enum.js +0 -7
- package/esm2015/app/ione-product.component.js +0 -165
- package/esm2015/app/ione-product.module.js +0 -36
- package/esm2015/app/model/article-quantity.model.js +0 -3
- package/esm2015/app/model/icon.js +0 -23
- package/esm2015/app/model/productSettings.js +0 -14
- package/esm2015/app/model/render-modes.js +0 -7
- package/esm2015/app/model/render-parameters.js +0 -10
- package/esm2015/app/model/settings-options.js +0 -13
- package/esm2015/app/model/stock-and-delivery.js +0 -8
- package/esm2015/app/pipe/localize.pipe.js +0 -27
- package/esm2015/app/pipe/pipe.module.js +0 -18
- package/esm2015/app/product-version.js +0 -10
- package/esm2015/app/service/dictionary.service.js +0 -94
- package/esm2015/app/service/icon-cache.service.js +0 -40
- package/esm2015/app/service/product-connector-adapter.service.js +0 -199
- package/esm2015/app/service/product-connector.service.js +0 -115
- package/esm2015/app/service/product-event.service.js +0 -27
- package/esm2015/app/service/product-script-loader.service.js +0 -68
- package/esm2015/app/service/product-settings.service.js +0 -86
- package/esm2015/app/utils/bit-utils.js +0 -18
- package/esm2015/app/utils/json-utils.service.js +0 -29
- package/esm2015/assets/dictionary/text.properties.js +0 -102
- package/esm2015/colijnit-product.js +0 -50
- package/esm2015/public_api.js +0 -10
- package/fesm2015/colijnit-product.js +0 -3529
- package/fesm2015/colijnit-product.js.map +0 -1
- package/public_api.d.ts +0 -9
|
@@ -1,3529 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, Renderer2, ChangeDetectorRef, ViewChild, ElementRef, Pipe, NgModule, ChangeDetectionStrategy, HostListener, HostBinding, SecurityContext, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
|
-
import { __awaiter } from 'tslib';
|
|
4
|
-
import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
|
|
5
|
-
import { Options } from '@colijnit/ioneconnector/build/model/options';
|
|
6
|
-
import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
|
|
7
|
-
import { SuperArticle } from '@colijnit/articleapi/build/model/super-article';
|
|
8
|
-
import { Articles } from '@colijnit/articleapi/build/articles';
|
|
9
|
-
import { DeliveryPrognosis } from '@colijnit/articleapi/build/model/delivery-prognosis';
|
|
10
|
-
import { DocumentContent } from '@colijnit/articleapi/build/model/document-content';
|
|
11
|
-
import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
|
|
12
|
-
import { Transaction } from '@colijnit/transactionapi/build/transaction';
|
|
13
|
-
import { MainApi } from '@colijnit/mainapi';
|
|
14
|
-
import { TransactionInfoResponse } from '@colijnit/transactionapi/build/model/transaction-info-response.bo';
|
|
15
|
-
import { ArticleListObjectExtended } from '@colijnit/articleapi/build/model/article-list-object-extended.bo';
|
|
16
|
-
import { ImageContent } from '@colijnit/mainapi/build/model/image-content.bo';
|
|
17
|
-
import * as i1 from '@angular/common/http';
|
|
18
|
-
import { HttpClient } from '@angular/common/http';
|
|
19
|
-
import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
|
|
20
|
-
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
21
|
-
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
22
|
-
import * as i1$1 from '@angular/platform-browser';
|
|
23
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
24
|
-
import { IconModule, LoaderModule, ScrollContainerModule, PriceDisplayPipeModule, NumberPickerModule, ButtonModule, FilesUploadModule, TileModule } from '@colijnit/corecomponents';
|
|
25
|
-
import { CoDocument } from '@colijnit/mainapi/build/model/co-document.bo';
|
|
26
|
-
import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
|
|
27
|
-
import { LoaderModule as LoaderModule$1, ArticleTileModule, IconCollapseHandleModule, ButtonModule as ButtonModule$1 } from '@colijnit/corecomponents_v12';
|
|
28
|
-
|
|
29
|
-
// this file is dynamically created, do not change this
|
|
30
|
-
class Version {
|
|
31
|
-
constructor() {
|
|
32
|
-
this.name = "@colijnit/product";
|
|
33
|
-
this.description = "Product detail page project for iOne";
|
|
34
|
-
this.symVer = "260.1.2";
|
|
35
|
-
this.publishDate = "5-1-2026 18:13:02";
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
class SettingsOptions {
|
|
40
|
-
constructor() {
|
|
41
|
-
this.showStockStatus = false;
|
|
42
|
-
this.showZoomButton = false;
|
|
43
|
-
this.showTagFilter = false;
|
|
44
|
-
this.showAsConfigured = false;
|
|
45
|
-
this.inlineAnswers = false;
|
|
46
|
-
this.showArButton = false;
|
|
47
|
-
this.arEnabled = false;
|
|
48
|
-
this.vrEnabled = false;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
var RenderModes;
|
|
53
|
-
(function (RenderModes) {
|
|
54
|
-
RenderModes["RenderRoom"] = "render_room";
|
|
55
|
-
RenderModes["RenderShop"] = "render_shop";
|
|
56
|
-
RenderModes["RenderIone"] = "render_ione";
|
|
57
|
-
})(RenderModes || (RenderModes = {}));
|
|
58
|
-
|
|
59
|
-
class RenderParameters$1 {
|
|
60
|
-
constructor() {
|
|
61
|
-
this.host = "";
|
|
62
|
-
this.port = 0;
|
|
63
|
-
this.secure = false;
|
|
64
|
-
this.renderMode = RenderModes.RenderShop;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
class ProductSettings extends Options {
|
|
69
|
-
constructor() {
|
|
70
|
-
super(...arguments);
|
|
71
|
-
this.session = undefined;
|
|
72
|
-
this.createWebOrder = true;
|
|
73
|
-
this.currencySymbol = '€';
|
|
74
|
-
this.options = new SettingsOptions();
|
|
75
|
-
this.renderParameters = new RenderParameters$1();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
class ProductEventService {
|
|
80
|
-
constructor() {
|
|
81
|
-
this.onAddToCart = new Subject();
|
|
82
|
-
this.onAlternativeClick = new Subject();
|
|
83
|
-
this.onAddToQuote = new Subject();
|
|
84
|
-
this.onForceRenderImage = new Subject();
|
|
85
|
-
this.onArticleReceived = new Subject();
|
|
86
|
-
this.onSelectionsReceived = new Subject();
|
|
87
|
-
this.onImageReceived = new Subject();
|
|
88
|
-
this.onRenderStarted = new Subject();
|
|
89
|
-
this.onRenderImageReceived = new Subject();
|
|
90
|
-
this.onDraftRenderImageReceived = new Subject();
|
|
91
|
-
this.onArticleInfoReceived = new Subject();
|
|
92
|
-
this.onAnswersAvailable = new Subject();
|
|
93
|
-
this.onReadyToRender = new Subject();
|
|
94
|
-
this.onUpdateProductInfoTab = new Subject();
|
|
95
|
-
this.errorMessage = new Subject();
|
|
96
|
-
this.onGetRenderForRenderCarousel = new Subject();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
ProductEventService.decorators = [
|
|
100
|
-
{ type: Directive },
|
|
101
|
-
{ type: Injectable }
|
|
102
|
-
];
|
|
103
|
-
|
|
104
|
-
// Sole responsibility is simply to wrap around a colijn.Connector to create a stable inner interface to the library in a 1:1 method way.
|
|
105
|
-
// Only to be used by the IOneControllerService.
|
|
106
|
-
class ProductConnectorAdapterService {
|
|
107
|
-
constructor(_eventService) {
|
|
108
|
-
this._eventService = _eventService;
|
|
109
|
-
this.showLoader = new Subject();
|
|
110
|
-
this._boFactory = new BusinessObjectFactory();
|
|
111
|
-
this._subs = [];
|
|
112
|
-
}
|
|
113
|
-
ngOnDestroy() {
|
|
114
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
115
|
-
}
|
|
116
|
-
initConnector(options) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
this.articleConnector = new Articles(options);
|
|
119
|
-
yield this.articleConnector.connect();
|
|
120
|
-
this.transactionConnector = new Transaction(options);
|
|
121
|
-
this.mainConnector = new MainApi(options);
|
|
122
|
-
this._subs.push(
|
|
123
|
-
// @ts-ignore
|
|
124
|
-
this.articleConnector.showLoader.subscribe(value => this.showLoader.next(value)));
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
setInstance(instanceId) {
|
|
128
|
-
// this.articleConnector.setInstanceToConfigure(instanceId, false);
|
|
129
|
-
}
|
|
130
|
-
getProductBundleSettings(url, upId) {
|
|
131
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const tempSettings = new ProductSettings();
|
|
133
|
-
tempSettings.url = url;
|
|
134
|
-
tempSettings.schema = upId.toString();
|
|
135
|
-
const tempMainConnector = new MainApi(tempSettings);
|
|
136
|
-
const response = yield tempMainConnector.getPublicParams(upId);
|
|
137
|
-
if (response) {
|
|
138
|
-
return response.productSettings;
|
|
139
|
-
}
|
|
140
|
-
return "";
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
convertArticleFullObjectToArticleExtended(article) {
|
|
144
|
-
if (article) {
|
|
145
|
-
return this._boFactory.makeWithRawBackendData(ArticleListObjectExtended, article);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
getDeliveryPrognosis(goodId, branchNr) {
|
|
149
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
const deliveryPrognosis = yield this.getSelectorDeliveryDate();
|
|
151
|
-
if (!deliveryPrognosis || !deliveryPrognosis.returnValue) {
|
|
152
|
-
return this.getDeliveryDate2(goodId);
|
|
153
|
-
}
|
|
154
|
-
return deliveryPrognosis;
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
getSelectorDeliveryDate() {
|
|
158
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
const response = yield this.articleConnector.getSelectorDeliveryDate();
|
|
160
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
161
|
-
return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
getArtStockStatus(goodId) {
|
|
169
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
-
const response = yield this.articleConnector.getArtStockStatus(goodId);
|
|
171
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
172
|
-
return response.resultObject;
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
getDeliveryDate2(goodId) {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
-
const response = yield this.articleConnector.getDeliveryDate2(goodId);
|
|
182
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
183
|
-
return this._boFactory.makeWithRawBackendData(DeliveryPrognosis, response.resultObject);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
return null;
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
getJsonConfiguredArticles(configuratorStatistics) {
|
|
191
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
const response = yield this.articleConnector.getJsonConfiguredArticles(configuratorStatistics);
|
|
193
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
194
|
-
return response.resultObject;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
return '';
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
getJsonArticleFlatTree(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
|
|
202
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
-
return this.articleConnector.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId, configuratorStatistics).catch((messages) => {
|
|
204
|
-
this._eventService.errorMessage.next(messages);
|
|
205
|
-
return null;
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
getGeneratedArtDirectly(goodId, showLoader) {
|
|
210
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
211
|
-
return this.articleConnector.getGeneratedArtDirectly(goodId, showLoader).catch((messages) => {
|
|
212
|
-
this._eventService.errorMessage.next(messages);
|
|
213
|
-
return null;
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
getGoodIdFromArticleNr(sku) {
|
|
218
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
const response = yield this.articleConnector.getGoodIdFromArticleNr(sku);
|
|
220
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
221
|
-
return response.resultObject;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
return null;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
getArticleFullObject(goodId, showLoader = true) {
|
|
229
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
-
const response = yield this.articleConnector.getArticleFullObject(goodId, showLoader);
|
|
231
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
232
|
-
return this._boFactory.makeWithRawBackendData(ArticleFullObject, response.resultObject);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
getSuperArticle(id, branch) {
|
|
240
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
-
const response = yield this.articleConnector.getSuperArticleQuickSel(id, branch);
|
|
242
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
243
|
-
return this._boFactory.makeWithRawBackendData(SuperArticle, response.resultObject);
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
return null;
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
getDocumentContent(docId, thumbnail = true) {
|
|
251
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
252
|
-
const response = yield this.articleConnector.getDocumentContent(docId, thumbnail);
|
|
253
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
254
|
-
return this._boFactory.makeWithRawBackendData(DocumentContent, response.resultObject);
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
return null;
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
addWebSessionTransactionLine(transactionUuid, sku, quantity) {
|
|
262
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
263
|
-
const response = yield this.transactionConnector.addWebSessionTransactionLine(transactionUuid, sku, quantity);
|
|
264
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
265
|
-
const infoResponse = this._boFactory.makeWithRawBackendData(TransactionInfoResponse, response.resultObject);
|
|
266
|
-
return infoResponse.transactionInfo.uuid;
|
|
267
|
-
}
|
|
268
|
-
return "";
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
getImageForCoDocument(document, thumb) {
|
|
272
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
273
|
-
const response = yield this.mainConnector.getImageForCoDocument(document, thumb);
|
|
274
|
-
if (response && response.validationResult && response.validationResult.success) {
|
|
275
|
-
return this._boFactory.makeWithRawBackendData(ImageContent, response.resultObject);
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
ProductConnectorAdapterService.decorators = [
|
|
281
|
-
{ type: Injectable }
|
|
282
|
-
];
|
|
283
|
-
ProductConnectorAdapterService.ctorParameters = () => [
|
|
284
|
-
{ type: ProductEventService }
|
|
285
|
-
];
|
|
286
|
-
|
|
287
|
-
class JsonUtilsService {
|
|
288
|
-
readJsonFile(filePath) {
|
|
289
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
290
|
-
try {
|
|
291
|
-
const response = yield fetch(filePath);
|
|
292
|
-
if (!response.ok) {
|
|
293
|
-
return null;
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
return response.json();
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch (e) {
|
|
300
|
-
console.error('Error getting file:', e.message);
|
|
301
|
-
return '';
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
JsonUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
|
|
307
|
-
JsonUtilsService.decorators = [
|
|
308
|
-
{ type: Injectable, args: [{
|
|
309
|
-
providedIn: 'root'
|
|
310
|
-
},] }
|
|
311
|
-
];
|
|
312
|
-
|
|
313
|
-
var LanguageCode;
|
|
314
|
-
(function (LanguageCode) {
|
|
315
|
-
LanguageCode["Dutch"] = "nl-NL";
|
|
316
|
-
LanguageCode["English"] = "en-GB";
|
|
317
|
-
LanguageCode["German"] = "de-DE";
|
|
318
|
-
LanguageCode["French"] = "fr-FR";
|
|
319
|
-
})(LanguageCode || (LanguageCode = {}));
|
|
320
|
-
|
|
321
|
-
class Dictionary {
|
|
322
|
-
constructor() {
|
|
323
|
-
this.strings = {
|
|
324
|
-
"en": {
|
|
325
|
-
"ADDITIONAL_DATA": "Additional information",
|
|
326
|
-
"ALTERNATIVE_PRODUCTS": "Alternative products",
|
|
327
|
-
"ARTICLE_NUMBER": "Productnumber",
|
|
328
|
-
"AS_CONFIGURED": "As configured",
|
|
329
|
-
"CATEGORY": "Category",
|
|
330
|
-
"CATEGORY_TYPE": "Category type",
|
|
331
|
-
"CONFIGURE": "Configure",
|
|
332
|
-
"DELIVERY_TIME_PERIOD": "Delivery time",
|
|
333
|
-
"DESCRIPTION": "Description",
|
|
334
|
-
"DOCUMENTS": "Documents",
|
|
335
|
-
"DOWNLOADS": "Downloads",
|
|
336
|
-
"FEATURES": "Features",
|
|
337
|
-
"HEIGHT": "Height",
|
|
338
|
-
"MATERIAL": "Material",
|
|
339
|
-
"PRODUCT_IN_STOCK": "In stock",
|
|
340
|
-
"PRODUCT_LIMITED_STOCK": "Limited stock",
|
|
341
|
-
"PRODUCT_NOT_IN_STOCK": "Not in stock",
|
|
342
|
-
"PROPERTIES": "Characteristics",
|
|
343
|
-
"QUOTATION": "Quotation",
|
|
344
|
-
"READ_MORE": "Read more",
|
|
345
|
-
"RELATED_PRODUCTS": "Related products",
|
|
346
|
-
"SHOPPING_CART_IN": "In Shopping Cart",
|
|
347
|
-
"SHOW_IN": "Show in",
|
|
348
|
-
"STOCK": "Stock",
|
|
349
|
-
"SYMBOLS": "Symbols",
|
|
350
|
-
"TITLE": "Title",
|
|
351
|
-
"TURNOVERGROUP": "Turnover group",
|
|
352
|
-
"VARIANTS": "Variations",
|
|
353
|
-
"WIDTH": "Width",
|
|
354
|
-
"SUGGESTION": "Suggestion",
|
|
355
|
-
},
|
|
356
|
-
"nl": {
|
|
357
|
-
"ADDITIONAL_DATA": "Extra informatie",
|
|
358
|
-
"ALTERNATIVE_PRODUCTS": "Alternatieve producten",
|
|
359
|
-
"ARTICLE_NUMBER": "Artikel nummer",
|
|
360
|
-
"AS_CONFIGURED": "Zoals samengesteld",
|
|
361
|
-
"CATEGORY": "Categorie",
|
|
362
|
-
"CATEGORY_TYPE": "Categorie type",
|
|
363
|
-
"CONFIGURE": "Configureren",
|
|
364
|
-
"DELIVERY_TIME_PERIOD": "Levertijd",
|
|
365
|
-
"DESCRIPTION": "Omschrijving",
|
|
366
|
-
"DOCUMENTS": "Documenten",
|
|
367
|
-
"DOWNLOADS": "Downloads",
|
|
368
|
-
"FEATURES": "Kenmerken",
|
|
369
|
-
"HEIGHT": "Hoogte",
|
|
370
|
-
"MATERIAL": "Materiaal",
|
|
371
|
-
"PRODUCT_IN_STOCK": "Op voorraad",
|
|
372
|
-
"PRODUCT_LIMITED_STOCK": "Beperkt op voorraad",
|
|
373
|
-
"PRODUCT_NOT_IN_STOCK": "Niet op voorraad",
|
|
374
|
-
"PROPERTIES": "Eigenschappen",
|
|
375
|
-
"QUOTATION": "Quotatie",
|
|
376
|
-
"READ_MORE": "Lees meer",
|
|
377
|
-
"RELATED_PRODUCTS": "Gerelateerde producten",
|
|
378
|
-
"SHOPPING_CART_IN": "In winkelwagen",
|
|
379
|
-
"SHOW_IN": "Laat zien",
|
|
380
|
-
"STOCK": "Voorraad",
|
|
381
|
-
"SYMBOLS": "Symbolen",
|
|
382
|
-
"TITLE": "Titel",
|
|
383
|
-
"TURNOVERGROUP": "Omzetgroep",
|
|
384
|
-
"VARIANTS": "Varianten",
|
|
385
|
-
"WIDTH": "Breedte",
|
|
386
|
-
"SUGGESTION": "Suggesties bij",
|
|
387
|
-
},
|
|
388
|
-
"de": {
|
|
389
|
-
"ADDITIONAL_DATA": "Extra informatie",
|
|
390
|
-
"ALTERNATIVE_PRODUCTS": "Alternative Produkte",
|
|
391
|
-
"ARTICLE_NUMBER": "Artikelnummer",
|
|
392
|
-
"CATEGORY": "Kategorie",
|
|
393
|
-
"CATEGORY_TYPE": "Kategorietype",
|
|
394
|
-
"CONFIGURE": "Konfigurieren",
|
|
395
|
-
"DELIVERY_TIME_PERIOD": "Lieferzeit",
|
|
396
|
-
"DESCRIPTION": "Beschreibung",
|
|
397
|
-
"DOCUMENTS": "Dateien",
|
|
398
|
-
"DOWNLOADS": "Downloads",
|
|
399
|
-
"FEATURES": "Eigenschaften",
|
|
400
|
-
"HEIGHT": "Höhe",
|
|
401
|
-
"MATERIAL": "Material",
|
|
402
|
-
"PRODUCT_IN_STOCK": "Auf lager",
|
|
403
|
-
"PRODUCT_LIMITED_STOCK": "Begrentzt auf lager",
|
|
404
|
-
"PRODUCT_NOT_IN_STOCK": "Nicht auf lager",
|
|
405
|
-
"PROPERTIES": "Eigenschaften",
|
|
406
|
-
"QUOTATION": "Angebot",
|
|
407
|
-
"READ_MORE": "Lesen Sie mehr",
|
|
408
|
-
"RELATED_PRODUCTS": "Verwandte Produkte",
|
|
409
|
-
"SHOPPING_CART_IN": "Im Einkaufswagen",
|
|
410
|
-
"SHOW_IN": "Zeigen",
|
|
411
|
-
"STOCK": "Vorrat",
|
|
412
|
-
"SYMBOLS": "Symbole",
|
|
413
|
-
"TITLE": "Titulatur",
|
|
414
|
-
"TURNOVERGROUP": "Umsatzgruppe",
|
|
415
|
-
"VARIANTS": "Varianten",
|
|
416
|
-
"WIDTH": "Breite",
|
|
417
|
-
"SUGGESTION": "Suggesties bij",
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
// The localization service, providing peers with text translation functionality.
|
|
424
|
-
class DictionaryService {
|
|
425
|
-
constructor(_http, _jsonUtils) {
|
|
426
|
-
this._http = _http;
|
|
427
|
-
this._jsonUtils = _jsonUtils;
|
|
428
|
-
this.dictionaryUrl = 'js/browser/res/dictionary/';
|
|
429
|
-
// private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();
|
|
430
|
-
this._dictionaries = new Map();
|
|
431
|
-
// Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.
|
|
432
|
-
this._placeholder = '|~';
|
|
433
|
-
}
|
|
434
|
-
get language() {
|
|
435
|
-
return this._language;
|
|
436
|
-
}
|
|
437
|
-
set rootUrl(value) {
|
|
438
|
-
this._rootUrl = value;
|
|
439
|
-
this._dictBasePath = this._rootUrl + '/' + this.dictionaryUrl;
|
|
440
|
-
}
|
|
441
|
-
// Loads the dictionary for given language in memory.
|
|
442
|
-
setDictionary(language) {
|
|
443
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
444
|
-
this._language = language || LanguageCode.Dutch;
|
|
445
|
-
if (!this._dictionaries.has(this._language)) {
|
|
446
|
-
const dictionary = new Dictionary();
|
|
447
|
-
if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {
|
|
448
|
-
this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
// if (!this._dictionaryPromise.has(language)) {
|
|
452
|
-
// this._dictionaryPromise.set(language,
|
|
453
|
-
// this._jsonUtils.readJsonFile(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')
|
|
454
|
-
// .then((data: { [key: string]: string }) => {
|
|
455
|
-
// this._dictionaries.set(language, data);
|
|
456
|
-
// this.dictionaryLoaded.next();
|
|
457
|
-
// return data;
|
|
458
|
-
// })
|
|
459
|
-
// // this._http.get(this._dictBasePath + 'text_' + language.substr(0, 2).toLowerCase() + '.properties.json')
|
|
460
|
-
// // .toPromise().then((data: { [key: string]: string }) => {
|
|
461
|
-
// // this._dictionaries.set(language, data);
|
|
462
|
-
// // return data;
|
|
463
|
-
// // })
|
|
464
|
-
// );
|
|
465
|
-
// } else {
|
|
466
|
-
// this.dictionaryLoaded.next();
|
|
467
|
-
// }
|
|
468
|
-
// await this._dictionaryPromise.get(language);
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* Returns the localized text for the given dictionary key.
|
|
473
|
-
* @param {string} key
|
|
474
|
-
* @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val
|
|
475
|
-
* @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value
|
|
476
|
-
* @returns {string} The translated text for given dictionary key
|
|
477
|
-
*/
|
|
478
|
-
get(key, upperCaseFirst = true, ...replacementTexts) {
|
|
479
|
-
if (!StringUtils.IsStringWithLength(key)) {
|
|
480
|
-
return key || '';
|
|
481
|
-
}
|
|
482
|
-
let text = this._dictionaries.get(this.language)[key];
|
|
483
|
-
text = StringUtils.IsStringWithLength(text) ? text : key;
|
|
484
|
-
if (upperCaseFirst) {
|
|
485
|
-
text = text.charAt(0).toUpperCase() + text.slice(1);
|
|
486
|
-
}
|
|
487
|
-
else {
|
|
488
|
-
text = text.charAt(0).toLowerCase() + text.slice(1);
|
|
489
|
-
}
|
|
490
|
-
if (replacementTexts.length > 0) {
|
|
491
|
-
text = StringUtils.ReplaceOccurrencesIn(text, this._placeholder, ...replacementTexts);
|
|
492
|
-
}
|
|
493
|
-
return text;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
DictionaryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
|
|
497
|
-
DictionaryService.decorators = [
|
|
498
|
-
{ type: Injectable, args: [{
|
|
499
|
-
providedIn: 'root'
|
|
500
|
-
},] }
|
|
501
|
-
];
|
|
502
|
-
DictionaryService.ctorParameters = () => [
|
|
503
|
-
{ type: HttpClient },
|
|
504
|
-
{ type: JsonUtilsService }
|
|
505
|
-
];
|
|
506
|
-
|
|
507
|
-
class ProductSettingsService {
|
|
508
|
-
constructor(_jsonUtilsService, _dictionaryService) {
|
|
509
|
-
this._jsonUtilsService = _jsonUtilsService;
|
|
510
|
-
this._dictionaryService = _dictionaryService;
|
|
511
|
-
this.settingsLoaded = new BehaviorSubject(false);
|
|
512
|
-
}
|
|
513
|
-
set settings(value) {
|
|
514
|
-
this._settings = value;
|
|
515
|
-
}
|
|
516
|
-
get settings() {
|
|
517
|
-
return this._settings;
|
|
518
|
-
}
|
|
519
|
-
initializeSettings(finish = true) {
|
|
520
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
521
|
-
// see if there's a json file for application settings
|
|
522
|
-
if (typeof settings === 'undefined') {
|
|
523
|
-
const jsonSettings = yield this._jsonUtilsService.readJsonFile('product-settings.json');
|
|
524
|
-
if (jsonSettings) {
|
|
525
|
-
this.settings = Object.assign(new ProductSettings(), jsonSettings);
|
|
526
|
-
this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
|
|
527
|
-
if (finish) {
|
|
528
|
-
this.settingsFinished();
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
else {
|
|
533
|
-
this.settings = Object.assign(new ProductSettings(), settings);
|
|
534
|
-
this.settings.options = Object.assign(new SettingsOptions(), this.settings.options);
|
|
535
|
-
if (finish) {
|
|
536
|
-
this.settingsFinished();
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
createSettingsFromObject(obj) {
|
|
542
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
543
|
-
if (!this.settings) {
|
|
544
|
-
this.settings = new ProductSettings();
|
|
545
|
-
}
|
|
546
|
-
const ownOptions = Object.assign({}, this.settings.options);
|
|
547
|
-
const ownRenderParameters = Object.assign({}, this.settings.renderParameters);
|
|
548
|
-
this.settings = Object.assign({}, this.settings, obj);
|
|
549
|
-
if (obj.renderParameters) {
|
|
550
|
-
this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);
|
|
551
|
-
}
|
|
552
|
-
if (obj.options) {
|
|
553
|
-
this.settings.options = Object.assign({}, ownOptions, obj.options);
|
|
554
|
-
}
|
|
555
|
-
if (obj.hasOwnProperty('assetPath')) {
|
|
556
|
-
this.settings.assetPath = obj['assetPath'];
|
|
557
|
-
if (this.settings.assetPath[this.settings.assetPath.length - 1] !== '/') {
|
|
558
|
-
this.settings.assetPath += '/';
|
|
559
|
-
}
|
|
560
|
-
this.settings.threeDAssetPath = this.settings.assetPath;
|
|
561
|
-
}
|
|
562
|
-
if (obj.hasOwnProperty('threeDAssetPath')) {
|
|
563
|
-
this.settings.threeDAssetPath = obj['threeDAssetPath'];
|
|
564
|
-
if (this.settings.threeDAssetPath[this.settings.threeDAssetPath.length - 1] !== '/') {
|
|
565
|
-
this.settings.threeDAssetPath += '/';
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
this.settingsFinished();
|
|
569
|
-
});
|
|
570
|
-
}
|
|
571
|
-
settingsFinished() {
|
|
572
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
573
|
-
yield this._dictionaryService.setDictionary(this.settings.languageCode);
|
|
574
|
-
this.settingsLoaded.next(true);
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
ProductSettingsService.decorators = [
|
|
579
|
-
{ type: Injectable }
|
|
580
|
-
];
|
|
581
|
-
ProductSettingsService.ctorParameters = () => [
|
|
582
|
-
{ type: JsonUtilsService },
|
|
583
|
-
{ type: DictionaryService }
|
|
584
|
-
];
|
|
585
|
-
|
|
586
|
-
// Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
|
|
587
|
-
class ProductConnectorService {
|
|
588
|
-
constructor(_adapterService, _settingsService) {
|
|
589
|
-
this._adapterService = _adapterService;
|
|
590
|
-
this._settingsService = _settingsService;
|
|
591
|
-
this.controllerInitialized = new BehaviorSubject(false);
|
|
592
|
-
this.articleLoaded = new BehaviorSubject(false);
|
|
593
|
-
this._initializing = false;
|
|
594
|
-
this._initialized = false;
|
|
595
|
-
this.connectorOptions = new Options();
|
|
596
|
-
this.subs = [];
|
|
597
|
-
}
|
|
598
|
-
get shouldShowLoader() {
|
|
599
|
-
return this._shouldShowLoader;
|
|
600
|
-
}
|
|
601
|
-
ngOnDestroy() {
|
|
602
|
-
this.subs.forEach(sub => sub.unsubscribe());
|
|
603
|
-
}
|
|
604
|
-
initConnection() {
|
|
605
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
606
|
-
if (this._initialized || this._initializing) {
|
|
607
|
-
return;
|
|
608
|
-
}
|
|
609
|
-
this._initializing = true;
|
|
610
|
-
try {
|
|
611
|
-
const settings = this._settingsService.settings;
|
|
612
|
-
if (!settings) {
|
|
613
|
-
throw Error('Settings are not defined!');
|
|
614
|
-
}
|
|
615
|
-
this.connectorOptions = Object.assign(new Options(), settings);
|
|
616
|
-
yield this._adapterService.initConnector(this.connectorOptions);
|
|
617
|
-
this.controllerInitialized.next(true);
|
|
618
|
-
this._initialized = true;
|
|
619
|
-
this._initializing = false;
|
|
620
|
-
}
|
|
621
|
-
catch (e) {
|
|
622
|
-
this._initializing = false;
|
|
623
|
-
}
|
|
624
|
-
});
|
|
625
|
-
}
|
|
626
|
-
getProductBundleSettings(url, upId) {
|
|
627
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
628
|
-
return this._adapterService.getProductBundleSettings(url, upId);
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
setInstance(instanceId) {
|
|
632
|
-
this._instanceId = instanceId;
|
|
633
|
-
this._adapterService.setInstance(instanceId);
|
|
634
|
-
}
|
|
635
|
-
convertArticleFullObjectToArticleExtended(article) {
|
|
636
|
-
return this._adapterService.convertArticleFullObjectToArticleExtended(article);
|
|
637
|
-
}
|
|
638
|
-
getFullArticle(sku) {
|
|
639
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
640
|
-
const goodId = yield this._adapterService.getGoodIdFromArticleNr(sku);
|
|
641
|
-
if (goodId) {
|
|
642
|
-
return this._adapterService.getArticleFullObject(goodId);
|
|
643
|
-
}
|
|
644
|
-
return null;
|
|
645
|
-
});
|
|
646
|
-
}
|
|
647
|
-
getDocumentContent(docId, thumbnail = true) {
|
|
648
|
-
return this._adapterService.getDocumentContent(docId, thumbnail);
|
|
649
|
-
}
|
|
650
|
-
getDeliveryPrognosis(goodId) {
|
|
651
|
-
return this._adapterService.getDeliveryPrognosis(goodId);
|
|
652
|
-
}
|
|
653
|
-
getSelectorDeliveryDate() {
|
|
654
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
655
|
-
return this._adapterService.getSelectorDeliveryDate();
|
|
656
|
-
});
|
|
657
|
-
}
|
|
658
|
-
getArtStockStatus(goodId) {
|
|
659
|
-
return this._adapterService.getArtStockStatus(goodId);
|
|
660
|
-
}
|
|
661
|
-
getDeliveryDate2(goodId) {
|
|
662
|
-
return this._adapterService.getDeliveryDate2(goodId);
|
|
663
|
-
}
|
|
664
|
-
getSuperArticle(id) {
|
|
665
|
-
return this._adapterService.getSuperArticle(id);
|
|
666
|
-
}
|
|
667
|
-
getJsonArticleFlatTree(goodId, goodType, quantity, externalSource = false, showLoader = true, configuratorStatistics) {
|
|
668
|
-
return this._adapterService.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, this._instanceId, configuratorStatistics);
|
|
669
|
-
}
|
|
670
|
-
getGeneratedArtDirectly(goodId, showLoader = true) {
|
|
671
|
-
return this._adapterService.getGeneratedArtDirectly(goodId, showLoader);
|
|
672
|
-
}
|
|
673
|
-
addWebSessionTransactionLine(transactionUuid, sku, quantity) {
|
|
674
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
675
|
-
return yield this._adapterService.addWebSessionTransactionLine(transactionUuid, sku, quantity);
|
|
676
|
-
});
|
|
677
|
-
}
|
|
678
|
-
getImageForCoDocument(document, thumb = false) {
|
|
679
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
680
|
-
return this._adapterService.getImageForCoDocument(document, thumb);
|
|
681
|
-
});
|
|
682
|
-
}
|
|
683
|
-
onShowLoaderChange(showLoader) {
|
|
684
|
-
this._shouldShowLoader = showLoader;
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
ProductConnectorService.decorators = [
|
|
688
|
-
{ type: Injectable }
|
|
689
|
-
];
|
|
690
|
-
ProductConnectorService.ctorParameters = () => [
|
|
691
|
-
{ type: ProductConnectorAdapterService },
|
|
692
|
-
{ type: ProductSettingsService }
|
|
693
|
-
];
|
|
694
|
-
|
|
695
|
-
class RootStorageObject {
|
|
696
|
-
}
|
|
697
|
-
class LocalStorageService {
|
|
698
|
-
constructor() {
|
|
699
|
-
this.storage = localStorage;
|
|
700
|
-
this._appRoot = "web-order";
|
|
701
|
-
this._storageObj = new RootStorageObject();
|
|
702
|
-
this._initLocalStorageObj();
|
|
703
|
-
}
|
|
704
|
-
save() {
|
|
705
|
-
this.storage.setItem(this._appRoot, JSON.stringify(this._storageObj));
|
|
706
|
-
}
|
|
707
|
-
clear() {
|
|
708
|
-
this.storage.clear();
|
|
709
|
-
}
|
|
710
|
-
set id(id) {
|
|
711
|
-
this._storageObj.id = id;
|
|
712
|
-
this.save();
|
|
713
|
-
}
|
|
714
|
-
get id() {
|
|
715
|
-
return this._storageObj ? this._storageObj.id : "";
|
|
716
|
-
}
|
|
717
|
-
_initLocalStorageObj() {
|
|
718
|
-
this._storageObj = JSON.parse(this.storage.getItem(this._appRoot)) || this._storageObj;
|
|
719
|
-
this.save();
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
LocalStorageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalStorageService_Factory() { return new LocalStorageService(); }, token: LocalStorageService, providedIn: "root" });
|
|
723
|
-
LocalStorageService.decorators = [
|
|
724
|
-
{ type: Injectable, args: [{
|
|
725
|
-
providedIn: 'root'
|
|
726
|
-
},] }
|
|
727
|
-
];
|
|
728
|
-
LocalStorageService.ctorParameters = () => [];
|
|
729
|
-
|
|
730
|
-
class IoneProductComponent {
|
|
731
|
-
constructor(_appEventService, _settingsService, _productConnectorService, _localStorageService) {
|
|
732
|
-
// this.sku = 'CF-HILL';
|
|
733
|
-
// this.sku = 'CF-ALMADA';
|
|
734
|
-
// this.sku = 'CF-39904ANT';
|
|
735
|
-
// this.sku = 'CF-22346001';
|
|
736
|
-
// this.sku = '104';
|
|
737
|
-
// this.sku = '1000561986';
|
|
738
|
-
// this.sku = '1000567768';
|
|
739
|
-
// this.sku = '1000567767';
|
|
740
|
-
// this.sku = '1066';
|
|
741
|
-
// this.sku = '104';
|
|
742
|
-
// this.sku = "70000107";
|
|
743
|
-
// this.sku = "grover";
|
|
744
|
-
// this.sku = "1000610952";
|
|
745
|
-
// this.sku = "4387";
|
|
746
|
-
// this.sku = "1000612725";
|
|
747
|
-
// this.sku = '1000610952'; // elix = 1000234793
|
|
748
|
-
this._appEventService = _appEventService;
|
|
749
|
-
this._settingsService = _settingsService;
|
|
750
|
-
this._productConnectorService = _productConnectorService;
|
|
751
|
-
this._localStorageService = _localStorageService;
|
|
752
|
-
this.enableRenderCarousel = false;
|
|
753
|
-
this.handleAddArticleInternally = true;
|
|
754
|
-
this.handleAddToCartInternally = false;
|
|
755
|
-
this.onAddToCart = new EventEmitter();
|
|
756
|
-
this.forceRenderImage = new EventEmitter();
|
|
757
|
-
this.getRenderForRenderCarousel = new EventEmitter();
|
|
758
|
-
this.onAlternativeClick = new EventEmitter();
|
|
759
|
-
this.onArticleInfoReceived = new EventEmitter();
|
|
760
|
-
this.onArticleReceived = new EventEmitter();
|
|
761
|
-
this.onSelectionsReceived = new EventEmitter();
|
|
762
|
-
this.onAddToQuote = new EventEmitter();
|
|
763
|
-
this.openStockEvent = new EventEmitter();
|
|
764
|
-
this.onAnswersAvailable = new EventEmitter();
|
|
765
|
-
this.settingsLoaded = false;
|
|
766
|
-
this.showHD = false;
|
|
767
|
-
this._subs = [];
|
|
768
|
-
this._subs.push(this._appEventService.onAddToCart.subscribe((data) => {
|
|
769
|
-
this._handleAddToCart(data);
|
|
770
|
-
}), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)), this._appEventService.onAnswersAvailable.subscribe(answers => this._handleAnswersAvailable(answers)), this._settingsService.settingsLoaded.subscribe(loaded => {
|
|
771
|
-
this.settingsLoaded = loaded;
|
|
772
|
-
}));
|
|
773
|
-
}
|
|
774
|
-
set settings(value) {
|
|
775
|
-
if (value) {
|
|
776
|
-
if (typeof value === 'string') {
|
|
777
|
-
this._settings = JSON.parse(value);
|
|
778
|
-
}
|
|
779
|
-
else {
|
|
780
|
-
this._settings = value;
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
get settings() {
|
|
785
|
-
return this._settings;
|
|
786
|
-
}
|
|
787
|
-
ngOnInit() {
|
|
788
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
789
|
-
yield this._settingsService.initializeSettings(this._settings === undefined);
|
|
790
|
-
if (this._settings) {
|
|
791
|
-
this._settingsService.createSettingsFromObject(this._settings);
|
|
792
|
-
}
|
|
793
|
-
});
|
|
794
|
-
}
|
|
795
|
-
ngOnDestroy() {
|
|
796
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
797
|
-
}
|
|
798
|
-
_handleAnswerInfoReceived(info) {
|
|
799
|
-
this.onArticleInfoReceived.next(info);
|
|
800
|
-
}
|
|
801
|
-
_handleAnswersAvailable(answers) {
|
|
802
|
-
this.onAnswersAvailable.next(answers);
|
|
803
|
-
}
|
|
804
|
-
_handleAddToCart(data) {
|
|
805
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
806
|
-
if (this.handleAddToCartInternally) {
|
|
807
|
-
if (data && data.article) {
|
|
808
|
-
if (typeof data.article === 'string') {
|
|
809
|
-
const article = JSON.parse(data.article);
|
|
810
|
-
if (article.selectorData && article.selectorData.compositions) { // configured (frozen) article
|
|
811
|
-
const transactionId = yield this._productConnectorService.addWebSessionTransactionLine(this._localStorageService.id, article.selectorData.compositions[0].compositionArticleNo, data.quantity);
|
|
812
|
-
if (transactionId) {
|
|
813
|
-
this._localStorageService.id = transactionId;
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
else { // flat (simple) article
|
|
818
|
-
if (data.article.hasOwnProperty('articleNr')) {
|
|
819
|
-
const transactionId = yield this._productConnectorService.addWebSessionTransactionLine(this._localStorageService.id, data.article['articleNr'], data.quantity);
|
|
820
|
-
if (transactionId) {
|
|
821
|
-
this._localStorageService.id = transactionId;
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
this.onAddToCart.next(data);
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
else {
|
|
829
|
-
this.onAddToCart.emit(data);
|
|
830
|
-
}
|
|
831
|
-
});
|
|
832
|
-
}
|
|
833
|
-
openStock() {
|
|
834
|
-
this.openStockEvent.emit();
|
|
835
|
-
}
|
|
836
|
-
}
|
|
837
|
-
IoneProductComponent.decorators = [
|
|
838
|
-
{ type: Component, args: [{
|
|
839
|
-
selector: 'app-ione-product',
|
|
840
|
-
template: `
|
|
841
|
-
<app-product-page *ngIf="settingsLoaded"
|
|
842
|
-
[createFrozenArticle]="handleAddArticleInternally"
|
|
843
|
-
[isReturn]="isReturn"
|
|
844
|
-
[sku]="sku"
|
|
845
|
-
[showRelatedProductsPopup]="showRelatedProductsPopup"
|
|
846
|
-
[enableRenderCarousel]="enableRenderCarousel"
|
|
847
|
-
(openStockEvent)="openStock()"
|
|
848
|
-
></app-product-page>
|
|
849
|
-
<!-- <co-button [label]="'click'" (click)="showHD = !showHD"></co-button>
|
|
850
|
-
<co-product-hd [sku]="'657946ca-e1e1-41fd-7ae0-08dbf7df0cef'" *ngIf="showHD"></co-product-hd>-->
|
|
851
|
-
`,
|
|
852
|
-
providers: [
|
|
853
|
-
ProductSettingsService,
|
|
854
|
-
ProductConnectorService,
|
|
855
|
-
ProductEventService,
|
|
856
|
-
ProductConnectorAdapterService
|
|
857
|
-
],
|
|
858
|
-
encapsulation: ViewEncapsulation.Emulated,
|
|
859
|
-
styles: [""]
|
|
860
|
-
},] }
|
|
861
|
-
];
|
|
862
|
-
IoneProductComponent.ctorParameters = () => [
|
|
863
|
-
{ type: ProductEventService },
|
|
864
|
-
{ type: ProductSettingsService },
|
|
865
|
-
{ type: ProductConnectorService },
|
|
866
|
-
{ type: LocalStorageService }
|
|
867
|
-
];
|
|
868
|
-
IoneProductComponent.propDecorators = {
|
|
869
|
-
sku: [{ type: Input }],
|
|
870
|
-
isReturn: [{ type: Input }],
|
|
871
|
-
showRelatedProductsPopup: [{ type: Input }],
|
|
872
|
-
enableRenderCarousel: [{ type: Input }],
|
|
873
|
-
settings: [{ type: Input }],
|
|
874
|
-
handleAddArticleInternally: [{ type: Input }],
|
|
875
|
-
handleAddToCartInternally: [{ type: Input }],
|
|
876
|
-
onAddToCart: [{ type: Output }],
|
|
877
|
-
forceRenderImage: [{ type: Output }],
|
|
878
|
-
getRenderForRenderCarousel: [{ type: Output }],
|
|
879
|
-
onAlternativeClick: [{ type: Output }],
|
|
880
|
-
onArticleInfoReceived: [{ type: Output }],
|
|
881
|
-
onArticleReceived: [{ type: Output }],
|
|
882
|
-
onSelectionsReceived: [{ type: Output }],
|
|
883
|
-
onAddToQuote: [{ type: Output }],
|
|
884
|
-
openStockEvent: [{ type: Output }],
|
|
885
|
-
onAnswersAvailable: [{ type: Output }]
|
|
886
|
-
};
|
|
887
|
-
|
|
888
|
-
class StockAndDelivery {
|
|
889
|
-
constructor(stock, deliveryDescription) {
|
|
890
|
-
this.stock = 0;
|
|
891
|
-
this.stock = stock;
|
|
892
|
-
this.deliveryDescription = deliveryDescription;
|
|
893
|
-
}
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
var SelectorType;
|
|
897
|
-
(function (SelectorType) {
|
|
898
|
-
SelectorType["TwoD"] = "2D";
|
|
899
|
-
SelectorType["ThreeD"] = "3D";
|
|
900
|
-
SelectorType["Omni"] = "Omni";
|
|
901
|
-
})(SelectorType || (SelectorType = {}));
|
|
902
|
-
|
|
903
|
-
/** AUTO GENERATED FILE. DO NOT CHANGE.. **/
|
|
904
|
-
var IconEnum;
|
|
905
|
-
(function (IconEnum) {
|
|
906
|
-
IconEnum["AddToCartDrop"] = "add_to_cart_drop";
|
|
907
|
-
IconEnum["ArrowPointLeft"] = "arrow_point_left";
|
|
908
|
-
IconEnum["ArrowPointRight"] = "arrow_point_right";
|
|
909
|
-
IconEnum["CrossSkinny"] = "cross_skinny";
|
|
910
|
-
IconEnum["DeliveryTruck"] = "delivery_truck";
|
|
911
|
-
IconEnum["Download"] = "download";
|
|
912
|
-
IconEnum["FullScreen"] = "full_screen";
|
|
913
|
-
IconEnum["LinkSimpleRegular"] = "link_simple_regular";
|
|
914
|
-
IconEnum["Location"] = "location";
|
|
915
|
-
IconEnum["Logo"] = "logo";
|
|
916
|
-
IconEnum["MagicWand"] = "magic_wand";
|
|
917
|
-
IconEnum["NormalScreen"] = "normal_screen";
|
|
918
|
-
IconEnum["Quote"] = "quote";
|
|
919
|
-
IconEnum["Refresh"] = "refresh";
|
|
920
|
-
IconEnum["SaveSkinny"] = "save_skinny";
|
|
921
|
-
IconEnum["ThreeD"] = "three_d";
|
|
922
|
-
IconEnum["Truck"] = "truck";
|
|
923
|
-
IconEnum["TwoD"] = "two_d";
|
|
924
|
-
IconEnum["Warehouse"] = "warehouse";
|
|
925
|
-
})(IconEnum || (IconEnum = {}));
|
|
926
|
-
|
|
927
|
-
/** AUTO GENERATED FILE. DO NOT CHANGE.. **/
|
|
928
|
-
const IconSvg = {
|
|
929
|
-
"add_to_cart_drop": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.58,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,16.58,34.84Z\" fill=\"#484f60\"/><path d=\"M31.49,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,31.49,34.84Z\" fill=\"#484f60\"/><path d=\"M35.6,17.9l-1.51.18L31.88,20.3l1.31-.17a.88.88,0,0,1,1,1.08L32.35,29.5a1.52,1.52,0,0,1-1.44,1.2H16.51a1.75,1.75,0,0,1-1.57-1.17l-2.31-5.6a1,1,0,0,1,.85-1.29l4.43-.56-1.86-1.86-5.13.61a1,1,0,0,0-.87,1.28l3.34,9.44A1.73,1.73,0,0,0,15,32.72H32.64a1.51,1.51,0,0,0,1.43-1.2L36.6,19A.89.89,0,0,0,35.6,17.9Z\" fill=\"#484f60\"/><path d=\"M39,17a1.87,1.87,0,0,0-1.36,1.46l-.42,2.89c-.1.67.31,1,.9.7a2.75,2.75,0,0,0,1.33-1.7L40,18A.73.73,0,0,0,39,17Z\" fill=\"#484f60\"/><polygon points=\"24 25.35 32.04 17.3 27.04 17.3 27.04 10 20.95 10 20.95 17.3 15.96 17.3 24 25.35\" fill=\"#484f60\"/></svg>",
|
|
930
|
-
"arrow_point_left": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\" ><path fill=\"#484F5F\" d=\"M31.9,36.7l-14.7-9.6C17.1,27,17,26.9,17,26.7v-2.4c0-0.2,0.1-0.3,0.2-0.4l14.7-9.6c0.2-0.2,0.5-0.1,0.7,0.1l1.4,2.1c0.2,0.2,0.1,0.5-0.1,0.7l-12,7.8c-0.3,0.2-0.3,0.6,0,0.8l12,7.8c0.2,0.2,0.3,0.5,0.1,0.7l-1.4,2.1C32.4,36.8,32.1,36.8,31.9,36.7z\"/></svg>",
|
|
931
|
-
"arrow_point_right": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51 51\" enable-background=\"new 0 0 51 51\" ><path fill=\"#484F5F\" d=\"M19.1,14.3l14.7,9.6c0.1,0.1,0.2,0.2,0.2,0.4v2.4c0,0.2-0.1,0.3-0.2,0.4l-14.7,9.6c-0.2,0.2-0.5,0.1-0.7-0.1l-1.4-2.1c-0.2-0.2-0.1-0.5,0.1-0.7l12-7.8c0.3-0.2,0.3-0.6,0-0.8l-12-7.8c-0.2-0.2-0.3-0.5-0.1-0.7l1.4-2.1C18.6,14.2,18.9,14.2,19.1,14.3z\"/></svg>",
|
|
932
|
-
"cross_skinny": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><g ><polygon points=\"25.35 5.52 24.65 4.81 15 14.46 5.35 4.81 4.65 5.52 14.29 15.17 4.65 24.81 5.35 25.52 15 15.87 24.65 25.52 25.35 24.81 15.71 15.17 25.35 5.52\" fill=\"#484f60\"/></g></svg>",
|
|
933
|
-
"delivery_truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,45A20,20,0,1,1,45,25,20,20,0,0,1,25,45ZM25,6.29A18.71,18.71,0,1,0,43.71,25,18.73,18.73,0,0,0,25,6.29Z\" fill=\"#484f60\"/><path d=\"M21.86,24.09a7.14,7.14,0,0,1,.72-3.24,6.94,6.94,0,0,1,1.18-1.66H13v10.1h8.51a3.25,3.25,0,0,1,3.27-3.07A3.33,3.33,0,0,1,27,27V25.75H21.9Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.65,30.47h-.48a3.51,3.51,0,0,1,1.13,2.19h1.57a3.22,3.22,0,0,1-1.41-.83A3.13,3.13,0,0,1,21.65,30.47Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M34.63,21.89H28.87c-.3.25-.5.43-.63.56v8H28a3.19,3.19,0,0,1-.82,1.37,3.3,3.3,0,0,1-1.41.82H29a3.53,3.53,0,0,1,7,0h1V27.1Zm-.2,5.38H30.8a.47.47,0,0,1-.46-.46V23.36a.46.46,0,0,1,.46-.46h2.1a.45.45,0,0,1,.42.27l1.53,3.45A.46.46,0,0,1,34.43,27.27Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M16.42,30.47a3.51,3.51,0,0,0-1.13,2.19H14.6l-1.6-1V30.47Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M30,33.08a2.53,2.53,0,1,0,2.53-2.53A2.52,2.52,0,0,0,30,33.08Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M16.27,33.08a2.53,2.53,0,1,0,2.53-2.53A2.52,2.52,0,0,0,16.27,33.08Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M22.45,17.27h-3.2a4.29,4.29,0,0,1,1.61-3.49,6.45,6.45,0,0,1,4.31-1.38,6.79,6.79,0,0,1,2.92.57A4.72,4.72,0,0,1,30,14.62a4,4,0,0,1,.72,2.26,3.74,3.74,0,0,1-.23,1.27,5.31,5.31,0,0,1-.73,1.29,12,12,0,0,1-1.4,1.29A8.74,8.74,0,0,0,27.06,22a3.17,3.17,0,0,0-.46.94,7.56,7.56,0,0,0-.23,1.65h-3.3v-.49a6,6,0,0,1,.59-2.68,6.8,6.8,0,0,1,1.94-2.25,9.44,9.44,0,0,0,1.56-1.41,1.5,1.5,0,0,0,.27-.9,1.47,1.47,0,0,0-.65-1.19A2.9,2.9,0,0,0,25,15.14a2.77,2.77,0,0,0-1.84.6A1.91,1.91,0,0,0,22.45,17.27Z\" fill=\"#484f60\"/><path d=\"M24.78,27.42a2.06,2.06,0,0,1,1.51.61,2,2,0,0,1,.63,1.47A2,2,0,0,1,26.3,31a2.08,2.08,0,0,1-1.5.62A2,2,0,0,1,23.31,31a2.08,2.08,0,0,1,0-2.95A2,2,0,0,1,24.78,27.42Z\" fill=\"#484f60\"/></svg>",
|
|
934
|
-
"download": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"download.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"6.675088\" inkscape:cx=\"-14.056273\" inkscape:cy=\"29.806579\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 498.966,339.946 c -7.197,0 -13.034,5.837 -13.034,13.034 v 49.804 c 0,28.747 -23.388,52.135 -52.135,52.135 H 78.203 c -28.747,0 -52.135,-23.388 -52.135,-52.135 V 352.98 c 0,-7.197 -5.835,-13.034 -13.034,-13.034 C 5.835,339.946 0,345.782 0,352.98 v 49.804 c 0,43.121 35.082,78.203 78.203,78.203 h 355.594 c 43.121,0 78.203,-35.082 78.203,-78.203 V 352.98 c 0,-7.198 -5.835,-13.034 -13.034,-13.034 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 419.833,391.3 H 92.167 c -7.197,0 -13.034,5.837 -13.034,13.034 0,7.197 5.835,13.034 13.034,13.034 h 327.665 c 7.199,0 13.034,-5.835 13.034,-13.034 0,-7.197 -5.835,-13.034 -13.033,-13.034 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 387.919,207.93 c -4.795,-5.367 -13.034,-5.834 -18.404,-1.038 L 269.033,296.657 V 44.048 c 0,-7.197 -5.835,-13.034 -13.034,-13.034 -7.197,0 -13.034,5.835 -13.034,13.034 V 296.657 L 142.483,206.893 c -5.367,-4.796 -13.607,-4.328 -18.404,1.038 -4.794,5.369 -4.331,13.609 1.037,18.404 l 109.174,97.527 c 6.187,5.529 13.946,8.292 21.708,8.292 7.759,0 15.519,-2.763 21.708,-8.289 l 109.174,-97.53 c 5.37,-4.798 5.834,-13.038 1.039,-18.405 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05555739,0,0,0.05555739,10.739964,11.357401)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
|
|
935
|
-
"full_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"17.35 32.81 17.35 26.75 19.46 28.86 28.69 19.63 26.59 17.52 32.65 17.52 32.65 23.58 30.54 21.47 21.31 30.71 23.41 32.81 17.35 32.81\" fill=\"#484f60\"/></svg>",
|
|
936
|
-
"link_simple_regular": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path d=\"M0 256C0 167.6 71.6 96 160 96l72 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-72 0C98.1 144 48 194.1 48 256s50.1 112 112 112l72 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-72 0C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160l-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c61.9 0 112-50.1 112-112s-50.1-112-112-112l-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c88.4 0 160 71.6 160 160zM184 232l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"/></svg>",
|
|
937
|
-
"location": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M25,12.67A8.33,8.33,0,0,0,16.67,21c0,4.6,8.33,16.67,8.33,16.67S33.33,25.6,33.33,21A8.33,8.33,0,0,0,25,12.67Zm0,10.41A2.08,2.08,0,1,1,27.08,21,2.08,2.08,0,0,1,25,23.08Z\" fill=\"#484f60\"/></svg>",
|
|
938
|
-
"logo": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><rect x=\"10\" y=\"21.19\" width=\"2.04\" height=\"6.32\" fill=\"#484f60\"/><path d=\"M18.66,29.24a3.84,3.84,0,0,1-2.85-1.19,4.19,4.19,0,0,1,0-5.77,4,4,0,0,1,5.71,0,4.19,4.19,0,0,1,0,5.77A3.85,3.85,0,0,1,18.66,29.24Zm0-6.16a1.79,1.79,0,0,0-1.38.58,2.12,2.12,0,0,0-.57,1.51,2,2,0,0,0,.57,1.49,1.94,1.94,0,0,0,2.76,0,2.08,2.08,0,0,0,.56-1.5,2.15,2.15,0,0,0-.56-1.51A1.76,1.76,0,0,0,18.67,23.08Z\" fill=\"#484f60\"/><polygon points=\"31.05 29.18 27.33 25.02 27.33 29.14 25.29 29.14 25.29 21.15 26.57 21.15 30.29 25.33 30.29 21.19 32.33 21.19 32.33 29.18 31.05 29.18\" fill=\"#484f60\"/><polygon points=\"35.34 29.14 35.34 21.19 39.9 21.19 39.9 23.17 37.38 23.17 37.38 23.9 39.66 23.9 39.66 25.87 37.38 25.87 37.38 27.14 40 27.14 40 29.14 35.34 29.14\" fill=\"#484f60\"/></svg>",
|
|
939
|
-
"magic_wand": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><title>magic_wand</title><g style=\"isolation:isolate\"><path d=\"M20.45,10.71a.28.28,0,0,1,.49-.19l1.4,1.25a.93.93,0,0,0,.83.23L25,11.62a.29.29,0,0,1,.34.41l-.76,1.71a.93.93,0,0,0,0,.86l.93,1.62c.12.26,0,.45-.29.45l-1.86-.2a1,1,0,0,0-.81.32l-1.26,1.38a.28.28,0,0,1-.5-.14l-.39-1.83a1,1,0,0,0-.55-.67l-1.71-.77a.28.28,0,0,1,0-.52l1.62-.94a1,1,0,0,0,.48-.73Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M23.3,16.21a1,1,0,0,0-.8.31l-1,1.13a.29.29,0,0,1-.51-.14L20.66,16a1,1,0,0,0-.55-.68l-1.39-.62a.28.28,0,0,1,0-.52L20,13.45a1,1,0,0,0,.48-.73l.16-1.5a.29.29,0,0,1,.49-.2l1.13,1a.93.93,0,0,0,.83.23L24.58,12a.29.29,0,0,1,.34.41l-.62,1.38a.91.91,0,0,0,.05.86l.75,1.32a.29.29,0,0,1-.29.44Z\" fill=\"#484f60\"/></g><path d=\"M33.57,36.76a.53.53,0,0,1,0,.72l-2.37,2.18a.48.48,0,0,1-.7,0L18,25.34a.51.51,0,0,1,0-.71l2.36-2.19a.49.49,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M18.6,19.94a.51.51,0,0,1,0,.71L16.2,22.84a.48.48,0,0,1-.7,0l-2.76-3.13a.51.51,0,0,1,0-.71l2.37-2.19a.48.48,0,0,1,.7,0Z\" fill=\"#484f60\"/><path d=\"M30.67,10.55a.29.29,0,0,1,.47.24v1.12a1,1,0,0,0,.4.77l.9.66a.29.29,0,0,1-.08.52l-1.07.35a1,1,0,0,0-.61.61l-.35,1.06a.28.28,0,0,1-.51.09l-.67-.91a1,1,0,0,0-.77-.4H27.27a.29.29,0,0,1-.25-.47l.66-.9a.93.93,0,0,0,.14-.85l-.35-1.07a.29.29,0,0,1,.38-.38l1.07.35a1,1,0,0,0,.85-.13Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M29.25,14.88a1,1,0,0,0-.77-.4h-.86a.29.29,0,0,1-.24-.47l.5-.69a.93.93,0,0,0,.14-.85l-.26-.82c-.07-.27.1-.44.37-.37l.82.26a1,1,0,0,0,.85-.13l.69-.51a.29.29,0,0,1,.47.25V12a.94.94,0,0,0,.39.76l.7.51a.29.29,0,0,1-.09.52l-.81.26a1,1,0,0,0-.62.61l-.26.82a.29.29,0,0,1-.52.08Z\" fill=\"#484f60\"/></g><path d=\"M37,15.81a.29.29,0,0,1,.32.43l-.13.26a.91.91,0,0,0,0,.85l.15.26A.29.29,0,0,1,37,18l-.29,0a.93.93,0,0,0-.81.27l-.2.21a.28.28,0,0,1-.5-.16l0-.29a1,1,0,0,0-.52-.69l-.27-.13a.28.28,0,0,1,0-.52l.26-.13a.93.93,0,0,0,.5-.71l0-.29a.29.29,0,0,1,.5-.17l.21.21a.92.92,0,0,0,.82.26Z\" fill=\"#484f60\"/><g style=\"mix-blend-mode:lighten\"><path d=\"M35.25,18a1,1,0,0,0-.52-.7l-.12-.05a.28.28,0,0,1,0-.52l.12-.06a1,1,0,0,0,.51-.7V15.8a.29.29,0,0,1,.5-.18l.09.1a.92.92,0,0,0,.82.26l.13,0a.29.29,0,0,1,.32.42L37,16.5a.91.91,0,0,0,0,.85l.07.12a.29.29,0,0,1-.31.43l-.13,0a1,1,0,0,0-.82.28l-.09.1a.28.28,0,0,1-.5-.16Z\" fill=\"#484f60\"/></g></g></svg>",
|
|
940
|
-
"normal_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"22.18 29.83 24.29 31.93 24.29 25.87 18.23 25.87 20.34 27.98 16.43 31.89 18.28 33.73 22.18 29.83\" fill=\"#484f60\"/><polygon points=\"33.57 18.44 31.73 16.6 27.82 20.51 25.71 18.4 25.71 24.46 31.77 24.46 29.66 22.35 33.57 18.44\" fill=\"#484f60\"/></svg>",
|
|
941
|
-
"quote": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M14.5,31.51V12a.5.5,0,0,1,.5-.5H35a.5.5,0,0,1,.5.5V38a.5.5,0,0,1-.5.5H21.27V40H35a2,2,0,0,0,2-2V12a2,2,0,0,0-2-2H15a2,2,0,0,0-2,2V31.51Z\" fill=\"#484f60\"/><path d=\"M21.27,40V33.56c0-1.78-.27-2.05-2.05-2.05H13Z\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"18.5\" width=\"6\" height=\"4\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"21.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"18.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"25.5\" width=\"6\" height=\"4\" transform=\"translate(59 55) rotate(-180)\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"28.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"25.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"14.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"34.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/></svg>",
|
|
942
|
-
"refresh": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"refresh.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"9.44\" inkscape:cx=\"13.990693\" inkscape:cy=\"13.961336\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /><g transform=\"matrix(0.05356365,0,0,0.05356365,11.44076,11.82465)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 414.32892,173.53368 397.86852,58.29997 c -1.3534,-9.447409 -12.96516,-13.373353 -19.75699,-6.581524 l -23.97472,23.97472 C 323.3074,57.095569 288.30682,47.308258 252.3168,47.308258 c -108.23157,0 -195.126154,84.711612 -197.8314,192.852392 -0.147446,5.91103 4.149441,10.98085 9.992183,11.82206 l 46.516107,6.64982 c 6.93462,1.01194 13.38577,-4.43269 13.28954,-11.68548 -0.9646,-71.37163 56.68057,-129.79595 128.03357,-129.79595 17.27835,0 34.3526,3.51232 50.13165,10.23043 l -23.11022,23.11022 c -6.74915,6.74915 -2.91866,18.3966 6.58152,19.75699 l 115.23371,16.4604 c 7.59269,1.14465 14.26423,-5.4586 13.17546,-13.17546 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.77603161\" /></g></g><path inkscape:connector-curvature=\"0\" d=\"m 35.105827,24.725982 -2.489742,-0.355606 c -0.321647,-0.04073 -0.711797,0.234897 -0.711797,0.671018 0,3.781814 -3.076753,6.858567 -6.858567,6.858567 -0.920628,0 -1.830946,-0.186303 -2.673013,-0.542533 l 1.198298,-1.198297 c 0.361507,-0.361507 0.156331,-0.985389 -0.352533,-1.058254 l -6.172336,-0.882302 c -0.405403,-0.05792 -0.764422,0.289765 -0.705726,0.705725 l 0.881637,6.172381 c 0.07258,0.506577 0.694003,0.71545 1.058254,0.352527 l 1.315225,-1.314599 c 1.643397,0.987012 3.516951,1.506391 5.450194,1.506391 5.769264,0 10.423029,-4.514936 10.595325,-10.27871 0.0091,-0.317237 -0.221012,-0.591248 -0.535219,-0.636308 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.04156709\" /></svg>",
|
|
943
|
-
"save_skinny": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 51 51\"><polygon points=\"23.8 38.1 14.9 25.6 15.7 25 23.6 36.2 35.2 12.9 36.1 13.4 23.8 38.1\" fill=\"#fff\"/></svg>",
|
|
944
|
-
"three_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.08,30.77a4.85,4.85,0,0,1-3-.8,4,4,0,0,0-2.49-.15,6.21,6.21,0,0,0,2.53,1.09,12.84,12.84,0,0,0,2.93-.14\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M14.27,19.68A4.71,4.71,0,0,0,11,20.78l2,.14c.31,0,1.2-.69,1.55-.81a3.88,3.88,0,0,1,1.65-.24l-1.94-.19\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.64,28.79a4.13,4.13,0,0,0-3.1-4c.89-.7,1.77-1.09,2.26-2.21a5.12,5.12,0,0,0,.35-1.9c-.13-3.24-2.64-3.73-5.29-4.15a4,4,0,0,1,3.44,3.7,4.61,4.61,0,0,1-.83,3.12,9.7,9.7,0,0,1-1.82,1.43,4.3,4.3,0,0,1,3.17,4.34,4.9,4.9,0,0,1-4.21,5c2.09-.34,4.37-.64,5.46-2.69a5,5,0,0,0,.57-2.58\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M28.44,18.88l.38-.07.48-.06.57,0h.75l.36,0,.35.05c-.2,0-.42-.08-1.57-.25l-.36-.05-.37,0h-.77l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38H27l.13,0h1.63l.21,0h.2l.2,0h.05l1.55-.24h0l-.34.05-.33,0H29.12l-.36,0-.33,0a1.15,1.15,0,0,1-.28-.06V19Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M40,24.34a9,9,0,0,0-3-7.1,11.06,11.06,0,0,0-4.47-1.86c4.38,1.13,6.23,5.31,6.13,9.54-.12,4.5-2.27,8.55-6.86,9.66,2.59-.63,5-1.41,6.52-3.78A12,12,0,0,0,40,24.34\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M35.38,16.71A7.32,7.32,0,0,1,36.74,18a7.82,7.82,0,0,1,1,1.73,10.32,10.32,0,0,1,.68,2.16,13.86,13.86,0,0,1,.23,2.59,15,15,0,0,1-.25,2.78,11.39,11.39,0,0,1-.68,2.31,9.34,9.34,0,0,1-1,1.85,8.23,8.23,0,0,1-1.28,1.4,7.76,7.76,0,0,1-1.7,1.07,9.07,9.07,0,0,1-2,.69,13.36,13.36,0,0,1-2.26.33,18.25,18.25,0,0,1-2.45,0c-.5,0-1-.08-1.39-.12l-1.17-.14c-.36,0-.68-.11-1-.16l-.77-.15V15.86c.34-.09.71-.18,1.09-.26s.81-.15,1.24-.21.88-.12,1.34-.17.95-.1,1.44-.13a20.57,20.57,0,0,1,2.33,0,12,12,0,0,1,2,.24,8.24,8.24,0,0,1,1.72.55A7.1,7.1,0,0,1,35.38,16.71ZM27.92,31.53a6.53,6.53,0,0,0,2.46-.32A4.81,4.81,0,0,0,32.32,30a5.82,5.82,0,0,0,1.27-2.18A10.11,10.11,0,0,0,34,24.67a8.65,8.65,0,0,0-.42-2.85,4.94,4.94,0,0,0-1.18-2,4.45,4.45,0,0,0-1.83-1.11,6.55,6.55,0,0,0-2.35-.28l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38a2.11,2.11,0,0,0,.29.06l.34,0,.37,0,.36,0h.07\" fill=\"#484f60\"/><path d=\"M14.57,16.47a5.49,5.49,0,0,1,2,.22,3.89,3.89,0,0,1,1.49.84A3.66,3.66,0,0,1,19,18.89a4.29,4.29,0,0,1,.33,1.7,5.29,5.29,0,0,1-.17,1.34,4.29,4.29,0,0,1-.5,1.16,4.17,4.17,0,0,1-.84.94,4.88,4.88,0,0,1-1.16.69v.05a3.7,3.7,0,0,1,1.22.5,4,4,0,0,1,1,.92,4.61,4.61,0,0,1,.69,1.3,5.24,5.24,0,0,1,.25,1.62,5.36,5.36,0,0,1-.42,2.15,4.44,4.44,0,0,1-1.2,1.64,4.84,4.84,0,0,1-1.86,1,6.78,6.78,0,0,1-2.39.23,7.69,7.69,0,0,1-2.36-.52,6.89,6.89,0,0,1-.9-.42,4.36,4.36,0,0,1-.69-.47l.62-2.9a4.12,4.12,0,0,0,.53.34,6.21,6.21,0,0,0,.73.36,5.69,5.69,0,0,0,.88.31,5.19,5.19,0,0,0,1,.15,3.11,3.11,0,0,0,1.1-.13,2,2,0,0,0,.8-.45,1.93,1.93,0,0,0,.49-.71,2.35,2.35,0,0,0,.17-.89A2.48,2.48,0,0,0,16,27.67a2.23,2.23,0,0,0-.63-.79,2.9,2.9,0,0,0-.89-.46,3.5,3.5,0,0,0-1-.15H12.2V23.44l1.23,0a3.44,3.44,0,0,0,.83-.11,2.83,2.83,0,0,0,.79-.36,2,2,0,0,0,.6-.62,2,2,0,0,0,.23-.94,1.8,1.8,0,0,0-.13-.71,1.36,1.36,0,0,0-.38-.56,1.58,1.58,0,0,0-.64-.35,2.79,2.79,0,0,0-.9-.1,4.07,4.07,0,0,0-.84.13c-.27.08-.53.18-.78.28a6.56,6.56,0,0,0-1.17.7L10.42,18a5,5,0,0,1,.72-.51,7.82,7.82,0,0,1,2.12-.82A8,8,0,0,1,14.57,16.47Z\" fill=\"#484f60\"/></svg>",
|
|
945
|
-
"truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"truck.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"9.44\" inkscape:cx=\"31.555563\" inkscape:cy=\"21.585628\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 119.467,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.964,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.824,0 34.133,15.309 34.133,34.133 0,18.824 -15.309,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 409.6,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.963,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.825,0 34.133,15.309 34.133,34.133 0,18.824 -15.308,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 510.643,289.784 -76.8,-119.467 c -1.57,-2.441 -4.275,-3.917 -7.177,-3.917 H 332.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 213.333 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 v -17.067 h -25.6 V 183.467 h 80.674 l 72.926,113.442 v 82.825 H 452.266 V 396.8 h 51.2 c 4.719,0 8.533,-3.814 8.533,-8.533 V 294.4 c 10e-4,-1.63 -0.468,-3.243 -1.356,-4.616 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 375.467,277.333 V 217.6 h 68.267 v -17.067 h -76.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 76.8 c 0,4.719 3.814,8.533 8.533,8.533 h 128 V 277.332 H 375.467 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 332.8,106.667 H 8.533 C 3.823,106.667 0,110.49 0,115.2 v 273.067 c 0,4.719 3.823,8.533 8.533,8.533 H 76.8 V 379.733 H 17.067 v -256 h 307.2 v 256 H 162.133 V 396.8 H 332.8 c 4.719,0 8.533,-3.814 8.533,-8.533 V 115.2 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"8.533\" y=\"345.60001\" width=\"51.200001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"179.2\" y=\"345.60001\" width=\"145.067\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"469.33301\" y=\"345.60001\" width=\"34.132999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"34.132999\" y=\"140.8\" width=\"298.66699\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"110.933\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"401.06699\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
|
|
946
|
-
"two_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M22.41,33.89H11V31c.87-.76,1.75-1.56,2.62-2.41S15.2,27,15.73,26.39A11.84,11.84,0,0,0,17.4,24a4.45,4.45,0,0,0,.5-2,2.52,2.52,0,0,0-.64-1.85,2.47,2.47,0,0,0-1.84-.65,4.57,4.57,0,0,0-1.89.45,8.17,8.17,0,0,0-1.84,1.14h-.31V17.2a10.26,10.26,0,0,1,2-.73,10.46,10.46,0,0,1,2.71-.36,5.79,5.79,0,0,1,4.16,1.37,5.15,5.15,0,0,1,1.44,3.9,7.37,7.37,0,0,1-.69,3.14A12.94,12.94,0,0,1,19,27.59c-.6.66-1.19,1.26-1.79,1.81s-1,.93-1.28,1.15h6.53Z\" fill=\"#484f60\"/><path d=\"M38.14,20.79a7.49,7.49,0,0,0-2.37-3,6.52,6.52,0,0,0-2.17-1,11.93,11.93,0,0,0-3.06-.35H25.26V33.89h5.13a13.25,13.25,0,0,0,3-.3,6.61,6.61,0,0,0,2.33-1.08,7.71,7.71,0,0,0,2.34-3A9.9,9.9,0,0,0,39,25.19,10.47,10.47,0,0,0,38.14,20.79Zm-3.49,7.27a4,4,0,0,1-1.51,1.88,3.77,3.77,0,0,1-1.22.54,10.07,10.07,0,0,1-2,.14H29V19.7H30a9.8,9.8,0,0,1,1.81.13,3.75,3.75,0,0,1,1.18.46,4.07,4.07,0,0,1,1.65,1.92,7.4,7.4,0,0,1,.52,2.94A7.92,7.92,0,0,1,34.65,28.06Z\" fill=\"#484f60\"/></svg>",
|
|
947
|
-
"warehouse": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"warehouse.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"6.675088\" inkscape:cx=\"9.6569985\" inkscape:cy=\"12.384637\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 507.785,146.242 260.318,1.175 c -2.603,-1.519 -5.803,-1.57 -8.439,-0.111 L 4.412,137.598 C 1.69,139.091 0,141.958 0,145.064 v 358.4 c 0,4.719 3.823,8.533 8.533,8.533 H 51.2 c 4.71,0 8.533,-3.814 8.533,-8.533 V 204.798 h 392.533 v 298.667 c 0,4.719 3.814,8.533 8.533,8.533 h 42.667 c 4.719,0 8.533,-3.814 8.533,-8.533 V 153.598 c 10e-4,-3.03 -1.603,-5.829 -4.214,-7.356 z m -12.852,348.689 h -25.6 V 196.264 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 H 51.2 c -4.71,0 -8.533,3.823 -8.533,8.533 v 298.667 h -25.6 V 150.099 L 255.872,18.344 494.933,158.487 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,392.531 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 324.267,392.531 h -102.4 c -4.71,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.823,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 230.4 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 281.6,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.823,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,290.131 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,298.664 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"255.998\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"221.864\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 298.667,119.464 h -85.333 c -4.71,0 -8.533,3.823 -8.533,8.533 v 34.133 c 0,4.71 3.823,8.533 8.533,8.533 h 85.333 c 4.719,0 8.533,-3.823 8.533,-8.533 v -34.133 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z m -8.534,34.134 h -68.267 v -17.067 h 68.267 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>"
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
class IconCacheService {
|
|
951
|
-
constructor(_sanitizer) {
|
|
952
|
-
this._sanitizer = _sanitizer;
|
|
953
|
-
this._iconCache = {};
|
|
954
|
-
this._allIcons = IconSvg;
|
|
955
|
-
this.setIconCache();
|
|
956
|
-
}
|
|
957
|
-
/**
|
|
958
|
-
* All the icons as a large JSON object, from the all-icons.json file.
|
|
959
|
-
* The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
|
|
960
|
-
*/
|
|
961
|
-
get iconCache() {
|
|
962
|
-
return this._iconCache;
|
|
963
|
-
}
|
|
964
|
-
getIcon(iconName) {
|
|
965
|
-
return this._iconCache[iconName.toLowerCase()];
|
|
966
|
-
}
|
|
967
|
-
setIconCache() {
|
|
968
|
-
for (const key in this._allIcons) {
|
|
969
|
-
if (this._allIcons.hasOwnProperty(key)) {
|
|
970
|
-
this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(this._allIcons[key]);
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
IconCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(i0.ɵɵinject(i1$1.DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
|
|
976
|
-
IconCacheService.decorators = [
|
|
977
|
-
{ type: Injectable, args: [{
|
|
978
|
-
providedIn: 'root'
|
|
979
|
-
},] }
|
|
980
|
-
];
|
|
981
|
-
IconCacheService.ctorParameters = () => [
|
|
982
|
-
{ type: DomSanitizer }
|
|
983
|
-
];
|
|
984
|
-
|
|
985
|
-
class ProductPageComponent {
|
|
986
|
-
constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
|
|
987
|
-
this._ione = _ione;
|
|
988
|
-
this._renderer = _renderer;
|
|
989
|
-
this._changeDetector = _changeDetector;
|
|
990
|
-
this.iconCache = iconCache;
|
|
991
|
-
this.settingsService = settingsService;
|
|
992
|
-
this.appEventService = appEventService;
|
|
993
|
-
this.icon = IconEnum;
|
|
994
|
-
this.createFrozenArticle = true;
|
|
995
|
-
this.isReturn = false;
|
|
996
|
-
this.showRelatedProductsPopup = false;
|
|
997
|
-
this.openStockEvent = new EventEmitter();
|
|
998
|
-
this.configurable = true;
|
|
999
|
-
this.threeD = false;
|
|
1000
|
-
this.show2D = true;
|
|
1001
|
-
this.show3D = false;
|
|
1002
|
-
this.configuring = false;
|
|
1003
|
-
this.showAddToCart = false;
|
|
1004
|
-
this.fullscreenAnimationEnd = false;
|
|
1005
|
-
this.settingsLoaded = false;
|
|
1006
|
-
this._fullScreen = false;
|
|
1007
|
-
this._subs = [];
|
|
1008
|
-
this._subs.push(this.appEventService.onForceRenderImage.subscribe((x) => {
|
|
1009
|
-
if (this.selections.nativeElement) {
|
|
1010
|
-
this.selections.nativeElement.forceRenderImage();
|
|
1011
|
-
}
|
|
1012
|
-
}), this.settingsService.settingsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._pageLoadedSubscription = combineLatest([
|
|
1013
|
-
this._ione.controllerInitialized,
|
|
1014
|
-
this._ione.articleLoaded
|
|
1015
|
-
]).subscribe(([initialized, articleLoaded]) => {
|
|
1016
|
-
if (initialized && articleLoaded) {
|
|
1017
|
-
this.settingsLoaded = initialized;
|
|
1018
|
-
}
|
|
1019
|
-
}),
|
|
1020
|
-
// this._ione.controllerInitialized.subscribe((initialized: boolean) => {
|
|
1021
|
-
// this.settingsLoaded = initialized;
|
|
1022
|
-
// }),
|
|
1023
|
-
this.appEventService.onAnswersAvailable.subscribe((answers) => {
|
|
1024
|
-
if (answers && this.configurable) {
|
|
1025
|
-
this.showAddToCart = false;
|
|
1026
|
-
}
|
|
1027
|
-
else {
|
|
1028
|
-
this.showAddToCart = true;
|
|
1029
|
-
}
|
|
1030
|
-
}), this.appEventService.onGetRenderForRenderCarousel.subscribe((renderParameters) => {
|
|
1031
|
-
if (this.selections.nativeElement) {
|
|
1032
|
-
this.selections.nativeElement.getRenderForRenderCarousel(renderParameters);
|
|
1033
|
-
}
|
|
1034
|
-
}));
|
|
1035
|
-
}
|
|
1036
|
-
set sku(value) {
|
|
1037
|
-
if (value) {
|
|
1038
|
-
if (this.configuring) {
|
|
1039
|
-
this.show3D = false;
|
|
1040
|
-
this.fullScreen = false;
|
|
1041
|
-
this.configuring = false;
|
|
1042
|
-
this._changeDetector.detectChanges();
|
|
1043
|
-
}
|
|
1044
|
-
this._sku = value;
|
|
1045
|
-
this._getArticle();
|
|
1046
|
-
}
|
|
1047
|
-
}
|
|
1048
|
-
get sku() {
|
|
1049
|
-
return this._sku;
|
|
1050
|
-
}
|
|
1051
|
-
set settings(value) {
|
|
1052
|
-
if (value) {
|
|
1053
|
-
if (typeof value === 'string') {
|
|
1054
|
-
this._settings = JSON.parse(value);
|
|
1055
|
-
}
|
|
1056
|
-
else {
|
|
1057
|
-
this._settings = value;
|
|
1058
|
-
}
|
|
1059
|
-
}
|
|
1060
|
-
}
|
|
1061
|
-
get settings() {
|
|
1062
|
-
return this._settings;
|
|
1063
|
-
}
|
|
1064
|
-
set fullScreen(value) {
|
|
1065
|
-
this._fullScreen = value;
|
|
1066
|
-
this.fullscreenAnimationEnd = true;
|
|
1067
|
-
this._changeDetector.detectChanges();
|
|
1068
|
-
// setTimeout(() => {
|
|
1069
|
-
// this.fullscreenAnimationEnd = true;
|
|
1070
|
-
// }, 400)
|
|
1071
|
-
}
|
|
1072
|
-
get fullScreen() {
|
|
1073
|
-
return this._fullScreen;
|
|
1074
|
-
}
|
|
1075
|
-
get fullScreenIcon() {
|
|
1076
|
-
return this.fullScreen ? this.icon.NormalScreen : this.icon.FullScreen;
|
|
1077
|
-
}
|
|
1078
|
-
set currentView(value) {
|
|
1079
|
-
this._currentView = value;
|
|
1080
|
-
this.show2D = this._currentView === SelectorType.TwoD;
|
|
1081
|
-
this.show3D = this._currentView === SelectorType.ThreeD;
|
|
1082
|
-
this._changeDetector.detectChanges();
|
|
1083
|
-
}
|
|
1084
|
-
get currentView() {
|
|
1085
|
-
return this._currentView;
|
|
1086
|
-
}
|
|
1087
|
-
ngOnInit() {
|
|
1088
|
-
if (this._settings) {
|
|
1089
|
-
this.settingsService.settings = undefined;
|
|
1090
|
-
this.settingsService.createSettingsFromObject(this._settings);
|
|
1091
|
-
}
|
|
1092
|
-
else {
|
|
1093
|
-
this._settings = this.settingsService.settings;
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
ngAfterViewInit() {
|
|
1097
|
-
}
|
|
1098
|
-
ngOnDestroy() {
|
|
1099
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
1100
|
-
if (this._initializedSub) {
|
|
1101
|
-
this._initializedSub.unsubscribe();
|
|
1102
|
-
}
|
|
1103
|
-
this._pageLoadedSubscription.unsubscribe();
|
|
1104
|
-
this.configurator = undefined;
|
|
1105
|
-
this.selections = undefined;
|
|
1106
|
-
this.fullscreenbutton = undefined;
|
|
1107
|
-
}
|
|
1108
|
-
setInstance(event) {
|
|
1109
|
-
if (event.detail) {
|
|
1110
|
-
this._ione.setInstance(event.detail);
|
|
1111
|
-
}
|
|
1112
|
-
}
|
|
1113
|
-
handleStartConfiguration() {
|
|
1114
|
-
this.configuring = true;
|
|
1115
|
-
this._changeDetector.detectChanges();
|
|
1116
|
-
}
|
|
1117
|
-
showFullScreen() {
|
|
1118
|
-
this.fullScreen = !this.fullScreen;
|
|
1119
|
-
}
|
|
1120
|
-
_handleSettingsLoaded(loaded) {
|
|
1121
|
-
if (loaded) {
|
|
1122
|
-
this._ione.initConnection();
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
_getArticle() {
|
|
1126
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1127
|
-
if (this._initializedSub) {
|
|
1128
|
-
this._initializedSub.unsubscribe();
|
|
1129
|
-
}
|
|
1130
|
-
this._initializedSub = this._ione.controllerInitialized.subscribe((init) => __awaiter(this, void 0, void 0, function* () {
|
|
1131
|
-
if (init) {
|
|
1132
|
-
this._ione.getFullArticle(this._sku).then((article) => {
|
|
1133
|
-
this.article = article;
|
|
1134
|
-
if (this.article) {
|
|
1135
|
-
this.configurable = this.article.goodType === 'B' && (this.article.isConfigurable || this.article.isConfigurable === undefined);
|
|
1136
|
-
// this.configurable = this.article.goodType === 'B';
|
|
1137
|
-
if (this.configurable) {
|
|
1138
|
-
this.showAddToCart = false;
|
|
1139
|
-
this.currentView = SelectorType.TwoD;
|
|
1140
|
-
}
|
|
1141
|
-
else {
|
|
1142
|
-
this.showAddToCart = true;
|
|
1143
|
-
}
|
|
1144
|
-
this.threeD = this.article.is3D;
|
|
1145
|
-
this.selectorType = this.article.selectorTypeCustomer;
|
|
1146
|
-
this._ione.getDeliveryPrognosis(this.article.goodId).then((stockInfo) => {
|
|
1147
|
-
const stockAndDelivery = stockInfo;
|
|
1148
|
-
this.stockAndDelivery = new StockAndDelivery(0, stockAndDelivery.returnValue ? stockAndDelivery.returnValue : ' ');
|
|
1149
|
-
this._changeDetector.detectChanges();
|
|
1150
|
-
});
|
|
1151
|
-
this._changeDetector.detectChanges();
|
|
1152
|
-
}
|
|
1153
|
-
this._ione.articleLoaded.next(true);
|
|
1154
|
-
});
|
|
1155
|
-
}
|
|
1156
|
-
}));
|
|
1157
|
-
this.showRelatedProductsPopup = false;
|
|
1158
|
-
});
|
|
1159
|
-
}
|
|
1160
|
-
openStock() {
|
|
1161
|
-
this.openStockEvent.emit();
|
|
1162
|
-
}
|
|
1163
|
-
handlePopUpChange(event) {
|
|
1164
|
-
this.showRelatedProductsPopup = event;
|
|
1165
|
-
}
|
|
1166
|
-
}
|
|
1167
|
-
ProductPageComponent.decorators = [
|
|
1168
|
-
{ type: Component, args: [{
|
|
1169
|
-
selector: 'app-product-page',
|
|
1170
|
-
template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n\r\n <app-image-carousel\r\n *ngIf=\"!enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [images]=\"article?.images\"\r\n [showRefresh]=\"configurable && threeD\">\r\n </app-image-carousel>\r\n\r\n <app-render-carousel\r\n *ngIf=\"enableRenderCarousel\"\r\n [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\"\r\n [article]=\"article\">\r\n </app-render-carousel>\r\n\r\n <ng-container *ngIf=\"settingsLoaded && this.configurable\">\r\n <threed-configurator\r\n #configurator\r\n class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n </threed-configurator>\r\n </ng-container>\r\n\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\"\r\n [class.show-selections]=\"configuring\"\r\n [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n (onAnswersAvailable)=\"appEventService.onAnswersAvailable.next($event.detail)\"\r\n (onReadyToRender)=\"appEventService.onReadyToRender.next($event.detail)\"\r\n (onRenderImageReceived)=\"appEventService.onRenderImageReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [createFrozenArticle]=\"createFrozenArticle\"\r\n [configuring]=\"configuring\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n (showRelatedPopup)=\"handlePopUpChange($event)\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [showAddToCart]=\"showAddToCart\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n [externalSource]=\"externalSource\"\r\n [isReturn]=\"isReturn\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [goodId]=\"article?.goodId\" (openStockEvent)=\"openStock()\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\" *ngIf=\"article\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n [label]=\"'RELATED_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related\r\n *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [externalSource]=\"externalSource\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"4\"\r\n [isSmallModus]=\"false\"\r\n [label]=\"'ALTERNATIVE_PRODUCTS' | localize\">\r\n </app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showRelatedProductsPopup\">\r\n <co-product-dialog\r\n [mainArticle]=\"article\"\r\n [articles]=\"article?.relatedArticles\"\r\n [refType]=\"1\"\r\n (closeRelatedPopup)=\"handlePopUpChange($event)\"\r\n >\r\n </co-product-dialog>\r\n\r\n <!-- <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"-->\r\n <!-- [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>-->\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n",
|
|
1171
|
-
animations: [
|
|
1172
|
-
trigger('toggleFullScreen', [
|
|
1173
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
|
|
1174
|
-
state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
|
|
1175
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
|
|
1176
|
-
]),
|
|
1177
|
-
trigger('toggleTopLeft', [
|
|
1178
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
|
|
1179
|
-
state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
|
|
1180
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
|
|
1181
|
-
]),
|
|
1182
|
-
trigger('toggleTopRight', [
|
|
1183
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
|
|
1184
|
-
state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
|
|
1185
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
|
|
1186
|
-
]),
|
|
1187
|
-
trigger('toggleFullScreenRight', [
|
|
1188
|
-
state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
|
|
1189
|
-
state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
|
|
1190
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out'))
|
|
1191
|
-
]),
|
|
1192
|
-
trigger('toggleVisibilityByState', [
|
|
1193
|
-
state('hide', style({ 'opacity': '0', 'display': 'none' })),
|
|
1194
|
-
state('show', style({ 'display': 'block', 'opacity': '1' })),
|
|
1195
|
-
transition('hide <=> show', animate('200ms 100ms ease-in-out'))
|
|
1196
|
-
]),
|
|
1197
|
-
trigger('toggleVisibility', [
|
|
1198
|
-
state('void', style({ 'opacity': '0' })),
|
|
1199
|
-
state('*', style({ 'opacity': '1' })),
|
|
1200
|
-
transition('void => *', animate('200ms ease-in-out'))
|
|
1201
|
-
])
|
|
1202
|
-
],
|
|
1203
|
-
styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:none}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
|
|
1204
|
-
},] }
|
|
1205
|
-
];
|
|
1206
|
-
ProductPageComponent.ctorParameters = () => [
|
|
1207
|
-
{ type: ProductConnectorService },
|
|
1208
|
-
{ type: Renderer2 },
|
|
1209
|
-
{ type: ChangeDetectorRef },
|
|
1210
|
-
{ type: IconCacheService },
|
|
1211
|
-
{ type: ProductSettingsService },
|
|
1212
|
-
{ type: ProductEventService }
|
|
1213
|
-
];
|
|
1214
|
-
ProductPageComponent.propDecorators = {
|
|
1215
|
-
configurator: [{ type: ViewChild, args: ['configurator', { read: ElementRef },] }],
|
|
1216
|
-
selections: [{ type: ViewChild, args: ['selections', { read: ElementRef },] }],
|
|
1217
|
-
fullscreenbutton: [{ type: ViewChild, args: ['fullscreenbutton', { read: ElementRef },] }],
|
|
1218
|
-
sku: [{ type: Input }],
|
|
1219
|
-
settings: [{ type: Input }],
|
|
1220
|
-
externalSource: [{ type: Input }],
|
|
1221
|
-
createFrozenArticle: [{ type: Input }],
|
|
1222
|
-
isReturn: [{ type: Input }],
|
|
1223
|
-
showRelatedProductsPopup: [{ type: Input }],
|
|
1224
|
-
enableRenderCarousel: [{ type: Input }],
|
|
1225
|
-
openStockEvent: [{ type: Output }]
|
|
1226
|
-
};
|
|
1227
|
-
|
|
1228
|
-
class ProductSelectorTypeComponent {
|
|
1229
|
-
constructor(_iconCache, _changeDetector) {
|
|
1230
|
-
this._iconCache = _iconCache;
|
|
1231
|
-
this._changeDetector = _changeDetector;
|
|
1232
|
-
this.type = SelectorType;
|
|
1233
|
-
this.icons = IconEnum;
|
|
1234
|
-
this.onIconClick = new EventEmitter();
|
|
1235
|
-
this.currentTypeChange = new EventEmitter();
|
|
1236
|
-
this.twoDIcon = this._iconCache.getIcon(this.icons.TwoD);
|
|
1237
|
-
this.threeDIcon = this._iconCache.getIcon(this.icons.ThreeD);
|
|
1238
|
-
}
|
|
1239
|
-
ngOnInit() {
|
|
1240
|
-
}
|
|
1241
|
-
handleIconClick(type) {
|
|
1242
|
-
this.currentType = type;
|
|
1243
|
-
this.currentTypeChange.next(this.currentType);
|
|
1244
|
-
this.onIconClick.next(this.currentType);
|
|
1245
|
-
this._changeDetector.detectChanges();
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
|
-
ProductSelectorTypeComponent.decorators = [
|
|
1249
|
-
{ type: Component, args: [{
|
|
1250
|
-
selector: 'app-product-selector-type',
|
|
1251
|
-
template: `
|
|
1252
|
-
<div *ngIf="show2D || show3D" class="show-in" [textContent]="'SHOW_IN' | localize"></div>
|
|
1253
|
-
<co-icon *ngIf="show2D && !showRenderCarousel" class="selector-type-icon"
|
|
1254
|
-
[class.active]="currentType === type.TwoD"
|
|
1255
|
-
[iconData]="twoDIcon"
|
|
1256
|
-
(click)="handleIconClick(type.TwoD)"
|
|
1257
|
-
></co-icon>
|
|
1258
|
-
|
|
1259
|
-
<co-icon *ngIf="show2D && showRenderCarousel" class="selector-type-icon"
|
|
1260
|
-
[class.active]="currentType === type.TwoD"
|
|
1261
|
-
[iconData]="twoDIcon"
|
|
1262
|
-
(click)="handleIconClick(type.TwoD)"
|
|
1263
|
-
></co-icon>
|
|
1264
|
-
|
|
1265
|
-
<co-icon *ngIf="show3D" class="selector-type-icon"
|
|
1266
|
-
[class.active]="currentType === type.ThreeD"
|
|
1267
|
-
[iconData]="threeDIcon"
|
|
1268
|
-
(click)="handleIconClick(type.ThreeD)"
|
|
1269
|
-
></co-icon>
|
|
1270
|
-
`,
|
|
1271
|
-
styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>*:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:none;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}\n"]
|
|
1272
|
-
},] }
|
|
1273
|
-
];
|
|
1274
|
-
ProductSelectorTypeComponent.ctorParameters = () => [
|
|
1275
|
-
{ type: IconCacheService },
|
|
1276
|
-
{ type: ChangeDetectorRef }
|
|
1277
|
-
];
|
|
1278
|
-
ProductSelectorTypeComponent.propDecorators = {
|
|
1279
|
-
show2D: [{ type: Input }],
|
|
1280
|
-
show3D: [{ type: Input }],
|
|
1281
|
-
showRenderCarousel: [{ type: Input }],
|
|
1282
|
-
currentType: [{ type: Input }],
|
|
1283
|
-
onIconClick: [{ type: Output }],
|
|
1284
|
-
currentTypeChange: [{ type: Output }]
|
|
1285
|
-
};
|
|
1286
|
-
|
|
1287
|
-
// A pipe for localizing string values in view templates.
|
|
1288
|
-
class LocalizePipe {
|
|
1289
|
-
constructor(_dictionaryService) {
|
|
1290
|
-
this._dictionaryService = _dictionaryService;
|
|
1291
|
-
}
|
|
1292
|
-
transform(value, upperCaseFirst = true, replace = []) {
|
|
1293
|
-
if (!value) {
|
|
1294
|
-
return '';
|
|
1295
|
-
}
|
|
1296
|
-
replace = replace ? replace : [];
|
|
1297
|
-
if (!Array.isArray(replace)) {
|
|
1298
|
-
replace = [replace];
|
|
1299
|
-
}
|
|
1300
|
-
return this._dictionaryService.get(value, upperCaseFirst, ...replace);
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
LocalizePipe.decorators = [
|
|
1304
|
-
{ type: Pipe, args: [{
|
|
1305
|
-
name: 'localize'
|
|
1306
|
-
},] }
|
|
1307
|
-
];
|
|
1308
|
-
LocalizePipe.ctorParameters = () => [
|
|
1309
|
-
{ type: DictionaryService }
|
|
1310
|
-
];
|
|
1311
|
-
|
|
1312
|
-
class PipeModule {
|
|
1313
|
-
}
|
|
1314
|
-
PipeModule.decorators = [
|
|
1315
|
-
{ type: NgModule, args: [{
|
|
1316
|
-
declarations: [
|
|
1317
|
-
LocalizePipe
|
|
1318
|
-
],
|
|
1319
|
-
providers: [
|
|
1320
|
-
LocalizePipe
|
|
1321
|
-
],
|
|
1322
|
-
exports: [
|
|
1323
|
-
LocalizePipe
|
|
1324
|
-
]
|
|
1325
|
-
},] }
|
|
1326
|
-
];
|
|
1327
|
-
|
|
1328
|
-
// import {IconModule} from '@colijnit/corecomponents';
|
|
1329
|
-
class ProductSelectorTypeModule {
|
|
1330
|
-
}
|
|
1331
|
-
ProductSelectorTypeModule.decorators = [
|
|
1332
|
-
{ type: NgModule, args: [{
|
|
1333
|
-
imports: [
|
|
1334
|
-
CommonModule,
|
|
1335
|
-
PipeModule,
|
|
1336
|
-
IconModule,
|
|
1337
|
-
/*,
|
|
1338
|
-
IconModule*/
|
|
1339
|
-
],
|
|
1340
|
-
declarations: [
|
|
1341
|
-
ProductSelectorTypeComponent
|
|
1342
|
-
],
|
|
1343
|
-
exports: [
|
|
1344
|
-
ProductSelectorTypeComponent
|
|
1345
|
-
]
|
|
1346
|
-
},] }
|
|
1347
|
-
];
|
|
1348
|
-
|
|
1349
|
-
class ImageViewModel {
|
|
1350
|
-
}
|
|
1351
|
-
class ImageCarouselComponent {
|
|
1352
|
-
constructor(_ione, _appEventService, _changeDetector, _domSanitizer) {
|
|
1353
|
-
this._ione = _ione;
|
|
1354
|
-
this._appEventService = _appEventService;
|
|
1355
|
-
this._changeDetector = _changeDetector;
|
|
1356
|
-
this._domSanitizer = _domSanitizer;
|
|
1357
|
-
this.isPopupOpen = false;
|
|
1358
|
-
this.showRefresh = false;
|
|
1359
|
-
this.resizing = false;
|
|
1360
|
-
this.imageViewModels = [];
|
|
1361
|
-
this.showLoader = false;
|
|
1362
|
-
this._currentIndex = 0;
|
|
1363
|
-
this._images = [];
|
|
1364
|
-
this._subs = [];
|
|
1365
|
-
this._resizeCanvasHeight = 500;
|
|
1366
|
-
this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
|
|
1367
|
-
this.showLoader = true;
|
|
1368
|
-
this._changeDetector.detectChanges();
|
|
1369
|
-
setTimeout(() => {
|
|
1370
|
-
this.showLoader = false;
|
|
1371
|
-
this._changeDetector.detectChanges();
|
|
1372
|
-
}, 10000);
|
|
1373
|
-
}), this._appEventService.onDraftRenderImageReceived.subscribe((event) => {
|
|
1374
|
-
if (event && event.detail) {
|
|
1375
|
-
if (this._images[0] instanceof CoDocument) {
|
|
1376
|
-
this._images.unshift(event.detail);
|
|
1377
|
-
}
|
|
1378
|
-
else {
|
|
1379
|
-
this._images[0] = event.detail;
|
|
1380
|
-
}
|
|
1381
|
-
this._loadAndRescaleImages();
|
|
1382
|
-
}
|
|
1383
|
-
this.showLoader = false;
|
|
1384
|
-
this._changeDetector.detectChanges();
|
|
1385
|
-
}));
|
|
1386
|
-
}
|
|
1387
|
-
// Close on ESC
|
|
1388
|
-
onEsc() {
|
|
1389
|
-
if (this.isPopupOpen) {
|
|
1390
|
-
this.closePopup();
|
|
1391
|
-
}
|
|
1392
|
-
}
|
|
1393
|
-
set images(value) {
|
|
1394
|
-
if (value && value.length > 0) {
|
|
1395
|
-
this._images = this._filterValidImages(value);
|
|
1396
|
-
this._loadAndRescaleImages();
|
|
1397
|
-
this._changeDetector.detectChanges();
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
get images() {
|
|
1401
|
-
return this._images;
|
|
1402
|
-
}
|
|
1403
|
-
handleWindowResize() {
|
|
1404
|
-
this.resizing = true;
|
|
1405
|
-
this._scrollCarouselToIndex();
|
|
1406
|
-
clearTimeout(this._resizeTimer);
|
|
1407
|
-
this._resizeTimer = setTimeout(() => {
|
|
1408
|
-
this.resizing = false;
|
|
1409
|
-
}, 200);
|
|
1410
|
-
}
|
|
1411
|
-
gotoNextSlide() {
|
|
1412
|
-
this.currentIndex++;
|
|
1413
|
-
}
|
|
1414
|
-
gotoPrevSlide() {
|
|
1415
|
-
this.currentIndex--;
|
|
1416
|
-
}
|
|
1417
|
-
isCurrentIndex(index) {
|
|
1418
|
-
return this.currentIndex === index;
|
|
1419
|
-
}
|
|
1420
|
-
get currentIndex() {
|
|
1421
|
-
return this._currentIndex;
|
|
1422
|
-
}
|
|
1423
|
-
set currentIndex(value) {
|
|
1424
|
-
this._currentIndex = value;
|
|
1425
|
-
this._scrollCarouselToIndex();
|
|
1426
|
-
}
|
|
1427
|
-
ngOnDestroy() {
|
|
1428
|
-
this.carousel = undefined;
|
|
1429
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
1430
|
-
}
|
|
1431
|
-
handleThumbClick(index) {
|
|
1432
|
-
this.currentIndex = index;
|
|
1433
|
-
}
|
|
1434
|
-
onForceRenderImage() {
|
|
1435
|
-
this._appEventService.onForceRenderImage.next();
|
|
1436
|
-
}
|
|
1437
|
-
handleShowImage(imageViewModel) {
|
|
1438
|
-
if (imageViewModel && imageViewModel.originalSource) {
|
|
1439
|
-
this.selectedImage = imageViewModel;
|
|
1440
|
-
this.isPopupOpen = true;
|
|
1441
|
-
this._changeDetector.markForCheck();
|
|
1442
|
-
}
|
|
1443
|
-
}
|
|
1444
|
-
closePopup() {
|
|
1445
|
-
this.isPopupOpen = false;
|
|
1446
|
-
this.selectedImage = undefined;
|
|
1447
|
-
this._changeDetector.markForCheck();
|
|
1448
|
-
}
|
|
1449
|
-
_filterValidImages(value) {
|
|
1450
|
-
if (!value) {
|
|
1451
|
-
return [];
|
|
1452
|
-
}
|
|
1453
|
-
return value.filter((doc) => {
|
|
1454
|
-
const pattern = /\.(jpg|jpeg|png|gif|bmp|tiff|webp)$/i;
|
|
1455
|
-
return typeof doc === 'string' || (pattern.test(doc.fileName) || !!doc.filePath);
|
|
1456
|
-
});
|
|
1457
|
-
}
|
|
1458
|
-
_loadAndRescaleImages() {
|
|
1459
|
-
this.imageViewModels.length = 0;
|
|
1460
|
-
if (this._images) {
|
|
1461
|
-
this._images.forEach((i) => {
|
|
1462
|
-
let imageViewModel = new ImageViewModel();
|
|
1463
|
-
imageViewModel.image = i;
|
|
1464
|
-
if (typeof i === 'string') { // is a rendered image coming from configurator
|
|
1465
|
-
this._resizeAndSanitizeSource(i, imageViewModel);
|
|
1466
|
-
}
|
|
1467
|
-
else {
|
|
1468
|
-
if (i.filePath) {
|
|
1469
|
-
this._resizeAndSanitizeSource(i.filePath, imageViewModel);
|
|
1470
|
-
}
|
|
1471
|
-
else if (i.documentBody) {
|
|
1472
|
-
this._resizeAndSanitizeSource(i.documentBodyAsDataUri, imageViewModel);
|
|
1473
|
-
}
|
|
1474
|
-
else {
|
|
1475
|
-
this._ione.getDocumentContent(i.documentId, false).then((content) => {
|
|
1476
|
-
if (content) {
|
|
1477
|
-
i.documentBody = content.documentContent;
|
|
1478
|
-
this._resizeAndSanitizeSource(i.documentBodyAsDataUri, imageViewModel);
|
|
1479
|
-
this._changeDetector.detectChanges();
|
|
1480
|
-
}
|
|
1481
|
-
});
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
this.imageViewModels.push(imageViewModel);
|
|
1485
|
-
this._changeDetector.detectChanges();
|
|
1486
|
-
});
|
|
1487
|
-
}
|
|
1488
|
-
}
|
|
1489
|
-
_resizeAndSanitizeSource(source, imageViewModel) {
|
|
1490
|
-
const resizeCanvas = document.createElement('canvas');
|
|
1491
|
-
const ctx = resizeCanvas.getContext('2d');
|
|
1492
|
-
const img = document.createElement('img');
|
|
1493
|
-
img.crossOrigin = 'anonymous';
|
|
1494
|
-
img.onload = () => {
|
|
1495
|
-
ctx.imageSmoothingEnabled = true;
|
|
1496
|
-
ctx.imageSmoothingQuality = 'high';
|
|
1497
|
-
const ow = img.width;
|
|
1498
|
-
const oh = img.height;
|
|
1499
|
-
const aspect = ow / oh;
|
|
1500
|
-
let newW = this._resizeCanvasHeight;
|
|
1501
|
-
let newH = this._resizeCanvasHeight;
|
|
1502
|
-
if (ow > oh) {
|
|
1503
|
-
newH = this._resizeCanvasHeight / aspect;
|
|
1504
|
-
}
|
|
1505
|
-
else {
|
|
1506
|
-
newW = this._resizeCanvasHeight * aspect;
|
|
1507
|
-
}
|
|
1508
|
-
resizeCanvas.width = Math.round(newW);
|
|
1509
|
-
resizeCanvas.height = Math.round(newH);
|
|
1510
|
-
// Ensure transparent background before drawing
|
|
1511
|
-
ctx.clearRect(0, 0, resizeCanvas.width, resizeCanvas.height);
|
|
1512
|
-
ctx.drawImage(img, 0, 0, resizeCanvas.width, resizeCanvas.height);
|
|
1513
|
-
const mime = this._detectPreferredMime(source);
|
|
1514
|
-
const resizedSource = mime === 'image/jpeg'
|
|
1515
|
-
? resizeCanvas.toDataURL('image/jpeg', 0.92) // only if original was JPEG
|
|
1516
|
-
: resizeCanvas.toDataURL(mime); // PNG/WebP keep alpha
|
|
1517
|
-
imageViewModel.source = this._domSanitizer.bypassSecurityTrustUrl(resizedSource);
|
|
1518
|
-
imageViewModel.originalSource = source;
|
|
1519
|
-
this._changeDetector.detectChanges();
|
|
1520
|
-
};
|
|
1521
|
-
img.src = source;
|
|
1522
|
-
}
|
|
1523
|
-
_detectPreferredMime(source) {
|
|
1524
|
-
// Data URI check
|
|
1525
|
-
const m = source.match(/^data:(image\/[a-zA-Z+.-]+);base64,/);
|
|
1526
|
-
if (m) {
|
|
1527
|
-
const t = m[1].toLowerCase();
|
|
1528
|
-
if (t === 'image/png' || t === 'image/webp' || t === 'image/jpeg')
|
|
1529
|
-
return t;
|
|
1530
|
-
}
|
|
1531
|
-
const lower = source.toLowerCase();
|
|
1532
|
-
if (lower.endsWith('.png'))
|
|
1533
|
-
return 'image/png';
|
|
1534
|
-
if (lower.endsWith('.webp'))
|
|
1535
|
-
return 'image/webp';
|
|
1536
|
-
if (lower.endsWith('.jpg') || lower.endsWith('.jpeg'))
|
|
1537
|
-
return 'image/jpeg';
|
|
1538
|
-
return 'image/png';
|
|
1539
|
-
}
|
|
1540
|
-
_scrollCarouselToIndex() {
|
|
1541
|
-
if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
|
|
1542
|
-
const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
|
|
1543
|
-
if (this.carousel && this.carousel.nativeElement) {
|
|
1544
|
-
this.carousel.nativeElement.scrollLeft = movePx;
|
|
1545
|
-
// this.carousel.nativeElement.scrollTo({
|
|
1546
|
-
// left: movePx,
|
|
1547
|
-
// behavior: 'smooth'
|
|
1548
|
-
// });
|
|
1549
|
-
}
|
|
1550
|
-
}
|
|
1551
|
-
}
|
|
1552
|
-
}
|
|
1553
|
-
ImageCarouselComponent.decorators = [
|
|
1554
|
-
{ type: Component, args: [{
|
|
1555
|
-
selector: 'app-image-carousel',
|
|
1556
|
-
template: `
|
|
1557
|
-
<div id="product_page_carousel">
|
|
1558
|
-
<div id="product_page_carousel_items">
|
|
1559
|
-
<co-loader [isShown]="true" *ngIf="showLoader"></co-loader>
|
|
1560
|
-
<div #carousel class="inner-carousel">
|
|
1561
|
-
<!-- This has been taken out of the for loop to prevent flashing images when updating. -->
|
|
1562
|
-
<div *ngIf="imageViewModels[0]" class="carousel-item" [id]="'slide-0'" [class.active]="isCurrentIndex(0)" (click)="handleShowImage(imageViewModels[0])">
|
|
1563
|
-
<img [src]="imageViewModels[0].source">
|
|
1564
|
-
</div>
|
|
1565
|
-
<div *ngFor="let imageViewModel of imageViewModels.slice(1); let index = index" class="carousel-item"
|
|
1566
|
-
[id]="'slide-' + (index + 1)" [class.active]="isCurrentIndex((index + 1))" (click)="handleShowImage(imageViewModel)">
|
|
1567
|
-
<img [src]="imageViewModel.source">
|
|
1568
|
-
</div>
|
|
1569
|
-
<div class="carousel-scroller-layer" *ngIf="imageViewModels && imageViewModels.length > 1">
|
|
1570
|
-
<div class="carousel-item-scroller prev" (click)="gotoPrevSlide()" *ngIf="currentIndex > 0"></div>
|
|
1571
|
-
<div class="carousel-item-scroller next" (click)="gotoNextSlide()" *ngIf="currentIndex < images.length - 1"></div>
|
|
1572
|
-
</div>
|
|
1573
|
-
</div>
|
|
1574
|
-
<!--
|
|
1575
|
-
<co-icon class="selector-type-icon refresh-button" [iconData]="iconCache.getIcon(icons.Refresh)" (click)="onForceRenderImage()" [class.loading]="showLoader" *ngIf="showRefresh"></co-icon>
|
|
1576
|
-
-->
|
|
1577
|
-
</div>
|
|
1578
|
-
|
|
1579
|
-
<div id="product_page_carousel_thumbs">
|
|
1580
|
-
<co-scroll-container class="scroll-container" *ngIf="imageViewModels && imageViewModels.length > 1">
|
|
1581
|
-
<div *ngFor="let imageViewModel of imageViewModels; let index = index" class="carousel-thumb"
|
|
1582
|
-
[class.active]="index === currentIndex">
|
|
1583
|
-
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)"/>
|
|
1584
|
-
</div>
|
|
1585
|
-
</co-scroll-container>
|
|
1586
|
-
</div>
|
|
1587
|
-
</div>
|
|
1588
|
-
<!-- Modal (real popup) -->
|
|
1589
|
-
<div
|
|
1590
|
-
class="image-modal"
|
|
1591
|
-
*ngIf="isPopupOpen"
|
|
1592
|
-
(click)="closePopup()"
|
|
1593
|
-
role="dialog"
|
|
1594
|
-
aria-modal="true"
|
|
1595
|
-
aria-label="Image preview"
|
|
1596
|
-
>
|
|
1597
|
-
<div class="image-modal__content" (click)="$event.stopPropagation()">
|
|
1598
|
-
<button
|
|
1599
|
-
class="image-modal__close"
|
|
1600
|
-
type="button"
|
|
1601
|
-
aria-label="Close"
|
|
1602
|
-
(click)="closePopup()"
|
|
1603
|
-
>
|
|
1604
|
-
×
|
|
1605
|
-
</button>
|
|
1606
|
-
|
|
1607
|
-
<img [src]="selectedImage?.originalSource" alt="Image preview" />
|
|
1608
|
-
</div>
|
|
1609
|
-
</div>
|
|
1610
|
-
`,
|
|
1611
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1612
|
-
styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}.image-modal{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000}.image-modal__content{position:relative;max-width:90vw;max-height:90vh}.image-modal__content img{max-width:90vw;max-height:90vh;-o-object-fit:contain;object-fit:contain;display:block}.image-modal__close{position:fixed;top:15px;right:30px;background:transparent;border:none;color:#fff;font-size:60px;line-height:1;cursor:pointer}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
|
|
1613
|
-
},] }
|
|
1614
|
-
];
|
|
1615
|
-
ImageCarouselComponent.ctorParameters = () => [
|
|
1616
|
-
{ type: ProductConnectorService },
|
|
1617
|
-
{ type: ProductEventService },
|
|
1618
|
-
{ type: ChangeDetectorRef },
|
|
1619
|
-
{ type: DomSanitizer }
|
|
1620
|
-
];
|
|
1621
|
-
ImageCarouselComponent.propDecorators = {
|
|
1622
|
-
carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
|
|
1623
|
-
onEsc: [{ type: HostListener, args: ['document:keydown.escape',] }],
|
|
1624
|
-
showRefresh: [{ type: Input }],
|
|
1625
|
-
images: [{ type: Input }],
|
|
1626
|
-
handleWindowResize: [{ type: HostListener, args: ['window:resize',] }],
|
|
1627
|
-
gotoNextSlide: [{ type: HostListener, args: ['swipeleft',] }],
|
|
1628
|
-
gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
|
|
1629
|
-
resizing: [{ type: HostBinding, args: ['class.resizing',] }]
|
|
1630
|
-
};
|
|
1631
|
-
|
|
1632
|
-
class ImageCarouselModule {
|
|
1633
|
-
}
|
|
1634
|
-
ImageCarouselModule.decorators = [
|
|
1635
|
-
{ type: NgModule, args: [{
|
|
1636
|
-
imports: [
|
|
1637
|
-
CommonModule,
|
|
1638
|
-
LoaderModule,
|
|
1639
|
-
// IconModule,
|
|
1640
|
-
ScrollContainerModule
|
|
1641
|
-
],
|
|
1642
|
-
declarations: [
|
|
1643
|
-
ImageCarouselComponent
|
|
1644
|
-
],
|
|
1645
|
-
exports: [
|
|
1646
|
-
ImageCarouselComponent
|
|
1647
|
-
]
|
|
1648
|
-
},] }
|
|
1649
|
-
];
|
|
1650
|
-
|
|
1651
|
-
class ProductDescriptionComponent {
|
|
1652
|
-
constructor() { }
|
|
1653
|
-
ngOnInit() {
|
|
1654
|
-
}
|
|
1655
|
-
}
|
|
1656
|
-
ProductDescriptionComponent.decorators = [
|
|
1657
|
-
{ type: Component, args: [{
|
|
1658
|
-
selector: 'app-product-description',
|
|
1659
|
-
template: `
|
|
1660
|
-
<div class="pd-title-wrapper">
|
|
1661
|
-
<span class="pd-description" [textContent]="article?.descriptionRetail" *ngIf="article?.descriptionRetail"></span>
|
|
1662
|
-
<span class="pd-sku" [textContent]="article?.articleNr" *ngIf="article?.articleNr"></span>
|
|
1663
|
-
</div>
|
|
1664
|
-
`,
|
|
1665
|
-
styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:bold;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width: 650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}\n"]
|
|
1666
|
-
},] }
|
|
1667
|
-
];
|
|
1668
|
-
ProductDescriptionComponent.ctorParameters = () => [];
|
|
1669
|
-
ProductDescriptionComponent.propDecorators = {
|
|
1670
|
-
article: [{ type: Input }]
|
|
1671
|
-
};
|
|
1672
|
-
|
|
1673
|
-
class ProductDescriptionModule {
|
|
1674
|
-
}
|
|
1675
|
-
ProductDescriptionModule.decorators = [
|
|
1676
|
-
{ type: NgModule, args: [{
|
|
1677
|
-
imports: [
|
|
1678
|
-
CommonModule
|
|
1679
|
-
],
|
|
1680
|
-
declarations: [
|
|
1681
|
-
ProductDescriptionComponent
|
|
1682
|
-
],
|
|
1683
|
-
exports: [
|
|
1684
|
-
ProductDescriptionComponent
|
|
1685
|
-
]
|
|
1686
|
-
},] }
|
|
1687
|
-
];
|
|
1688
|
-
|
|
1689
|
-
class BitUtils {
|
|
1690
|
-
static IsShortDescription(bit) {
|
|
1691
|
-
return (1 & bit) > 0;
|
|
1692
|
-
}
|
|
1693
|
-
static IsFullDescription(bit) {
|
|
1694
|
-
return (2 & bit) > 0;
|
|
1695
|
-
}
|
|
1696
|
-
static IsMetaTitle(bit) {
|
|
1697
|
-
return (4 & bit) > 0;
|
|
1698
|
-
}
|
|
1699
|
-
static IsMetaDescription(bit) {
|
|
1700
|
-
return (8 & bit) > 0;
|
|
1701
|
-
}
|
|
1702
|
-
static IsMetaKeys(bit) {
|
|
1703
|
-
return (16 & bit) > 0;
|
|
1704
|
-
}
|
|
1705
|
-
}
|
|
1706
|
-
|
|
1707
|
-
class ProductAdditionalDescriptionComponent {
|
|
1708
|
-
constructor(_appEventService) {
|
|
1709
|
-
this._appEventService = _appEventService;
|
|
1710
|
-
}
|
|
1711
|
-
set article(value) {
|
|
1712
|
-
this._article = value;
|
|
1713
|
-
if (this._article) {
|
|
1714
|
-
this.description = this.article.additionalDescription;
|
|
1715
|
-
this._prepareDescription();
|
|
1716
|
-
}
|
|
1717
|
-
}
|
|
1718
|
-
get article() {
|
|
1719
|
-
return this._article;
|
|
1720
|
-
}
|
|
1721
|
-
ngOnInit() {
|
|
1722
|
-
}
|
|
1723
|
-
onReadMore() {
|
|
1724
|
-
this._appEventService.onUpdateProductInfoTab.next(0);
|
|
1725
|
-
}
|
|
1726
|
-
_prepareDescription() {
|
|
1727
|
-
this.description = '';
|
|
1728
|
-
if (this.article.texts && this.article.texts.length > 0) {
|
|
1729
|
-
this.article.texts.forEach((txt) => {
|
|
1730
|
-
if (BitUtils.IsShortDescription(txt.publication)) {
|
|
1731
|
-
this.description += txt.text;
|
|
1732
|
-
}
|
|
1733
|
-
});
|
|
1734
|
-
this.description = this.description.replace(/<[^>]*>?/gm, '');
|
|
1735
|
-
if (this.description.length > 250) {
|
|
1736
|
-
this.description = this.description.substr(0, 250) + ' [..]';
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
}
|
|
1740
|
-
}
|
|
1741
|
-
ProductAdditionalDescriptionComponent.decorators = [
|
|
1742
|
-
{ type: Component, args: [{
|
|
1743
|
-
selector: 'app-product-additional-description',
|
|
1744
|
-
template: `
|
|
1745
|
-
<ng-container *ngIf="description !== ''">
|
|
1746
|
-
<div class="pd-additional-description">
|
|
1747
|
-
<p [innerHTML]="description"></p>
|
|
1748
|
-
<button class="pd-read-more-btn" [textContent]="'READ_MORE' | localize" (click)="onReadMore()"></button>
|
|
1749
|
-
</div>
|
|
1750
|
-
</ng-container>
|
|
1751
|
-
`,
|
|
1752
|
-
styles: [":host{display:block;padding-top:0!important}:host *:focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:transparent;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width: 650px){:host .pd-additional-description{font-size:12px}}\n"]
|
|
1753
|
-
},] }
|
|
1754
|
-
];
|
|
1755
|
-
ProductAdditionalDescriptionComponent.ctorParameters = () => [
|
|
1756
|
-
{ type: ProductEventService }
|
|
1757
|
-
];
|
|
1758
|
-
ProductAdditionalDescriptionComponent.propDecorators = {
|
|
1759
|
-
article: [{ type: Input }]
|
|
1760
|
-
};
|
|
1761
|
-
|
|
1762
|
-
class ProductAdditionalDescriptionModule {
|
|
1763
|
-
}
|
|
1764
|
-
ProductAdditionalDescriptionModule.decorators = [
|
|
1765
|
-
{ type: NgModule, args: [{
|
|
1766
|
-
imports: [
|
|
1767
|
-
CommonModule,
|
|
1768
|
-
PipeModule
|
|
1769
|
-
],
|
|
1770
|
-
declarations: [
|
|
1771
|
-
ProductAdditionalDescriptionComponent
|
|
1772
|
-
],
|
|
1773
|
-
exports: [
|
|
1774
|
-
ProductAdditionalDescriptionComponent
|
|
1775
|
-
]
|
|
1776
|
-
},] }
|
|
1777
|
-
];
|
|
1778
|
-
|
|
1779
|
-
class ProductPriceComponent {
|
|
1780
|
-
constructor(_changeDetector) {
|
|
1781
|
-
this._changeDetector = _changeDetector;
|
|
1782
|
-
this.showFromPrice = false;
|
|
1783
|
-
this._configurable = false;
|
|
1784
|
-
}
|
|
1785
|
-
set pricing(value) {
|
|
1786
|
-
this._pricing = value;
|
|
1787
|
-
this._setPrices();
|
|
1788
|
-
}
|
|
1789
|
-
get pricing() {
|
|
1790
|
-
return this._pricing;
|
|
1791
|
-
}
|
|
1792
|
-
set configurable(value) {
|
|
1793
|
-
this._configurable = value;
|
|
1794
|
-
this._setPrices();
|
|
1795
|
-
}
|
|
1796
|
-
ngOnInit() {
|
|
1797
|
-
}
|
|
1798
|
-
_setPrices() {
|
|
1799
|
-
if (this._pricing) {
|
|
1800
|
-
this.valutaSign = this._getSign(this._pricing.retailCurrency);
|
|
1801
|
-
if (this._configurable) {
|
|
1802
|
-
this.fromPrice = this._pricing.retailBasePrice ? this._pricing.retailBasePrice : this._pricing.priceBaseline;
|
|
1803
|
-
this.fromLabel = this._pricing.retailBasePrice ? 'PRICE' : 'FROM';
|
|
1804
|
-
this.toPrice = undefined;
|
|
1805
|
-
this.toLabel = '';
|
|
1806
|
-
}
|
|
1807
|
-
else {
|
|
1808
|
-
const hasSuggested = this._pricing.retailSuggestedPrice !== undefined && this._pricing.retailSuggestedPrice !== null;
|
|
1809
|
-
this.fromPrice = hasSuggested ? this._pricing.retailSuggestedPrice : this._pricing.retailBasePrice;
|
|
1810
|
-
this.fromLabel = hasSuggested ? 'Was' : 'PRICE';
|
|
1811
|
-
// Always set toPrice to base price
|
|
1812
|
-
this.toPrice = this._pricing.retailBasePrice;
|
|
1813
|
-
this.toLabel = hasSuggested ? 'IS_NOW' : 'PRICE';
|
|
1814
|
-
}
|
|
1815
|
-
this._changeDetector.detectChanges();
|
|
1816
|
-
}
|
|
1817
|
-
}
|
|
1818
|
-
_getSign(currency) {
|
|
1819
|
-
switch (currency) {
|
|
1820
|
-
case 'EUR':
|
|
1821
|
-
return '€';
|
|
1822
|
-
default:
|
|
1823
|
-
return '€';
|
|
1824
|
-
}
|
|
1825
|
-
}
|
|
1826
|
-
}
|
|
1827
|
-
ProductPriceComponent.decorators = [
|
|
1828
|
-
{ type: Component, args: [{
|
|
1829
|
-
selector: 'app-product-price',
|
|
1830
|
-
template: `
|
|
1831
|
-
<div *ngIf="toPrice">
|
|
1832
|
-
<div class="price-wrapper" *ngIf="fromPrice > toPrice">
|
|
1833
|
-
<div class="from-price-label" [textContent]="fromLabel | localize"></div>
|
|
1834
|
-
<div class="from-price" [textContent]="fromPrice | priceDisplay: valutaSign"></div>
|
|
1835
|
-
</div>
|
|
1836
|
-
<div class="price-wrapper">
|
|
1837
|
-
<div class="to-price-label" [textContent]="toLabel | localize"></div>
|
|
1838
|
-
<div class="to-price" [textContent]="toPrice | priceDisplay: valutaSign"></div>
|
|
1839
|
-
</div>
|
|
1840
|
-
</div>
|
|
1841
|
-
`,
|
|
1842
|
-
styles: [":host{display:flex;flex-direction:column}.price-wrapper{width:100%;font-size:15px;margin:0 0 5px;display:inline-block}.price-wrapper:last-child{margin:0}.from-price-label,.to-price-label{color:#5b6875;display:none}.from-price{font-size:16px;font-weight:bold;text-decoration:line-through;color:#5b6875}.to-price{font-size:25px;font-weight:bold;color:#74b77f}@media screen and (max-width: 650px){.from-price{font-size:13px}.to-price{font-size:21px}}\n"]
|
|
1843
|
-
},] }
|
|
1844
|
-
];
|
|
1845
|
-
ProductPriceComponent.ctorParameters = () => [
|
|
1846
|
-
{ type: ChangeDetectorRef }
|
|
1847
|
-
];
|
|
1848
|
-
ProductPriceComponent.propDecorators = {
|
|
1849
|
-
pricing: [{ type: Input }],
|
|
1850
|
-
configurable: [{ type: Input }]
|
|
1851
|
-
};
|
|
1852
|
-
|
|
1853
|
-
class ProductPriceModule {
|
|
1854
|
-
}
|
|
1855
|
-
ProductPriceModule.decorators = [
|
|
1856
|
-
{ type: NgModule, args: [{
|
|
1857
|
-
imports: [
|
|
1858
|
-
CommonModule,
|
|
1859
|
-
PipeModule,
|
|
1860
|
-
PriceDisplayPipeModule
|
|
1861
|
-
],
|
|
1862
|
-
declarations: [
|
|
1863
|
-
ProductPriceComponent
|
|
1864
|
-
],
|
|
1865
|
-
exports: [
|
|
1866
|
-
ProductPriceComponent
|
|
1867
|
-
]
|
|
1868
|
-
},] }
|
|
1869
|
-
];
|
|
1870
|
-
|
|
1871
|
-
class ProductAddtocartComponent {
|
|
1872
|
-
constructor(iconCache, _ioneControllerService, _appEventService, _settingsService, _productConnectorAdapterService) {
|
|
1873
|
-
this.iconCache = iconCache;
|
|
1874
|
-
this._ioneControllerService = _ioneControllerService;
|
|
1875
|
-
this._appEventService = _appEventService;
|
|
1876
|
-
this._settingsService = _settingsService;
|
|
1877
|
-
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
1878
|
-
this.icon = IconEnum;
|
|
1879
|
-
this.createFrozenArticle = true;
|
|
1880
|
-
this.configurable = false;
|
|
1881
|
-
this.configuring = false;
|
|
1882
|
-
this.showAddToCart = false;
|
|
1883
|
-
this.isReturn = false;
|
|
1884
|
-
this.fullscreen = false;
|
|
1885
|
-
this.startConfiguration = new EventEmitter();
|
|
1886
|
-
this.addToCartClick = new EventEmitter();
|
|
1887
|
-
this.addToQuoteClick = new EventEmitter();
|
|
1888
|
-
this.showRelatedPopup = new EventEmitter();
|
|
1889
|
-
this.showQuoteButton = false;
|
|
1890
|
-
this._quantity = 1;
|
|
1891
|
-
}
|
|
1892
|
-
set quantity(value) {
|
|
1893
|
-
if (this.isReturn) {
|
|
1894
|
-
if (this._quantity === 1) {
|
|
1895
|
-
this._quantity = -1;
|
|
1896
|
-
}
|
|
1897
|
-
else {
|
|
1898
|
-
this._quantity = value;
|
|
1899
|
-
}
|
|
1900
|
-
}
|
|
1901
|
-
else {
|
|
1902
|
-
this._quantity = Math.max(1, value);
|
|
1903
|
-
}
|
|
1904
|
-
}
|
|
1905
|
-
get quantity() {
|
|
1906
|
-
return this._quantity;
|
|
1907
|
-
}
|
|
1908
|
-
ngOnInit() {
|
|
1909
|
-
}
|
|
1910
|
-
ngOnDestroy() {
|
|
1911
|
-
this.addToCartButton = undefined;
|
|
1912
|
-
}
|
|
1913
|
-
handleAddToCartClick(quantity) {
|
|
1914
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1915
|
-
if (this.createFrozenArticle) {
|
|
1916
|
-
if (this.article.goodType === 'B') {
|
|
1917
|
-
if (this.article.isConfigurable) {
|
|
1918
|
-
const article = yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity });
|
|
1919
|
-
if (article) {
|
|
1920
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
1921
|
-
}
|
|
1922
|
-
}
|
|
1923
|
-
else {
|
|
1924
|
-
yield this._handleGeneratedArticleDirectly(quantity);
|
|
1925
|
-
}
|
|
1926
|
-
}
|
|
1927
|
-
else {
|
|
1928
|
-
let article;
|
|
1929
|
-
if (!!this.externalSource) {
|
|
1930
|
-
article = yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity });
|
|
1931
|
-
}
|
|
1932
|
-
else {
|
|
1933
|
-
article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(this.article);
|
|
1934
|
-
}
|
|
1935
|
-
if (article) {
|
|
1936
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
1937
|
-
}
|
|
1938
|
-
}
|
|
1939
|
-
}
|
|
1940
|
-
else {
|
|
1941
|
-
if (this.article.goodType === 'B') {
|
|
1942
|
-
if (!this.article.isConfigurable) {
|
|
1943
|
-
yield this._handleGeneratedArticleDirectly(quantity);
|
|
1944
|
-
}
|
|
1945
|
-
}
|
|
1946
|
-
else {
|
|
1947
|
-
const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(this.article);
|
|
1948
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
1949
|
-
}
|
|
1950
|
-
}
|
|
1951
|
-
});
|
|
1952
|
-
}
|
|
1953
|
-
handleAddToQuoteClick(quantity) {
|
|
1954
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1955
|
-
this._appEventService.onAddToQuote.next(yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity }));
|
|
1956
|
-
});
|
|
1957
|
-
}
|
|
1958
|
-
_getJSONFromArticleObject(article) {
|
|
1959
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1960
|
-
const configuratorStatistics = new ConfiguratorStatisticsEnvironment();
|
|
1961
|
-
configuratorStatistics.userType = 'iOneProductPage';
|
|
1962
|
-
configuratorStatistics.transactionType = 'Sales';
|
|
1963
|
-
configuratorStatistics.actionDomain = 'bundle';
|
|
1964
|
-
configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';
|
|
1965
|
-
configuratorStatistics.webHost = window.location.host;
|
|
1966
|
-
configuratorStatistics.bundleHost = window.location.host;
|
|
1967
|
-
return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, !!this.externalSource, true, configuratorStatistics);
|
|
1968
|
-
});
|
|
1969
|
-
}
|
|
1970
|
-
_handleGeneratedArticleDirectly(quantity) {
|
|
1971
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1972
|
-
const generatedGoodId = yield this._getGeneratedArtDirectly(this.article.goodId);
|
|
1973
|
-
if (generatedGoodId) {
|
|
1974
|
-
const articleFull = yield this._productConnectorAdapterService.getArticleFullObject(generatedGoodId, true);
|
|
1975
|
-
const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(articleFull);
|
|
1976
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
1977
|
-
}
|
|
1978
|
-
});
|
|
1979
|
-
}
|
|
1980
|
-
_getGeneratedArtDirectly(goodId) {
|
|
1981
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1982
|
-
return yield this._ioneControllerService.getGeneratedArtDirectly(goodId, true);
|
|
1983
|
-
});
|
|
1984
|
-
}
|
|
1985
|
-
}
|
|
1986
|
-
ProductAddtocartComponent.decorators = [
|
|
1987
|
-
{ type: Component, args: [{
|
|
1988
|
-
selector: 'app-product-addtocart',
|
|
1989
|
-
template: `
|
|
1990
|
-
<div class="atc-wrapper">
|
|
1991
|
-
<ng-container *ngIf="isReturn">
|
|
1992
|
-
<co-number-picker *ngIf="!configurable && !configuring" class="quantity-select" [(model)]="quantity" [min]="-100" horizontal></co-number-picker>
|
|
1993
|
-
</ng-container>
|
|
1994
|
-
|
|
1995
|
-
<ng-container *ngIf="!isReturn">
|
|
1996
|
-
<co-number-picker *ngIf="!configurable && !configuring" class="quantity-select" [(model)]="quantity" [min]="1" horizontal></co-number-picker>
|
|
1997
|
-
</ng-container>
|
|
1998
|
-
|
|
1999
|
-
<div class="button-wrapper" *ngIf="configurable">
|
|
2000
|
-
<co-button class="configure-button"
|
|
2001
|
-
[iconData]="iconCache.getIcon(icon.MagicWand)"
|
|
2002
|
-
[label]="'CONFIGURE' | localize"
|
|
2003
|
-
(onClick)="startConfiguration.emit()"
|
|
2004
|
-
></co-button>
|
|
2005
|
-
</div>
|
|
2006
|
-
<div class="button-wrapper" *ngIf="showAddToCart && !configurable">
|
|
2007
|
-
<co-button #addtocartbutton class="cart-button"
|
|
2008
|
-
[iconData]="iconCache.getIcon(icon.AddToCartDrop)"
|
|
2009
|
-
[label]="'SHOPPING_CART_IN' | localize"
|
|
2010
|
-
(onClick)="handleAddToCartClick(quantity)"
|
|
2011
|
-
></co-button>
|
|
2012
|
-
<co-button class="cart-button quote" *ngIf="showQuoteButton"
|
|
2013
|
-
[iconData]="iconCache.getIcon(icon.Quote)"
|
|
2014
|
-
[label]="'QUOTATION' | localize"
|
|
2015
|
-
(onClick)="handleAddToQuoteClick(quantity)"
|
|
2016
|
-
></co-button>
|
|
2017
|
-
</div>
|
|
2018
|
-
</div>
|
|
2019
|
-
`,
|
|
2020
|
-
styles: [":host{display:flex;flex-direction:column}:host *:not(:last-child){margin-bottom:5px}:host .atc-wrapper{display:flex;flex-direction:row;align-items:baseline}:host .atc-wrapper .quantity-select{margin-right:5px}:host.full-screen .cart-button{position:fixed;right:20px;bottom:20px;z-index:3}::ng-deep co-number-picker{max-width:100px;border:2px solid #f6f5f4;border-radius:5px}::ng-deep co-number-picker ::ng-deep co-input-text{height:50px!important;border:none!important;width:50px!important}::ng-deep co-number-picker ::ng-deep co-input-text:after{display:none}::ng-deep co-number-picker ::ng-deep co-input-text.focused{box-shadow:none!important;border:none!important;background:none!important}::ng-deep co-number-picker ::ng-deep co-input-text .clear-icon{display:none}::ng-deep co-number-picker ::ng-deep co-input-text input{width:100%;text-align:center}::ng-deep co-number-picker ::ng-deep co-button{justify-content:center;padding:0!important;margin:0!important;height:50px!important;background-color:transparent!important}::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon [fill]{fill:#22313c!important}.button-wrapper ::ng-deep co-button{height:50px;max-width:300px;justify-content:center;font-size:15px;border-radius:5px!important;cursor:pointer;padding:0 20px!important}.button-wrapper ::ng-deep co-button:hover{background:#74B77F}::ng-deep co-button.cart-button{border-radius:5px}::ng-deep co-button.cart-button.quote{background:#7292b6}\n"]
|
|
2021
|
-
},] }
|
|
2022
|
-
];
|
|
2023
|
-
ProductAddtocartComponent.ctorParameters = () => [
|
|
2024
|
-
{ type: IconCacheService },
|
|
2025
|
-
{ type: ProductConnectorService },
|
|
2026
|
-
{ type: ProductEventService },
|
|
2027
|
-
{ type: ProductSettingsService },
|
|
2028
|
-
{ type: ProductConnectorAdapterService }
|
|
2029
|
-
];
|
|
2030
|
-
ProductAddtocartComponent.propDecorators = {
|
|
2031
|
-
addToCartButton: [{ type: ViewChild, args: ['addtocartbutton', { read: ElementRef },] }],
|
|
2032
|
-
article: [{ type: Input }],
|
|
2033
|
-
externalSource: [{ type: Input }],
|
|
2034
|
-
createFrozenArticle: [{ type: Input }],
|
|
2035
|
-
configurable: [{ type: Input }],
|
|
2036
|
-
configuring: [{ type: Input }],
|
|
2037
|
-
showAddToCart: [{ type: Input }],
|
|
2038
|
-
isReturn: [{ type: Input }],
|
|
2039
|
-
fullscreen: [{ type: HostBinding, args: ['class.full-screen',] }, { type: Input }],
|
|
2040
|
-
quantity: [{ type: Input }],
|
|
2041
|
-
startConfiguration: [{ type: Output }],
|
|
2042
|
-
addToCartClick: [{ type: Output }],
|
|
2043
|
-
addToQuoteClick: [{ type: Output }],
|
|
2044
|
-
showRelatedPopup: [{ type: Output }]
|
|
2045
|
-
};
|
|
2046
|
-
|
|
2047
|
-
class ProductAddtocartModule {
|
|
2048
|
-
}
|
|
2049
|
-
ProductAddtocartModule.decorators = [
|
|
2050
|
-
{ type: NgModule, args: [{
|
|
2051
|
-
imports: [
|
|
2052
|
-
CommonModule,
|
|
2053
|
-
NumberPickerModule,
|
|
2054
|
-
ButtonModule,
|
|
2055
|
-
PipeModule,
|
|
2056
|
-
LoaderModule$1
|
|
2057
|
-
],
|
|
2058
|
-
declarations: [
|
|
2059
|
-
ProductAddtocartComponent
|
|
2060
|
-
],
|
|
2061
|
-
exports: [
|
|
2062
|
-
ProductAddtocartComponent
|
|
2063
|
-
]
|
|
2064
|
-
},] }
|
|
2065
|
-
];
|
|
2066
|
-
|
|
2067
|
-
class ArticleViewModel {
|
|
2068
|
-
constructor(article, imageData) {
|
|
2069
|
-
this.article = article;
|
|
2070
|
-
if (imageData) {
|
|
2071
|
-
this.imageData = imageData;
|
|
2072
|
-
}
|
|
2073
|
-
}
|
|
2074
|
-
}
|
|
2075
|
-
class ProductRelatedComponent {
|
|
2076
|
-
constructor(_iOne, _appEventService, _productConnectorAdapterService, _settingsService) {
|
|
2077
|
-
this._iOne = _iOne;
|
|
2078
|
-
this._appEventService = _appEventService;
|
|
2079
|
-
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
2080
|
-
this._settingsService = _settingsService;
|
|
2081
|
-
this.isSmallModus = true;
|
|
2082
|
-
this.createFrozenArticle = true;
|
|
2083
|
-
this.articleViewModels = [];
|
|
2084
|
-
this._articles = [];
|
|
2085
|
-
}
|
|
2086
|
-
set articles(value) {
|
|
2087
|
-
if (value) {
|
|
2088
|
-
if (this.refType && this.refType !== undefined) {
|
|
2089
|
-
if (value.length > 0) {
|
|
2090
|
-
value.forEach((x) => {
|
|
2091
|
-
if (x.refType === this.refType) {
|
|
2092
|
-
this._articles.push(x);
|
|
2093
|
-
}
|
|
2094
|
-
});
|
|
2095
|
-
}
|
|
2096
|
-
}
|
|
2097
|
-
else {
|
|
2098
|
-
this._articles = value;
|
|
2099
|
-
}
|
|
2100
|
-
this.articleViewModels.length = 0;
|
|
2101
|
-
this._articles.forEach(a => this.articleViewModels.push(new ArticleViewModel(a)));
|
|
2102
|
-
this._loadImages();
|
|
2103
|
-
}
|
|
2104
|
-
}
|
|
2105
|
-
get articles() {
|
|
2106
|
-
return this._articles;
|
|
2107
|
-
}
|
|
2108
|
-
handleContentClick(article) {
|
|
2109
|
-
this._appEventService.onAlternativeClick.next(article);
|
|
2110
|
-
}
|
|
2111
|
-
handleAddToCartClick(article) {
|
|
2112
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2113
|
-
const quantity = 1;
|
|
2114
|
-
const articleFull = yield this._productConnectorAdapterService.getArticleFullObject(article.goodId, true);
|
|
2115
|
-
if (articleFull) {
|
|
2116
|
-
if (this.createFrozenArticle) {
|
|
2117
|
-
const article = this._iOne.convertArticleFullObjectToArticleExtended(articleFull);
|
|
2118
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
2119
|
-
// this._appEventService.onAddToCart.next({ article: await this._getJSONFromArticleObject({article: articleFull, quantity: quantity}), quantity: quantity });
|
|
2120
|
-
}
|
|
2121
|
-
else {
|
|
2122
|
-
const article = this._iOne.convertArticleFullObjectToArticleExtended(articleFull);
|
|
2123
|
-
this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
|
|
2124
|
-
}
|
|
2125
|
-
}
|
|
2126
|
-
});
|
|
2127
|
-
}
|
|
2128
|
-
handleConfigureButtonClick(article) {
|
|
2129
|
-
}
|
|
2130
|
-
handleThreeDButtonClick(article) {
|
|
2131
|
-
}
|
|
2132
|
-
_getJSONFromArticleObject(article) {
|
|
2133
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2134
|
-
const configuratorStatistics = new ConfiguratorStatisticsEnvironment();
|
|
2135
|
-
configuratorStatistics.userType = 'iOneProductPage';
|
|
2136
|
-
configuratorStatistics.transactionType = 'Sales';
|
|
2137
|
-
configuratorStatistics.actionDomain = 'bundle';
|
|
2138
|
-
configuratorStatistics.sessionId = this._settingsService.settings.session ? this._settingsService.settings.session.sessionId : 'unknown';
|
|
2139
|
-
configuratorStatistics.webHost = window.location.host;
|
|
2140
|
-
configuratorStatistics.bundleHost = window.location.host;
|
|
2141
|
-
return yield this._iOne.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, !!this.externalSource, true, configuratorStatistics);
|
|
2142
|
-
});
|
|
2143
|
-
}
|
|
2144
|
-
_loadImages() {
|
|
2145
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2146
|
-
this.articleViewModels.forEach(avm => {
|
|
2147
|
-
if (avm.article.image) {
|
|
2148
|
-
this._iOne.getImageForCoDocument(avm.article.image, false).then(imageContent => avm.imageData = imageContent.image);
|
|
2149
|
-
}
|
|
2150
|
-
});
|
|
2151
|
-
});
|
|
2152
|
-
}
|
|
2153
|
-
}
|
|
2154
|
-
ProductRelatedComponent.decorators = [
|
|
2155
|
-
{ type: Component, args: [{
|
|
2156
|
-
selector: 'app-product-related',
|
|
2157
|
-
template: `
|
|
2158
|
-
<div *ngIf="articles && articles.length > 0">
|
|
2159
|
-
<app-header [label]="label" [amount]="articles?.length" *ngIf="label"></app-header>
|
|
2160
|
-
<co-scroll-container>
|
|
2161
|
-
<div class="article-wrapper" *ngFor="let articleViewModel of articleViewModels">
|
|
2162
|
-
<co-article-tile
|
|
2163
|
-
[imageData]="articleViewModel.imageData"
|
|
2164
|
-
[description]="articleViewModel.article.description"
|
|
2165
|
-
[price]="articleViewModel.article.price"
|
|
2166
|
-
[level]="articleViewModel.article.stockStatus"
|
|
2167
|
-
[hasCartButton]="true"
|
|
2168
|
-
[isSmallModus]="isSmallModus"
|
|
2169
|
-
[hasConfigureButton]="articleViewModel.article.goodType === 'B'"
|
|
2170
|
-
(contentClick)="handleContentClick(articleViewModel.article)"
|
|
2171
|
-
(cartButtonClick)="handleAddToCartClick(articleViewModel.article)"
|
|
2172
|
-
(configureButtonClick)="handleContentClick(articleViewModel.article)"
|
|
2173
|
-
(threeDButtonClick)="handleThreeDButtonClick(articleViewModel.article)"
|
|
2174
|
-
></co-article-tile>
|
|
2175
|
-
</div>
|
|
2176
|
-
</co-scroll-container>
|
|
2177
|
-
</div>
|
|
2178
|
-
`,
|
|
2179
|
-
styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row;flex:1;min-width:25%}.article-wrapper ::ng-deep co-tile{transition:all .14s ease-out;border:1px solid transparent;padding:10px 20px;display:flex;flex-direction:column;color:#171721;justify-content:space-between}.article-wrapper ::ng-deep co-tile .price{display:block}.article-wrapper ::ng-deep co-tile .description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;height:30px}.article-wrapper ::ng-deep co-tile .tile-bottom{display:flex;flex-direction:column;grid-gap:5px;gap:5px}.article-wrapper ::ng-deep co-tile:hover{border:1px solid #DCE4EA}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon{width:24px;height:24px}.article-wrapper ::ng-deep co-tile .tile-extra-bottom co-button co-icon svg [fill]{fill:#fff}.article-wrapper ::ng-deep co-tile.small{max-width:189px;width:100%;height:100%;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:none!important;padding-bottom:0;overflow:hidden;grid-gap:10px;gap:10px;display:flex;flex-direction:column}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-extra-bottom ::ng-deep co-button.card-button.mini{pointer-events:all;padding:0!important;font-size:0;width:42px;height:42px;text-align:center;margin:0;border-radius:100%;background:#3E7EFF;cursor:pointer;place-content:center;color:#fff}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-extra-bottom ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:none!important;background:transparent!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}\n"]
|
|
2180
|
-
},] }
|
|
2181
|
-
];
|
|
2182
|
-
ProductRelatedComponent.ctorParameters = () => [
|
|
2183
|
-
{ type: ProductConnectorService },
|
|
2184
|
-
{ type: ProductEventService },
|
|
2185
|
-
{ type: ProductConnectorAdapterService },
|
|
2186
|
-
{ type: ProductSettingsService }
|
|
2187
|
-
];
|
|
2188
|
-
ProductRelatedComponent.propDecorators = {
|
|
2189
|
-
refType: [{ type: Input }],
|
|
2190
|
-
label: [{ type: Input }],
|
|
2191
|
-
externalSource: [{ type: Input }],
|
|
2192
|
-
isSmallModus: [{ type: Input }],
|
|
2193
|
-
createFrozenArticle: [{ type: Input }],
|
|
2194
|
-
articles: [{ type: Input }]
|
|
2195
|
-
};
|
|
2196
|
-
|
|
2197
|
-
class HeaderComponent {
|
|
2198
|
-
constructor() { }
|
|
2199
|
-
ngOnInit() {
|
|
2200
|
-
}
|
|
2201
|
-
}
|
|
2202
|
-
HeaderComponent.decorators = [
|
|
2203
|
-
{ type: Component, args: [{
|
|
2204
|
-
selector: 'app-header',
|
|
2205
|
-
template: `
|
|
2206
|
-
<ng-container *ngIf="label">
|
|
2207
|
-
<div class="header-wrapper">
|
|
2208
|
-
<h3 [textContent]="label"></h3>
|
|
2209
|
-
<span *ngIf="amount" class="amount" [textContent]="'(' + amount + ')'"></span>
|
|
2210
|
-
</div>
|
|
2211
|
-
</ng-container>
|
|
2212
|
-
`,
|
|
2213
|
-
styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}\n"]
|
|
2214
|
-
},] }
|
|
2215
|
-
];
|
|
2216
|
-
HeaderComponent.ctorParameters = () => [];
|
|
2217
|
-
HeaderComponent.propDecorators = {
|
|
2218
|
-
label: [{ type: Input }],
|
|
2219
|
-
amount: [{ type: Input }]
|
|
2220
|
-
};
|
|
2221
|
-
|
|
2222
|
-
class HeaderModule {
|
|
2223
|
-
}
|
|
2224
|
-
HeaderModule.decorators = [
|
|
2225
|
-
{ type: NgModule, args: [{
|
|
2226
|
-
imports: [
|
|
2227
|
-
CommonModule
|
|
2228
|
-
],
|
|
2229
|
-
declarations: [
|
|
2230
|
-
HeaderComponent
|
|
2231
|
-
],
|
|
2232
|
-
exports: [
|
|
2233
|
-
HeaderComponent
|
|
2234
|
-
]
|
|
2235
|
-
},] }
|
|
2236
|
-
];
|
|
2237
|
-
|
|
2238
|
-
class ProductRelatedModule {
|
|
2239
|
-
}
|
|
2240
|
-
ProductRelatedModule.decorators = [
|
|
2241
|
-
{ type: NgModule, args: [{
|
|
2242
|
-
imports: [
|
|
2243
|
-
CommonModule,
|
|
2244
|
-
HeaderModule,
|
|
2245
|
-
ScrollContainerModule,
|
|
2246
|
-
ArticleTileModule
|
|
2247
|
-
],
|
|
2248
|
-
declarations: [
|
|
2249
|
-
ProductRelatedComponent
|
|
2250
|
-
],
|
|
2251
|
-
exports: [
|
|
2252
|
-
ProductRelatedComponent
|
|
2253
|
-
]
|
|
2254
|
-
},] }
|
|
2255
|
-
];
|
|
2256
|
-
|
|
2257
|
-
class ProductStockComponent {
|
|
2258
|
-
constructor(_iOne, _iconCache) {
|
|
2259
|
-
this._iOne = _iOne;
|
|
2260
|
-
this._iconCache = _iconCache;
|
|
2261
|
-
this.icon = IconEnum;
|
|
2262
|
-
this.openStockEvent = new EventEmitter();
|
|
2263
|
-
this.inStock = false;
|
|
2264
|
-
this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
|
|
2265
|
-
}
|
|
2266
|
-
set goodId(value) {
|
|
2267
|
-
this._goodId = value;
|
|
2268
|
-
this._getStockStatus();
|
|
2269
|
-
}
|
|
2270
|
-
get goodId() {
|
|
2271
|
-
return this._goodId;
|
|
2272
|
-
}
|
|
2273
|
-
openStock() {
|
|
2274
|
-
this.openStockEvent.emit();
|
|
2275
|
-
}
|
|
2276
|
-
_getStockStatus() {
|
|
2277
|
-
if (this.goodId) {
|
|
2278
|
-
this._iOne.getArtStockStatus(this.goodId).then((result) => {
|
|
2279
|
-
switch (result) {
|
|
2280
|
-
case 1: // niet op voorraad
|
|
2281
|
-
this.stockLabel = 'PRODUCT_LIMITED_STOCK';
|
|
2282
|
-
this.inStock = true;
|
|
2283
|
-
break;
|
|
2284
|
-
case 2:
|
|
2285
|
-
this.stockLabel = 'PRODUCT_IN_STOCK';
|
|
2286
|
-
this.inStock = true;
|
|
2287
|
-
break;
|
|
2288
|
-
default:
|
|
2289
|
-
this.stockLabel = 'PRODUCT_NOT_IN_STOCK';
|
|
2290
|
-
this.inStock = false;
|
|
2291
|
-
break;
|
|
2292
|
-
}
|
|
2293
|
-
});
|
|
2294
|
-
}
|
|
2295
|
-
}
|
|
2296
|
-
}
|
|
2297
|
-
ProductStockComponent.decorators = [
|
|
2298
|
-
{ type: Component, args: [{
|
|
2299
|
-
selector: 'app-product-stock',
|
|
2300
|
-
template: `
|
|
2301
|
-
<!--<app-header [label]="'STOCK' | localize"></app-header>-->
|
|
2302
|
-
<!--<co-level-indicator [model]="'medium'"></co-level-indicator>-->
|
|
2303
|
-
<div class="product-stock-wrapper">
|
|
2304
|
-
<co-icon class="stock-icon" [iconData]="iconData"></co-icon>
|
|
2305
|
-
<div class="product-stock-fields" (click)="openStock()">
|
|
2306
|
-
<div class="pp-default-label" [class.in-stock]="inStock" [textContent]="stockLabel | localize"></div>
|
|
2307
|
-
</div>
|
|
2308
|
-
</div>
|
|
2309
|
-
`,
|
|
2310
|
-
styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px;cursor:pointer}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0;color:#2b60a7;text-decoration:underline}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#f15152;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.in-stock:after{background:#74B77F}@media screen and (max-width: 400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}\n"]
|
|
2311
|
-
},] }
|
|
2312
|
-
];
|
|
2313
|
-
ProductStockComponent.ctorParameters = () => [
|
|
2314
|
-
{ type: ProductConnectorService },
|
|
2315
|
-
{ type: IconCacheService }
|
|
2316
|
-
];
|
|
2317
|
-
ProductStockComponent.propDecorators = {
|
|
2318
|
-
goodId: [{ type: Input }],
|
|
2319
|
-
openStockEvent: [{ type: Output }]
|
|
2320
|
-
};
|
|
2321
|
-
|
|
2322
|
-
class ProductStockModule {
|
|
2323
|
-
}
|
|
2324
|
-
ProductStockModule.decorators = [
|
|
2325
|
-
{ type: NgModule, args: [{
|
|
2326
|
-
imports: [
|
|
2327
|
-
CommonModule,
|
|
2328
|
-
IconModule,
|
|
2329
|
-
PipeModule
|
|
2330
|
-
],
|
|
2331
|
-
declarations: [
|
|
2332
|
-
ProductStockComponent
|
|
2333
|
-
],
|
|
2334
|
-
exports: [
|
|
2335
|
-
ProductStockComponent
|
|
2336
|
-
]
|
|
2337
|
-
},] }
|
|
2338
|
-
];
|
|
2339
|
-
|
|
2340
|
-
class ProductDeliveryComponent {
|
|
2341
|
-
constructor(_localizePipe, _iOne, _iconCache) {
|
|
2342
|
-
this._localizePipe = _localizePipe;
|
|
2343
|
-
this._iOne = _iOne;
|
|
2344
|
-
this._iconCache = _iconCache;
|
|
2345
|
-
this.icon = IconEnum;
|
|
2346
|
-
this.iconData = this._iconCache.getIcon(this.icon.Truck);
|
|
2347
|
-
}
|
|
2348
|
-
set stockAndDelivery(value) {
|
|
2349
|
-
if (value) {
|
|
2350
|
-
this.deliveryDescription = value.deliveryDescription;
|
|
2351
|
-
if (this.deliveryDescription.length > 0 && this.deliveryDescription[0] === ' ') {
|
|
2352
|
-
this.deliveryDescription = this._localizePipe.transform('ASK_FOR_INFORMATION');
|
|
2353
|
-
}
|
|
2354
|
-
}
|
|
2355
|
-
}
|
|
2356
|
-
ngOnInit() {
|
|
2357
|
-
}
|
|
2358
|
-
}
|
|
2359
|
-
ProductDeliveryComponent.decorators = [
|
|
2360
|
-
{ type: Component, args: [{
|
|
2361
|
-
selector: 'app-product-delivery',
|
|
2362
|
-
template: `
|
|
2363
|
-
<!--<app-header [label]="'DELIVERY_TIME_PERIOD' | localize"></app-header>-->
|
|
2364
|
-
<div class="product-delivery-wrapper">
|
|
2365
|
-
<co-icon class="delivery-icon" [iconData]="iconData"></co-icon>
|
|
2366
|
-
<div class="product-delivery-fields">
|
|
2367
|
-
<div class="pp-default-label" [textContent]="'DELIVERY_TIME_PERIOD' | localize"></div>
|
|
2368
|
-
<div class="pp-default-description" [textContent]="deliveryDescription | date:'dd MMMM yyyy'"></div>
|
|
2369
|
-
</div>
|
|
2370
|
-
</div>
|
|
2371
|
-
`,
|
|
2372
|
-
styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width: 400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}\n"]
|
|
2373
|
-
},] }
|
|
2374
|
-
];
|
|
2375
|
-
ProductDeliveryComponent.ctorParameters = () => [
|
|
2376
|
-
{ type: LocalizePipe },
|
|
2377
|
-
{ type: ProductConnectorService },
|
|
2378
|
-
{ type: IconCacheService }
|
|
2379
|
-
];
|
|
2380
|
-
ProductDeliveryComponent.propDecorators = {
|
|
2381
|
-
stockAndDelivery: [{ type: Input }]
|
|
2382
|
-
};
|
|
2383
|
-
|
|
2384
|
-
class ProductDeliveryModule {
|
|
2385
|
-
}
|
|
2386
|
-
ProductDeliveryModule.decorators = [
|
|
2387
|
-
{ type: NgModule, args: [{
|
|
2388
|
-
imports: [
|
|
2389
|
-
CommonModule,
|
|
2390
|
-
IconModule,
|
|
2391
|
-
PipeModule
|
|
2392
|
-
],
|
|
2393
|
-
declarations: [
|
|
2394
|
-
ProductDeliveryComponent
|
|
2395
|
-
],
|
|
2396
|
-
exports: [
|
|
2397
|
-
ProductDeliveryComponent
|
|
2398
|
-
]
|
|
2399
|
-
},] }
|
|
2400
|
-
];
|
|
2401
|
-
|
|
2402
|
-
class ProductInfoTabsComponent {
|
|
2403
|
-
constructor(_appEventService) {
|
|
2404
|
-
this._appEventService = _appEventService;
|
|
2405
|
-
this.activeTabHeight = 0;
|
|
2406
|
-
this.tabs = [];
|
|
2407
|
-
this._subs = [];
|
|
2408
|
-
this._subs.push(this._appEventService.onUpdateProductInfoTab.subscribe((index) => {
|
|
2409
|
-
this.updateTab(index);
|
|
2410
|
-
this.tabContent.nativeElement.scrollIntoView({ behavior: 'smooth' });
|
|
2411
|
-
}));
|
|
2412
|
-
}
|
|
2413
|
-
set article(value) {
|
|
2414
|
-
if (value) {
|
|
2415
|
-
this.articleObject = value;
|
|
2416
|
-
this._setupTabs();
|
|
2417
|
-
this.updateTab(0);
|
|
2418
|
-
}
|
|
2419
|
-
}
|
|
2420
|
-
ngOnDestroy() {
|
|
2421
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
2422
|
-
}
|
|
2423
|
-
updateTab(tabIndex) {
|
|
2424
|
-
this.activeTab = tabIndex;
|
|
2425
|
-
this.updateHeight(tabIndex);
|
|
2426
|
-
}
|
|
2427
|
-
updateHeight(tabIndex) {
|
|
2428
|
-
if (this.tabContent && this.tabContent.nativeElement.children.length > 0) {
|
|
2429
|
-
if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
|
|
2430
|
-
this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;
|
|
2431
|
-
}
|
|
2432
|
-
}
|
|
2433
|
-
}
|
|
2434
|
-
_setupTabs() {
|
|
2435
|
-
this.tabs.push({ title: 'DESCRIPTION' });
|
|
2436
|
-
this.tabs.push({ title: 'FEATURES' });
|
|
2437
|
-
if (this.articleObject.documents !== undefined && this.articleObject.documents.length > 0) {
|
|
2438
|
-
this.tabs.push({ title: 'DOWNLOADS' });
|
|
2439
|
-
}
|
|
2440
|
-
if (this.articleObject.symbols !== undefined && this.articleObject.symbols.length > 0) {
|
|
2441
|
-
this.tabs.push({ title: 'SYMBOLS' });
|
|
2442
|
-
}
|
|
2443
|
-
}
|
|
2444
|
-
}
|
|
2445
|
-
ProductInfoTabsComponent.decorators = [
|
|
2446
|
-
{ type: Component, args: [{
|
|
2447
|
-
selector: 'app-product-info-tabs',
|
|
2448
|
-
template: `
|
|
2449
|
-
<div class="tab-container">
|
|
2450
|
-
<div class="tab-header">
|
|
2451
|
-
<button *ngFor="let tab of tabs; let i = index" class="tab-header-button" [class.active]="activeTab === i" [textContent]="tab.title | localize" (click)="updateTab(i)"></button>
|
|
2452
|
-
</div>
|
|
2453
|
-
<div class="tab-content" #tabContent [style.height.px]="(activeTabHeight > 0 ? activeTabHeight : '')">
|
|
2454
|
-
<div class="tab-content-item" *ngFor="let tab of tabs; let i = index" [class.active]="activeTab === i">
|
|
2455
|
-
<ng-container *ngIf="i === 0">
|
|
2456
|
-
<app-product-additional-info class="" [article]="articleObject" [showLabel]="false"></app-product-additional-info>
|
|
2457
|
-
</ng-container>
|
|
2458
|
-
<ng-container *ngIf="i === 1">
|
|
2459
|
-
<app-product-properties class="" [article]="articleObject" [showLabel]="false"></app-product-properties>
|
|
2460
|
-
</ng-container>
|
|
2461
|
-
<ng-container *ngIf="i === 2">
|
|
2462
|
-
<app-product-documents [showLabel]="false" class="" *ngIf="articleObject?.documents && articleObject?.documents.length > 0" [documents]="articleObject?.documents"></app-product-documents>
|
|
2463
|
-
</ng-container>
|
|
2464
|
-
<ng-container *ngIf="i === 3">
|
|
2465
|
-
<app-product-symbols class="" *ngIf="articleObject?.symbols && articleObject?.symbols.length > 0" [symbols]="articleObject?.symbols"></app-product-symbols>
|
|
2466
|
-
</ng-container>
|
|
2467
|
-
</div>
|
|
2468
|
-
</div>
|
|
2469
|
-
</div>
|
|
2470
|
-
`,
|
|
2471
|
-
styles: ["*:focus{outline:none}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:transparent;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:bold;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:all .2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width: 650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width: 450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}\n"]
|
|
2472
|
-
},] }
|
|
2473
|
-
];
|
|
2474
|
-
ProductInfoTabsComponent.ctorParameters = () => [
|
|
2475
|
-
{ type: ProductEventService }
|
|
2476
|
-
];
|
|
2477
|
-
ProductInfoTabsComponent.propDecorators = {
|
|
2478
|
-
tabContent: [{ type: ViewChild, args: ['tabContent',] }],
|
|
2479
|
-
article: [{ type: Input }]
|
|
2480
|
-
};
|
|
2481
|
-
|
|
2482
|
-
class ProductAdditionalInfoComponent {
|
|
2483
|
-
constructor(_sanitizer, _connectorService, _changeDetector) {
|
|
2484
|
-
this._sanitizer = _sanitizer;
|
|
2485
|
-
this._connectorService = _connectorService;
|
|
2486
|
-
this._changeDetector = _changeDetector;
|
|
2487
|
-
this.showLabel = false;
|
|
2488
|
-
this.textParts = [];
|
|
2489
|
-
this._superArticles = new Map();
|
|
2490
|
-
}
|
|
2491
|
-
set article(value) {
|
|
2492
|
-
if (value) {
|
|
2493
|
-
this._article = value;
|
|
2494
|
-
this._buildInfo().then(() => {
|
|
2495
|
-
this._changeDetector.detectChanges();
|
|
2496
|
-
});
|
|
2497
|
-
}
|
|
2498
|
-
}
|
|
2499
|
-
get article() {
|
|
2500
|
-
return this._article;
|
|
2501
|
-
}
|
|
2502
|
-
ngOnInit() {
|
|
2503
|
-
}
|
|
2504
|
-
_getTextsSuperArticle() {
|
|
2505
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2506
|
-
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
2507
|
-
const texts = [];
|
|
2508
|
-
if (this.article.superArticleNr) {
|
|
2509
|
-
let mainArticle;
|
|
2510
|
-
if (this._superArticles.has(this.article.superArticleNr)) {
|
|
2511
|
-
mainArticle = this._superArticles.get(this.article.superArticleNr);
|
|
2512
|
-
}
|
|
2513
|
-
else {
|
|
2514
|
-
mainArticle = yield this._connectorService.getSuperArticle(this.article.superArticleNr);
|
|
2515
|
-
this._superArticles.set(this.article.superArticleNr, mainArticle);
|
|
2516
|
-
}
|
|
2517
|
-
mainArticle.texts.forEach((txt) => {
|
|
2518
|
-
if (BitUtils.IsFullDescription(txt.publication)) {
|
|
2519
|
-
const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
|
|
2520
|
-
texts.push(safeTxt);
|
|
2521
|
-
}
|
|
2522
|
-
});
|
|
2523
|
-
resolve(texts);
|
|
2524
|
-
}
|
|
2525
|
-
else {
|
|
2526
|
-
resolve(texts);
|
|
2527
|
-
}
|
|
2528
|
-
}));
|
|
2529
|
-
});
|
|
2530
|
-
}
|
|
2531
|
-
_prepareArticleTexts() {
|
|
2532
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2533
|
-
const texts = yield this._getTextsSuperArticle();
|
|
2534
|
-
if (texts.length > 0) {
|
|
2535
|
-
this.textParts.push(...texts);
|
|
2536
|
-
}
|
|
2537
|
-
if (this.article.texts) {
|
|
2538
|
-
this.article.texts.forEach((txt) => {
|
|
2539
|
-
if (BitUtils.IsFullDescription(txt.publication)) {
|
|
2540
|
-
const safeTxt = this._sanitizer.sanitize(SecurityContext.HTML, txt.text);
|
|
2541
|
-
this.textParts.push(safeTxt);
|
|
2542
|
-
}
|
|
2543
|
-
});
|
|
2544
|
-
}
|
|
2545
|
-
});
|
|
2546
|
-
}
|
|
2547
|
-
_buildInfo() {
|
|
2548
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2549
|
-
this.textParts.length = 0;
|
|
2550
|
-
yield this._prepareArticleTexts();
|
|
2551
|
-
if (this.textParts.length === 0) {
|
|
2552
|
-
if (this.article.additionalDescription) {
|
|
2553
|
-
this.textParts.push(this.article.additionalDescription);
|
|
2554
|
-
}
|
|
2555
|
-
else if (this.article.description) {
|
|
2556
|
-
this.textParts.push(this.article.description);
|
|
2557
|
-
}
|
|
2558
|
-
}
|
|
2559
|
-
return;
|
|
2560
|
-
});
|
|
2561
|
-
}
|
|
2562
|
-
}
|
|
2563
|
-
ProductAdditionalInfoComponent.decorators = [
|
|
2564
|
-
{ type: Component, args: [{
|
|
2565
|
-
selector: 'app-product-additional-info',
|
|
2566
|
-
template: `
|
|
2567
|
-
<h3 *ngIf="showLabel" [textContent]="'ADDITIONAL_DATA' | localize"></h3>
|
|
2568
|
-
<ng-container *ngIf="textParts && textParts.length > 0">
|
|
2569
|
-
<div class="additional-info-parts" *ngFor="let text of textParts" [innerHTML]="text"></div>
|
|
2570
|
-
</ng-container>
|
|
2571
|
-
`,
|
|
2572
|
-
styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:\"iOneMontserrat\"}:host .additional-info-parts>*:first-child{margin-top:0}:host .additional-info-parts>*:last-child{margin-bottom:0}\n"]
|
|
2573
|
-
},] }
|
|
2574
|
-
];
|
|
2575
|
-
ProductAdditionalInfoComponent.ctorParameters = () => [
|
|
2576
|
-
{ type: DomSanitizer },
|
|
2577
|
-
{ type: ProductConnectorService },
|
|
2578
|
-
{ type: ChangeDetectorRef }
|
|
2579
|
-
];
|
|
2580
|
-
ProductAdditionalInfoComponent.propDecorators = {
|
|
2581
|
-
article: [{ type: Input }],
|
|
2582
|
-
showLabel: [{ type: Input }]
|
|
2583
|
-
};
|
|
2584
|
-
|
|
2585
|
-
class ProductAdditionalInfoModule {
|
|
2586
|
-
}
|
|
2587
|
-
ProductAdditionalInfoModule.decorators = [
|
|
2588
|
-
{ type: NgModule, args: [{
|
|
2589
|
-
imports: [
|
|
2590
|
-
CommonModule,
|
|
2591
|
-
PipeModule
|
|
2592
|
-
],
|
|
2593
|
-
declarations: [
|
|
2594
|
-
ProductAdditionalInfoComponent
|
|
2595
|
-
],
|
|
2596
|
-
exports: [
|
|
2597
|
-
ProductAdditionalInfoComponent
|
|
2598
|
-
]
|
|
2599
|
-
},] }
|
|
2600
|
-
];
|
|
2601
|
-
|
|
2602
|
-
const propertyMap = new Map([
|
|
2603
|
-
['articleNr', 'ARTICLE_NUMBER'],
|
|
2604
|
-
['catExtra', 'CATEGORY'],
|
|
2605
|
-
['catType', 'CATEGORY_TYPE'],
|
|
2606
|
-
['description', 'DESCRIPTION'],
|
|
2607
|
-
['material', 'MATERIAL'],
|
|
2608
|
-
['title', 'TITLE'],
|
|
2609
|
-
['turnOverGroup', 'TURNOVERGROUP'],
|
|
2610
|
-
['height', 'HEIGHT'],
|
|
2611
|
-
['width', 'WIDTH']
|
|
2612
|
-
]);
|
|
2613
|
-
class ProductPropertiesComponent {
|
|
2614
|
-
constructor() {
|
|
2615
|
-
this.showLabel = false;
|
|
2616
|
-
this.properties = [];
|
|
2617
|
-
}
|
|
2618
|
-
set article(value) {
|
|
2619
|
-
this._article = value;
|
|
2620
|
-
this._prepareProperties();
|
|
2621
|
-
}
|
|
2622
|
-
get article() {
|
|
2623
|
-
return this._article;
|
|
2624
|
-
}
|
|
2625
|
-
ngOnInit() {
|
|
2626
|
-
}
|
|
2627
|
-
_prepareProperties() {
|
|
2628
|
-
this.properties.length = 0;
|
|
2629
|
-
if (!this._article) {
|
|
2630
|
-
return;
|
|
2631
|
-
}
|
|
2632
|
-
propertyMap.forEach((value, key) => {
|
|
2633
|
-
if (this.article.hasOwnProperty(key)) {
|
|
2634
|
-
this.properties.push({ key: value, value: this.article[key] });
|
|
2635
|
-
}
|
|
2636
|
-
});
|
|
2637
|
-
}
|
|
2638
|
-
}
|
|
2639
|
-
ProductPropertiesComponent.decorators = [
|
|
2640
|
-
{ type: Component, args: [{
|
|
2641
|
-
selector: 'app-product-properties',
|
|
2642
|
-
template: `
|
|
2643
|
-
<div class="article-properties-wrapper">
|
|
2644
|
-
<h3 *ngIf="showLabel" [textContent]="'PROPERTIES' | localize"></h3>
|
|
2645
|
-
<ng-container *ngFor="let property of properties">
|
|
2646
|
-
<div class="article-property">
|
|
2647
|
-
<div class="article-property-key" [textContent]="property.key | localize"></div>
|
|
2648
|
-
<div class="article-property-value" [textContent]="property.value"></div>
|
|
2649
|
-
</div>
|
|
2650
|
-
</ng-container>
|
|
2651
|
-
</div>
|
|
2652
|
-
`,
|
|
2653
|
-
styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width: 450px){.article-property-key{flex-basis:130px}}\n"]
|
|
2654
|
-
},] }
|
|
2655
|
-
];
|
|
2656
|
-
ProductPropertiesComponent.ctorParameters = () => [];
|
|
2657
|
-
ProductPropertiesComponent.propDecorators = {
|
|
2658
|
-
article: [{ type: Input }],
|
|
2659
|
-
showLabel: [{ type: Input }]
|
|
2660
|
-
};
|
|
2661
|
-
|
|
2662
|
-
class ProductPropertiesModule {
|
|
2663
|
-
}
|
|
2664
|
-
ProductPropertiesModule.decorators = [
|
|
2665
|
-
{ type: NgModule, args: [{
|
|
2666
|
-
imports: [
|
|
2667
|
-
CommonModule,
|
|
2668
|
-
PipeModule
|
|
2669
|
-
],
|
|
2670
|
-
declarations: [
|
|
2671
|
-
ProductPropertiesComponent
|
|
2672
|
-
],
|
|
2673
|
-
exports: [
|
|
2674
|
-
ProductPropertiesComponent
|
|
2675
|
-
]
|
|
2676
|
-
},] }
|
|
2677
|
-
];
|
|
2678
|
-
|
|
2679
|
-
class ProductDocumentsComponent {
|
|
2680
|
-
constructor(iconCache) {
|
|
2681
|
-
this.iconCache = iconCache;
|
|
2682
|
-
this.icon = IconEnum;
|
|
2683
|
-
this.showLabel = false;
|
|
2684
|
-
this.documents = [];
|
|
2685
|
-
}
|
|
2686
|
-
}
|
|
2687
|
-
ProductDocumentsComponent.decorators = [
|
|
2688
|
-
{ type: Component, args: [{
|
|
2689
|
-
selector: 'app-product-documents',
|
|
2690
|
-
template: `
|
|
2691
|
-
<app-header *ngIf="showLabel" [label]="'DOCUMENTS' | localize" [amount]="documents?.length"></app-header>
|
|
2692
|
-
<div *ngIf="documents && documents.length > 0">
|
|
2693
|
-
<co-files-upload [documents]="documents" [canAdd]="false" readonly></co-files-upload>
|
|
2694
|
-
</div>
|
|
2695
|
-
`,
|
|
2696
|
-
styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:none!important;border:none!important;background:transparent!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important;background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22 standalone%3D%22no%22%3F%3E%0D%3Csvg%0D xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22%0D xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22%0D xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22%0D xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0D xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0D xmlns%3Asodipodi%3D%22http%3A%2F%2Fsodipodi.sourceforge.net%2FDTD%2Fsodipodi-0.dtd%22%0D xmlns%3Ainkscape%3D%22http%3A%2F%2Fwww.inkscape.org%2Fnamespaces%2Finkscape%22%0D viewBox%3D%220 0 50 50%22%0D version%3D%221.1%22%0D id%3D%22svg8%22%0D sodipodi%3Adocname%3D%22download.svg%22%0D inkscape%3Aversion%3D%220.92.4 (5da689c313%2C 2019-01-14)%22%3E%0D %3Cmetadata%0D id%3D%22metadata14%22%3E%0D %3Crdf%3ARDF%3E%0D %3Ccc%3AWork%0D rdf%3Aabout%3D%22%22%3E%0D %3Cdc%3Aformat%3Eimage%2Fsvg%2Bxml%3C%2Fdc%3Aformat%3E%0D %3Cdc%3Atype%0D rdf%3Aresource%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fdcmitype%2FStillImage%22 %2F%3E%0D %3Cdc%3Atitle%3E%3C%2Fdc%3Atitle%3E%0D %3C%2Fcc%3AWork%3E%0D %3C%2Frdf%3ARDF%3E%0D %3C%2Fmetadata%3E%0D %3Cdefs%0D id%3D%22defs12%22 %2F%3E%0D %3Csodipodi%3Anamedview%0D pagecolor%3D%22%23ffffff%22%0D bordercolor%3D%22%23666666%22%0D borderopacity%3D%221%22%0D objecttolerance%3D%2210%22%0D gridtolerance%3D%2210%22%0D guidetolerance%3D%2210%22%0D inkscape%3Apageopacity%3D%220%22%0D inkscape%3Apageshadow%3D%222%22%0D inkscape%3Awindow-width%3D%221920%22%0D inkscape%3Awindow-height%3D%221017%22%0D id%3D%22namedview10%22%0D showgrid%3D%22false%22%0D inkscape%3Azoom%3D%226.675088%22%0D inkscape%3Acx%3D%22-14.056273%22%0D inkscape%3Acy%3D%2229.806579%22%0D inkscape%3Awindow-x%3D%22-8%22%0D inkscape%3Awindow-y%3D%22-8%22%0D inkscape%3Awindow-maximized%3D%221%22%0D inkscape%3Acurrent-layer%3D%22svg8%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g62%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g64%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g66%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g68%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g70%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g72%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g74%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g76%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g78%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g80%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g82%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g84%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g86%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g88%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22%0D id%3D%22g90%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g6-0%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cg%0D id%3D%22g4-9%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cpath%0D inkscape%3Aconnector-curvature%3D%220%22%0D d%3D%22m 498.966%2C339.946 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 v 49.804 c 0%2C28.747 -23.388%2C52.135 -52.135%2C52.135 H 78.203 c -28.747%2C0 -52.135%2C-23.388 -52.135%2C-52.135 V 352.98 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 C 5.835%2C339.946 0%2C345.782 0%2C352.98 v 49.804 c 0%2C43.121 35.082%2C78.203 78.203%2C78.203 h 355.594 c 43.121%2C0 78.203%2C-35.082 78.203%2C-78.203 V 352.98 c 0%2C-7.198 -5.835%2C-13.034 -13.034%2C-13.034 z%22%0D id%3D%22path2%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g12-0%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cg%0D id%3D%22g10-8%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cpath%0D inkscape%3Aconnector-curvature%3D%220%22%0D d%3D%22M 419.833%2C391.3 H 92.167 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 0%2C7.197 5.835%2C13.034 13.034%2C13.034 h 327.665 c 7.199%2C0 13.034%2C-5.835 13.034%2C-13.034 0%2C-7.197 -5.835%2C-13.034 -13.033%2C-13.034 z%22%0D id%3D%22path8-3%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g18-4%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cg%0D id%3D%22g16-7%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E%0D %3Cpath%0D inkscape%3Aconnector-curvature%3D%220%22%0D d%3D%22m 387.919%2C207.93 c -4.795%2C-5.367 -13.034%2C-5.834 -18.404%2C-1.038 L 269.033%2C296.657 V 44.048 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 -7.197%2C0 -13.034%2C5.835 -13.034%2C13.034 V 296.657 L 142.483%2C206.893 c -5.367%2C-4.796 -13.607%2C-4.328 -18.404%2C1.038 -4.794%2C5.369 -4.331%2C13.609 1.037%2C18.404 l 109.174%2C97.527 c 6.187%2C5.529 13.946%2C8.292 21.708%2C8.292 7.759%2C0 15.519%2C-2.763 21.708%2C-8.289 l 109.174%2C-97.53 c 5.37%2C-4.798 5.834%2C-13.038 1.039%2C-18.405 z%22%0D id%3D%22path14-9%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g20%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g22-9%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g24-3%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g26%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g28-4%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g30-2%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g32%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g34-2%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g36-1%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g38%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g40-6%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g42-4%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g44%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g46-7%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D %3Cg%0D transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22%0D id%3D%22g48-3%22%0D style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat left 6px center / 36px auto!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}\n"]
|
|
2697
|
-
},] }
|
|
2698
|
-
];
|
|
2699
|
-
ProductDocumentsComponent.ctorParameters = () => [
|
|
2700
|
-
{ type: IconCacheService }
|
|
2701
|
-
];
|
|
2702
|
-
ProductDocumentsComponent.propDecorators = {
|
|
2703
|
-
showLabel: [{ type: Input }],
|
|
2704
|
-
documents: [{ type: Input }]
|
|
2705
|
-
};
|
|
2706
|
-
|
|
2707
|
-
class ProductDocumentModule {
|
|
2708
|
-
}
|
|
2709
|
-
ProductDocumentModule.decorators = [
|
|
2710
|
-
{ type: NgModule, args: [{
|
|
2711
|
-
imports: [
|
|
2712
|
-
CommonModule,
|
|
2713
|
-
HeaderModule,
|
|
2714
|
-
PipeModule,
|
|
2715
|
-
FilesUploadModule
|
|
2716
|
-
],
|
|
2717
|
-
declarations: [
|
|
2718
|
-
ProductDocumentsComponent
|
|
2719
|
-
],
|
|
2720
|
-
exports: [
|
|
2721
|
-
ProductDocumentsComponent
|
|
2722
|
-
]
|
|
2723
|
-
},] }
|
|
2724
|
-
];
|
|
2725
|
-
|
|
2726
|
-
class ProductSymbolsComponent {
|
|
2727
|
-
constructor() {
|
|
2728
|
-
this.symbolStrings = [];
|
|
2729
|
-
}
|
|
2730
|
-
set symbols(value) {
|
|
2731
|
-
this._symbols = value;
|
|
2732
|
-
if (this._symbols && this._symbols.hasOwnProperty('fontCode')) {
|
|
2733
|
-
this._className = this._symbols['fontCode'] === 'VLOER' ? 'floor' : (this._className === 'WAS' ? 'ginetex' : '');
|
|
2734
|
-
}
|
|
2735
|
-
if (this._symbols && this._symbols.hasOwnProperty('symbolString')) {
|
|
2736
|
-
for (let i = 0; i < this._symbols['symbolString'].length; i++) {
|
|
2737
|
-
this.symbolStrings.push(this._symbols['symbolString'][i]);
|
|
2738
|
-
}
|
|
2739
|
-
}
|
|
2740
|
-
}
|
|
2741
|
-
get symbols() {
|
|
2742
|
-
return this._symbols;
|
|
2743
|
-
}
|
|
2744
|
-
ngOnInit() {
|
|
2745
|
-
}
|
|
2746
|
-
}
|
|
2747
|
-
ProductSymbolsComponent.decorators = [
|
|
2748
|
-
{ type: Component, args: [{
|
|
2749
|
-
selector: 'app-product-symbols',
|
|
2750
|
-
template: `
|
|
2751
|
-
<div *ngIf="symbols && symbols.length > 0">
|
|
2752
|
-
<app-header [label]="'SYMBOLS' | localize" [amount]="symbols?.length"></app-header>
|
|
2753
|
-
<co-scroll-container>
|
|
2754
|
-
<co-tile small noImagePlaceholder *ngFor="let symbol of symbolStrings">
|
|
2755
|
-
<ng-container tile-over-image>
|
|
2756
|
-
<div class="symbol" [textContent]="symbol"></div>
|
|
2757
|
-
</ng-container>
|
|
2758
|
-
<ng-container tile-extra-bottom-content>
|
|
2759
|
-
<div class="symbol-name" [textContent]="'Wat moet hier?'"></div>
|
|
2760
|
-
</ng-container>
|
|
2761
|
-
</co-tile>
|
|
2762
|
-
</co-scroll-container>
|
|
2763
|
-
</div>
|
|
2764
|
-
`,
|
|
2765
|
-
styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}\n"]
|
|
2766
|
-
},] }
|
|
2767
|
-
];
|
|
2768
|
-
ProductSymbolsComponent.ctorParameters = () => [];
|
|
2769
|
-
ProductSymbolsComponent.propDecorators = {
|
|
2770
|
-
symbols: [{ type: Input }],
|
|
2771
|
-
_className: [{ type: HostBinding, args: ['class',] }]
|
|
2772
|
-
};
|
|
2773
|
-
|
|
2774
|
-
class ProductSymbolsModule {
|
|
2775
|
-
}
|
|
2776
|
-
ProductSymbolsModule.decorators = [
|
|
2777
|
-
{ type: NgModule, args: [{
|
|
2778
|
-
imports: [
|
|
2779
|
-
CommonModule,
|
|
2780
|
-
HeaderModule,
|
|
2781
|
-
PipeModule,
|
|
2782
|
-
ScrollContainerModule,
|
|
2783
|
-
TileModule
|
|
2784
|
-
],
|
|
2785
|
-
declarations: [
|
|
2786
|
-
ProductSymbolsComponent
|
|
2787
|
-
],
|
|
2788
|
-
exports: [
|
|
2789
|
-
ProductSymbolsComponent
|
|
2790
|
-
]
|
|
2791
|
-
},] }
|
|
2792
|
-
];
|
|
2793
|
-
|
|
2794
|
-
class ProductInfoTabsModule {
|
|
2795
|
-
}
|
|
2796
|
-
ProductInfoTabsModule.decorators = [
|
|
2797
|
-
{ type: NgModule, args: [{
|
|
2798
|
-
imports: [
|
|
2799
|
-
CommonModule,
|
|
2800
|
-
PipeModule,
|
|
2801
|
-
ProductAdditionalInfoModule,
|
|
2802
|
-
ProductPropertiesModule,
|
|
2803
|
-
ProductDocumentModule,
|
|
2804
|
-
ProductSymbolsModule
|
|
2805
|
-
],
|
|
2806
|
-
declarations: [
|
|
2807
|
-
ProductInfoTabsComponent
|
|
2808
|
-
],
|
|
2809
|
-
exports: [
|
|
2810
|
-
ProductInfoTabsComponent
|
|
2811
|
-
]
|
|
2812
|
-
},] }
|
|
2813
|
-
];
|
|
2814
|
-
|
|
2815
|
-
class ProductDialogComponent {
|
|
2816
|
-
constructor(iconCache, _sanitizer, _productConnectorService, _productConnectorAdapterService, _appEventService) {
|
|
2817
|
-
this.iconCache = iconCache;
|
|
2818
|
-
this._sanitizer = _sanitizer;
|
|
2819
|
-
this._productConnectorService = _productConnectorService;
|
|
2820
|
-
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
2821
|
-
this._appEventService = _appEventService;
|
|
2822
|
-
this.icon = IconEnum;
|
|
2823
|
-
this.closeRelatedPopup = new EventEmitter();
|
|
2824
|
-
this.type = SelectorType;
|
|
2825
|
-
}
|
|
2826
|
-
showClass() {
|
|
2827
|
-
return true;
|
|
2828
|
-
}
|
|
2829
|
-
ngOnInit() {
|
|
2830
|
-
}
|
|
2831
|
-
closeCatalog() {
|
|
2832
|
-
// need to emit close
|
|
2833
|
-
this.closeRelatedPopup.emit(false);
|
|
2834
|
-
}
|
|
2835
|
-
}
|
|
2836
|
-
ProductDialogComponent.decorators = [
|
|
2837
|
-
{ type: Component, args: [{
|
|
2838
|
-
selector: 'co-product-dialog',
|
|
2839
|
-
template: `
|
|
2840
|
-
<div class="product-dialog-wrap">
|
|
2841
|
-
<div class="product-dialog-container">
|
|
2842
|
-
<div class="container-header">
|
|
2843
|
-
<div class="header-info">
|
|
2844
|
-
<h3>
|
|
2845
|
-
<co-icon [iconData]="iconCache.getIcon(icon.LinkSimpleRegular)"
|
|
2846
|
-
(click)="closeCatalog()"></co-icon>{{ 'SUGGESTION' | localize }} <b>{{ mainArticle.name }}</b> ({{ mainArticle.articleNr }})
|
|
2847
|
-
</h3>
|
|
2848
|
-
</div>
|
|
2849
|
-
<div class="close-icon" (click)="closeCatalog()">
|
|
2850
|
-
<co-icon class="fullscreen-button"
|
|
2851
|
-
[iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2852
|
-
(click)="closeCatalog()"></co-icon>
|
|
2853
|
-
</div>
|
|
2854
|
-
</div>
|
|
2855
|
-
<div class="related-product-container">
|
|
2856
|
-
<app-product-related
|
|
2857
|
-
class="no-padding"
|
|
2858
|
-
*ngIf="articles"
|
|
2859
|
-
[articles]="articles">
|
|
2860
|
-
</app-product-related>
|
|
2861
|
-
</div>
|
|
2862
|
-
<div class="close-button-container">
|
|
2863
|
-
<button class="ok-button" (click)="closeCatalog()">
|
|
2864
|
-
<co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)"
|
|
2865
|
-
(click)="closeCatalog()"></co-icon>
|
|
2866
|
-
</button>
|
|
2867
|
-
<button class="close-button" (click)="closeCatalog()">
|
|
2868
|
-
<co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2869
|
-
(click)="closeCatalog()"></co-icon>
|
|
2870
|
-
</button>
|
|
2871
|
-
</div>
|
|
2872
|
-
</div>
|
|
2873
|
-
</div>
|
|
2874
|
-
`,
|
|
2875
|
-
styles: [".product-dialog-wrap{display:flex;justify-content:center;position:absolute;z-index:800;top:0}.product-dialog-wrap .product-dialog-container{background:#fff;min-width:75vw;max-height:90vh;border:1px solid #F8F8F8}.product-dialog-wrap .product-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3{display:flex;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}.product-dialog-wrap .product-dialog-container .container-header .close-icon{cursor:pointer}.product-dialog-wrap .product-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}.product-dialog-wrap .product-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon{height:20px;width:20px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg polygon{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container .ok-button{background:#1a73e8}.product-dialog-wrap .product-dialog-container .close-button-container .close-button{background:#475060}::ng-deep .content-wrapper{width:auto!important}\n"]
|
|
2876
|
-
},] }
|
|
2877
|
-
];
|
|
2878
|
-
ProductDialogComponent.ctorParameters = () => [
|
|
2879
|
-
{ type: IconCacheService },
|
|
2880
|
-
{ type: DomSanitizer },
|
|
2881
|
-
{ type: ProductConnectorService },
|
|
2882
|
-
{ type: ProductConnectorAdapterService },
|
|
2883
|
-
{ type: ProductEventService }
|
|
2884
|
-
];
|
|
2885
|
-
ProductDialogComponent.propDecorators = {
|
|
2886
|
-
refType: [{ type: Input }],
|
|
2887
|
-
mainArticle: [{ type: Input }],
|
|
2888
|
-
articles: [{ type: Input }],
|
|
2889
|
-
closeRelatedPopup: [{ type: Output }],
|
|
2890
|
-
showClass: [{ type: HostBinding, args: ['class.co-product-dialog',] }]
|
|
2891
|
-
};
|
|
2892
|
-
|
|
2893
|
-
class ProductDialogModule {
|
|
2894
|
-
}
|
|
2895
|
-
ProductDialogModule.decorators = [
|
|
2896
|
-
{ type: NgModule, args: [{
|
|
2897
|
-
imports: [
|
|
2898
|
-
CommonModule,
|
|
2899
|
-
PipeModule,
|
|
2900
|
-
ProductRelatedModule,
|
|
2901
|
-
IconModule
|
|
2902
|
-
],
|
|
2903
|
-
declarations: [
|
|
2904
|
-
ProductDialogComponent
|
|
2905
|
-
],
|
|
2906
|
-
exports: [
|
|
2907
|
-
ProductDialogComponent
|
|
2908
|
-
]
|
|
2909
|
-
},] }
|
|
2910
|
-
];
|
|
2911
|
-
|
|
2912
|
-
class VectorObject {
|
|
2913
|
-
}
|
|
2914
|
-
class RenderParameters {
|
|
2915
|
-
}
|
|
2916
|
-
class RenderCarouselComponent {
|
|
2917
|
-
constructor(iconCache, _appEventService, _changeDetector) {
|
|
2918
|
-
this.iconCache = iconCache;
|
|
2919
|
-
this._appEventService = _appEventService;
|
|
2920
|
-
this._changeDetector = _changeDetector;
|
|
2921
|
-
this.showRefresh = false;
|
|
2922
|
-
this.resizing = false;
|
|
2923
|
-
this.showLoader = true;
|
|
2924
|
-
this.renderedImageLoaded = false;
|
|
2925
|
-
// For now we will just use mock data
|
|
2926
|
-
this.renderAngles = [0, -45, -90, -135, -180, -225, -270, -315];
|
|
2927
|
-
this.currentRenderAngleIndex = 0;
|
|
2928
|
-
this.icon = IconEnum;
|
|
2929
|
-
this._subs = [];
|
|
2930
|
-
this._subs.push(this._appEventService.onReadyToRender.subscribe((readyToRender) => {
|
|
2931
|
-
if (readyToRender) {
|
|
2932
|
-
this.showLoader = true;
|
|
2933
|
-
this._createNewRender();
|
|
2934
|
-
}
|
|
2935
|
-
}), this._appEventService.onRenderStarted.subscribe(() => {
|
|
2936
|
-
this.showLoader = true;
|
|
2937
|
-
this._changeDetector.detectChanges();
|
|
2938
|
-
}), this._appEventService.onRenderImageReceived.subscribe((image) => {
|
|
2939
|
-
this.renderedImage = image;
|
|
2940
|
-
this.showLoader = false;
|
|
2941
|
-
this._changeDetector.detectChanges();
|
|
2942
|
-
}));
|
|
2943
|
-
}
|
|
2944
|
-
handleWindowResize() {
|
|
2945
|
-
this.resizing = true;
|
|
2946
|
-
clearTimeout(this._resizeTimer);
|
|
2947
|
-
this._resizeTimer = setTimeout(() => {
|
|
2948
|
-
this.resizing = false;
|
|
2949
|
-
}, 200);
|
|
2950
|
-
}
|
|
2951
|
-
gotoNextSlide() {
|
|
2952
|
-
this.showLoader = true;
|
|
2953
|
-
this.currentRenderAngleIndex = (this.currentRenderAngleIndex + 1) % this.renderAngles.length;
|
|
2954
|
-
this._createNewRender();
|
|
2955
|
-
}
|
|
2956
|
-
gotoPrevSlide() {
|
|
2957
|
-
this.showLoader = true;
|
|
2958
|
-
this.currentRenderAngleIndex = (this.currentRenderAngleIndex - 1 + this.renderAngles.length) % this.renderAngles.length;
|
|
2959
|
-
this._createNewRender();
|
|
2960
|
-
}
|
|
2961
|
-
ngOnDestroy() {
|
|
2962
|
-
this.carousel = undefined;
|
|
2963
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
2964
|
-
}
|
|
2965
|
-
ngOnChanges() {
|
|
2966
|
-
this.renderedImageLoaded = false;
|
|
2967
|
-
}
|
|
2968
|
-
onRenderLoaded() {
|
|
2969
|
-
this.renderedImageLoaded = true;
|
|
2970
|
-
}
|
|
2971
|
-
_getRenderSettings() {
|
|
2972
|
-
const settings = new RenderParameters();
|
|
2973
|
-
const rotation = new VectorObject();
|
|
2974
|
-
rotation.x = 0;
|
|
2975
|
-
rotation.y = this.renderAngles[this.currentRenderAngleIndex];
|
|
2976
|
-
rotation.z = 0;
|
|
2977
|
-
settings.objectRotation = rotation;
|
|
2978
|
-
settings.margin = 15;
|
|
2979
|
-
return settings;
|
|
2980
|
-
}
|
|
2981
|
-
_createNewRender() {
|
|
2982
|
-
this.showLoader = true;
|
|
2983
|
-
this.renderedImageLoaded = false;
|
|
2984
|
-
const renderParams = this._getRenderSettings();
|
|
2985
|
-
this._appEventService.onGetRenderForRenderCarousel.next(renderParams);
|
|
2986
|
-
}
|
|
2987
|
-
}
|
|
2988
|
-
RenderCarouselComponent.decorators = [
|
|
2989
|
-
{ type: Component, args: [{
|
|
2990
|
-
selector: 'app-render-carousel',
|
|
2991
|
-
template: `
|
|
2992
|
-
<div id="product_page_carousel">
|
|
2993
|
-
<div id="product_page_carousel_render_items">
|
|
2994
|
-
<co-loader [isShown]="showLoader"></co-loader>
|
|
2995
|
-
<div #carousel class="inner-carousel">
|
|
2996
|
-
<div class="inner-carousel-render">
|
|
2997
|
-
<img
|
|
2998
|
-
[src]="renderedImage"
|
|
2999
|
-
[class.loaded]="renderedImageLoaded"
|
|
3000
|
-
(load)="onRenderLoaded()"
|
|
3001
|
-
class="fade-image"
|
|
3002
|
-
alt="">
|
|
3003
|
-
</div>
|
|
3004
|
-
<div class="carousel-scroller-layer">
|
|
3005
|
-
<div class="carousel-item-scroller prev" (click)="gotoPrevSlide()">
|
|
3006
|
-
<co-icon [iconData]="iconCache.getIcon(icon.ArrowPointLeft)"></co-icon>
|
|
3007
|
-
</div>
|
|
3008
|
-
<div class="carousel-item-scroller next" (click)="gotoNextSlide()">
|
|
3009
|
-
<co-icon [iconData]="iconCache.getIcon(icon.ArrowPointRight)"></co-icon>
|
|
3010
|
-
</div>
|
|
3011
|
-
</div>
|
|
3012
|
-
</div>
|
|
3013
|
-
</div>
|
|
3014
|
-
</div>
|
|
3015
|
-
`,
|
|
3016
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3017
|
-
styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_render_items{position:relative;margin-bottom:10px;min-height:400px}#product_page_carousel #product_page_carousel_render_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:700px}#product_page_carousel .inner-carousel .inner-carousel-render img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;top:0;left:0;z-index:100}#product_page_carousel .carousel-scroller-layer .carousel-item-scroller{opacity:0;position:absolute;border-radius:50%;z-index:100;background:rgba(255,255,255,.4);color:#fff;width:30px;height:30px;top:calc(50% - 15px);cursor:pointer;transition:opacity .3s}#product_page_carousel .carousel-scroller-layer .carousel-item-scroller co-icon{color:#fff}#product_page_carousel .carousel-scroller-layer .prev{left:15px}#product_page_carousel .carousel-scroller-layer .next{right:15px}#product_page_carousel .carousel-scroller-layer:hover .carousel-item-scroller{opacity:1}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-image{opacity:0;transition:opacity 1.5s ease-in-out}.fade-image.loaded{opacity:1}\n"]
|
|
3018
|
-
},] }
|
|
3019
|
-
];
|
|
3020
|
-
RenderCarouselComponent.ctorParameters = () => [
|
|
3021
|
-
{ type: IconCacheService },
|
|
3022
|
-
{ type: ProductEventService },
|
|
3023
|
-
{ type: ChangeDetectorRef }
|
|
3024
|
-
];
|
|
3025
|
-
RenderCarouselComponent.propDecorators = {
|
|
3026
|
-
carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
|
|
3027
|
-
showRefresh: [{ type: Input }],
|
|
3028
|
-
article: [{ type: Input }],
|
|
3029
|
-
handleWindowResize: [{ type: HostListener, args: ['window:resize',] }],
|
|
3030
|
-
gotoNextSlide: [{ type: HostListener, args: ['swipeleft',] }],
|
|
3031
|
-
gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
|
|
3032
|
-
resizing: [{ type: HostBinding, args: ['class.resizing',] }]
|
|
3033
|
-
};
|
|
3034
|
-
|
|
3035
|
-
class RenderCarouselModule {
|
|
3036
|
-
}
|
|
3037
|
-
RenderCarouselModule.decorators = [
|
|
3038
|
-
{ type: NgModule, args: [{
|
|
3039
|
-
imports: [
|
|
3040
|
-
CommonModule,
|
|
3041
|
-
LoaderModule,
|
|
3042
|
-
ScrollContainerModule,
|
|
3043
|
-
IconModule,
|
|
3044
|
-
IconCollapseHandleModule
|
|
3045
|
-
],
|
|
3046
|
-
declarations: [
|
|
3047
|
-
RenderCarouselComponent
|
|
3048
|
-
],
|
|
3049
|
-
exports: [
|
|
3050
|
-
RenderCarouselComponent
|
|
3051
|
-
]
|
|
3052
|
-
},] }
|
|
3053
|
-
];
|
|
3054
|
-
|
|
3055
|
-
class ProductPageModule {
|
|
3056
|
-
}
|
|
3057
|
-
ProductPageModule.decorators = [
|
|
3058
|
-
{ type: NgModule, args: [{
|
|
3059
|
-
imports: [
|
|
3060
|
-
CommonModule,
|
|
3061
|
-
ProductSelectorTypeModule,
|
|
3062
|
-
ImageCarouselModule,
|
|
3063
|
-
IconModule,
|
|
3064
|
-
ProductDescriptionModule,
|
|
3065
|
-
ProductAdditionalDescriptionModule,
|
|
3066
|
-
ProductPriceModule,
|
|
3067
|
-
ProductAddtocartModule,
|
|
3068
|
-
ProductRelatedModule,
|
|
3069
|
-
ProductStockModule,
|
|
3070
|
-
ProductDeliveryModule,
|
|
3071
|
-
ProductInfoTabsModule,
|
|
3072
|
-
PipeModule,
|
|
3073
|
-
ProductDialogModule,
|
|
3074
|
-
LoaderModule$1,
|
|
3075
|
-
RenderCarouselModule
|
|
3076
|
-
],
|
|
3077
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
3078
|
-
declarations: [
|
|
3079
|
-
ProductPageComponent
|
|
3080
|
-
],
|
|
3081
|
-
exports: [
|
|
3082
|
-
ProductPageComponent
|
|
3083
|
-
]
|
|
3084
|
-
},] }
|
|
3085
|
-
];
|
|
3086
|
-
|
|
3087
|
-
class ProductScriptLoaderService {
|
|
3088
|
-
constructor(platformId) {
|
|
3089
|
-
this.platformId = platformId;
|
|
3090
|
-
this._scriptsOrLinksElements = [];
|
|
3091
|
-
}
|
|
3092
|
-
loadScript(url, renderer) {
|
|
3093
|
-
return new Promise((resolve, reject) => {
|
|
3094
|
-
if (!isPlatformBrowser(this.platformId)) {
|
|
3095
|
-
reject('Not in browser environment');
|
|
3096
|
-
return;
|
|
3097
|
-
}
|
|
3098
|
-
const existingScript = document.getElementById(url);
|
|
3099
|
-
if (existingScript) {
|
|
3100
|
-
resolve(); // Script already loaded
|
|
3101
|
-
return;
|
|
3102
|
-
}
|
|
3103
|
-
const script = renderer.createElement('script');
|
|
3104
|
-
script.id = url;
|
|
3105
|
-
script.src = url;
|
|
3106
|
-
script.type = 'text/javascript';
|
|
3107
|
-
script.async = true;
|
|
3108
|
-
script.onload = () => resolve();
|
|
3109
|
-
script.onerror = (error) => reject(`Error loading script: ${url}`);
|
|
3110
|
-
renderer.appendChild(document.head, script);
|
|
3111
|
-
this._scriptsOrLinksElements.push(script);
|
|
3112
|
-
});
|
|
3113
|
-
}
|
|
3114
|
-
unloadScripts(renderer) {
|
|
3115
|
-
for (let i = this._scriptsOrLinksElements.length - 1; i >= 0; i--) {
|
|
3116
|
-
renderer.removeChild(document.head, this._scriptsOrLinksElements[i]);
|
|
3117
|
-
this._scriptsOrLinksElements.pop();
|
|
3118
|
-
}
|
|
3119
|
-
}
|
|
3120
|
-
addStyleSheet(url, renderer) {
|
|
3121
|
-
return new Promise((resolve, reject) => {
|
|
3122
|
-
if (!isPlatformBrowser(this.platformId)) {
|
|
3123
|
-
reject('Not in browser environment');
|
|
3124
|
-
return;
|
|
3125
|
-
}
|
|
3126
|
-
const existingStyleSheet = document.getElementById(url);
|
|
3127
|
-
if (existingStyleSheet) {
|
|
3128
|
-
resolve(); // Script already loaded
|
|
3129
|
-
return;
|
|
3130
|
-
}
|
|
3131
|
-
const link = renderer.createElement('link');
|
|
3132
|
-
link.id = url;
|
|
3133
|
-
link.href = url;
|
|
3134
|
-
link.rel = 'stylesheet';
|
|
3135
|
-
link.onload = () => resolve();
|
|
3136
|
-
link.onerror = (error) => reject(`Error loading styleSheet: ${url}`);
|
|
3137
|
-
renderer.appendChild(document.head, link);
|
|
3138
|
-
this._scriptsOrLinksElements.push(link);
|
|
3139
|
-
});
|
|
3140
|
-
}
|
|
3141
|
-
}
|
|
3142
|
-
ProductScriptLoaderService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProductScriptLoaderService_Factory() { return new ProductScriptLoaderService(i0.ɵɵinject(i0.PLATFORM_ID)); }, token: ProductScriptLoaderService, providedIn: "root" });
|
|
3143
|
-
ProductScriptLoaderService.decorators = [
|
|
3144
|
-
{ type: Injectable, args: [{
|
|
3145
|
-
providedIn: 'root'
|
|
3146
|
-
},] }
|
|
3147
|
-
];
|
|
3148
|
-
ProductScriptLoaderService.ctorParameters = () => [
|
|
3149
|
-
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
3150
|
-
];
|
|
3151
|
-
|
|
3152
|
-
class ProductHdComponent {
|
|
3153
|
-
constructor(_scriptLoader, _renderer) {
|
|
3154
|
-
this._scriptLoader = _scriptLoader;
|
|
3155
|
-
this._renderer = _renderer;
|
|
3156
|
-
this.variant = '';
|
|
3157
|
-
this.urlParams = [];
|
|
3158
|
-
this.configuratorFinished = new EventEmitter();
|
|
3159
|
-
this.configurationError = new EventEmitter();
|
|
3160
|
-
this.showClass = true;
|
|
3161
|
-
}
|
|
3162
|
-
set content(child) {
|
|
3163
|
-
this.hdeConfigurator = child;
|
|
3164
|
-
this._prepareAttributes();
|
|
3165
|
-
}
|
|
3166
|
-
set sku(value) {
|
|
3167
|
-
this._sku = value;
|
|
3168
|
-
this._prepareAttributes();
|
|
3169
|
-
}
|
|
3170
|
-
get sku() {
|
|
3171
|
-
return this._sku;
|
|
3172
|
-
}
|
|
3173
|
-
ngOnDestroy() {
|
|
3174
|
-
this._scriptLoader.unloadScripts(this._renderer);
|
|
3175
|
-
}
|
|
3176
|
-
handleConfigurationFinished(event) {
|
|
3177
|
-
if (event.detail.variant && typeof event.detail.variant === 'string') {
|
|
3178
|
-
this.configuratorFinished.emit(event.detail.variant);
|
|
3179
|
-
}
|
|
3180
|
-
else {
|
|
3181
|
-
this.configuratorFinished.emit(this.variant);
|
|
3182
|
-
}
|
|
3183
|
-
}
|
|
3184
|
-
handleError(event) {
|
|
3185
|
-
this.configurationError.emit(event.detail.status);
|
|
3186
|
-
}
|
|
3187
|
-
_prepareAttributes() {
|
|
3188
|
-
if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.urlParams && this.token && (this.sku || this.variant)) {
|
|
3189
|
-
//for local testing please turn off for packing and publishing!
|
|
3190
|
-
//this.prepareTestingUrlparams();
|
|
3191
|
-
this._prepareConfiguratorUrls();
|
|
3192
|
-
this.hdeConfigurator.nativeElement.setAttribute('bearerToken', this.token);
|
|
3193
|
-
if (this._sku) {
|
|
3194
|
-
this.hdeConfigurator.nativeElement.setAttribute('data-productId', this._sku);
|
|
3195
|
-
}
|
|
3196
|
-
if (this.variant) {
|
|
3197
|
-
this.hdeConfigurator.nativeElement.setAttribute('data-productVariantId', this.variant);
|
|
3198
|
-
}
|
|
3199
|
-
this._loadTheScripts();
|
|
3200
|
-
}
|
|
3201
|
-
}
|
|
3202
|
-
//set necessary references to configurator.
|
|
3203
|
-
_prepareConfiguratorUrls() {
|
|
3204
|
-
//fetch the setting from the external source
|
|
3205
|
-
let apiurl = this.urlParams.find((item) => item.key === 'apiurl').value;
|
|
3206
|
-
let productVariantCommandApiUrl = this.urlParams.find((item) => item.key === 'productVariantCommandApiUrl').value;
|
|
3207
|
-
let productVariantQueryApiUrl = this.urlParams.find((item) => item.key === 'productVariantQueryApiUrl').value;
|
|
3208
|
-
let localizationApiUrl = this.urlParams.find((item) => item.key === 'localizationApiUrl').value;
|
|
3209
|
-
//apply to configurator
|
|
3210
|
-
this.hdeConfigurator.nativeElement.setAttribute('apiurl', apiurl);
|
|
3211
|
-
this.hdeConfigurator.nativeElement.setAttribute('productVariantCommandApiUrl', productVariantCommandApiUrl);
|
|
3212
|
-
this.hdeConfigurator.nativeElement.setAttribute('productVariantQueryApiUrl', productVariantQueryApiUrl);
|
|
3213
|
-
this.hdeConfigurator.nativeElement.setAttribute('localizationApiUrl', localizationApiUrl);
|
|
3214
|
-
}
|
|
3215
|
-
// load external scripts into client
|
|
3216
|
-
_loadTheScripts() {
|
|
3217
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
3218
|
-
let headerUrls = this.urlParams.find((item) => item.key === 'header').value;
|
|
3219
|
-
let headerArray = headerUrls.replace(/\s+/g, '').split(',');
|
|
3220
|
-
for (let i = 0; i < headerArray.length; i++) {
|
|
3221
|
-
yield this._scriptLoader.loadScript(headerArray[i], this._renderer).catch((error) => console.error(error));
|
|
3222
|
-
}
|
|
3223
|
-
let styles = this.urlParams.find((item) => item.key === 'stylesheet').value;
|
|
3224
|
-
let stylesArray = styles.replace(/\s+/g, '').split(',');
|
|
3225
|
-
for (let j = 0; j < stylesArray.length; j++) {
|
|
3226
|
-
yield this._scriptLoader.addStyleSheet(stylesArray[j], this._renderer);
|
|
3227
|
-
}
|
|
3228
|
-
//for local testing please turn off for packing and publishing!
|
|
3229
|
-
/*const scripts: string[] = [
|
|
3230
|
-
// hard-coded for now, should come from the external source
|
|
3231
|
-
'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
|
|
3232
|
-
'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
|
|
3233
|
-
'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
|
|
3234
|
-
]
|
|
3235
|
-
for (let i = 0; i < scripts.length; i++) {
|
|
3236
|
-
await this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
|
|
3237
|
-
}
|
|
3238
|
-
await this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);*/
|
|
3239
|
-
});
|
|
3240
|
-
}
|
|
3241
|
-
}
|
|
3242
|
-
ProductHdComponent.decorators = [
|
|
3243
|
-
{ type: Component, args: [{
|
|
3244
|
-
selector: 'co-product-hd',
|
|
3245
|
-
template: `
|
|
3246
|
-
<hde-configurator #hdeConfigurator
|
|
3247
|
-
language="nl"
|
|
3248
|
-
localizationFileExtension=".json"
|
|
3249
|
-
(configurationFinished)="handleConfigurationFinished($event)"
|
|
3250
|
-
(configurationFailed)="handleError($event)"
|
|
3251
|
-
>
|
|
3252
|
-
<hde-progress-bar></hde-progress-bar>
|
|
3253
|
-
</hde-configurator>
|
|
3254
|
-
`,
|
|
3255
|
-
encapsulation: ViewEncapsulation.None
|
|
3256
|
-
},] }
|
|
3257
|
-
];
|
|
3258
|
-
ProductHdComponent.ctorParameters = () => [
|
|
3259
|
-
{ type: ProductScriptLoaderService },
|
|
3260
|
-
{ type: Renderer2 }
|
|
3261
|
-
];
|
|
3262
|
-
ProductHdComponent.propDecorators = {
|
|
3263
|
-
content: [{ type: ViewChild, args: ['hdeConfigurator', { read: ElementRef },] }],
|
|
3264
|
-
sku: [{ type: Input }],
|
|
3265
|
-
token: [{ type: Input }],
|
|
3266
|
-
variant: [{ type: Input }],
|
|
3267
|
-
urlParams: [{ type: Input }],
|
|
3268
|
-
configuratorFinished: [{ type: Output }],
|
|
3269
|
-
configurationError: [{ type: Output }],
|
|
3270
|
-
showClass: [{ type: HostBinding, args: ['class.co-product-hd',] }]
|
|
3271
|
-
};
|
|
3272
|
-
|
|
3273
|
-
class ProductHdModule {
|
|
3274
|
-
}
|
|
3275
|
-
ProductHdModule.decorators = [
|
|
3276
|
-
{ type: NgModule, args: [{
|
|
3277
|
-
imports: [
|
|
3278
|
-
CommonModule
|
|
3279
|
-
],
|
|
3280
|
-
declarations: [
|
|
3281
|
-
ProductHdComponent
|
|
3282
|
-
],
|
|
3283
|
-
schemas: [
|
|
3284
|
-
CUSTOM_ELEMENTS_SCHEMA,
|
|
3285
|
-
NO_ERRORS_SCHEMA
|
|
3286
|
-
],
|
|
3287
|
-
exports: [
|
|
3288
|
-
ProductHdComponent
|
|
3289
|
-
]
|
|
3290
|
-
},] }
|
|
3291
|
-
];
|
|
3292
|
-
|
|
3293
|
-
class ProductExternalSourceComponent {
|
|
3294
|
-
constructor(_sanitizer, _productConnectorService, _appEventService) {
|
|
3295
|
-
this._sanitizer = _sanitizer;
|
|
3296
|
-
this._productConnectorService = _productConnectorService;
|
|
3297
|
-
this._appEventService = _appEventService;
|
|
3298
|
-
this.addToCart = new EventEmitter();
|
|
3299
|
-
this.addToQuote = new EventEmitter();
|
|
3300
|
-
this.alternativeClick = new EventEmitter();
|
|
3301
|
-
this.configuratorFinished = new EventEmitter();
|
|
3302
|
-
this.showProduct = false;
|
|
3303
|
-
this.showConfigurator = false;
|
|
3304
|
-
this.showSource = false;
|
|
3305
|
-
this.loaded = false;
|
|
3306
|
-
this.externalSettings = {};
|
|
3307
|
-
this.token = ""; //= "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYxOThERkVEOEUwQTQ1MzY3M0M1MUE2Rjk1QUVDQzU3RTM0NjM4RkRSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6IjhaamY3WTRLUlRaenhScHZsYTdNVi1OR09QMCJ9.eyJuYmYiOjE3MzIxOTkyOTUsImV4cCI6MTczMjIwMjg5NSwiaXNzIjoiaHR0cHM6Ly9ibXNpZGVudGl0eS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImNhdGFsb2dxdWVyeWFwaSIsImNvbmZpZ3VyYXRvcmFwaSIsInByb2R1Y3R2YXJpYW50Y29tbWFuZGFwaSIsInByb2R1Y3R2YXJpYW50cXVlcnlhcGkiXSwiY2xpZW50X2lkIjoiaW1wZXJzb25hdGlvbi5jbGllbnQiLCJzdWIiOiIwOTMwZDI4Mi05NGU4LTQ5MGEtOGI2NC1mYTk1YmIyYzE1ODIiLCJhdXRoX3RpbWUiOjE3MzIxOTkyOTUsImlkcCI6ImxvY2FsIiwiZW52aXJvbm1lbnQiOiJNU0wiLCJzZWxsZXIiOiJTRTAwMDA5NiIsInNlbGxlcmd1aWQiOiIxMDk1MWJjNS1hZmMzLTQ1MGEtNmVkMS0wOGQ4NDNlNmE5OTQiLCJwZXJtaXNzaW9uIjpbInNhbGVzLmV4cG9ydHRlbXBsYXRlcy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LnRhZy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LmRvY3VtZW50LnJlYWQiLCJkb2N1bWVudGxpYnJhcnkudGFnZ3JvdXAucmVhZCIsInNhbGVzLm9yZGVyLndyaXRlIiwic2FsZXMuY3VzdG9tZXIucmVhZCIsInNhbGVzLm9yZGVyLmRlbGl2ZXJ5YWRkcmVzcy53cml0ZSIsInNlcnZpY2UucmVxdWVzdC5yZWFkIiwiY2F0YWxvZy50YWcucmVhZCIsInNhbGVzLm9yZGVyLnJlYWQiLCJzYWxlcy5jdXN0b21lci53cml0ZSIsInJlcXVlc3Rmb3JxdW90ZS53cml0ZSIsInNhbGVzLm9yZGVyLmJvb2siLCJyZXF1ZXN0Zm9ycXVvdGUucmVhZCIsInNhbGVzLmxlYWQucmVhZCIsInB1cmNoYXNlLm9yZGVyLnJlYWQiLCJzYWxlcy5xdW90ZS5yZWFkIiwic2FsZXMucXVvdGUud3JpdGUiLCJjYXRhbG9nLml0ZW0ucmVhZCIsInNhbGVzLmxlYWQud3JpdGUiLCJzZXJ2aWNlLnJlcXVlc3Quc3VibWl0Iiwic2FsZXMub3JkZXIuZGVsaXZlcnlhZGRyZXNzLnJlYWQiLCJwdXJjaGFzZS5vcmRlci53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy5yZWFkIiwic2VydmljZS5yZXF1ZXN0LndyaXRlIiwiY2F0YWxvZy5jYXRhbG9nLnJlYWQiLCJjYXRhbG9nLmNhdGFsb2cud3JpdGUiLCJjYXRhbG9nLmN1cnJlbmN5LnJlYWQiLCJjYXRhbG9nLmN1cnJlbmN5LndyaXRlIiwiY2F0YWxvZy5pdGVtLndyaXRlIiwiY2F0YWxvZy5sb2NhbGl6YXRpb24ucmVhZCIsImNhdGFsb2cubG9jYWxpemF0aW9uLndyaXRlIiwiY2F0YWxvZy5wcm9kdWN0LnJlYWQiLCJjYXRhbG9nLnByb2R1Y3Qud3JpdGUiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLnJlYWQiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLndyaXRlIiwiY2F0YWxvZy5zZWxsZXIucmVhZCIsImNhdGFsb2cuc2VsbGVyLndyaXRlIiwiY2F0YWxvZy50YWcud3JpdGUiLCJjYXRhbG9nLnVvbS5yZWFkIiwiY2F0YWxvZy51b20ud3JpdGUiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LnJlYWQiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LndyaXRlIiwiY2F0YWxvZy52ZW5kb3IucmVhZCIsImNhdGFsb2cudmVuZG9yLndyaXRlIiwicHVyY2hhc2Uuc2VsbGVyLnJlYWQiLCJwdXJjaGFzZS5zZWxsZXIud3JpdGUiLCJjYXRhbG9nLmFydGljbGUucmVhZCIsImNhdGFsb2cuYXJ0aWNsZS53cml0ZSIsInNhbGVzLnF1b3RlLmxpbmVzLnJlYWQiLCJzYWxlcy5xdW90ZS5saW5lcy53cml0ZSIsInNhbGVzLnNlbGxlci5yZWFkIiwic2FsZXMuc2VsbGVyLndyaXRlIiwiYWNjb3VudGluZy52ZW5kb3JpbnZvaWNlLnJlYWQiLCJpZGVudGl0eS51c2VyLnJlYWQiLCJpZGVudGl0eS51c2VyLndyaXRlIiwiaWRlbnRpdHkucm9sZS5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy53cml0ZSIsImNvbmZpZ3VyYXRvci5wdXJjaGFzZXByaWNlLnJlYWQiLCJzdG9jay5mYWJyaWMucmVhZCJdLCJuYW1lIjoiUm9iaW4iLCJmYW1pbHlfbmFtZSI6ImRlIFdpbnRlciAoQ29saWpuLUlUKSIsInJvbGUiOlsic2VsbGVyIiwiZGVhbGVyX21hbmFnZXIiXSwiaWF0IjoxNzMyMTk5Mjk1LCJzY29wZSI6WyJjYXRhbG9ncXVlcnlhcGkiLCJjb25maWd1cmF0b3JhcGkiLCJwcm9kdWN0dmFyaWFudGNvbW1hbmRhcGkiLCJwcm9kdWN0dmFyaWFudHF1ZXJ5YXBpIl0sImFtciI6WyJpbXBlcnNvbmF0aW9uIl19.rbguVPnkXXDzsM6QKgXulhrF41jIjCuGDV13ig1GC8MewLCJ7wA038OSwT26sx2mCexjvuGYt45YScfPwfTkDy3ErPmHRods64X1dJWZnf-23NTP2iI32K_1vMZH5GOGbMzuFtbKAFQv4hgFAxoyWqFVWyJvuOtQcWyZStROyPHwjAnpnj-x1cVQpOhbO-kQUFvy_VUrPpF3aYVCcO2cFirQTXR6kxSGcYGGcsPY-_eiAd93UdG2EM6xLAocDLaFV72CQI6XEs0WQG1f4SqvH52v3OTkgWBLgYV35gpyIe0-2nazGL0R8pTNuDqrOb7OGmuTRMoTIiRi67-wTxx8cQ";
|
|
3308
|
-
this.variant = "";
|
|
3309
|
-
this.urlParams = [];
|
|
3310
|
-
this._subs = [];
|
|
3311
|
-
}
|
|
3312
|
-
set externalSource(value) {
|
|
3313
|
-
this._externalSource = value;
|
|
3314
|
-
this.loaded = false;
|
|
3315
|
-
this._prepareExternalSource();
|
|
3316
|
-
}
|
|
3317
|
-
get externalSource() {
|
|
3318
|
-
return this._externalSource;
|
|
3319
|
-
}
|
|
3320
|
-
set externalCatalogStartupInfo(value) {
|
|
3321
|
-
if (value) {
|
|
3322
|
-
this._externalCatalogStartupInfo = value;
|
|
3323
|
-
this.externalSource = value.externalSource;
|
|
3324
|
-
this.loaded = false;
|
|
3325
|
-
this._prepareExternalSource();
|
|
3326
|
-
}
|
|
3327
|
-
}
|
|
3328
|
-
get externalCatalogStartupInfo() {
|
|
3329
|
-
return this._externalCatalogStartupInfo;
|
|
3330
|
-
}
|
|
3331
|
-
showClass() {
|
|
3332
|
-
return true;
|
|
3333
|
-
}
|
|
3334
|
-
ngOnInit() {
|
|
3335
|
-
this._subs.push(this._appEventService.onAddToCart.subscribe((data) => {
|
|
3336
|
-
this.addToCart.next({
|
|
3337
|
-
article: data.article,
|
|
3338
|
-
quantity: data.quantity,
|
|
3339
|
-
catalogDefinition: this.catalogDefinition,
|
|
3340
|
-
externalSource: this._externalSource
|
|
3341
|
-
});
|
|
3342
|
-
}), this._appEventService.onAddToQuote.subscribe(json => {
|
|
3343
|
-
this.addToQuote.next({
|
|
3344
|
-
article: json,
|
|
3345
|
-
quantity: 1,
|
|
3346
|
-
catalogDefinition: this.catalogDefinition,
|
|
3347
|
-
externalSource: this._externalSource
|
|
3348
|
-
});
|
|
3349
|
-
}), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
|
|
3350
|
-
}
|
|
3351
|
-
ngOnDestroy() {
|
|
3352
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
3353
|
-
}
|
|
3354
|
-
handleConfigurationFinished(variantString) {
|
|
3355
|
-
this.configuratorFinished.emit(variantString);
|
|
3356
|
-
}
|
|
3357
|
-
_prepareExternalSource() {
|
|
3358
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
3359
|
-
if (!this._externalSource) {
|
|
3360
|
-
return;
|
|
3361
|
-
}
|
|
3362
|
-
this.externalUrl = undefined;
|
|
3363
|
-
this.externalSettings = {};
|
|
3364
|
-
if (this.externalSource.type === 'CATF') {
|
|
3365
|
-
yield this._prepareCatFarm();
|
|
3366
|
-
}
|
|
3367
|
-
else if (this.externalSource.type === 'HTDL') {
|
|
3368
|
-
this._prepareConfigurator();
|
|
3369
|
-
}
|
|
3370
|
-
else {
|
|
3371
|
-
this._prepareSource();
|
|
3372
|
-
}
|
|
3373
|
-
});
|
|
3374
|
-
}
|
|
3375
|
-
_prepareCatFarm() {
|
|
3376
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
3377
|
-
// get bundle settings from external source
|
|
3378
|
-
const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
|
|
3379
|
-
this.externalSettings = JSON.parse(bundleSettings);
|
|
3380
|
-
if (this.options) {
|
|
3381
|
-
this.externalSettings.options = this.options;
|
|
3382
|
-
}
|
|
3383
|
-
// this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
|
|
3384
|
-
// this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
|
|
3385
|
-
if (this.externalSource.username && this.externalSource.password) {
|
|
3386
|
-
this.externalSettings.useLoginEncryption = true;
|
|
3387
|
-
this.externalSettings.username = this.externalSource.username;
|
|
3388
|
-
this.externalSettings.password = this.externalSource.password;
|
|
3389
|
-
}
|
|
3390
|
-
// finally show the catalog
|
|
3391
|
-
this.switchToProduct();
|
|
3392
|
-
this.loaded = true;
|
|
3393
|
-
});
|
|
3394
|
-
}
|
|
3395
|
-
_prepareConfigurator() {
|
|
3396
|
-
if (this.externalCatalogStartupInfo) {
|
|
3397
|
-
this.token = this.externalCatalogStartupInfo.token;
|
|
3398
|
-
this.sku = this.externalCatalogStartupInfo.externalGoodId;
|
|
3399
|
-
this.variant = this.externalCatalogStartupInfo.flattenedGoodId;
|
|
3400
|
-
this.urlParams = this.externalCatalogStartupInfo.externalSource.parameters;
|
|
3401
|
-
this.switchToConfigurator();
|
|
3402
|
-
this.loaded = true;
|
|
3403
|
-
}
|
|
3404
|
-
}
|
|
3405
|
-
_prepareSource() {
|
|
3406
|
-
this.externalUrl = this.externalSource.url;
|
|
3407
|
-
this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
|
|
3408
|
-
this.switchToSource();
|
|
3409
|
-
this.loaded = true;
|
|
3410
|
-
}
|
|
3411
|
-
switchToProduct() {
|
|
3412
|
-
this.showProduct = true;
|
|
3413
|
-
this.showConfigurator = false;
|
|
3414
|
-
this.showSource = false;
|
|
3415
|
-
}
|
|
3416
|
-
switchToConfigurator() {
|
|
3417
|
-
this.showProduct = false;
|
|
3418
|
-
this.showConfigurator = true;
|
|
3419
|
-
this.showSource = false;
|
|
3420
|
-
}
|
|
3421
|
-
switchToSource() {
|
|
3422
|
-
this.showProduct = false;
|
|
3423
|
-
this.showConfigurator = false;
|
|
3424
|
-
this.showSource = true;
|
|
3425
|
-
}
|
|
3426
|
-
}
|
|
3427
|
-
ProductExternalSourceComponent.decorators = [
|
|
3428
|
-
{ type: Component, args: [{
|
|
3429
|
-
selector: 'co-product-external-source',
|
|
3430
|
-
template: `
|
|
3431
|
-
<ng-container *ngIf="loaded">
|
|
3432
|
-
<ng-container *ngIf="showProduct">
|
|
3433
|
-
<app-product-page
|
|
3434
|
-
[sku]="sku"
|
|
3435
|
-
[settings]="externalSettings"
|
|
3436
|
-
[externalSource]="externalSource"
|
|
3437
|
-
></app-product-page>
|
|
3438
|
-
</ng-container>
|
|
3439
|
-
<ng-container *ngIf="showSource">
|
|
3440
|
-
<iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
|
|
3441
|
-
</ng-container>
|
|
3442
|
-
<ng-container *ngIf="showConfigurator">
|
|
3443
|
-
<co-product-hd width="100%" height="100%"
|
|
3444
|
-
[sku]="sku"
|
|
3445
|
-
[variant]="variant"
|
|
3446
|
-
[token]="token"
|
|
3447
|
-
[urlParams]="urlParams"
|
|
3448
|
-
(configuratorFinished)="handleConfigurationFinished($event)"></co-product-hd>
|
|
3449
|
-
</ng-container>
|
|
3450
|
-
</ng-container>
|
|
3451
|
-
`,
|
|
3452
|
-
providers: [
|
|
3453
|
-
ProductSettingsService,
|
|
3454
|
-
ProductConnectorAdapterService,
|
|
3455
|
-
ProductConnectorService
|
|
3456
|
-
],
|
|
3457
|
-
encapsulation: ViewEncapsulation.None
|
|
3458
|
-
},] }
|
|
3459
|
-
];
|
|
3460
|
-
ProductExternalSourceComponent.ctorParameters = () => [
|
|
3461
|
-
{ type: DomSanitizer },
|
|
3462
|
-
{ type: ProductConnectorService },
|
|
3463
|
-
{ type: ProductEventService }
|
|
3464
|
-
];
|
|
3465
|
-
ProductExternalSourceComponent.propDecorators = {
|
|
3466
|
-
sku: [{ type: Input }],
|
|
3467
|
-
catalogDefinition: [{ type: Input }],
|
|
3468
|
-
externalSource: [{ type: Input }],
|
|
3469
|
-
externalCatalogStartupInfo: [{ type: Input }],
|
|
3470
|
-
options: [{ type: Input }],
|
|
3471
|
-
addToCart: [{ type: Output }],
|
|
3472
|
-
addToQuote: [{ type: Output }],
|
|
3473
|
-
alternativeClick: [{ type: Output }],
|
|
3474
|
-
configuratorFinished: [{ type: Output }],
|
|
3475
|
-
showClass: [{ type: HostBinding, args: ['class.co-product-external-source',] }]
|
|
3476
|
-
};
|
|
3477
|
-
|
|
3478
|
-
class ProductExternalSourceModule {
|
|
3479
|
-
}
|
|
3480
|
-
ProductExternalSourceModule.decorators = [
|
|
3481
|
-
{ type: NgModule, args: [{
|
|
3482
|
-
imports: [
|
|
3483
|
-
CommonModule,
|
|
3484
|
-
ProductPageModule,
|
|
3485
|
-
ProductHdModule
|
|
3486
|
-
],
|
|
3487
|
-
declarations: [
|
|
3488
|
-
ProductExternalSourceComponent
|
|
3489
|
-
],
|
|
3490
|
-
exports: [
|
|
3491
|
-
ProductExternalSourceComponent
|
|
3492
|
-
]
|
|
3493
|
-
},] }
|
|
3494
|
-
];
|
|
3495
|
-
|
|
3496
|
-
class IoneProductModule {
|
|
3497
|
-
}
|
|
3498
|
-
IoneProductModule.decorators = [
|
|
3499
|
-
{ type: NgModule, args: [{
|
|
3500
|
-
imports: [
|
|
3501
|
-
// BrowserAnimationsModule,
|
|
3502
|
-
CommonModule,
|
|
3503
|
-
ProductPageModule,
|
|
3504
|
-
ProductHdModule,
|
|
3505
|
-
ProductExternalSourceModule,
|
|
3506
|
-
ButtonModule$1
|
|
3507
|
-
],
|
|
3508
|
-
declarations: [
|
|
3509
|
-
IoneProductComponent
|
|
3510
|
-
],
|
|
3511
|
-
exports: [
|
|
3512
|
-
IoneProductComponent
|
|
3513
|
-
],
|
|
3514
|
-
schemas: [
|
|
3515
|
-
CUSTOM_ELEMENTS_SCHEMA,
|
|
3516
|
-
NO_ERRORS_SCHEMA
|
|
3517
|
-
],
|
|
3518
|
-
bootstrap: [
|
|
3519
|
-
IoneProductComponent
|
|
3520
|
-
]
|
|
3521
|
-
},] }
|
|
3522
|
-
];
|
|
3523
|
-
|
|
3524
|
-
/**
|
|
3525
|
-
* Generated bundle index. Do not edit.
|
|
3526
|
-
*/
|
|
3527
|
-
|
|
3528
|
-
export { IoneProductComponent, IoneProductModule, ProductConnectorAdapterService, ProductConnectorService, ProductEventService, ProductExternalSourceComponent, ProductExternalSourceModule, ProductSettingsService, Version, ProductPageModule as ɵa, ProductSelectorTypeModule as ɵb, ProductInfoTabsModule as ɵba, ProductAdditionalInfoModule as ɵbb, ProductAdditionalInfoComponent as ɵbc, ProductPropertiesModule as ɵbd, ProductPropertiesComponent as ɵbe, ProductDocumentModule as ɵbf, ProductDocumentsComponent as ɵbg, ProductSymbolsModule as ɵbh, ProductSymbolsComponent as ɵbi, ProductInfoTabsComponent as ɵbj, ProductDialogModule as ɵbk, ProductDialogComponent as ɵbl, RenderCarouselModule as ɵbm, RenderCarouselComponent as ɵbn, ProductPageComponent as ɵbo, ProductHdModule as ɵbp, ProductHdComponent as ɵbq, ProductScriptLoaderService as ɵbr, LocalStorageService as ɵbs, PipeModule as ɵc, LocalizePipe as ɵd, DictionaryService as ɵe, JsonUtilsService as ɵf, ProductSelectorTypeComponent as ɵg, IconCacheService as ɵh, ImageCarouselModule as ɵi, ImageCarouselComponent as ɵj, ProductDescriptionModule as ɵk, ProductDescriptionComponent as ɵl, ProductAdditionalDescriptionModule as ɵm, ProductAdditionalDescriptionComponent as ɵn, ProductPriceModule as ɵo, ProductPriceComponent as ɵp, ProductAddtocartModule as ɵq, ProductAddtocartComponent as ɵr, ProductRelatedModule as ɵs, HeaderModule as ɵt, HeaderComponent as ɵu, ProductRelatedComponent as ɵv, ProductStockModule as ɵw, ProductStockComponent as ɵx, ProductDeliveryModule as ɵy, ProductDeliveryComponent as ɵz };
|
|
3529
|
-
//# sourceMappingURL=colijnit-product.js.map
|