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

BS EN 50121-3-2:2016+A1:2019

En Vigor
2019-05-02
Railway applications. Electromagnetic compatibility. Rolling stock. Apparatus
BSI

BS ISO 19690-2:2018+A1:2025

En Vigor
2025-06-05
Disc springs. Technical specifications
BSI

BS EN ISO/IEC 5259-4:2025

En Vigor
2025-06-09
Artificial intelligence. Data quality for analytics and machine learning (ML). Data quality process framework
BSI

24/30465361 DC

En Vigor
2024-01-26
BS IEC 62278-2 Railway applications — Specification and demonstration of Reliability, Availability, Maintainability and Safety (RAMS). Part 2: Systems approach to safety
BSI

BS ISO 18539:2015

En Vigor
2015-09-30
Traceability of molluscan products. Specifications on the information to be recorded in captured molluscan distribution chains
BSI

25/30481878 DC

En Vigor
2025-01-23
BS ISO 16499-1 Sustainable mobility and transportation - Automated mobility using physical and digital infrastructure. Part 1: Service role architecture
BSI

BS EN ISO 712-2:2024

En Vigor
2024-10-14
Cereals and cereal products. Determination of moisture content. Automatic drying oven method
BSI

24/30472293 DC

En Vigor
2024-07-23
BS ISO 17438-5 Intelligent transport systems. Indoor navigation for personal and vehicle ITS stations. Part 5: Requirements and message specification for central ITS station (C-ITS-S) based positioning
BSI

BS EN ISO 7730:2005

En Vigor
2006-01-19
Ergonomics of the thermal environment. Analytical determination and interpretation of thermal comfort using calculation of the PMV and PPD indices and local thermal comfort criteria
BSI

24/30480474 DC

En Vigor
2024-04-11
BS EN 13892-9 Methods of test for screed materials. Part 9: Dimensional stability
BSI

BS EN 415-2:2025

En Vigor
2025-06-17
Safety of packaging machines. Packaging machines for pre-formed rigid containers
BSI

BS EN 60335-2-83:2002+A1:2008

En Vigor
2013-05-31
Household and similar electrical appliances. Safety. Particular requirements for heated gullies for roof drainage
BSI

BS ISO/IEC 15459-8:2009

En Vigor
2012-11-30
Information technology. Unique identifiers. Grouping of transport units
BSI

BS EN ISO 14119:2025 - TC

En Vigor
2025-03-26
Tracked Changes. Safety of machinery. Interlocking devices associated with guards. Principles for design and selection
BSI

24/30485773 DC

En Vigor
2025-05-30
BS ISO 24609 Essential oil of carrot seed (Daucus carota L.)
BSI

BS EN 12231:2003

En Vigor
2003-08-15
Surfaces for sports areas. Method of test. Determination of ground cover of natural turf
BSI

BS EN 2451:2019

En Vigor
2019-12-17
Aerospace series. Steel 31Ni10. 1 230 MPa ≤ Rm ≤ 1 420 MPa. Forgings. De ≤ 40 mm
BSI

24/30491022 DC

En Vigor
2024-04-25
Draft BS EN 4855-03 Aerospace series — ECO efficiency of catering equipment. Part 03: Chilling equipment
BSI

25/30513280 DC

En Vigor
2025-06-05
BS EN 13100-3 Non destructive testing of welded joints in thermoplastics semifinished products. Part 3: Ultrasonic testing
BSI

25/30528351 DC

En Vigor
2025-06-06
BS EN IEC 60601-2-22:2020/prAA:2025 Medical electrical equipment.. Part 2-22: Particular requirements for basic safety and essential performance of surgical, cosmetic, therapeutic and diagnostic laser equipment
BSI

BS EN ISO 5840-2:2021+A1:2025

En Vigor
2025-03-21
Cardiovascular implants. Cardiac valve prostheses. Surgically implanted heart valve substitutes
BSI

BS EN 13079:2003

En Vigor
2003-10-02
Devices to prevent pollution by backflow of potable water. Air gap with injector. Family A. Type D
BSI

23/30450042 DC

En Vigor
2023-12-07
BS EN 1009-3:2020/A1 Machines for mechanical processing of minerals and similar solid materials - Safety. Part 3: Specific requirements for crushing and milling machinery
BSI

21/30423928 DC

En Vigor
2021-04-22
BS EN 13763-19. Explosives for civil uses. Detonators and detonating cord relays. Part 19. Determination of firing impulse of electric detonators
BSI

BS ISO/IEC 15459-4:2014

En Vigor
2018-07-13
Information technology. Automatic identification and data capture techniques. Unique identification. Individual products and product packages
BSI

23/30445360 DC

En Vigor
2023-10-23
BS EN ISO 6506-3. Metallic materials. Brinell hardness test. Part 3. Calibration of reference blocks
BSI

25/30511394 DC

En Vigor
2025-04-01
Draft BS EN 61010-2-012 Safety requirements for electrical equipment for measurement, control, and laboratory use. Part 2-012. Particular requirements for climatic and environmental testing and other temperature conditioning equipment
BSI

21/30423856 DC

En Vigor
2021-04-22
BS EN 13763-11. Explosives for civil uses. Detonators and detonating cord relays. Part 11. Determination of resistance to damage by dropping of detonators and relays
BSI

BS EN 13763-16:2003

En Vigor
2004-01-12
Explosives for civil uses. Detonators and relays. Determination of delay accuracy
BSI

