4467 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> 
(2896)
(1571)
(0)
DIN

DIN EN ISO 18526-4:2026-06

En Vigor
2026-06-01
Eye and face protection - Test methods - Part 4: Headforms (ISO 18526-4:2020); German version EN ISO 18526-4:2020
DIN

DIN EN ISO 18526-3:2018-08

En Vigor
2026-06-01
Eye and face protection - Test methods - Part 3: Physical and mechanical properties (ISO/DIS 18526-3:2018); German and English version prEN ISO 18526-3:2018 / Note: Date of issue 2018-06-29
DIN

DIN CEN/TS 15658:2007-12

En Vigor
2026-06-01
Advanced technical ceramics - Mechanical properties of ceramic fibres at high temperature under non-reactive environment - Determination of creep behaviour by the hot end method; German version CEN/TS 15658:2007
DIN

DIN EN ISO 4029:2004-05

En Vigor
2026-06-01
Hexagon socket set screws with cup point (ISO 4029:2003); German version EN ISO 4029:2003
DIN

DIN EN 6122:2026-06

En Vigor
2026-06-01
Aerospace series - Blind bolt, 130° flush head, high strength; German version ASD-STAN prEN 6122:2026 / Note: Date of issue 2026-05-08
DIN

DIN CEN/TS 18195:2026-06

En Vigor
2026-06-01
Earth-moving machinery and interchangeable equipment - Minimum technical information for coupling; German version CEN/TS 18195:2025
DIN

DIN 20620-2:1994-10

En Vigor
2026-06-01
Force-guided tram-ways in mining - Part 2: Monorails; structure and terms
DIN

DIN EN ISO 18526-1:2018-08

En Vigor
2026-06-01
Eye and face protection - Test methods - Part 1: Geometrical optical properties (ISO/DIS 18526-1:2018); German and English version prEN ISO 18526-1:2018 / Note: Date of issue 2018-06-29
DIN

DIN SPEC 30752-1:2018-03

En Vigor
2026-06-01
Refuse collection vehicles - Environmental efficiency - Part 1: Requirements on the test procedure for energy consumption at the collection area
DIN

DIN EN ISO 16321-2:2018-08

En Vigor
2026-06-01
Eye and face protection for occupational use - Part 2: Additional requirements for protectors used during welding and related techniques (ISO/DIS 16321-2:2018); German and English version prEN ISO 16321-2:2018 / Note: Date of issue 2018-06-29
DIN

DIN EN 2002-002:2026-06

En Vigor
2026-06-01
Aerospace series - Metallic materials - Test methods - Part 002: Tensile testing at elevated temperature; German and English version EN 2002-002:2026
DIN

DIN 14502-2:2024-04

En Vigor
2026-06-01
Firefighting and rescue service vehicles - Part 2: Additional provisions to DIN EN 1846-2 and DIN EN 1846-3 (Proposal for a European Standard) / Note: Date of issue 2024-03-22
DIN

DIN EN ISO 22109:2026-06

En Vigor
2026-06-01
Industrial valves - Gearboxes for valves (ISO 22109:2026); German version EN ISO 22109:2026
DIN

DIN EN 16985:2026-06

En Vigor
2026-06-01
Booths for application of coating material - Safety requirements; German and English version prEN 16985:2026 / Note: Date of issue 2026-05-08*Intended as replacement for DIN EN 16985 (2019-04).
DIN

DIN EN 17184:2026-05

En Vigor
2026-05-01
Intelligent transport systems - eSafety - eCall High level application protocols (HLAP) using IP Multimedia Subsystem (IMS) over packet switched networks; German version EN 17184:2024+A1:2026
DIN

DIN EN ISO 19135-1/A1:2021-05

En Vigor
2026-06-01
Geographic information - Procedures for item registration - Part 1: Fundamentals - Amendment 1 (ISO 19135-1:2015/Amd 1:2021); English version EN ISO 19135-1:2015/A1:2021
DIN

DIN EN 60704-2-6:2013-04

En Vigor
2026-06-01
Household and similar electrical appliances - Test code for the determination of airborne acoustical noise - Part 2-6: Particular requirements for tumble dryers (IEC 60704-2-6:2012); German version EN 60704-2-6:2012 / Note: DIN EN 60704-2-6 (2004-09) remains valid alongside this standard until 2015-05-01.*A transition period, as set out in DIN EN 60704-2-6 (2026-06), exists until 2028-02-29.*Applies in conjunction with DIN EN 60704-1 (2010-12).
DIN

DIN EN ISO 19650-3:2026-06

En Vigor
2026-06-01
Organization and digitization of information about buildings and civil engineering works, including building information modelling (BIM) - Information management - Part 3: Implementation of the information management process (ISO/DIS 19650-3:2026); German and English version prEN ISO 19650-3:2026 / Note: Date of issue 2026-05-22*Intended as replacement for DIN EN ISO 19650-3 (2021-03).
DIN

DIN EN 170:2003-01

En Vigor
2026-06-01
Personal eye protection - Ultraviolet filters - Transmittance requirements and recommended use; German version EN 170:2002
DIN

