An error occurred while processing the template.
An error has occurred when reading existing sub-variable "iterator"; see cause exception! The type of the containing value was: extended_hash+string (org.json.JSONObject wrapped into f.e.b.StringModel) ---- FTL stack trace ("~" means nesting-related): - Failed at: #list accessories.iterator() as acces... [in template "20116#20152#233505" at line 751, column 25] ----
1<#--
2 Techinal specifications
3-->
4
5<#assign portletId = themeDisplay.getPortletDisplay().getId() >
6<#assign printURL = themeDisplay.getURLCurrent() + "?p_p_id=" + portletId + "&p_p_state=maximized&print" >
7<#assign printMode = themeDisplay.getURLCurrent()?contains("print")>
8<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
9
10<#if cmsEntity?has_content>
11<#assign ns = themeDisplay.portletDisplay.getId() >
12<#if cmsEntity.getField(profile, "/entity/relationships/productSpecifications")?has_content>
13 <#assign productSpecifications = cmsEntity.getField(profile, "/entity/relationships/productSpecifications") >
14</#if>
15<#if cmsEntity.getField(profile, "/entity/relationships/amplifierSpecifications")?has_content>
16 <#assign amplifierSpecifications = cmsEntity.getField(profile, "/entity/relationships/amplifierSpecifications") >
17</#if>
18<#if cmsEntity.getField(profile, "/entity/relationships/connectorSpecifications")?has_content>
19 <#assign connectorSpecifications = cmsEntity.getField(profile, "/entity/relationships/connectorSpecifications") >
20</#if>
21<#if cmsEntity.getField(profile, "/entity/relationships/driverSpecifications")?has_content>
22 <#assign driverSpecifications = cmsEntity.getField(profile, "/entity/relationships/driverSpecifications") >
23</#if>
24
25<#if productSpecifications?has_content || connectorSpecifications?has_content || driverSpecifications?has_content>
26
27<hr>
28<#include "${templatesPath}/227222" />
29
30<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-white" id="section-technical-specifications"/>
31
32
33
34
35 <div id="section-specs">
36
37 <div class="row">
38 <#if productSpecifications?has_content && !productSpecifications.properties.isNull("shortTermMaxSpl")>
39 <div class="col-lg-6">
40 <div class="media product-page-media">
41 <@imageThumbnail src="${getProductSpecificationIconUrl('SPL')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
42 <div class="media-body">
43 <h4 class="mt-0 text-bolder"><@liferay.language key="spl"/></h4>
44 <p class="small">${productSpecifications.properties.shortTermMaxSpl} dB</p>
45 </div>
46 </div>
47 </div>
48 </#if>
49 <#if amplifierSpecifications?has_content>
50 <div class="col-lg-6">
51 <div class="media product-page-media">
52 <@imageThumbnail src="${getProductSpecificationIconUrl('AmplifierPower')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
53 <div class="media-body">
54 <h4 class="mt-0 text-bolder"><@liferay.language key="amplifier-power"/></h4>
55 <p class="small">
56 <#list amplifierSpecifications.iterator() as amplifierSpecification>
57 <#if amplifierSpecification.properties.amplifierCount gt 1>
58 ${amplifierSpecification.properties.amplifierCount} X
59 </#if>
60 ${amplifierSpecification.properties.amplifierPower} W ${localizeField(amplifierSpecification.properties.frequencyRange, profile.getCMSLangCode())}
61 (${localizeField(amplifierSpecification.properties.amplifierTechnology, profile.getCMSLangCode())}) <#sep>+
62 </#list>
63 </p>
64 </div>
65 </div>
66 </div>
67 </#if>
68 </div>
69 <div class="row">
70 <#if productSpecifications?has_content>
71 <div class="col-lg-6">
72 <div class="media product-page-media">
73 <@imageThumbnail src="${getProductSpecificationIconUrl('FrequencyResponse')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
74 <div class="media-body">
75 <h4 class="mt-0 text-bolder"><@liferay.language key="frequency-response"/></h4>
76 <p class="small">
77 <#if !productSpecifications.properties.isNull("frequencyResponseLowCutoff6dB")>
78 ${productSpecifications.properties.frequencyResponseLowCutoff6dB}
79 </#if>
80 <#if !productSpecifications.properties.isNull("frequencyResponseHighCutoff6dB")>
81 Hz -
82 <#if productSpecifications.properties.frequencyResponseHighCutoff6dB < 1000>
83 ${productSpecifications.properties.frequencyResponseHighCutoff6dB} Hz
84 <#else>
85 ${productSpecifications.properties.frequencyResponseHighCutoff6dB/1000} kHz
86 </#if>
87 </#if>
88 ("-6 dB")
89 </p>
90 </div>
91 </div>
92 </div>
93 </#if>
94 <#if productSpecifications?has_content>
95 <#if !productSpecifications.properties.isNull("frequencyResponseAccuracy")>
96 <div class="col-lg-6">
97 <div class="media product-page-media">
98 <@imageThumbnail src="${getProductSpecificationIconUrl('AccuracyOfFrequencyResponse')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
99 <div class="media-body">
100
101 <h4 class="mt-0 text-bolder"><@liferay.language key="accuracy-of-frequency-response"/></h4>
102 <p class="small">
103 ±
104 <#if !productSpecifications.properties.isNull("frequencyResponseAccuracy")>
105 ${productSpecifications.properties.frequencyResponseAccuracy} dB
106 </#if>
107 <#if !productSpecifications.properties.isNull("frequencyResponseLowCutoff")>
108 (${productSpecifications.properties.frequencyResponseLowCutoff} Hz
109 </#if>
110 <#if !productSpecifications.properties.isNull("frequencyResponseHighCutoff")>
111 -
112 <#if productSpecifications.properties.frequencyResponseHighCutoff < 1000>
113 ${productSpecifications.properties.frequencyResponseHighCutoff} Hz)
114 <#else>
115 ${productSpecifications.properties.frequencyResponseHighCutoff/1000} kHz)
116 </#if>
117 </#if>
118 </p>
119 </div>
120 </div>
121 </div>
122 </#if>
123 </#if>
124 </div>
125 <div class="row">
126 <#if driverSpecifications?has_content>
127 <div class="col-lg-6">
128 <div class="media product-page-media">
129 <@imageThumbnail src="${getProductSpecificationIconUrl('DriverDimension')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
130 <div class="media-body">
131 <h4 class="mt-0 text-bolder"><@liferay.language key="driver-dimensions"/></h4>
132 <p class="small">
133 <#list driverSpecifications.iterator() as driverSpecification>
134 <#assign driverId = driverSpecification.id>
135 <#if !driverSpecification.properties.isNull("driverHeight") || !driverSpecification.properties.isNull("driverWidth")>
136 <#if driverSpecification.properties.driverCount gt 1>
137 <span>${driverSpecification.properties.driverCount} x</span>
138 </#if>
139 <#if !driverSpecification.properties.isNull("driverHeight")>
140 <span>H </span><span id="driverHeight-${ns}-${driverId}"> ${driverSpecification.properties.driverHeight} </span><span> x</span>
141 </#if>
142 <#if !driverSpecification.properties.isNull("driverWidth")>
143 <span> W </span><span id="driverWidth-${ns}-${driverId}"> ${driverSpecification.properties.driverWidth} </span><span id="mm_inch-driver-${ns}-${driverId}">mm</span>
144 </#if>
145 <#if !driverSpecification.properties.isNull("frequencyRange")>
146 <span>${localizeField(driverSpecification.properties.frequencyRange, profile.getCMSLangCode())}</span> <#sep>+
147 </#if>
148 <#elseif !driverSpecification.properties.isNull("driverDiameter")>
149 <#if driverSpecification.properties.driverCount gt 1>
150 <span>${driverSpecification.properties.driverCount} x</span>
151 </#if>
152 <#if !driverSpecification.properties.isNull("driverDiameter")>
153 <span class="text-intro">⌀ </span>
154 <span id="driverDiameter-${ns}-${driverId}">${driverSpecification.properties.driverDiameter} </span><span id="mm_inch-driver-${ns}-${driverId}">mm</span>
155 </#if>
156 <#if !driverSpecification.properties.isNull("frequencyRange")>
157 <span>${localizeField(driverSpecification.properties.frequencyRange, profile.getCMSLangCode())}</span> <#sep>+
158 </#if>
159 </#if>
160 </#list>
161
162 <a class="small" id="mmtoinch-driver-${ns}">(<@liferay.language key="view-in-inches"/>)</a>
163
164 </p>
165 </div>
166 </div>
167 </div>
168 </#if>
169 <#if productSpecifications?has_content>
170 <div class="col-lg-6">
171 <div class="media product-page-media">
172 <@imageThumbnail src="${getProductSpecificationIconUrl('Dimension')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
173 <div class="media-body">
174 <h4 class="mt-0 text-bolder"><@liferay.language key="dimensions"/></h4>
175 <p class="small">
176 <#if !productSpecifications.properties.isNull("heightWithIsoPod")>
177 H <span id="heightWithIsoPod-${ns}">${productSpecifications.properties.heightWithIsoPod}</span>
178 x W <span id="width-${ns}">${productSpecifications.properties.width}</span> x D <span id="depth-${ns}">${productSpecifications.properties.depth}</span>
179 <span id="mm_inch-${ns}">mm</span>,
180 <@liferay.language key="with-iso-pod"/>™
181 <a class="small" id="mmtoinch-${ns}">(<@liferay.language key="view-in-inches"/>)</a>
182 <#else>
183 H <span id="height-${ns}">${productSpecifications.properties.height}</span>
184 x W <span id="width-${ns}">${productSpecifications.properties.width}</span> x D <span id="depth-${ns}">${productSpecifications.properties.depth}</span>
185 <span id="mm_inch-${ns}">mm</span>,
186 <a class="small" id="mmtoinch-${ns}">(<@liferay.language key="view-in-inches"/>)</a>
187 </#if>
188 </p>
189 </div>
190 </div>
191 </div>
192 </#if>
193 </div>
194 <div class="row">
195 <#if productSpecifications?has_content>
196 <div class="col-lg-6">
197 <div class="media product-page-media">
198 <@imageThumbnail src="${getProductSpecificationIconUrl('Weight')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
199 <div class="media-body">
200 <h4 class="mt-0 text-bolder"><@liferay.language key="weight"/></h4>
201 <#if productSpecifications?has_content>
202 <#assign lbWeigt = "${productSpecifications.properties.weight*2.20462262}">
203 <p class="small">${productSpecifications.properties.weight} kg / ${lbWeigt?number?string[".#"]} lb</p>
204 </#if>
205 </div>
206 </div>
207 </div>
208 </#if>
209 <#if connectorSpecifications?has_content>
210 <div class="col-lg-6">
211 <div class="media product-page-media">
212 <@imageThumbnail src="${getProductSpecificationIconUrl('Connections')}" id="" cssClasses="mr-3" thumbnail="techSpecIcon"/>
213 <div class="media-body">
214 <h4 class="mt-0 text-bolder"><@liferay.language key="connections"/></h4>
215 <#list connectorSpecifications.iterator() as connectorSpecification>
216 <p class="small">
217 <#if !connectorSpecification.properties.isNull("connectorCount")>
218 ${connectorSpecification.properties.connectorCount}
219 </#if>
220 <#if !connectorSpecification.properties.isNull("connectorType")>
221 x ${localizeField(connectorSpecification.properties.connectorType, profile.getCMSLangCode())}
222 </#if>
223 <#if !connectorSpecification.properties.isNull("connectorSignal")>
224 ${localizeField(connectorSpecification.properties.connectorSignal, profile.getCMSLangCode())}
225 </#if>
226 <#if !connectorSpecification.properties.isNull("connectorFunction")>
227 ${localizeField(connectorSpecification.properties.connectorFunction, profile.getCMSLangCode())}
228 </#if>
229 </p>
230 </#list>
231 </div>
232 </div>
233 </div>
234 </#if>
235 </div>
236
237 <div class="btn-container">
238 <a class="btn btn-dark btn-medium btn-margin-top" onClick="openPopup(3)" href="#section-technical-specifications">
239 <@liferay.language key="open-all-details"/>
240 <@linkIcon cssClasses="icon tiny-icon" alt="" icon="arrow-white"/>
241 </a>
242 </div>
243 </div>
244
245<@sectionFooter/>
246
247
248<#-- Popup -->
249
250<div id="theme-popup3" class="popup">
251 <div class="close-button-container">
252 <button class="close" onClick="closePopup(3)"></button>
253 </div>
254
255 <div class="panel popup-content" id="popupContent3">
256 <div class="panel-body" id="TechnicalSpecifications">
257
258<#assign firstIamgeOfFirstAssetURL = "">
259
260<#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content>
261 <#assign firstVariant = cmsEntity.getField(profile, "/entity/relationships/variants").get(0)>
262 <#assign variantImages = variantImages(firstVariant, siteDefaultLocale) >
263
264 <#if variantImages?has_content>
265 <#assign firstIamgeOfFirstAssetURL = variantImages.get(0).url>
266 </#if>
267</#if>
268
269
270 <#if productSpecifications?has_content>
271 <div class="row">
272 <div class="col-lg-8">
273 <h3 class="section-heading text-bolder h2">
274 ${localizeField(productSpecifications.title, profile.getCMSLangCode())}
275 </h3>
276 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")?has_content>
277 <h3 class="subtitle">${cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")}</h3>
278 </#if>
279 <h3 class="text-bolder mb-4"><@liferay.language key="technical-specifications"/></h3>
280 </#if>
281 <#if cmsEntity.getField(profile, "/entity/fields/summary")?has_content>
282 ${cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))}
283 </#if>
284 </div>
285 <div class="col-lg-3 text-center">
286 <@imageThumbnail src="${firstIamgeOfFirstAssetURL}" />
287 </div>
288 </div>
289
290 <div class="pull-right pt-3 d-print-none" style="margin-top: -80px">
291 <a rel="nofollow" href="${printURL}" target="_blank">
292 <img class="print-icon" alt="<@liferay.language key="print"/>"
293 width="40"
294 src="/o/genelec-site-theme/images/icons/basic-icons/print.png"
295 />
296 </a>
297 </div>
298
299 <div class="bg-black tech-spec-sub-header">
300 <h3 class="text-bolder mb-0"><@liferay.language key="system-specifications"/></h3>
301 </div>
302
303 <div class="technical-specifications-table">
304 <#if productSpecifications?has_content>
305 <div class="row">
306 <div class="col-lg-4">
307 <h5 class="text-bolder"><@liferay.language key="frequency-response"/></h5>
308 <p class="text-tight">
309
310 <#if productSpecifications?has_content>
311 <span class="small text-bolder">
312 <#if !productSpecifications.properties.isNull("frequencyResponseLowCutoff")>
313 ${productSpecifications.properties.frequencyResponseLowCutoff} Hz
314 </#if>
315 <#if !productSpecifications.properties.isNull("frequencyResponseHighCutoff")>
316 -
317 <#if productSpecifications.properties.frequencyResponseHighCutoff < 1000>
318 ${productSpecifications.properties.frequencyResponseHighCutoff} Hz
319 <#else>
320 ${productSpecifications.properties.frequencyResponseHighCutoff/1000} kHz
321 </#if>
322 </#if>
323 <#if !productSpecifications.properties.isNull("frequencyResponseAccuracy")>
324 (± ${productSpecifications.properties.frequencyResponseAccuracy} dB)
325 </#if>
326 </span>
327 </#if>
328 </p>
329 <#if !productSpecifications.properties.isNull("frequencyResponseLowCutoff6dB")>
330 <@printIfNotEmpty title="low-cutoff--6db" container=productSpecifications.properties field="frequencyResponseLowCutoff6dB" cssTitle="text-medium text-bolder" cssContent="small text-bolder" unit="Hz"/>
331 </#if>
332 <p class="text-tight">
333 <span class="text-medium text-bolder"><@liferay.language key="high-cutoff--6db"/></span><br>
334 <span class="small text-bolder">
335 <#if productSpecifications.properties.frequencyResponseHighCutoff6dB < 1000>
336 ${productSpecifications.properties.frequencyResponseHighCutoff6dB} Hz
337 <#else>
338 ${productSpecifications.properties.frequencyResponseHighCutoff6dB/1000} kHz
339 </#if>
340 </span>
341 </p>
342 </div>
343 <div class="col-lg-8 no-padding">
344 <#if productSpecifications?has_content>
345 <#if !productSpecifications.assets.isNull("frequencyResponseGraph")>
346 <#assign frequencyResponseGraph = productSpecifications.assets.frequencyResponseGraph.url>
347 <@imageThumbnailLazy data="${frequencyResponseGraph}" id="" cssClasses="technical-specifications-img lazy" thumbnail="frequencyResponseGraph"/>
348 </#if>
349 </#if>
350 </div>
351 </div>
352
353 <div class="row">
354 <div class="col-lg-4 middle-lines">
355 <h5 class="text-bolder"><@liferay.language key="spl"/></h5>
356 <@printIfNotEmptyTwoFields title="peak-spl" container=productSpecifications.properties field="peakSpl" field2="peakSplDescription" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small" unit="dB" mathSymbol="≥"/>
357 <@printIfNotEmptyTwoFields title="short-term-max-spl" container=productSpecifications.properties field="shortTermMaxSpl" field2="shortTermMaxSplDescription" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small" unit="dB" mathSymbol="≥"/>
358 <@printIfNotEmptyTwoFields title="long-term-max-spl" container=productSpecifications.properties field="longTermMaxSpl" field2="longTermMaxSplDescription" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small" unit="dB" mathSymbol="≥"/>
359
360 </div>
361 <div class="col-lg-4 middle-lines">
362 <h5 class="text-bolder"><@liferay.language key="self-generated-noise"/></h5>
363 <@printIfNotEmptyTwoFields title="self-generated-noise" container=productSpecifications.properties field="selfGeneratedNoiseLevel" field2="selfGeneratedNoiseDescription" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small" unit="dB SPL" mathSymbol="≤" />
364 </div>
365 <#if !productSpecifications.properties.isNull("weight")>
366 <div class="col-lg-4 middle-lines">
367 <h5 class="text-bolder"><@liferay.language key="weight"/></h5>
368
369 <span class="text-medium text-bolder"><@liferay.language key="weight"/></span><br>
370 <#assign lbWeigt = "${productSpecifications.properties.weight*2.20462262}">
371 <span class="small text-bolder">${productSpecifications.properties.weight} kg</span>
372 <span class="small">(${lbWeigt?number?string[".#"]} lb)</span>
373 </div>
374 </#if>
375 </div>
376 <div class="row">
377 <div class="col-lg-4">
378 <h5 class="text-bolder"><@liferay.language key="dimensions"/></h5>
379 <@printIfNotEmptyInches title="height" container=productSpecifications.properties field="height" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small popupHeight" unit="mm"/>
380
381 <#if !productSpecifications.properties.isNull("heightWithIsoPod") && productSpecifications.properties.heightWithIsoPod gt 0>
382 <@printIfNotEmptyInches title="height-with-iso-pod" container=productSpecifications.properties field="heightWithIsoPod" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small popupHeightWithIsoPod" unit="mm"/>
383 </#if>
384
385 <@printIfNotEmptyInches title="width" container=productSpecifications.properties field="width" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small popupWidth" unit="mm"/>
386
387 <@printIfNotEmptyInches title="depth" container=productSpecifications.properties field="depth" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssContentField2="small popupDepth" unit="mm"/>
388
389 <#if !productSpecifications.properties.isNull("dimensionsDescription")>
390 <p>${localizeField(productSpecifications.properties.dimensionsDescription, profile.getCMSLangCode())}</p>
391 </#if>
392
393 </div>
394 <div class="col-lg-8 no-padding">
395 <#if !productSpecifications.assets.isNull("dimensionsLineGraph")>
396 <#assign dimensionsLineGraph = productSpecifications.assets.dimensionsLineGraph.url>
397 <@imageThumbnailLazy data="${dimensionsLineGraph}" id="" cssClasses="technical-specifications-img lazy" thumbnail="dimensionsLineGraph"/>
398 </#if>
399 </div>
400 </div>
401
402 <#if !productSpecifications.properties.isNull("enclosureMaterial") || !productSpecifications.properties.isNull("enclosureType")>
403 <div class="row">
404 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="enclosure"/></h5>
405 <@printIfNotEmpty title="enclosure-material" container=productSpecifications.properties field="enclosureMaterial" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssDiv="col-lg-4" localization="profile.getCMSLangCode()"/>
406 <@printIfNotEmpty title="enclosure-type" container=productSpecifications.properties field="enclosureType" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssDiv="col-lg-4" localization="profile.getCMSLangCode()"/>
407 </div>
408 </#if>
409
410 </#if>
411
412 <#if driverSpecifications?has_content>
413 <div class="row">
414 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="drivers"/></h5>
415
416 <#if driverSpecifications?has_content>
417 <#list driverSpecifications.iterator() as driverSpecification>
418 <div class="col-lg-4">
419 <#if !driverSpecification.properties.isNull("frequencyRange")>
420 <span class="small text-bolder">${localizeField(driverSpecification.properties.frequencyRange, profile.getCMSLangCode())}</span><br><br>
421 </#if>
422
423 <@printIfNotEmpty title="driver-type" container=driverSpecification.properties field="driverType" cssTitle="small text-bolder" cssContent="small" localization="profile.getCMSLangCode()"/>
424
425 <#if !driverSpecification.properties.isNull("driverDescription")>
426 <p class="text-tight">
427 <span class="small">${localizeField(driverSpecification.properties.get("driverDescription"), profile.getCMSLangCode())}</span>
428 </p>
429 </#if>
430 <#if !driverSpecification.properties.isNull("driverCount")>
431 <#assign count = "${driverSpecification.properties.driverCount}">
432 <#if count?number gte 2>
433 <p class="text-tight">
434 <span class="small text-bolder"><@liferay.language key="count"/></span><br>
435 <span class="small">${count}</span><br>
436 </p>
437 </#if>
438 </#if>
439 <#assign driverId = driverSpecification.id>
440
441 <@printIfNotEmptyInches title="diameter" container=driverSpecification.properties field="driverDiameter" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupDriverDiameter-${driverId}" unit="mm"/>
442
443 <@printIfNotEmptyInches title="width" container=driverSpecification.properties field="driverWidth" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupDriverWidth-${driverId}" unit="mm"/>
444
445 <@printIfNotEmptyInches title="height" container=driverSpecification.properties field="driverHeight" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupDriverHeight-${driverId}" unit="mm"/>
446
447
448 </div>
449 </#list>
450 </#if>
451 </div>
452 </#if>
453
454 <#if productSpecifications?has_content>
455 <#if !productSpecifications.assets.isNull("verticalDirectivityGraph") || !productSpecifications.assets.isNull("horizontalDirectivityGraph")>
456 <div class="row">
457 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="directivity"/></h5>
458
459 <#if !productSpecifications.assets.isNull("verticalDirectivityGraph")>
460 <div class="col-lg-6">
461 <div class="small text-bolder mb-3"><@liferay.language key="vertical-directivity"/></div>
462 <#assign verticalDirectivityGraph = productSpecifications.assets.verticalDirectivityGraph.url>
463 <@imageThumbnailLazy data="${verticalDirectivityGraph}" id="" cssClasses="technical-specifications-img lazy" thumbnail="verticalDirectivityGraph"/>
464 </div>
465 </#if>
466 <#if !productSpecifications.assets.isNull("horizontalDirectivityGraph")>
467 <div class="col-lg-6">
468 <div class="small text-bolder mb-3"><@liferay.language key="horizontal-directivity"/></div>
469 <#assign horizontalDirectivityGraph = productSpecifications.assets.horizontalDirectivityGraph.url>
470 <@imageThumbnailLazy data="${horizontalDirectivityGraph}" id="" cssClasses="technical-specifications-img lazy" thumbnail="horizontalDirectivityGraph"/>
471 </div>
472 </#if>
473 </div>
474 </#if>
475
476 <div class="row">
477 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="harmonic-distortion"/> </h5>
478 <div class="col-lg-4">
479 <#if !productSpecifications.properties.isNull("bassDistortionDescription")>
480 <#assign bassDistortionContent = localizeField(productSpecifications.properties.bassDistortionDescription, profile.getCMSLangCode())>
481
482 <span class="small">
483 ${bassDistortionContent} ≤${productSpecifications.properties.bassDistortion} %
484 </span><br>
485
486 </#if>
487 <#if !productSpecifications.properties.isNull("midrangeDistortionDescription")>
488 <#assign midrangeDistortionContent = localizeField(productSpecifications.properties.midrangeDistortionDescription, profile.getCMSLangCode())>
489
490 <span class="small">
491 ${midrangeDistortionContent} ≤${productSpecifications.properties.midrangeDistortion} %
492 </span><br>
493
494 </#if>
495 <#if !productSpecifications.properties.isNull("trebleDistortionDescription")>
496 <#assign trebleDistortionContent = localizeField(productSpecifications.properties.trebleDistortionDescription, profile.getCMSLangCode())>
497
498 <span class="small">
499 ${trebleDistortionContent} ≤${productSpecifications.properties.trebleDistortion} %
500 </span>
501
502 </#if>
503 </div>
504 </div>
505 <#if !productSpecifications.assets.isNull("groupDelayGraphs") || !productSpecifications.properties.isNull("groupDelayText")>
506 <div class="row">
507 <div class="col-lg-4">
508 <h5 class="text-bolder"><@liferay.language key="group-delay"/></h5>
509 <#if !productSpecifications.properties.isNull("groupDelayText")>
510 <span class="small">
511 <#assign groupDelayText = cmsContentFormatterService.getMarkdown(localizeField(productSpecifications.properties.groupDelayText, profile.getCMSLangCode()), 300)>
512 ${groupDelayText}
513 </span>
514 </#if>
515
516 </div>
517 <#if !productSpecifications.assets.isNull("groupDelayGraphs")>
518 <#assign groupDelayGraphs = productSpecifications.assets.groupDelayGraphs>
519 <#list groupDelayGraphs.iterator() as groupDelayGraph>
520 <div class="col-lg-8 no-padding">
521 <@imageThumbnailLazy data="${groupDelayGraph.url}" id="" cssClasses="technical-specifications-img lazy" thumbnail="groupDelayGraphs"/>
522 </div>
523 <#sep><div class="col-lg-4"></div>
524 </#list>
525 </#if>
526 </div>
527 </#if>
528
529 </div>
530 </#if>
531 <div class="bg-black tech-spec-sub-header">
532 <h3 class="text-bolder mb-0"><@liferay.language key="amplifier-section"/></h3>
533 </div>
534
535 <div class="technical-specifications-table">
536 <#if amplifierSpecifications?has_content>
537 <div class="row">
538 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="amplifiers"/></h5>
539
540 <#list amplifierSpecifications.iterator() as amplifierSpecification>
541 <div class="col-lg-4">
542 <span class="text-medium text-bolder">${localizeField(amplifierSpecification.title, profile.getCMSLangCode())}</span><br>
543
544 <#if !amplifierSpecification.properties.isNull("amplifierPower")>
545 <p class="text-tight">
546 <#if !amplifierSpecification.properties.isNull("amplifierCount")>
547 <#assign amplifierCount = amplifierSpecification.properties.amplifierCount>
548 <#if amplifierCount gt 1>
549 <span class="small">${amplifierCount} x ${amplifierSpecification.properties.amplifierPower} W ${localizeField(amplifierSpecification.properties.amplifierTechnology, profile.getCMSLangCode())}</span>
550 <#else>
551 <span class="small">${amplifierSpecification.properties.amplifierPower} W ${localizeField(amplifierSpecification.properties.amplifierTechnology, profile.getCMSLangCode())}</span>
552 </#if>
553 <#else>
554 <span class="small">${amplifierSpecification.properties.amplifierPower} W ${localizeField(amplifierSpecification.properties.amplifierTechnology, profile.getCMSLangCode())}</span>
555 </#if>
556 </p>
557 </#if>
558 <#assign amplifierId = amplifierSpecification.id>
559 <@printIfNotEmpty container=amplifierSpecification.properties field="amplifierDescription" cssContent="small" localization="profile.getCMSLangCode()"/>
560
561 <@printIfNotEmptyInches title="diameter" container=amplifierSpecification.properties field="amplifierDiameter" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupAmplifierDiameter-${amplifierId}" unit="mm"/>
562
563 <@printIfNotEmptyInches title="height" container=amplifierSpecification.properties field="amplifierHeight" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupAmplifierHeight-${amplifierId}" unit="mm"/>
564
565 <@printIfNotEmptyInches title="width" container=amplifierSpecification.properties field="amplifierWidth" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupAmplifierWidth-${amplifierId}" unit="mm"/>
566
567 <@printIfNotEmptyInches title="depth" container=amplifierSpecification.properties field="amplifierDepth" cssTitle="small text-bolder" cssContent="small" cssContentField2="small popupAmplifierDepth-${amplifierId}" unit="mm"/>
568
569 <#if !amplifierSpecification.properties.isNull("amplifierWeight")>
570 <#assign amplifierLbWeigt = "${amplifierSpecification.properties.amplifierWeight*2.20462262}">
571 <p class="text-tight">
572 <span class="small text-bolder"><@liferay.language key="weight"/></span><br>
573 <span class="small">${amplifierSpecification.properties.amplifierWeight} kg</span>
574 <span class="small">(${amplifierLbWeigt?number?string[".#"]} lb)</span>
575 </p>
576 </#if>
577
578 </div>
579 </#list>
580 </div>
581 </#if>
582 <#if productSpecifications?has_content>
583 <div class="row">
584 <div class="col-lg-12">
585 <h5 class="text-bolder"><@liferay.language key="mains-voltage"/></h5>
586 <@printIfNotEmpty container=productSpecifications.properties field="mainsVoltage" cssContent="text-medium text-bolder" localization="profile.getCMSLangCode()"/>
587 </div>
588 </div>
589
590 <div class="row">
591 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="power-consumption"/></h5>
592
593 <@printIfNotEmpty title="iss-active" container=productSpecifications.properties field="powerConsumptionISSActive" cssTitle="text-medium text-bolder" cssDiv="col-lg-4" cssContent="small text-bolder" unit="W" mathSymbol="≤"/>
594
595 <@printIfNotEmpty title="idle" container=productSpecifications.properties field="powerConsumptionIdle" cssTitle="text-medium text-bolder" cssDiv="col-lg-4" cssContent="small text-bolder" unit="W" mathSymbol="≤"/>
596
597 <@printIfNotEmpty title="full-output" container=productSpecifications.properties field="powerConsumptionFullOutput" cssTitle="text-medium text-bolder" cssDiv="col-lg-4" cssContent="small text-bolder" unit="W"/>
598 </div>
599 </#if>
600 </div>
601
602 <div class="bg-black tech-spec-sub-header">
603 <h3 class="text-bolder mb-0"><@liferay.language key="signal-processing-section"/></h3>
604 </div>
605
606 <div class="technical-specifications-table">
607
608 <#if connectorSpecifications?has_content>
609 <div class="row">
610 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="connectors"/></h5>
611
612 <#list connectorSpecifications.iterator() as connectorSpecification>
613 <#assign connectorCount = "${connectorSpecification.properties.connectorCount}">
614 <div class="col-lg-6">
615 <#if !connectorSpecification.properties.isNull(connectorSignal)>
616 <span class="text-medium text-bolder">${localizeField(connectorSpecification.properties.connectorSignal, profile.getCMSLangCode())} <@liferay.language key="connectors"/></span><br>
617 </#if>
618 <p class="text-tight">
619 <#if connectorCount?number gt 1>
620 <span class="small text-bolder">${connectorCount} x ${localizeField(connectorSpecification.properties.connectorFunction, profile.getCMSLangCode())}</span><br>
621 <#else>
622 <span class="small text-bolder">${localizeField(connectorSpecification.properties.connectorFunction, profile.getCMSLangCode())}</span><br>
623 </#if>
624 <#if !connectorSpecification.properties.isNull("connectorDescription")>
625 <span class="small">
626 <#assign connectorDescription = cmsContentFormatterService.getMarkdown(localizeField(connectorSpecification.properties.connectorDescription, profile.getCMSLangCode()), 300)>
627 ${connectorDescription}
628 </span>
629 </#if>
630 <br>
631 </p>
632 </div>
633 </#list>
634 </div>
635 </#if>
636 <#if productSpecifications?has_content>
637 <#if !productSpecifications.properties.isNull("bassMidCrossover") || !productSpecifications.properties.isNull("bassTrebleCrossover") || !productSpecifications.properties.isNull("midTrebleCrossover") || !productSpecifications.properties.isNull("crossoverDescription")>
638 <div class="row">
639 <h5 class="text-bolder col-lg-12 mb-0"><@liferay.language key="crossover"/></h5>
640
641 <@printIfNotEmpty title="Bass/Mid" container=productSpecifications.properties field="bassMidCrossover" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssDiv="col-lg-4" unit="Hz"/>
642 <@printIfNotEmpty title="Bass/Treble" container=productSpecifications.properties field="bassTrebleCrossover" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssDiv="col-lg-4" unit="Hz"/>
643 <@printIfNotEmpty title="Mid/Treble" container=productSpecifications.properties field="midTrebleCrossover" cssTitle="text-medium text-bolder" cssContent="small text-bolder" cssDiv="col-lg-4" unit="Hz"/>
644
645 </div>
646 <#if !productSpecifications.properties.isNull("crossoverDescription") && localizeField(productSpecifications.properties.crossoverDescription, profile.getCMSLangCode())?has_content>
647 <div class="row border-top-0">
648 <div class="col-12">
649 <#assign crossoverDescription = cmsContentFormatterService.getMarkdown(localizeField(productSpecifications.properties.crossoverDescription, profile.getCMSLangCode()), 300)>
650 ${crossoverDescription}
651 </div>
652 </div>
653 </#if>
654 </#if>
655 </#if>
656 </div>
657
658
659 <#-- Product codes -->
660
661 <#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content>
662 <div class="bg-black tech-spec-sub-header">
663 <h3 class="text-bolder mb-0"><@liferay.language key="product-variants"/></h3>
664 </div>
665
666 <div class="technical-specifications-table product-codes-table">
667 <div class="row border-0">
668 <div class="col-lg-12 pb-0">
669 <h5 class="text-bolder"><@liferay.language key="product-codes"/></h5>
670 </div>
671 </div>
672
673 <div class="row border-0 d-none d-lg-flex row-header">
674 <div class="col-lg-2 pt-0 pb-0 text-bolder">
675 <@liferay.language key="product-code"/>
676 </div>
677 <div class="col-lg-6 pt-0 pb-0 text-bolder">
678 <@liferay.language key="product-information"/>
679 </div>
680 <div class="col-lg-2 pt-0 pb-0 text-bolder">
681 <@liferay.language key="ean-code"/>
682 </div>
683 <div class="col-lg-2 pt-0 pb-0 text-bolder">
684 <@liferay.language key="cn-code"/>
685 </div>
686 </div>
687
688 <#list cmsEntity.getField(profile, "/entity/relationships/variants").iterator() as variant>
689 <div class="row border-0 mt-0 mb-0">
690 <div class="col-lg-2 pt-0 pb-0">
691 <#if !variant.properties.isNull("sku")>${variant.properties.sku}</#if>
692 </div>
693 <div class="col-lg-6 pt-0 pb-0">
694 <#if !variant.properties.isNull("title")>
695 ${localizeField(variant.properties.title, profile.getCMSLangCode())}
696 </#if>
697 </div>
698 <div class="col-lg-2 pt-0 pb-0">
699 <#if !variant.properties.isNull("eanCode")>
700 <span class="d-lg-none field-label"><@liferay.language key="ean-code"/>: </span>
701 ${variant.properties.eanCode}
702 </#if>
703 </div>
704 <div class="col-lg-2 pt-0 pb-0">
705 <#if !variant.properties.isNull("cnCode")>
706 <span class="d-lg-none field-label"><@liferay.language key="cn-code"/>: </span>
707 ${variant.properties.cnCode}
708 </#if>
709 </div>
710 </div>
711 </#list>
712 </div>
713
714 </#if>
715
716 <#-- Compatible Accessories -->
717
718
719 <#if cmsEntity.getField(profile, "/entity/relationships/accessories")?has_content>
720 <div class="bg-black tech-spec-sub-header mt-4">
721 <h3 class="text-bolder mb-0"><@liferay.language key="compatible-accessories"/></h3>
722 </div>
723
724 <div class="technical-specifications-table product-codes-table">
725 <div class="row border-0">
726 <div class="col-lg-12 pb-0">
727 <h5 class="text-bolder"><@liferay.language key="product-codes"/></h5>
728 </div>
729 </div>
730
731 <div class="row border-0 d-none d-lg-flex row-header">
732 <div class="col-lg-2 pt-0 pb-0 text-bolder">
733 <@liferay.language key="product-code"/>
734 </div>
735 <div class="col-lg-6 pt-0 pb-0 text-bolder">
736 <@liferay.language key="product-information"/>
737 </div>
738 <div class="col-lg-2 pt-0 pb-0 text-bolder">
739 <@liferay.language key="ean-code"/>
740 </div>
741 <div class="col-lg-2 pt-0 pb-0 text-bolder">
742 <@liferay.language key="cn-code"/>
743 </div>
744 </div>
745
746 <#if cmsEntity.getLocalizedField(profile, "/entity/relationships/accessories")?has_content>
747 <#assign accessories = cmsEntity.getLocalizedField(profile, "/entity/relationships/accessories").references >
748 <#else>
749 <#assign accessories = cmsEntity.getField(profile, "/entity/relationships/accessories") >
750 </#if>
751 <#list accessories.iterator() as accessory>
752 <#if !accessory.isNull("relationships") && !accessory.relationships.isNull("variants")>
753 <#list accessory.relationships.variants.iterator() as accesoryVariant>
754 <div class="row border-0 mt-0 mb-0">
755 <div class="col-lg-2 pt-0 pb-0">
756 <#if !accesoryVariant.properties.isNull("sku")>${accesoryVariant.properties.sku}</#if>
757 </div>
758 <div class="col-lg-6 pt-0 pb-0">
759 <#if !accesoryVariant.properties.isNull("title")>
760 ${localizeField(accesoryVariant.properties.title, profile.getCMSLangCode())}
761 </#if>
762 </div>
763 <div class="col-lg-2 pt-0 pb-0">
764 <#if !accesoryVariant.properties.isNull("eanCode")>
765 <span class="d-lg-none field-label"><@liferay.language key="ean-code"/>: </span>
766 ${accesoryVariant.properties.eanCode}
767 </#if>
768 </div>
769 <div class="col-lg-2 pt-0 pb-0">
770 <#if !accesoryVariant.properties.isNull("cnCode")>
771 <span class="d-lg-none field-label"><@liferay.language key="cn-code"/>: </span>
772 ${accesoryVariant.properties.cnCode}
773 </#if>
774 </div>
775 </div>
776 </#list>
777 </#if>
778
779 </#list>
780 </div>
781
782 </#if>
783
784 <div class="row">
785 <div class="col-lg-12">
786 <h5 class="text-bolder tech-spec-bottom"><@liferay.language key="For-even-more-technical-details-please-see-product-operating-manual"/></h5>
787 </div>
788 </div>
789 </div> <!-- /panel-body -->
790 </div> <!-- /popup-content -->
791</div> <!-- /theme-popup -->
792
793<style>
794 .technical-specifications-img{
795 border: 1px solid #CCC;
796 }
797 .tech-spec-sub-header{
798 padding: 20px;
799 }
800 .tech-spec-bottom {
801 margin-top: 5%;
802 }
803 .technical-specifications-table .row {
804 border-bottom: none;
805 }
806 .technical-specifications-table>.row> [class*="col-"] {
807 padding-top: 20px;
808 padding-bottom: 20px;
809 }
810 .technical-specifications-table>.row>h5 {
811 padding-bottom: 0 !important;
812 }
813 .technical-specifications-table .row:first-of-type {
814 border-top: none;
815 }
816 .tech-spec-sub-header + .row {
817 border-top: none;
818 }
819 .no-padding {
820 padding: 0;
821 }
822
823 @media (min-width: 992px){
824 .middle-lines:not(:first-of-type){
825 border-left:1px solid #CCC;
826 }
827 .technical-specifications-table {
828 margin: auto 20px;
829 }
830 }
831
832 #mmtoinch-${ns}:hover,
833 #mmtoinch-${ns}:focus {
834 text-decoration: none;
835 cursor: pointer;
836 }
837 #mmtoinch-driver-${ns}:hover,
838 #mmtoinch-driver-${ns}:focus {
839 text-decoration: none;
840 cursor: pointer;
841 }
842</style>
843
844<script>
845
846<#if productSpecifications?has_content>
847 $("#mmtoinch-${ns}").click(function(){
848 <#if !productSpecifications.properties.isNull("heightWithIsoPod")>
849 $("#heightWithIsoPod-${ns}").text(function(i, v){
850 return v == '${productSpecifications.properties.heightWithIsoPod}' ? mminch("${productSpecifications.properties.heightWithIsoPod}").toInch() : '${productSpecifications.properties.heightWithIsoPod}'
851 });
852 </#if>
853 <#if !productSpecifications.properties.isNull("height")>
854 $("#height-${ns}").text(function(i, v){
855 return v == '${productSpecifications.properties.height}' ? mminch("${productSpecifications.properties.height}").toInch() : '${productSpecifications.properties.height}'
856
857 });
858 </#if>
859 <#if !productSpecifications.properties.isNull("width")>
860 $("#width-${ns}").text(function(i, v){
861 return v == '${productSpecifications.properties.width}' ? mminch("${productSpecifications.properties.width}").toInch() : '${productSpecifications.properties.width}'
862
863 });
864 </#if>
865 <#if !productSpecifications.properties.isNull("depth")>
866 $("#depth-${ns}").text(function(i, v){
867 return v == '${productSpecifications.properties.depth}' ? mminch("${productSpecifications.properties.depth}").toInch() : '${productSpecifications.properties.depth}'
868
869 });
870 </#if>
871 $("#mm_inch-${ns}").text(function(i, v){
872 return v == 'mm' ? 'in' : 'mm'
873
874 });
875 $("#mmtoinch-${ns}").text(function(i, v){
876 return v == '(<@liferay.language key="view-in-inches"/>)' ? '(<@liferay.language key="view-in-mm"/>)' : '(<@liferay.language key="view-in-inches"/>)'
877
878 });
879 });
880</#if>
881<#if driverSpecifications?has_content>
882 $("#mmtoinch-driver-${ns}").click(function(){
883 <#list driverSpecifications.iterator() as driverSpecification>
884 <#assign driverId = driverSpecification.id>
885 <#if !driverSpecification.properties.isNull("driverHeight")>
886 $("#driverHeight-${ns}-${driverId}").text(function(i, v){
887 return v == mminch('${driverSpecification.properties.driverHeight}').toInch() ? '${driverSpecification.properties.driverHeight}' : mminch('${driverSpecification.properties.driverHeight}').toInch()
888
889 });
890 </#if>
891 <#if !driverSpecification.properties.isNull("driverWidth")>
892 $("#driverWidth-${ns}-${driverId}").text(function(i, v){
893 return v == mminch("${driverSpecification.properties.driverWidth}").toInch() ? '${driverSpecification.properties.driverWidth}' : mminch("${driverSpecification.properties.driverWidth}").toInch()
894
895 });
896 </#if>
897 <#if !driverSpecification.properties.isNull("driverDiameter")>
898 $("#driverDiameter-${ns}-${driverId}").text(function(i, v){
899 return v == mminch("${driverSpecification.properties.driverDiameter}").toInch() ? '${driverSpecification.properties.driverDiameter}' : mminch("${driverSpecification.properties.driverDiameter}").toInch()
900
901 });
902 </#if>
903
904 $("#mm_inch-driver-${ns}-${driverId}").text(function(i, v){
905 return v == ' in' ? ' mm' : ' in'
906
907 });
908 </#list>
909
910 $("#mmtoinch-driver-${ns}").text(function(i, v){
911 return v == '(<@liferay.language key="view-in-inches"/>)' ? '(<@liferay.language key="view-in-mm"/>)' : '(<@liferay.language key="view-in-inches"/>)'
912
913 });
914
915 });
916</#if>
917
918
919 // close popup when clicking outside of the element
920 function closeTechSpecsPopup(e) {
921 if(!$('#popupContent'+"3").is(e.target) &&
922 $('#popupContent'+"3").has(e.target).length == 0 &&
923 $(e.target).attr('class') != 'close' &&
924 $('#theme-popup'+"3").css("display") == "block"){
925 closePopup("3");
926 history.pushState(null, null, ' ');
927 }
928 };
929
930
931
932 $(document).ready(function(){
933 if(window.location.hash.indexOf("section-technical-specifications") > -1) {
934 openPopup(3);
935 };
936 });
937
938
939$(document).on({
940 "mouseup": function (e) { closeTechSpecsPopup(e); },
941 "touchstart": function (e) { closeTechSpecsPopup(e); }
942});
943
944 $(".close").click(function(){
945 history.pushState(null, null, ' ');
946 });
947
948
949 <#-- If printing -->
950 if (window.location.href.indexOf("&print") > -1) {
951 $('#section-technical-specifications').parent().addClass("print");
952 $('#theme-popup3').removeClass("popup");
953 $('#popupContent3').removeClass("popup-content");
954 $('#TechnicalSpecifications img.lazy').each(function() {
955 $(this).removeClass("lazy");
956 $(this).attr("src", $(this).data("src"));
957 $(this).removeAttr("data-src");
958 });
959
960 window.print();
961 }
962
963 </script>
964 </#if>
965 </#if>
966
967<#if printMode>
968<@liferay_util["html-top"] outputKey="htmltop" >
969 <meta name="robots" content="noindex" />
970</@>
971</#if>
972
973 <style>
974 .print #section-technical-specifications { display: none; }
975 .print #TechnicalSpecifications { max-width: 1280px; margin: auto; padding: 30px 15px;}
976 .print .print-icon { display: none;}
977 .print #submenu-links { display: none !important; }
978
979 @media print {
980
981 .print #TechnicalSpecifications { padding: 0;}
982 #content h3.section-heading { font-size: 2em; }
983 .bg-black h3 { border-bottom: 5px solid #000; color: #000; }
984 .tech-spec-sub-header { padding: 0px; }
985 .col-lg-2 {max-width: calc(100% / 6); }
986 .col-lg-3 {max-width: calc(100% / 4); }
987 .col-lg-4 {max-width: calc(100% / 3); }
988 .col-lg-6 { max-width: 50%; }
989 .col-lg-8 { max-width: calc(100%/12*8); }
990 .print .row { break-inside: avoid; }
991 .print .product-codes-table .row-header { display: flex !important; }
992 .print .product-codes-table .field-label { display: none; }
993 }
994 </style>