4851 Resultados disponibles

Filtrar:

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> esResponse.getAggregationResult(specificationKey + "_with_organismos")  [in template "34352066712900#33336#362186" at line 67, column 33]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local aggregationResult = esResponse...  [in template "34352066712900#33336#362186" in function "getAggregationResult" at line 67, column 5]
----
1<#-- Variables --> 
2<#assign specificationName          = 'ctn' /> 
3<#assign paramNameSpecificationName = cpSpecificationOptionsSearchFacetDisplayContext.getParameterName() /> 
4<#assign isDebug                    = true /> 
5<#assign showAllSpecificationsName  = false /> 
6<#assign staticHost                 = getCXConfig("ecom-static-files") /> 
7 
8<#-- ========================= --> 
9<#-- Functions freemaker       --> 
10<#-- ========================= --> 
11<#function getCXConfig clientExtensionName field="webApiUrl"> 
12    <#if !clientExtensionName?has_content><#return "" /></#if> 
13    <#local encoded = urlCodec.encodeURL(clientExtensionName) /> 
14    <#local items   = restClient.get("/c/customconfigs/?fields=clientExtensionConfig&filter=clientExtensionName eq '" + encoded + "'").items![] /> 
15    <#return items?has_content?then(items[0].clientExtensionConfig?eval[field]!"", "") /> 
16</#function> 
17 
18<#function getTaxonomyVocabularyId vocabularyName> 
19    <#local response = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=contains(name,'" + vocabularyName + "')&pageSize=1")!{} /> 
20    <#local items    = response.items![] /> 
21    <#return items?has_content?then(items[0].id, "") /> 
22</#function> 
23 
24<#function getTaxonomyCategoryMap vocabularyId pageSize=200> 
25    <#local response   = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?pageSize=" + pageSize)!{} /> 
26    <#local categoryMap = {} /> 
27    <#list response.items![] as cat> 
28        <#local categoryMap = categoryMap + {vocabularyId + "-" + cat.id: cat.name} /> 
29    </#list> 
30    <#return categoryMap /> 
31</#function> 
32 
33<#function getSpecOrganismosMap organismoMap aggResult> 
34    <#local specMap = {} /> 
35    <#if !aggResult?has_content || !organismoMap?has_content><#return specMap /></#if> 
36    <#list aggResult.getBuckets() as specBucket> 
37        <#local specKey      = specBucket.getKey() /> 
38        <#local organismoAgg = specBucket.getChildAggregationResult("organismos") /> 
39        <#local orgNames     = [] /> 
40        <#if organismoAgg?has_content> 
41            <#list organismoAgg.getBuckets() as orgBucket> 
42                <#local orgName  = organismoMap[orgBucket.getKey()]!"" /> 
43                <#if orgName?has_content> 
44                    <#local orgNames = orgNames + [orgName] /> 
45                </#if> 
46            </#list> 
47        </#if> 
48        <#if orgNames?has_content> 
49            <#local specMap = specMap + {specKey: orgNames} /> 
50        </#if> 
51    </#list> 
52    <#return specMap /> 
53</#function> 
54 
55<#function getAggregationResult specificationKey> 
56    <#if !specificationKey?has_content><#return "" /></#if> 
57 
58    <#local sharedSearchResponse = renderRequest.getAttribute("LIFERAY_SHARED_PortletSharedSearchResponse") /> 
59    <#if !sharedSearchResponse?has_content><#return "" /></#if> 
60 
61    <#local searchResponse = sharedSearchResponse.get() /> 
62    <#if !searchResponse?has_content><#return "" /></#if> 
63 
64    <#local esResponse = searchResponse.getSearchResponse() /> 
65    <#if !esResponse?has_content><#return "" /></#if> 
66 
67    <#local aggregationResult = esResponse.getAggregationResult(specificationKey + "_with_organismos") /> 
68    <#if !aggregationResult?has_content><#return "" /></#if> 
69 
70    <#return aggregationResult /> 
71</#function> 
72 
73 
74 
75<#if paramNameSpecificationName == specificationName || showAllSpecificationsName> 
76 
77    <#-- ========================= --> 
78    <#-- Datos                     --> 
79    <#-- ========================= --> 
80	<#assign organismoVocabId  = getTaxonomyVocabularyId("organismos") /> 
81	<#assign organismoMap      = getTaxonomyCategoryMap(organismoVocabId) /> 
82	<#assign aggResult         = getAggregationResult(paramNameSpecificationName)! /> 
83	<#assign specOrganismosMap = getSpecOrganismosMap(organismoMap, aggResult) /> 
84 
85    <#-- ========================= --> 
86    <#-- Debug                     --> 
87    <#-- ========================= --> 
88    <#if isDebug > 
89        <div style="background:#f0f0f0;padding:8px;margin-bottom:8px;font-size:11px;border:1px solid #ccc;"> 
90            <p><strong>paramName:</strong> ${paramNameSpecificationName}</p> 
91            <p><strong>organismoMap size:</strong> ${organismoMap?size}</p> 
92            <p><strong>specOrganismosMap size:</strong> ${specOrganismosMap?size}</p> 
93            <#list specOrganismosMap?keys as spec> 
94                <p>${spec}: ${specOrganismosMap[spec]?join(", ")}</p> 
95            </#list> 
96        </div> 
97    </#if> 
98 
99    <#-- Variables --> 
100    <#assign facetId    = "facet-" + paramNameSpecificationName + "-" + renderResponse.getNamespace() /> 
101    <#assign facetClass = "facet-" + paramNameSpecificationName + "-combo-search-wrapper" /> 
102 
103    <#-- ========================= --> 
104    <#-- TOM SELECT framework      --> 
105    <#-- ========================= --> 
106    <@liferay_util["html-top"] outputKey="tom-select"> 
107        <link href="${staticHost}/scripts/vendor/tom-select/tom-select.css" rel="stylesheet"> 
108        <script src="${staticHost}/scripts/vendor/tom-select/tom-select.complete.min.js"></script> 
109    </@> 
110 
111    <#-- ========================= --> 
112    <#-- CSS                       --> 
113    <#-- ========================= --> 
114    <style> 
115        #${facetId} { 
116            --facet-font-family: Inter; 
117            --facet-font-size: 14px; 
118            --facet-font-weight: 400; 
119            --facet-line-height: 18px; 
120            --facet-letter-spacing: 0.5px; 
121            --facet-color: #66757f; 
122
123        #${facetId}-select { 
124            appearance: none; 
125            -webkit-appearance: none; 
126            visibility: hidden; 
127            position: absolute; 
128
129        #${facetId} .ts-wrapper { 
130            width: 100%; 
131            margin-bottom: 16px; 
132            opacity: 0; 
133            transition: opacity 0.1s ease; 
134
135        #${facetId} .ts-wrapper .ts-control { 
136            padding: 15.5px 16px; 
137            font-family: var(--facet-font-family); 
138            font-size: var(--facet-font-size); 
139            font-weight: var(--facet-font-weight); 
140            line-height: var(--facet-line-height); 
141            letter-spacing: var(--facet-letter-spacing); 
142            color: var(--facet-color); 
143            text-align: left; 
144            height: 55px; 
145            width: 100%; 
146            border-radius: 4px; 
147            border: none; 
148            background-color: #F5F5F5; 
149            background-image: url(/documents/d/global/ico-chevron-down-2); 
150            background-repeat: no-repeat; 
151            background-position: right 1rem center; 
152            background-size: 18px 10px; 
153            box-shadow: none; 
154            cursor: pointer; 
155            box-sizing: border-box; 
156
157        #${facetId} .ts-wrapper .ts-control:focus, 
158        #${facetId} .ts-wrapper .ts-control:focus-visible { 
159            background-image: url(/documents/d/global/ico-chevron-down-2); 
160            background-position: right 1rem center; 
161            background-size: 18px 10px; 
162            outline: none; 
163            box-shadow: none; 
164
165        #${facetId} .ts-wrapper .ts-control .item { 
166            padding-right: 0.75rem; 
167            overflow: hidden; 
168            text-overflow: ellipsis; 
169            max-width: calc(100% - 0.75rem); 
170
171        #${facetId} .ts-wrapper.single .ts-control::after { 
172            display: none; 
173
174        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input { 
175            font-family: var(--facet-font-family); 
176            font-size: var(--facet-font-size); 
177            font-weight: var(--facet-font-weight); 
178            line-height: var(--facet-line-height); 
179            letter-spacing: var(--facet-letter-spacing); 
180            color: var(--facet-color); 
181            padding: 8px 16px; 
182            border: none; 
183            border-bottom: 1px solid #d9d9d9; 
184            background-color: #fff; 
185            width: 100%; 
186            box-sizing: border-box; 
187
188        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input:focus { 
189            outline: none; 
190            box-shadow: none; 
191
192        #${facetId} .ts-dropdown .ts-dropdown-content .option { 
193            font-family: var(--facet-font-family); 
194            font-size: var(--facet-font-size); 
195            font-weight: var(--facet-font-weight); 
196            line-height: var(--facet-line-height); 
197            letter-spacing: var(--facet-letter-spacing); 
198            color: var(--facet-color); 
199            padding: 8px 16px; 
200
201        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover, 
202        #${facetId} .ts-dropdown .ts-dropdown-content .option.active { 
203            background-color: #6a9bd3; 
204            color: #fff; 
205
206        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover .badge, 
207        #${facetId} .ts-dropdown .ts-dropdown-content .option.active .badge { 
208            background-color: #fff; 
209            color: #3a6a9b; 
210
211    </style> 
212 
213    <div class="checks-container ${facetClass}" id="${facetId}"> 
214        <div class="d-flex flex-column w-100"> 
215            <label class="panel-title mb-2" for="${facetId}-select"> 
216                ${languageUtil.get(locale, "norma." + paramNameSpecificationName)} 
217                <#if isDebug> 
218                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
219                        (total options: ${entries?size}) 
220                    </p> 
221                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
222                        (facetId: ${facetId}) 
223                    </p> 
224                </#if> 
225            </label> 
226 
227            <#-- ========================= --> 
228            <#-- SELECT UI                 --> 
229            <#-- ========================= --> 
230            <select id="${facetId}-select" data-parameter-name="${paramNameSpecificationName}"> 
231                <option value="">${languageUtil.get(locale, "search.cualquiera")}</option> 
232                <#list entries?sort_by("displayName") as entry> 
233                    <#assign specName = entry.getDisplayName() /> 
234                    <#assign orgNames = specOrganismosMap[specName]![] /> 
235                    <option value="${htmlUtil.escape(specName)}" 
236                        <#if entry.isSelected()>selected</#if> 
237                        data-organismos="${htmlUtil.escape(orgNames?join(","))}"> 
238                        ${htmlUtil.escape(specName)} (${entry.getFrequency()}) 
239                    </option> 
240                </#list> 
241            </select> 
242        </div> 
243    </div> 
244 
245    <#-- ========================= --> 
246    <#-- SCRIPT                    --> 
247    <#-- ========================= --> 
248    <script> 
249        (function () { 
250            var FACET_ID   = '${facetId}'; 
251            var PARAM_NAME = '${paramNameSpecificationName}'; 
252 
253            function applyUrlFilter(value) { 
254                var url = new URL(window.location.href); 
255                if (value) { 
256                    url.searchParams.set(PARAM_NAME, value); 
257                } else { 
258                    url.searchParams.delete(PARAM_NAME); 
259
260                window.location.href = url.toString(); 
261
262 
263            function initFacet() { 
264                var select = document.getElementById(FACET_ID + '-select'); 
265                if (!select) return; 
266                if (select.tomselect) select.tomselect.destroy(); 
267                if (select.dataset.bound === 'true') return; 
268                select.dataset.bound = 'true'; 
269 
270                new TomSelect(select, { 
271                    allowEmptyOption: true, 
272                    maxItems: 1, 
273                    create: false, 
274                    render: { 
275                        option: function(data, escape) { 
276                            var organismos = data.$option ? data.$option.getAttribute('data-organismos') : ''; 
277                            var badges = ''; 
278                            if (organismos) { 
279                                organismos.split(',').forEach(function(org) { 
280                                    badges += '<span class="badge badge-secondary mr-1">' + escape(org.trim()) + '</span>'; 
281                                }); 
282
283                            return '<div class="option py-1">' + escape(data.text) + '<div class="mt-1">' + badges + '</div></div>'; 
284                        }, 
285                        no_results: function(data, escape) { 
286                            return '<div class="no-results">${languageUtil.get(locale, "occurrence-not-found")}</div>'; 
287
288                    }, 
289                    plugins: { 
290                        dropdown_input: {} 
291                    }, 
292                    onDelete: function(value) { 
293                        this.isDelete = true; 
294                    }, 
295                    onChange: function(value) { 
296                        if (value) { 
297                            this.lastValidValue = value; 
298                            applyUrlFilter(value); 
299                            return; 
300
301                        this.lastValidValue = ''; 
302                        applyUrlFilter(''); 
303                    }, 
304                    onInitialize: function() { 
305                        this.lastValidValue = this.getValue() || ''; 
306                        this.isDelete = false; 
307                        var wrapper = document.querySelector('#' + FACET_ID + ' .ts-wrapper'); 
308                        if (wrapper) wrapper.style.opacity = '1'; 
309
310                }); 
311
312 
313            if (document.readyState === 'loading') { 
314                document.addEventListener('DOMContentLoaded', initFacet); 
315            } else { 
316                initFacet(); 
317
318        })(); 
319    </script> 
320 
321</#if> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> esResponse.getAggregationResult(specificationKey + "_with_organismos")  [in template "34352066712900#33336#362204" at line 67, column 33]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local aggregationResult = esResponse...  [in template "34352066712900#33336#362204" in function "getAggregationResult" at line 67, column 5]
----
1<#-- Variables --> 
2<#assign specificationName          = 'ics' /> 
3<#assign paramNameSpecificationName = cpSpecificationOptionsSearchFacetDisplayContext.getParameterName() /> 
4<#assign isDebug                    = true /> 
5<#assign showAllSpecificationsName  = false /> 
6<#assign staticHost                 = getCXConfig("ecom-static-files") /> 
7 
8<#-- ========================= --> 
9<#-- Functions freemaker       --> 
10<#-- ========================= --> 
11<#function getCXConfig clientExtensionName field="webApiUrl"> 
12    <#if !clientExtensionName?has_content><#return "" /></#if> 
13    <#local encoded = urlCodec.encodeURL(clientExtensionName) /> 
14    <#local items   = restClient.get("/c/customconfigs/?fields=clientExtensionConfig&filter=clientExtensionName eq '" + encoded + "'").items![] /> 
15    <#return items?has_content?then(items[0].clientExtensionConfig?eval[field]!"", "") /> 
16</#function> 
17 
18<#function getTaxonomyVocabularyId vocabularyName> 
19    <#local response = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=contains(name,'" + vocabularyName + "')&pageSize=1")!{} /> 
20    <#local items    = response.items![] /> 
21    <#return items?has_content?then(items[0].id, "") /> 
22</#function> 
23 
24<#function getTaxonomyCategoryMap vocabularyId pageSize=200> 
25    <#local response   = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?pageSize=" + pageSize)!{} /> 
26    <#local categoryMap = {} /> 
27    <#list response.items![] as cat> 
28        <#local categoryMap = categoryMap + {vocabularyId + "-" + cat.id: cat.name} /> 
29    </#list> 
30    <#return categoryMap /> 
31</#function> 
32 
33<#function getSpecOrganismosMap organismoMap aggResult> 
34    <#local specMap = {} /> 
35    <#if !aggResult?has_content || !organismoMap?has_content><#return specMap /></#if> 
36    <#list aggResult.getBuckets() as specBucket> 
37        <#local specKey      = specBucket.getKey() /> 
38        <#local organismoAgg = specBucket.getChildAggregationResult("organismos") /> 
39        <#local orgNames     = [] /> 
40        <#if organismoAgg?has_content> 
41            <#list organismoAgg.getBuckets() as orgBucket> 
42                <#local orgName  = organismoMap[orgBucket.getKey()]!"" /> 
43                <#if orgName?has_content> 
44                    <#local orgNames = orgNames + [orgName] /> 
45                </#if> 
46            </#list> 
47        </#if> 
48        <#if orgNames?has_content> 
49            <#local specMap = specMap + {specKey: orgNames} /> 
50        </#if> 
51    </#list> 
52    <#return specMap /> 
53</#function> 
54 
55<#function getAggregationResult specificationKey> 
56    <#if !specificationKey?has_content><#return "" /></#if> 
57 
58    <#local sharedSearchResponse = renderRequest.getAttribute("LIFERAY_SHARED_PortletSharedSearchResponse") /> 
59    <#if !sharedSearchResponse?has_content><#return "" /></#if> 
60 
61    <#local searchResponse = sharedSearchResponse.get() /> 
62    <#if !searchResponse?has_content><#return "" /></#if> 
63 
64    <#local esResponse = searchResponse.getSearchResponse() /> 
65    <#if !esResponse?has_content><#return "" /></#if> 
66 
67    <#local aggregationResult = esResponse.getAggregationResult(specificationKey + "_with_organismos") /> 
68    <#if !aggregationResult?has_content><#return "" /></#if> 
69 
70    <#return aggregationResult /> 
71</#function> 
72 
73 
74 
75 
76<#if paramNameSpecificationName == specificationName || showAllSpecificationsName> 
77 
78    <#-- ========================= --> 
79    <#-- Datos                     --> 
80    <#-- ========================= --> 
81	<#assign organismoVocabId  = getTaxonomyVocabularyId("organismos") /> 
82	<#assign organismoMap      = getTaxonomyCategoryMap(organismoVocabId) /> 
83	<#assign aggResult         = getAggregationResult(paramNameSpecificationName)! /> 
84	<#assign specOrganismosMap = getSpecOrganismosMap(organismoMap, aggResult) /> 
85 
86    <#-- ========================= --> 
87    <#-- Debug                     --> 
88    <#-- ========================= --> 
89    <#if isDebug && 1==0> 
90        <div style="background:#f0f0f0;padding:8px;margin-bottom:8px;font-size:11px;border:1px solid #ccc;"> 
91            <p><strong>paramName:</strong> ${paramNameSpecificationName}</p> 
92            <p><strong>organismoMap size:</strong> ${organismoMap?size}</p> 
93            <p><strong>specOrganismosMap size:</strong> ${specOrganismosMap?size}</p> 
94            <#list specOrganismosMap?keys as spec> 
95                <p>${spec}: ${specOrganismosMap[spec]?join(", ")}</p> 
96            </#list> 
97        </div> 
98    </#if> 
99 
100    <#-- Variables --> 
101    <#assign facetId    = "facet-" + paramNameSpecificationName + "-" + renderResponse.getNamespace() /> 
102    <#assign facetClass = "facet-" + paramNameSpecificationName + "-combo-search-wrapper" /> 
103 
104    <#-- ========================= --> 
105    <#-- TOM SELECT framework      --> 
106    <#-- ========================= --> 
107    <@liferay_util["html-top"] outputKey="tom-select"> 
108        <link href="${staticHost}/scripts/vendor/tom-select/tom-select.css" rel="stylesheet"> 
109        <script src="${staticHost}/scripts/vendor/tom-select/tom-select.complete.min.js"></script> 
110    </@> 
111 
112    <#-- ========================= --> 
113    <#-- CSS                       --> 
114    <#-- ========================= --> 
115    <style> 
116        #${facetId} { 
117            --facet-font-family: Inter; 
118            --facet-font-size: 14px; 
119            --facet-font-weight: 400; 
120            --facet-line-height: 18px; 
121            --facet-letter-spacing: 0.5px; 
122            --facet-color: #66757f; 
123
124        #${facetId}-select { 
125            appearance: none; 
126            -webkit-appearance: none; 
127            visibility: hidden; 
128            position: absolute; 
129
130        #${facetId} .ts-wrapper { 
131            width: 100%; 
132            margin-bottom: 16px; 
133            opacity: 0; 
134            transition: opacity 0.1s ease; 
135
136        #${facetId} .ts-wrapper .ts-control { 
137            padding: 15.5px 16px; 
138            font-family: var(--facet-font-family); 
139            font-size: var(--facet-font-size); 
140            font-weight: var(--facet-font-weight); 
141            line-height: var(--facet-line-height); 
142            letter-spacing: var(--facet-letter-spacing); 
143            color: var(--facet-color); 
144            text-align: left; 
145            height: 55px; 
146            width: 100%; 
147            border-radius: 4px; 
148            border: none; 
149            background-color: #F5F5F5; 
150            background-image: url(/documents/d/global/ico-chevron-down-2); 
151            background-repeat: no-repeat; 
152            background-position: right 1rem center; 
153            background-size: 18px 10px; 
154            box-shadow: none; 
155            cursor: pointer; 
156            box-sizing: border-box; 
157
158        #${facetId} .ts-wrapper .ts-control:focus, 
159        #${facetId} .ts-wrapper .ts-control:focus-visible { 
160            background-image: url(/documents/d/global/ico-chevron-down-2); 
161            background-position: right 1rem center; 
162            background-size: 18px 10px; 
163            outline: none; 
164            box-shadow: none; 
165
166        #${facetId} .ts-wrapper .ts-control .item { 
167            padding-right: 0.75rem; 
168            overflow: hidden; 
169            text-overflow: ellipsis; 
170            max-width: calc(100% - 0.75rem); 
171
172        #${facetId} .ts-wrapper.single .ts-control::after { 
173            display: none; 
174
175        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input { 
176            font-family: var(--facet-font-family); 
177            font-size: var(--facet-font-size); 
178            font-weight: var(--facet-font-weight); 
179            line-height: var(--facet-line-height); 
180            letter-spacing: var(--facet-letter-spacing); 
181            color: var(--facet-color); 
182            padding: 8px 16px; 
183            border: none; 
184            border-bottom: 1px solid #d9d9d9; 
185            background-color: #fff; 
186            width: 100%; 
187            box-sizing: border-box; 
188
189        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input:focus { 
190            outline: none; 
191            box-shadow: none; 
192
193        #${facetId} .ts-dropdown .ts-dropdown-content .option { 
194            font-family: var(--facet-font-family); 
195            font-size: var(--facet-font-size); 
196            font-weight: var(--facet-font-weight); 
197            line-height: var(--facet-line-height); 
198            letter-spacing: var(--facet-letter-spacing); 
199            color: var(--facet-color); 
200            padding: 8px 16px; 
201
202        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover, 
203        #${facetId} .ts-dropdown .ts-dropdown-content .option.active { 
204            background-color: #6a9bd3; 
205            color: #fff; 
206
207        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover .badge, 
208        #${facetId} .ts-dropdown .ts-dropdown-content .option.active .badge { 
209            background-color: #fff; 
210            color: #3a6a9b; 
211
212    </style> 
213 
214    <div class="checks-container ${facetClass}" id="${facetId}"> 
215        <div class="d-flex flex-column w-100"> 
216            <label class="panel-title mb-2" for="${facetId}-select"> 
217                ${languageUtil.get(locale, "norma." + paramNameSpecificationName)} 
218                <#if isDebug> 
219                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
220                        (total options: ${entries?size}) 
221                    </p> 
222                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
223                        (facetId: ${facetId}) 
224                    </p> 
225                </#if> 
226            </label> 
227 
228            <#-- ========================= --> 
229            <#-- SELECT UI                 --> 
230            <#-- ========================= --> 
231            <select id="${facetId}-select" data-parameter-name="${paramNameSpecificationName}"> 
232                <option value="">${languageUtil.get(locale, "search.cualquiera")}</option> 
233                <#list entries?sort_by("displayName") as entry> 
234                    <#assign specName = entry.getDisplayName() /> 
235                    <#assign orgNames = specOrganismosMap[specName]![] /> 
236                    <option value="${htmlUtil.escape(specName)}" 
237                        <#if entry.isSelected()>selected</#if> 
238                        data-organismos="${htmlUtil.escape(orgNames?join(","))}"> 
239                        ${htmlUtil.escape(specName)} (${entry.getFrequency()}) 
240                    </option> 
241                </#list> 
242            </select> 
243        </div> 
244    </div> 
245 
246    <#-- ========================= --> 
247    <#-- SCRIPT                    --> 
248    <#-- ========================= --> 
249    <script> 
250        (function () { 
251            var FACET_ID   = '${facetId}'; 
252            var PARAM_NAME = '${paramNameSpecificationName}'; 
253 
254            function applyUrlFilter(value) { 
255                var url = new URL(window.location.href); 
256                if (value) { 
257                    url.searchParams.set(PARAM_NAME, value); 
258                } else { 
259                    url.searchParams.delete(PARAM_NAME); 
260
261                window.location.href = url.toString(); 
262
263 
264            function initFacet() { 
265                var select = document.getElementById(FACET_ID + '-select'); 
266                if (!select) return; 
267                if (select.tomselect) select.tomselect.destroy(); 
268                if (select.dataset.bound === 'true') return; 
269                select.dataset.bound = 'true'; 
270 
271                new TomSelect(select, { 
272                    allowEmptyOption: true, 
273                    maxItems: 1, 
274                    create: false, 
275                    render: { 
276                        option: function(data, escape) { 
277                            var organismos = data.$option ? data.$option.getAttribute('data-organismos') : ''; 
278                            var badges = ''; 
279                            if (organismos) { 
280                                organismos.split(',').forEach(function(org) { 
281                                    badges += '<span class="badge badge-secondary mr-1">' + escape(org.trim()) + '</span>'; 
282                                }); 
283
284                            return '<div class="option py-1">' + escape(data.text) + '<div class="mt-1">' + badges + '</div></div>'; 
285                        }, 
286                        no_results: function(data, escape) { 
287                            return '<div class="no-results">${languageUtil.get(locale, "occurrence-not-found")}</div>'; 
288
289                    }, 
290                    plugins: { 
291                        dropdown_input: {} 
292                    }, 
293                    onDelete: function(value) { 
294                        this.isDelete = true; 
295                    }, 
296                    onChange: function(value) { 
297                        if (value) { 
298                            this.lastValidValue = value; 
299                            applyUrlFilter(value); 
300                            return; 
301
302                        this.lastValidValue = ''; 
303                        applyUrlFilter(''); 
304                    }, 
305                    onInitialize: function() { 
306                        this.lastValidValue = this.getValue() || ''; 
307                        this.isDelete = false; 
308                        var wrapper = document.querySelector('#' + FACET_ID + ' .ts-wrapper'); 
309                        if (wrapper) wrapper.style.opacity = '1'; 
310
311                }); 
312
313 
314            if (document.readyState === 'loading') { 
315                document.addEventListener('DOMContentLoaded', initFacet); 
316            } else { 
317                initFacet(); 
318
319        })(); 
320    </script> 
321 
322</#if> 
(4442)
(409)
(0)
BSI

BS ISO 17257:2020

En Vigor
2020-02-10
Rubber. Identification of polymers. Pyrolytic gas-chromatographic method using mass-spectrometric detection
BSI

BS EN 1371-2:2015

En Vigor
2015-02-28
Founding. Liquid penetrant testing. Investment castings
BSI

BS EN IEC 61846:2025 - TC

En Vigor
2025-03-27
Tracked Changes. Ultrasonics. Therapeutic focused short pressure pulse sources. Characteristics of fields
BSI

25/30501221 DC

En Vigor
2025-06-12
BS EN 15767-3 Portable equipment for projecting extinguishing agents and firefighting support operations - Portable monitors. Part 3: Foam devices
BSI

BS EN 13763-13:2004

En Vigor
2004-04-29
Explosives for civil uses. Detonators and relays. Determination of resistance of electric detonators against electrostatic discharge
BSI

19/30349417 DC

En Vigor
2019-10-14
BS EN IEC 61300-3-27. Fibre optic interconnecting devices and passive components. Basic test and measurement procedures. Part 3-27. Examinations and measurements. Method for measurement of guidehole and fibre hole/core position of rectangular ferrules
BSI

22/30457839 DC

En Vigor
2022-06-22
CISPR 15 ED.9.0 AMD 1. Limits and methods of measurement of radio disturbance characteristics of electrical lighting and similar equipment
BSI

BS ISO 23591:2021+A1:2025

En Vigor
2025-05-09
Acoustic quality criteria for music rehearsal rooms and spaces
BSI

23/30463045 DC

En Vigor
2023-09-14
BS EN 1995-3. Eurocode 5. Design of timber structures. Part 3. Execution
BSI

25/30528807 DC

En Vigor
2025-06-10
BS ISO 7752-2 Cranes - Control layout and characteristics. Part 2: Basic arrangement and requirements for mobile cranes
BSI

BS 6716:1986

En Vigor
1986-07-31
Guide to properties and types of rubber
BSI

BS ISO 10635:1999

En Vigor
2000-05-15
Refractory products. Methods of test for ceramic fibre products.
BSI

BS EN 50176:2025

En Vigor
2025-03-10
Automatic electrostatic application systems for ignitable liquid coating materials. Safety requirements
BSI

PD IEC TR 63534:2025

En Vigor
2025-05-30
Integrating distributed PV into LVDC systems and use cases
BSI

24/30501986 DC

En Vigor
2024-11-29
BS EN IEC 60335-2-50/AMD1 Amendment 1 - Household and similar electrical appliances - Safety. Part 2-50: Particular requirements for commercial electric bains-marie
BSI

BS ISO 9848:2003

En Vigor
2004-04-05
Photography. Source document microfilms. Determination of ISO speed and ISO average gradient
BSI

BS EN ISO 11357-6:2018 - TC

En Vigor
2020-02-26
Tracked Changes. Plastics. Differential scanning calorimetry (DSC). Determination of oxidation induction time (isothermal OIT) and oxidation induction temperature (dynamic OIT)
BSI

BS EN 415-5:2006+A1:2009

En Vigor
2010-01-31
Safety of packaging machines. Wrapping machines
BSI

23/30440148 DC

En Vigor
2023-08-22
BS EN ISO/IEC 33202. Software and systems engineering. Core Agile practices
BSI

24/30488088 DC

En Vigor
2024-02-23
BS IEC 62888-3 Railway applications - Energy measurement on board trains. Part 3: Data handling
BSI

22/30446804 DC

En Vigor
2022-05-26
BS EN 62629-62-12. Display Devices. Part 62-12. Measurement methods for virtual-image type. Image Quality
BSI

22/30459158 DC

En Vigor
2022-10-27
BS EN 17914. Chemical disinfectants and antiseptics. Quantitative suspension test method for the evaluation of virucidal activity of chemical disinfectants and antiseptics in food, industrial, domestic and institutional areas. Test method and requirements (phase 2, step 1).
BSI

25/30487742 DC

En Vigor
2025-04-08
BS EN ISO 4259-2 Petroleum and related products - Precision of measurement methods and results. Part 2: Interpretation and application of precision data in relation to methods of test
BSI

BS ISO 15597:2001, BS 2000-503:2004

En Vigor
2004-11-22
Methods of test for petroleum and its products. Determination of chlorine and bromine content. Wavelength-dispersive X-ray fluorescence spectrometry
BSI

BS EN 71-5:2015

En Vigor
2015-09-30
Safety of toys. Chemical toys (sets) other than experimental sets
BSI

BS EN 13262:2020

En Vigor
2020-09-30
Railway application. Wheelsets and bogies. Wheels. Product requirements
BSI

BS EN 13763-3:2002

En Vigor
2003-05-08
Explosives for civil uses. Detonators and relays. Determination of sensitiveness to impact
BSI

BS ISO 18436-8:2013

En Vigor
2013-04-30
Condition monitoring and diagnostics of machines. Requirements for qualification and assessment of personnel. Ultrasound
BSI

BS EN ISO/ASTM 52933:2024

En Vigor
2024-03-28
Additive manufacturing. Environment, health and safety. Test method for the hazardous substances emitted from material extrusion type 3D printers in the non-industrial places
BSI

BS EN 15220:2016

En Vigor
2016-08-31
Railway applications. Brake indicators
BSI

BS ISO 15106-6:2015

En Vigor
2015-04-30
Plastics. Film and sheeting. Determination of water vapour transmission rate. Atmospheric pressure ionization mass spectrometer method
BSI

BS ISO 8075:2025

En Vigor
2025-05-29
Aerospace. Surface treatment of hardenable stainless steel parts
BSI

BS EN 15101-1:2013+A1:2019

En Vigor
2019-05-03
Thermal insulation products for buildings. In-situ formed loose fill cellulose (LFCI) products. Specification for the products before installation
BSI

BS EN 16585-3:2017

En Vigor
2017-01-31
Railway applications. Design for PRM use. Equipment and components on board rolling stock. Clearways and internal doors
BSI

BS EN 17254:2019

En Vigor
2019-10-14
Foodstuffs. Minimum performance requirements for determination of gluten by ELISA
BSI

PD IEC TR 63162:2025

En Vigor
2025-06-13
Electric components - Reliability - Failure rates at reference conditions
BSI

BS EN ISO 3377-2:2016

En Vigor
2016-03-31
Leather. Physical and mechanical tests. Determination of tear load. Double edge tear
BSI

21/30431302 DC

En Vigor
2021-01-29
BS EN IEC 60688. Electrical measuring transducers for converting AC and DC electrical quantities to analogue or digital signals
BSI

BS EN ISO 19403-1:2022

En Vigor
2022-08-08
Paints and varnishes. Wettability. Vocabulary and general principles
BSI

25/30507477 DC

En Vigor
2025-02-07
BS EN IEC 61851-23-1. Electric vehicle conductive charging system. Part 23-1. DC Charging with an automatic connection system
BSI

21/30429148 DC

En Vigor
2021-01-06
BS IEC 60335-2-47. Household and similar electrical appliances. Safety. Part 2-47. Particular requirements for commercial electric boiling pans
BSI

21/30446812 DC

En Vigor
2021-11-22
BS EN 61810-7-2. All-or-nothing electrical relays. Tests and Measurements. Part 7-2. Mechanical tests and weighing
BSI

BS EN ISO 11680-2:2021 - TC

En Vigor
2022-01-13
Tracked Changes. Machinery for forestry. Safety requirements and testing for pole-mounted powered pruners. Machines for use with backpack power source
BSI

BS EN 13631-11:2003

En Vigor
2003-11-18
Explosives for civil uses. High explosives. Determination of transmission of detonation
BSI

22/30454120 DC

En Vigor
2022-08-31
BS EN ISO 8437-4:2019 AMD1. Snow throwers. Safety requirements and test procedures. Part 4. Additional national and regional requirements
BSI

19/30375191 DC

En Vigor
2019-07-16
BS EN IEC 63189-1. Virtual Power Plants. Part 1. Architecture and Functional Requirements
BSI

BS ISO 13629-1:2025

En Vigor
2025-05-29
Textiles. Determination of antifungal activity of textile products. Luminescence method
BSI

23/30451017 DC

En Vigor
2023-03-14
BS EN IEC 60598-1 AMD 1. Luminaires. Part 1. General requirements and tests
BSI

BS EN ISO 8469:2021 - TC

En Vigor
2021-10-21
Tracked Changes. Small craft. Non-fire-resistant fuel hoses
BSI

24/30463916 DC

En Vigor
2024-04-12
BS ISO 5092 Additive manufacturing for medical - General principles - Additive manufacturing of non-active implants
BSI

BS EN ISO 11124-4:2018 - TC

En Vigor
2020-02-26
Tracked Changes. Preparation of steel substrates before application of paints and related products. Specifications for metallic blast-cleaning abrasives. Low-carbon cast-steel shot
BSI

BS EN 13852-1:2025

En Vigor
2025-05-29
Cranes. Offshore cranes. General-purpose offshore cranes
BSI

BS EN ISO 16179:2025 - TC

En Vigor
2025-04-08
Tracked Changes. Footwear. Critical substances potentially present in footwear and footwear components. Determination of organotin compounds in footwear materials
BSI

BS EN ISO 3093:2009

En Vigor
2010-01-31
Wheat, rye and their flours, durum wheat and durum wheat semolina. Determination of the falling number according to Hagberg-Perten
BSI

BS ISO 23291:2020

En Vigor
2020-01-15
Milk and milk products. Guidelines for the application of in-line and on-line infrared spectrometry
BSI

24/30464989 DC

En Vigor
2025-05-08
BS EN ISO 15779 Condensed aerosol fire extinguishing systems - Requirements and test methods for components and system design, installation and maintenance - General requirements
BSI

BS ISO/IEC 20944-1:2013

En Vigor
2013-01-31
Information technology. Metadata Registries Interoperability and Bindings (MDR-IB). Framework, common vocabulary, and common provisions for conformance
BSI

BS EN 50463-4:2017

En Vigor
2017-10-20
Railway applications. Energy measurement on board trains. Communication
BSI

BS ISO 27875:2019+A1:2020

En Vigor
2020-09-24
Space systems. Re-entry risk management for unmanned spacecraft and launch vehicle orbital stages
BSI

BS ISO 4730:2025 - TC

En Vigor
2025-06-20
Tracked Changes. Essential oil of Melaleuca , terpinen-4-ol type (Tea Tree oil)