Kaunis, kompakti ja suorituskykyinen paketti. G One antaa sinulle täydellisen joustavuuden kaiuttimien sijoittelussa ja tarjoaa laadukkaan kuunteluelämyksen pieniin tiloihin.
Ratkaisun tuotteet:
Kaunis, kompakti ja suorituskykyinen paketti. G One antaa sinulle täydellisen joustavuuden kaiuttimien sijoittelussa ja tarjoaa laadukkaan kuunteluelämyksen pieniin tiloihin.
Ratkaisun tuotteet:
96 dB
67 Hz - 25 kHz (-6dB)
H 195 x W 121 x D 115 mm, with Iso-Pod™ (muunna tuumiksi)
Active Crossovers
Directivity Control Waveguide (DCW™)
Intelligent Signal Sensing (ISS™)
Iso-Pod™ Stand
Minimum Diffraction Enclosure (MDE™)
Optimized Amplifiers
Protection Circuitry
Reflex Port Design
Room Response Compensation
Versatile Mountings
Aktiiviset jakosuotimet jakavat audiosignaalin taajuuskaistoihin, jotka ohjataan erillisiin tehovahvistimiin. Vahvistimet on kytketty kyseiselle taajuuskaistalle optimoituihin kaiutinelementteihin.
Aktiivikaiuttimissa käytetään sekä digitaalisia että analogisia jakosuotimia. Genelecin digitaalisissa aktiivijakosuotimissa on myös muita signaalinkäsittelytoiminnallisuuksia, kuten elementtien suojaus, lentoaikakompensointi ja taajuuskorjaus.
Genelecin analogisissa aktiivijakosuotimissa perustuu elektronisiin komponentteihin, jotka käsittelevät matalatasoista signaalia ennen tehovahvistusta. Aktiiviset jakosuotimet eroavat toimintaperiaatteeltaan passiivisista jakosuotimista, joissa käsitellään voimakkaita signaaleja, suurta virtaa ja toisinaan myös suurta jännitettä.
Tyypillisessä kaksitiekaiuttimessa tulosignaali jakosuodatetaan kahdelle erilliselle tehovahvistimelle, joista toinen ohjaa bassoelementtiä ja toinen diskanttielementtiä.
Directivity Control Waveguide (DCW™) -suuntain tuottaa tasaisen taajuusvasteen laajalle kuuntelualueelle.
Vallankumouksellinen Directivity Control Waveguide™ (DCW™) -teknologia parantaa huomattavasti suoraan säteilevän monitiekaiuttimen suorituskykyä.
Tavoite on sovittaa taajuusvaste ja elementtien suuntaavuus kaiuttimessa. Lopputuloksena saavutetaan erinomainen taajuusvaste sekä kaiuttimen akustisella akselilla että sivusta mitattuna.
Parantunut kontrolloitu suuntaavuus vähentää huoneheijastumia kuuntelupaikalle. Tämä parantaa stereokuvaa ja asettaa vähemmän vaatimuksia huoneakustiikalle.
DCW-teknologia parantaa elementin herkkyyttä jopa +6 dB:ä, mikä mahdollistaa suuremman kokonaisäänenpaineen vähentäen samalla säröä ja parantaen luotettavuutta.
###DCW™-suuntaimen tärkeimmät edut:
Genelec kehitti vuonna 2013 Intelligent Signal-Sensing -piirin, joka täyttää sekä ErP-direktiivin vaatimukset että Genelecin omat direktiiviä tiukemmat vastuullisuusvaatimukset.
ISS™-piiri seuraa kaiuttimien signaalinsyöttöä ja havaitsee, milloin signaali on käytössä. Jos ISS-piiri ei havaitse audiosignaalia hetkeen, se asettaa kaiuttimen valmiustilaan, jossa kaiuttimen virrankulutus on alle 0,5 wattia. Kun syöttösignaali havaitaan, kaiutin kytkeytyy päälle itsestään. Kaiutinjärjestelmä alkaa siis säästää sähköä heti, kun työskentely katkeaa.
Jokaisen kaiuttimen taustalevyssä on huonevasteen säätimien vieressä ISS Disable -kytkin. Kun päävirtakytkin on asennossa ON, ISS™-toiminto on oletusarvoisesti päällä.
Jos ISS-toimintoa ei haluta käyttää, se voidaan poistaa käytöstä kääntämällä ISS Disable -kytkin asentoon ON. Tällöin kaiuttimen virransyöttöä ohjataan päävirtakytkimestä.
Päävirtakytkin katkaisee kaiuttimen virransyötön kokonaan.
Vaikka vapaasti seisovien kaiuttimien alle suositellaan yleisesti tukevia jalustoja, on varsin yleistä että kaiuttimet sijoitetaan suoraan pöydälle tai äänipöydän mittarisillalle. Tällaisesta sijoituksesta aiheutuu kuitenkin haitallisia lieveilmiöitä: Kaiuttimen suuntaus kohti kuulijaa on vaikeaa ja kaiuttimen sekä alustan välille syntyy haitallisia mekaanisia värinöitä. Kaiuttimen ollessa pöydällä työtasosta aiheutuu heijastumia, jotka aiheuttavat kampasuodinilmiöstä johtuvaa taajuusvasteen vääristymistä.
Genelec on kehittänyt näiden ongelmien ratkaisemiseksi tehokkaan ja käytännöllisen Isolation Positioner/Decoupler (Iso-Pod™) -alustan, joka kiinnitetään jousella kaiuttimen alumiinikoteloon. Alusta on valmistettu joustavasta kumimaisesta materiaalista. Tukevasti sekä pysty- että vaaka-asentoon Iso-Pod-alustan päälle asettuvaa kaiutinta voidaan kallistaa ±15 asteen kulmaan. Kaiuttimen akustinen akseli voidaan kohdistaa tarkasti kohti kuuntelijaa säätämällä kaiuttimen kulmaa Iso-Pod-alustan päällä.
Mekaaniset eristys- ja vaimennusominaisuudet vähentävät tukipinnoista syntyvän haitallisen värähtelyn aiheuttamaa keskiäänen värittymistä.
Innovatiivinen Iso-Pod™-alusta on oleellinen osa Genelecin kaiutinmuotoilua ja se tarjoaa huomattavia käytettävyyteen sekä äänenlaatuun vaikuttavia etuja.
Etulevyn akustisista epäjatkuvuuskohdista syntyvä diffraktio on tyypillinen vapaasti sijoiteltavan kaiuttimen ongelma. Kotelon terävät kulmat aiheuttavat heijastuksista johtuvia toisioäänilähteitä, jotka värittävät ääntä ja heikentävät äänikuvan tarkkuutta.
Parantaakseen vapaasti sijoiteltavan kaiuttimen taajuusvasteen sekä tehovasteen tasaisuutta, Genelec on kehittänyt innovatiivisen Minimum Diffraction Enclosure (MDE™) -kaiutinkotelon, jossa on kaarevat sivut sekä pyöristetyt kulmat. Poikkeuksellisen tasaisen taajuusvasteen lisäksi kotelorakenteella saavutetaan erinomaiset äänikuvaominaisuudet.
Kompaktin ja tyylikkään ulkoasun saavuttamiseksi kotelon materiaaliksi on valittu painevalettu alumiini, joka mahdollistaa kotelon kokoon suhteutettuna suuren sisätilavuuden bassoelementin herkkyyden maksimoimiseksi. Alumiini on kevyttä, jäykkää ja hyvin vaimentavaa, joten se on erinomainen materiaali ohutseinäisen ja akustisesti "kuolleen" kotelon valmistamiseen. Alumiinikotelo suojaa tehokkaasti elektromagneettiselta säteilyltä ja se toimii myös vahvistimien jäähdytyselementtinä. Kotelo valetaan kahtena kappaleena, jolloin se pystytään avaamaan helposti esimerkiksi huoltoa varten.
Directivity Control Waveguide (DCW™) -suuntain integroidaan MDE™-koteloon hallitun suuntaavuuden saavuttamiseksi. Vakiosuuntaavuuden alarajataajuus määräytyy suuntaimen koon perusteella, jolloin suuremmalla suuntainpinta-alalla saavutetaan hallitumpi suuntaavuuskäyttäytyminen. Hallittu sivukenttäsäteily mahdollistaa suuren käyttökelpoisen kuuntelualueen, mikä on erittäin tärkeää monikanavaisessa äänentarkkailussa. Hallittu suuntaavuus vähentää myös rajapintaheijasteiden merkitystä, jolloin monitorointijärjestelmä toimii johdonmukaisesti erilaisissa akustisissa ympäristöissä.
Elektroniset jakosuotimet jakavat audiosignaalin taajuuskaistan osiin, jotka voidaan ohjata erillisiin vahvistimiin. Vahvistimet on liitetty kyseiselle taajuuskaistalle optimoituihin muuntimiin.
Tyypillisessä kaksitiekaiuttimessa aktiivinen jakosuodin tarvitsee kaksi vahvistinta: yhden bassoelementille ja toisen diskanttielementille. Vahvistimet liitetään suoraan aktiivikaiuttimien elementteihin, jolloin vahvistimien kuormitus on tunnettu ja yksinkertaisempi. Jokaisella elementtikohtaisella vahvistimella on vain rajallinen taajuusalue, jota se vahvistaa (vahvistin sijoitetaan aktiivisen jakosuotimen taakse), mikä yksinkertaistaa rakennetta.
Kriittisissä audiotuotantoympäristöissä on ratkaisevaa, että monitorointijärjestelmä on luotettava ja aina käytettävissä. Yksi tärkeimmistä syistä Genelecin menestykseen lähetystarkkaamokäytössä on tuotteidemme luotettavuus. Luotettavuuden takeena on sisäinen suojapiiri, joka on ollut kaikissa tuotteissa vuodesta 1978 lähtien.
Suojapiiri ehkäisee elementtien vikatiloja havaitsemalla signaalitasoja. Mikäli signaalissa esiintyy yhtäkkisiä piikkejä tai jatkuvia liian korkeita tasoja, suojapiiri laskee signaalin tasoa automaattisesti. Suojapiirin toiminta ei luonnollisestikaan vaikuta äänenlaatuun millään tavalla työskenneltäessä kaiuttimen määritellyissä käyttöolosuhteissa. Se vain ehkäisee signaaleja rikkomasta kaiutinta.
Genelec käytti bassorefleksirakennetta jo ensimmäisessä tarkkailukaiuttimessaan S30:ssa vuonna 1978. Genelec on siitä lähtien tutkinut ja kehittänyt refleksiputken suorituskykyä sekä tehokkuutta. Kehitystyön tavoite on ollut parantaa bassotoiston ulottuvuutta ja äänenpainekapasiteettia erinomaisen matalien taajuuksien artikulaation ja tarkkuuden tuottamiseksi.
Sekä bassoelementti että refleksiaukko vaikuttavat refleksikotelon kokonaissäteilyyn. Suurin osa säteilystä on lähtöisin elementistä, mutta refleksikotelon resonanssitaajuudella elementin liikepoikkeaman amplitudi on pieni, jolloin suurin osa säteilystä tulee aukosta.
Virtausnopeuden minimoimiseksi putken poikkipinta-alan täytyy olla suuri. Kaiutinkotelon koko rajoittaa usein refleksiputken pituutta.
Pitkä kaareva refleksiputki maksimoi ilmavirtauksen, jotta kaiutin pystyy tuottamaan syvän bassotoiston ilman kompressiota. Putki päättyy leveään pyöreäreunaiseen aukkoon, joka sijaitsee kotelon takana minimoiden putken virtausääniä ja tuottaen erinomaisen bassoartikulaation.
Putken kaareva muoto on tarkoin suunniteltu ja se vähentää virtausääniä, kompressiota ja säröä. Putken sisäpään muotoilu minimoi suorille refleksiputkille tyypillisiä yskähdysääniä ja turbulenssia.
Huolellisesti suunniteltu refleksiputken rakenne vähentää bassoelementin liikepoikkeamaa ja parantaa matalien taajuuksien toiston lineaarisuutta sekä äänenpainekapasiteettia.
Huoneakustiikan ja kaiuttimen säteilyn välinen suhde on monimutkainen asia. Jokainen tila vaikuttaa tarkkailukaiuttimen vasteeseen omalla tavallaan – esimerkiksi heijastavat ja vaimentavat tilat – samoin kuin kaiuttimen sijoittaminen seinää vasten tai irti seinästä.
Kaikissa Genelecin kaiutinjärjestelmissä on huonevasteen korjaus, joka kompensoi tilan vaikutuksia äänentoistoon ja tuottaa tasaisen taajuusvasteen kuuntelupaikassa.
Genelecin analogiset kaiutinjärjestelmät tarjoavat monipuoliset huonevasteen säätömahdollisuudet. Säätömahdollisuuksia ovat (kaiutinmallista riippuen):
Matalilla taajuuksilla käytettävissä on kaksi pääsäätöä. Bass Tilt toimii hyllysuodattimena, kun taas Bass Roll-off sallii optimoida matalien ja erittäin matalien taajuuksien taajuusvastetta eri kohteissa. Bass, Midrange ja Treble Level ovat käytettävissä isoissa järjestelmissä. Nämä säädöt optimoivat eri päästökaistojen välistä suhteellista tasapainoa.
Kunkin kaiuttimen käyttöohje ja datalehti sisältävät luettelon erilaisten asennusten ensisijaisista huonevasteasetuksista. Ne on määritetty pitkän käytännön kokemuksemme ja erilaisissa akustiikkaympäristöissä tekemiemme mittausten perusteella.
Genelecin SAM-järjestelmät ovat kokonaisvaltainen, ratkaisukeskeinen, älykkäästi verkostoituva tuotevalikoima, jonka kaikki tuotteet käyttävät Genelec Loudspeaker Manager (GLM™) -ohjelmistoa ja automaattisesta AutoCal™-kalibrointitekniikkaa.
Genelec AutoCal on alan ensimmäinen täysin integroitu ja automaattinen prosessi GLM-ohjausverkkoon liitettyjen kaiuttimien mittaamiseen, analysointiin ja kalibrointiin. Järjestelmä mittaa kuuntelualueen vasteen ja tekee tarvittavat kompensaatiot matalilla ja matalilla keskitaajuuksilla ja minimoi näin huoneakustiikkaa heikentävät poikkeamat ja eri kuuntelupaikkojen väliset erot. AutoCal sovittaa kaikkien verkon kaiuttimien suhteelliset tasot, kompensoi etäisyyseroja ja säätää kaikkien verkon alabassokaiuttimien jakosuodinvaiheet (AutoPhase).
Acoustic Response Editor tarjoaa tarkan graafisen esityksen mitatusta vasteesta, suodatuksen kompensoinnista ja kunkin kaiuttimen järjestelmävasteesta sekä mahdollisuuden akustiikka-asetusten manuaaliseen säätämiseen.
Genelecin kaiuttimissa on monipuoliset ripustusmahdollisuudet, jotka tekevät asennuksesta helppoa kaikissa kohteissa. Oikein sijoitetut kaiuttimet käyttäytyvät ihanteellisesti erilaisissa käyttöympäristöissä.
Laaja lisävarustevalikoimamme ja painevalettujen alumiinikoteloiden takalevyihin integroidut kiinteät M6-kiinnityspisteet tarjoavat ratkaisun useimpiin asennustilanteisiin. Pienissä kaiutinmalleissa kotelon pohjassa on 3/8-tuuman kierreinsertti, jota käyttäen kaiutin voidaan asentaa tukevaan mikrofonitelineeseen tai jalustaan. Suuremmissa ja painavammissa malleissa on M10-kiinnityspisteet. Lattiatelineisiin on saatavilla myös mallikohtaiset Iso-Pod jalusta-adapterit, joiden avulla saavutetaan kattavat säätömahdollisuudet sekä hyvä mekaaninen eristys kaiuttimen ja jalustan välille.
Näiden ominaisuuksien ansiosta tuotteitamme käytetään nykypäivänä ammattikäyttökohteiden lisäksi sekä julkistiloissa että kotikohteissa kaikkialla maailmassa.
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 faqs.iterator() as faq [in template "20116#20152#284632" at line 154, column 21] ----
1<#if cmsEntity?has_content>
2
3<#include "${templatesPath}/227222" />
4<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
5<#assign reviewsPath = "/entity/relationships/reviews/"+profile.getCMSLangCode()+"/references" >
6<#assign documentPath = "/entity/relationships/documents/"+profile.getCMSLangCode()+"/references" >
7
8<#assign products = [] >
9<#if cmsEntity.getField(profile, "/entity/relationships/bundles")?has_content>
10 <#assign bundles = cmsEntity.getField(profile, "/entity/relationships/bundles") >
11 <#assign id = bundles.get(0).id>
12 <#assign products = cmsBundleService.getProductsInBundle(profile, id)>
13</#if>
14
15 <#list products as product>
16 <#if product.getField(profile, "/entity/relationships/documents")?has_content>
17 <#assign documents = product.getField(profile, "/entity/relationships/documents") >
18 </#if>
19 <#if product.getField(profile, reviewsPath)?has_content>
20 <#assign reviews = product.getField(profile, reviewsPath) >
21 </#if>
22 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
23 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
24 <#if groupField(product,"/entity/relationships/faqs", groupId)?has_content>
25 <#assign faqs = groupField(product,"/entity/relationships/faqs", groupId).references >
26 </#if>
27 </#if>
28
29 </#list>
30
31<#if documents?has_content || reviews?has_content || faqs?has_content>
32
33<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-blue-darker product-page-downloads" id="section-downloads"/>
34 <#assign reviewColContent = "" />
35 <#assign downloadColContent = "" />
36 <#assign documentColContent = "" />
37 <#assign documentType = "">
38<#list products as product>
39 <#assign documentsDocumentTypes = ["operating manual", "guide", "other manual", "brochure", "catalogue", "datasheet", "software release note"]>
40 <#assign downloadsDocumentTypes = ["line drawing","simulation file", "test signal", "software realese note", "certificate", "technical paper", "article or publication"]>
41 <#assign reviewsDocumentTypes = ["review"]>
42
43 <#if product.getField(profile, "/entity/relationships/documents")?has_content>
44 <#assign documents = product.getField(profile, documentPath) >
45 </#if>
46 <#if product.getField(profile, reviewsPath)?has_content>
47 <#assign reviews = product.getField(profile, reviewsPath) >
48 </#if>
49 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
50 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
51 </#if>
52
53<#if product.getField(profile, "/entity/relationships/documents")?has_content>
54 <#list documents.iterator() as document>
55
56 <#if !document.properties.isNull("documentTypeKey")>
57 <#assign documentType = localizeField(document.properties.documentTypeKey)?lower_case>
58 <#elseif !document.properties.isNull("documentType")>
59 <#assign documentType = localizeField(document.properties.documentType)?lower_case>
60 </#if>
61 <#if !document.assets.file.isNull("mediaType")>
62 <#assign mediaType = document.assets.file.mediaType?replace(".","/")>
63 </#if>
64
65
66 <#if downloadsDocumentTypes?seq_contains(documentType)>
67 <#assign downloadColContent>
68 ${downloadColContent}
69 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
70 <#if mediaType?keep_after_last("/") = "pdf">
71 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span>
72 <#else>
73 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="" icon="download-green"/></span></span>
74 </#if>
75 </a>
76 </#assign>
77
78 <#elseif documentsDocumentTypes?seq_contains(documentType)>
79 <#if !documentColContent?contains(document.assets['file'].url)>
80 <#assign documentColContent>
81 ${documentColContent}
82 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
83 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span>
84 </a>
85 </#assign>
86 </#if>
87 </#if>
88
89 </#list>
90</#if>
91<#if product.getField(profile, reviewsPath)?has_content>
92 <#if reviews?has_content>
93 <#list reviews.iterator() as review>
94 <#assign id = review.id>
95 <#assign reviewColContent>
96 ${reviewColContent}
97 <#if !review.properties.isNull("url")>
98 <a href="${review.properties.url}" target="_blank" rel="noopener noreferrer" class="type-review">
99 <span class="text-bolder">${review.properties.heading}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="" icon="external-green"/></span></span>
100 </a>
101 <#else>
102 <a href="#/" onClick="openDocumentReviewPopup('${id}')" class="type-review">
103 <span class="text-bolder">
104 ${review.properties.heading}
105 </span>
106 </a>
107 </#if>
108 </#assign>
109 </#list>
110 </#if>
111 </#if>
112</#list>
113
114 <div class="row bg-white table-row-padding">
115
116 <div class="col-lg-4">
117 <#if documentColContent?has_content>
118 <h3><@liferay.language key="documents"/></h3>
119 ${documentColContent}
120 </#if>
121
122 </div>
123
124 <div class="col-lg-4">
125 <#if downloadColContent?has_content>
126 <h3><@liferay.language key="downloads"/></h3>
127 ${downloadColContent}
128 </#if>
129 </div>
130
131
132 <div class="col-lg-4">
133 <#if reviewColContent?has_content>
134 <h3><@liferay.language key="reviews"/></h3>
135 ${reviewColContent}
136 </#if>
137 </div>
138
139 </div>
140
141 <#assign faqCounter = 0 >
142 <#assign showFAQCount = 3 >
143
144 <#list products as product>
145 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
146 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
147 <#if groupField(product,"/entity/relationships/faqs", groupId)?has_content>
148 <#assign faqs = groupField(product,"/entity/relationships/faqs", groupId).references >
149 </#if>
150
151
152
153
154 <#list faqs.iterator() as faq>
155 <#assign id = faq.id>
156
157 <#if faqCounter == 0>
158 <div id="faqs" class="row bg-white table-row-padding">
159 <div class="col-lg-7">
160 <h3><@liferay.language key="faq"/></h3>
161 </#if>
162
163 <div class="faq_element <#if faqCounter gte showFAQCount>hidden</#if> ">
164 <div class="faq_element_question col-lg-12" onclick="faqShowAnswer('${id}');">
165
166 <i class="icon-plus-sign" id="faq-plus-${id}"></i>
167 <i class="icon-minus-sign" id="faq-minus-${id}" style="display: none;"></i>
168
169 <#assign question = faq.properties.question >
170 <a href="#faq_element_answer" class="ml-4"><h4 class="text-bolder">${question}</h4></a>
171 </div>
172 <div class="faq_element_answer ml-4" id="faq-element-answer-${id}">
173 <#assign answer = cmsContentFormatterService.getMarkdown(faq.properties.answer)>
174 ${answer?replace('h1>|h2>', 'h5>', 'r')?replace('h3>', 'h6>')}
175 </div>
176 </div>
177 <#assign faqCounter = faqCounter + 1 >
178 </#list>
179
180 <#if faqCounter == (showFAQCount - 1)>
181 </div>
182 </div>
183 </#if>
184
185 </#if>
186 </#list>
187 <#if faqCounter gt showFAQCount>
188 <a href="#" onclick="$('#faqs .hidden').removeClass('hidden'); $(this).hide();return false;"><@liferay.language key="show-more"/></a>
189 </#if>
190<@sectionFooter/>
191
192
193<#-- Popup -->
194<div id="theme-popupDocumentReview" class="popup">
195<#list products as product>
196<#if product.getField(profile, reviewsPath)?has_content>
197<#assign reviews = product.getField(profile, reviewsPath) >
198 <#list reviews.iterator() as review>
199 <#assign id = review.id>
200
201 <#if review?index == 0 && product?index == 0>
202 <div class="close-button-container">
203 <button class="close" onClick="closeDocumentReviewPopup('${id}')" id="closeButtonDocumentReview-${id}"></button>
204 </div>
205
206 <div class="panel popup-content" id="popupContentDocumentReview">
207 <div class="panel-body">
208 </#if>
209
210 <div class="documentReviewContent" id="documentReviewContent-${id}">
211 <div class="h1" class="section-heading text-bolder">${review.properties.heading}</div>
212 <#if !review.properties.isNull("summary")>
213 <#assign summary = cmsContentFormatterService.getMarkdown(review.properties.summary)>
214 ${summary}
215 </#if>
216
217 <#if !review.properties.isNull("content")>
218 <#assign content = cmsContentFormatterService.getMarkdown(localizeField(review.properties.content, profile.getCMSLangCode()))>
219 ${content}
220 </#if>
221 </div>
222
223 <#if review?index == (review?size - 1)>
224 </div>
225 </div>
226 </#if>
227
228 </#list>
229 </#if>
230 </#list>
231</div>
232
233
234<style>
235 .hidden {
236 display: none;
237 }
238 .faq_element i {
239 float: left;
240 line-height: 1.5em;
241 color: #007a53;
242 }
243
244 .documentReviewContent {
245 display:none;
246}
247
248.documentReview-close-button {
249 display: none;
250}
251
252</style>
253
254<script>
255function faqShowAnswer(id){
256
257 var wasHidden = $("#faq-element-answer-"+id).is(":hidden");
258
259 // Close all
260 $("#faqs .faq_element_answer").hide();
261 $("#faqs .icon-plus-sign").show();
262 $("#faqs .icon-minus-sign").hide();
263
264 if (wasHidden) {
265 var answer = $("#faq-element-answer-"+id);
266 $("#faq-plus-"+id).hide();
267 $("#faq-minus-"+id).show();
268 answer.show();
269 console.log(answer.parent().find(".faq_element_question"));
270 if(!inViewport(answer.parent().find(".faq_element_question").first())) {
271
272 var scrollFix = 10; // some margin
273 var questionPos = answer.parent().find(".faq_element_question").first().offset().top;
274
275 // ControlBar
276 if ($("#ControlMenu").is(":visible")) {
277 scrollFix += $("#ControlMenu").height();
278 }
279
280 // subnavi
281 if ($("#submenu-links").is(":visible")) {
282 scrollFix += $("#submenu-links").height();
283 }
284
285 var scrollTo = questionPos - scrollFix;
286
287 $('html, body').animate({
288 scrollTop: (scrollTo-1)
289 },500, function(){
290 setTimeout(function() {
291 $('html, body').scrollTop(scrollTo);
292 }, 200);
293 });
294 }
295
296 }
297};
298
299function openDocumentReviewPopup(reviewId) {
300 openPopup("DocumentReview");
301 $('#documentReviewContent-'+reviewId).show();
302
303 //update:
304 $('.close').attr('id','closeButtonDocumentReview-'+reviewId);
305 $('.close').attr('onclick', 'closeDocumentReviewPopup("' + reviewId + '")');
306 $('#closeButtonDocumentReview-'+reviewId).show();
307}
308
309function closeDocumentReviewPopup(reviewId) {
310 closePopup("DocumentReview");
311 $('#documentReviewContent-'+reviewId).hide();
312
313 //update:
314 $('#closeButtonDocumentReview-'+reviewId).hide();
315}
316
317// close popup when clicking outside of the element
318function closeSolutionDownloadsPopup(e) {
319 if(!$('#popupContent'+"DocumentReview").is(e.target) &&
320 $('#popupContent'+"DocumentReview").has(e.target).length == 0 &&
321 $(e.target).attr('class') != 'close' &&
322 $('#theme-popup'+"DocumentReview").css("display") == "block"){
323 closePopup("DocumentReview");
324 $('div[id^=documentReviewContent-]').hide();
325 }
326};
327
328$(document).on({
329 "mouseup": function (e) { closeSolutionDownloadsPopup(e); },
330 "touchstart": function (e) { closeSolutionDownloadsPopup(e); }
331});
332
333function inViewport(el) {
334 var elementTop = el.offset().top;
335 var elementBottom = elementTop + el.outerHeight();
336
337 var viewportTop = $(window).scrollTop();
338 var viewportBottom = viewportTop + $(window).height();
339
340 return elementBottom > viewportTop && elementTop < viewportBottom;
341}
342</script>
343</#if>
344
345</#if>