BS ISO 21246:2019

En Vigor
2020-01-10
Information and documentation. Key indicators for museums
BSI

23/30452447 DC

En Vigor
2023-12-07
BS EN 16474 Plastics and rubber machines - Tyre curing machines - Safety requirements
BSI

BS EN ISO 17295:2023

En Vigor
2023-02-13
Additive manufacturing. General principles. Part positioning, coordinates and orientation
BSI

BS EN 510:2019

En Vigor
2019-12-04
Specification for protective clothing for use where there is a risk of entanglement with moving parts
BSI

BS EN ISO 29601:2011

En Vigor
2011-05-31
Paints and varnishes. Corrosion protection by protective paint systems. Assessment of porosity in a dry film
BSI

BS EN 13100-3:2004

En Vigor
2004-12-03
Non-destructive testing of welded joints in thermoplastics semi-finished products. Ultrasonic testing
BSI

BS EN 12641-2:2019

En Vigor
2019-12-17
Intermodal loading units and commercial vehicles. Tarpaulins. Minimum requirements for curtainsiders
BSI

BS EN ISO 80369-6:2025

En Vigor
2025-06-09
Small bore connectors for liquids and gases in healthcare applications. Connectors for neural applications
BSI

BS EN 12795:2003

En Vigor
2003-05-30
Road transport and traffic telematics. Dedicated short range communication (DSRC). DSRC data link layer. Medium access and logical link control
BSI

BS EN ISO 11126-7:2018 - TC

En Vigor
2020-02-26
Tracked Changes. Preparation of steel substrates before application of paints and related products. Specifications for non-metallic blast-cleaning abrasives. Fused aluminium oxide
BSI

BS EN ISO 11126-5:2018

En Vigor
2018-10-24
Preparation of steel substrates before application of paints and related products. Specifications for non-metallic blast-cleaning abrasives. Nickel slag
BSI

24/30461228 DC

En Vigor
2024-05-24
BS EN ISO 7899-3 Water quality. Enumeration of intestinal enterococci. Most probable number method
BSI

BS 5655-1:1986, EN 81-1:1985

En Vigor
1986-08-15
Lifts and service lifts. Safety rules for the construction and installation of electric lifts
BSI

20/30427981 DC

En Vigor
2020-12-03
BS EN 4709-004. Aerospace series. Unmanned Aircraft Systems. Part 004. Lighting requirements
BSI

24/30490796 DC

En Vigor
2024-03-29
BS ISO 20423 Carbon Footprint for seafood - Product category rules (CFP-PCR) for macroalgae
BSI

24/30466874 DC

En Vigor
2024-04-10
BS EN ISO 8559-2 Size designation of clothes. Part 2: Primary and secondary dimension indicators
BSI

BS EN IEC 60794-1-307:2025

En Vigor
2025-04-30
Optical fibre cables. Generic specification. Basic optical cable test procedures. Cable element test methods. Tube kinking, method G7
BSI

BS ISO 12176-2:2025

En Vigor
2025-06-17
Plastics pipes and fittings. Equipment for fusion jointing polyethylene systems. Electrofusion
BSI

BS EN 438-8:2018

En Vigor
2018-11-27
High-pressure decorative laminates (HPL). Sheets based on thermosetting resins (usually called laminates). Classification and specifications for design laminates
BSI

PD CEN/TR 16411:2022

En Vigor
2022-07-08
Child care articles. Compiled interpretations of CEN/TC 252 standards
BSI

BS EN ISO 19932-1:2013

En Vigor
2013-07-31
Equipment for crop protection. Knapsack sprayers. Safety and environmental requirements
BSI

20/30425642 DC

En Vigor
2020-08-20
BS EN IEC 63189-1. Virtual Power Plants. Part 1. Architecture and Functional Requirements
BSI

BS EN ISO 15883-3:2025

En Vigor
2025-06-06
Washer-disinfectors. Requirements and tests for washer-disinfectors employing thermal disinfection for human waste containers
BSI

PD ISO/IEC TS 17021-14:2022

En Vigor
2022-05-11
Conformity assessment. Requirements for bodies providing audit and certification of management systems. Part 14. Competence requirements for auditing and certification of management systems for records
BSI

PD ISO/TS 20328:2016

En Vigor
2016-03-31
Imaging materials. Lenticular lens sheet. Measurements and specifications of dimensions
BSI

BS ISO 11359-3:2019

En Vigor
2019-02-12
Plastics. Thermomechanical analysis (TMA). Determination of penetration temperature
BSI

25/30486979 DC

En Vigor
2025-03-17
BS ISO 6029-2 Intelligent transport systems - Seamless positioning for multimodal transportation in ITS stations. Part 2: Nomadic and mobile device dataset for positioning data fusion
BSI

25/30494978 DC

En Vigor
2024-12-25
BS ISO 16481 Sustainable mobility and transportation - Digital governance - Strategic needs regarding ISO 37101 purposes of sustainability
BSI

25/30509035 DC

En Vigor
2025-03-20
BS ISO 30201 Human resources management systems - Requirements
BSI

25/30512052 DC

En Vigor
2025-05-29
BS EN 1918-4 Gas infrastructure - Underground gas storage. Part 4: Functional recommendations for storage in rock caverns
BSI

BS EN 4700-006:2010

En Vigor
2010-09-30
Aerospace series. Steel and heat resisting alloys. Wrought products. Technical specification. Pre-production and production forgings