DIN 23311-1:2015-03

En Vigor
2026-06-01
Knee pads for mining - Part 1: Rubber knee pads / Note: DIN 23311-1 (1985-06) remains valid alongside this standard until 2015-08-31.
DIN

DIN EN ISO 1183-2:2026-06

En Vigor
2026-06-01
Plastics - Methods for determining the density of non-cellular plastics - Part 2: Density gradient column method (ISO 1183-2:2026); German version EN ISO 1183-2:2026
DIN

DIN EN 13052-1:2001-12

En Vigor
2026-06-01
Influence of organic materials on water intended for human consumption - Organic materials; Determination of colour and turbidity of water in piping systems - Part 1: Test method; German version EN 13052-1:2001
DIN

DIN 23342:2005-08

En Vigor
2026-06-01
Clothing for the mining industry - Singlet with 1/4 sleeves
DIN

DIN EN ISO 3506-3:2026-06

En Vigor
2026-06-01
Fasteners - Mechanical properties of corrosion resistant stainless steel fasteners - Part 3: Set screws (and similar fasteners not under tensile stress) with specified grades and hardness classes (ISO 3506-3:2025); German version EN ISO 3506-3:2025
DIN

DIN 51871:2026-06

En Vigor
2026-06-01
Analysis of gases - Determination of water content as frost/dew point temperature using a dew point mirror hygrometer / Note: Date of issue 2026-05-22*Intended as replacement for DIN 51871 (1985-12).
DIN

DIN EN ISO 4026:2025-05

En Vigor
2026-06-01
Fasteners - Hexagon socket set screws with flat point (ISO/DIS 4026:2025); German and English version prEN ISO 4026:2025 / Note: Date of issue 2025-04-11
DIN

DIN EN ISO 10642:2026-06

En Vigor
2026-06-01
Fasteners - Hexagon socket countersunk head screws with reduced loadability (ISO 10642:2026); German version EN ISO 10642:2026
DIN

DIN/TS 8998-1:2026-06

En Vigor
2026-06-01
Acoustics - General supplements for quality assurance of outdoor sound calculation software according to DIN 45687-1 - Part 1: QSI data interface
DIN

DIN 45672-3:2026-05

En Vigor
2026-05-01
Vibration measurement on railway traffic systems - Part 3: Prediction method based on third-octave spectra
DIN

DIN EN ISO 23345:2026-06

En Vigor
2026-06-01
Jewellery and precious metals - Non destructive precious metal fineness confirmation by ED-XRF (ISO 23345:2021); German version EN ISO 23345:2026
DIN

DIN 19414:2026-06

En Vigor
2026-06-01
Dentistry - Terms related to membranes and barriers
DIN

DIN EN ISO 1183-2:2025-03

En Vigor
2026-06-01
Plastics - Methods for determining the density of non-cellular plastics - Part 2: Density gradient column method (ISO/DIS 1183-2:2025); German and English version prEN ISO 1183-2:2025 / Note: Date of issue 2025-02-14
DIN

DIN EN 15664-1:2024-08

En Vigor
2026-06-01
Influence of metallic materials on water intended for human consumption - Dynamic rig test for assessment of metal release - Part 1: Design and operation; German and English version prEN 15664-1:2024 / Note: Date of issue 2024-06-28
DIN

DIN 20478:1988-10

En Vigor
2026-06-01
Simple crossovers for underground tracks; 50 m radius, 1 : 7 inclination; geometric dimensions
DIN

DIN EN ISO 11615:2025-10

En Vigor
2026-06-01
Health informatics - Identification of medicinal products - Data elements and structures for the unique identification and exchange of regulated medicinal product information (ISO/DIS 11615:2025); German and English version prEN ISO 11615:2025 / Note: Date of issue 2025-09-12
DIN

DIN EN ISO 4027 Berichtigung 1:2007-04

En Vigor
2026-06-01
Hexagon socket set screws with cone point (ISO 4027:2003); German version EN ISO 4027:2003, Corrigenda to DIN EN ISO 4027:2004-05
DIN

DIN EN ISO 14111:2026-06

En Vigor
2026-06-01
Natural gas - Guidelines to metrological traceability (ISO/DIS 14111:2026); German and English version prEN ISO 14111:2026 / Note: Date of issue 2026-05-22*Intended as replacement for DIN EN ISO 14111 (2000-06).
DIN

DIN EN 13476-3:2024-03

En Vigor
2026-06-01
Plastics piping systems for non-pressure underground drainage and sewerage - Structured-wall piping systems of unplasticized poly(vinyl chloride) (PVC-U), polypropylene (PP) and polyethylene (PE) - Part 3: Specifications for pipes and fittings with smooth internal and profiled external surface and the system, Type B; German and English version prEN 13476-3:2024 / Note: Date of issue 2024-02-09
DIN

DIN EN ISO 80000-5:2020-02

En Vigor
2026-06-01
Quantities and units - Part 5: Thermodynamics (ISO 80000-5:2019); German version EN ISO 80000-5:2019
DIN

DIN EN ISO 23696-1:2026-06

En Vigor
2026-06-01
Water quality - Determination of nitrate in water using small-scale sealed tubes - Part 1: Dimethylphenol colour reaction (ISO 23696-1:2023); German version EN ISO 23696-1:2025
DIN

DIN EN ISO 14001 Berichtigung 1:2016-03

En Vigor
2026-06-01
Environmental management systems - Requirements with guidance for use, Corrigendum to DIN EN ISO 14001:2015-11
DIN

DIN EN 12221:2023-12

En Vigor
2026-06-01
Child care articles - Changing units and changing pads for domestic use - Safety requirements and test methods; German and English version prEN 12221:2023 / Note: Date of issue 2023-11-03
DIN

DIN EN 17923:2026-05

En Vigor
2026-05-01
Equipment for vine cultivation and wine making - Safety - Must and grape harvest pumps; German version EN 17923:2025
DIN

DIN EN 1993-1-4/A1:2026-06

En Vigor
2026-06-01
Eurocode 3 - Design of steel structures - Part 1-4: Stainless steel structures; German and English version EN 1993-1-4:2025/prA1:2026 / Note: Date of issue 2026-05-15*Intended as an amendment to DIN EN 1993-1-4 (2026-04).
DIN

DIN ISO 10223:2006-01

En Vigor
2026-06-01
Textile machinery and accessories - Flat warp knitting machines - Numbering of guide bars (ISO 10223:2005)
DIN

DIN EN ISO 1135-4:2016-06

En Vigor
2026-06-01
Transfusion equipment for medical use - Part 4: Transfusion sets for single use, gravity feed (ISO 1135-4:2015); German version EN ISO 1135-4:2015
DIN

DIN EN 15664-1:2026-06

En Vigor
2026-06-01
Influence of metallic materials on water intended for human consumption - Dynamic rig test for assessment of metal release - Part 1: Design and operation; German version EN 15664-1:2026 / Note: This standard is part of the DVGW body of rules.
DIN

DIN 21555:1991-08

En Vigor
2026-06-01
Mine support; graphical symbols for the open loop control of powered support
DIN

DIN EN 17242:2026-05

En Vigor
2026-05-01
Recirculatory Filtration Fume Cabinets; German version EN 17242:2025
DIN

DIN EN 1420:2026-06

En Vigor
2026-06-01
Influence of organic materials on water intended for human consumption - Determination of odour, flavour, colour and turbidity of water in piping and storage systems; German version EN 1420:2026 / Note: This standard is part of the DVGW body of rules.
DIN

DIN EN 13201-2:2026-06

En Vigor
2026-06-01
Road lighting - Part 2: Performance requirements; German and English version prEN 13201-2:2026 / Note: Date of issue 2026-05-01*Intended as replacement for DIN EN 13201-2 (2016-06).
DIN

DIN ISO 17208-1:2026-05

En Vigor
2026-05-01
Underwater acoustics - Quantities and procedures for description and measurement of underwater sound from ships - Part 1: Requirements for precision measurements in deep water used for comparison purposes (ISO 17208-1:2016 + Amd.1:2024)
DIN

DIN EN ISO 23697-1:2026-06

En Vigor
2026-06-01
Water quality - Determination of total bound nitrogen (ST-TN<(Index)b>) in water using small-scale sealed tubes - Part 1: Dimethylphenol colour reaction (ISO 23697-1:2023); German version EN ISO 23697-1:2025
DIN

DIN EN 17860-6:2026-06

En Vigor
2026-06-01
Carrier Cycles - Part 6: Passenger transport; German version EN 17860-6:2025
DIN

DIN 21551:1986-01

En Vigor
2026-06-01
Mine support; roof bars single props; lengths
DIN

DIN EN 3155-008:2025-06

En Vigor
2026-06-01
Aerospace series - Electrical contacts used in elements of connection - Part 008: Contacts, electrical, male, type A, crimp, class S - Product standard; German version ASD-STAN prEN 3155-008:2025 / Note: Date of issue 2025-05-23*Applies in conjunction with DIN EN 3155-001 (2024-10).
DIN

DIN EN 171:2002-08

En Vigor
2026-06-01
Personal eye protection - Infrared filters - Transmittance requirements and recommended use; German version EN 171:2002
DIN

DIN 20600:2015-11

En Vigor
2026-06-01
Mine railways - Wheel profils for locomotives and cars
DIN

DIN EN ISO 18862:2024-09

En Vigor
2026-06-01
Coffee and coffee products - Determination of acrylamide - Methods using HPLC-MS/MS and GC-MS after derivatization (ISO/DIS 18862:2024); German and English version prEN ISO 18862:2024 / Note: Date of issue 2024-08-16
DIN

DIN EN 60704-2-6:2026-06

En Vigor
2026-06-01
Household and similar electrical appliances - Test code for the determination of airborne acoustical noise - Part 2-6: Particular requirements for tumble dryers (IEC 60704-2-6:2012, modified); German version EN 60704-2-6:2012 + A11:2025 / Note: DIN EN 60704-2-6 (2013-04) remains valid alongside this standard until 2028-02-29.*Applies in conjunction with DIN EN IEC 60704-1 (2023-06).