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 488-1:2023-08

Anulada
2025-07-01
District heating pipes - Bonded single pipe systems for directly buried hot water networks - Part 1: Factory made steel valve assembly for steel service pipes, polyurethane thermal insulation and a casing of polyethylene; German and English version prEN 488-1:2023 / Note: Date of issue 2023-07-07
DIN

DIN EN 3661-001:2008-02

Anulada
2025-07-01
Aerospace series - Circuit breakers, single-pole, temperature compensated, rated current 20 A to 50 A - Part 001: Technical specification; German and English version EN 3661-001:2006
DIN

DIN EN ISO 4823:2021-06

Anulada
2025-09-01
Dentistry - Elastomeric impression and bite registration materials (ISO 4823:2021); German version EN ISO 4823:2021
DIN

DIN 49100:1987-11

Anulada
2025-09-01
Base for two-pole socket-outlets with earthing contacts 10 A 250 V d.c., 16 A 250 V a.c. and switches up to 16 A 250 V; mounting dimensions
DIN

DIN EN 13126-9:2023-09

Anulada
2025-07-01
Building hardware - Hardware for windows and door height windows - Requirements and test methods - Part 9: Hardware for horizontal and vertical pivot windows; German and English version prEN 13126-9:2023 / Note: Date of issue 2023-08-04
DIN

DIN 14800-4:2024-07

Anulada
2025-08-01
Fire-fighting equipment for fire-fighting and rescue service vehicles - Part 4: Tool chest for chimney / Note: Date of issue 2024-06-07
DIN

DIN 45689-2:2023-11

Anulada
2025-07-01
Acoustics - Determination of aircraft noise exposure at airfields - Part 2: Evaluation and generation of additional input data for calculation - Trajectory data and data acquisition system; Text in German and English / Note: Date of issue 2023-10-13
DIN

DIN 18531-2:2017-07

Anulada
2025-08-01
Waterproofing of roofs, balconies and walkways - Part 2: Non-utilized and utilized roofs - Materials / Note: Applies in conjunction with DIN 18531-1 (2017-07), DIN 18531-3 (2017-07), DIN 18531-4 (2017-07).
DIN

DIN 12784:2025-01

Anulada
2025-08-01
Laboratory glassware - Thermometers with interchangeable ground joint / Note: Date of issue 2024-11-29
DIN

DIN 10507:2019-02

Anulada
2025-11-01
Food hygiene - Production and dispense of cream with cream whipping machines - Hygiene requirements, testing
DIN

DIN EN ISO 18618:2024-06

Anulada
2025-11-01
Dentistry - Interoperability of CAD/CAM systems (ISO 18618:2022); German version EN ISO 18618:2022
DIN

DIN EN 319522-2:2018-12

Anulada
2025-07-01
Electronic Signatures and Infrastructures (ESI) - Electronic Registered Delivery Services - Part 2: Semantic contents (Endorsement of the English version EN 319 522-2 V1.1.1 (2018-09) as a German standard) / Note: DIN ETS standards collection*Endorsement notice
DIN

DIN ISO 4156-1:2025-07

Anulada
2026-01-01
Straight cylindrical involute splines - Metric modul, side fit - Part 1: Generalities (ISO 4156-1:2021); Text in German and English / Note: Date of issue 2025-06-06
DIN

DIN EN IEC 61810-7-12:2022-08

Anulada
2025-09-01
All-or-nothing electrical relays - Tests and Measurements - Part 7-12: Internal Moisture (IEC 94/624/CD:2021); Text in German and English / Note: Date of issue 2022-07-29
DIN

DIN EN 15091:2014-03

Anulada
2025-11-01
Sanitary tapware - Electronic opening and closing sanitary tapware; German version EN 15091:2013
DIN

DIN EN 14476:2024-07

Anulada
2025-11-01
Chemical disinfectants and antiseptics - Quantitative suspension test for the evaluation of virucidal activity in the medical area - Test method and requirements (Phase 2/Step 1); German and English version prEN 14476:2024 / Note: Date of issue 2024-06-07
DIN

DIN CEN/TS 13149-8:2014-02;DIN SPEC 4618:2014-02

Anulada
2025-08-01
Public transport - Road vehicle scheduling and control systems - Part 8: Physical layer for IP communication; English version CEN/TS 13149-8:2013
DIN

DIN EN ISO 15708-4:2024-05

Anulada
2025-09-01
Non-destructive testing - Radiation methods for computed tomography - Part 4: Qualification (ISO/DIS 15708-4:2024); German and English version prEN ISO 15708-4:2024 / Note: Date of issue 2024-04-12
DIN

DIN ISO 20121:2024-09

Anulada
2025-09-01
Event sustainability management systems - Requirements with guidance for use (ISO 20121:2024); Text in German and English / Note: Date of issue 2024-08-09
DIN

DIN EN ISO 56000:2024-03

Anulada
2025-11-01
Innovation management - Fundamentals and vocabulary (ISO/DIS 56000:2024); German and English version prEN ISO 56000:2024 / Note: Date of issue 2024-02-09
DIN

DIN EN 14069:2024-08

Anulada
2025-11-01
Liming materials - Denominations, specifications and labelling; German and English version prEN 14069:2024 / Note: Date of issue 2024-06-28
DIN

DIN EN 1992-2:2010-12

Anulada
2025-09-01
Eurocode 2: Design of concrete structures - Part 2: Concrete bridges - Design and detailing rules; German version EN 1992-2:2005 + AC:2008
DIN

DIN EN 1017:2023-07

Anulada
2025-09-01
Chemicals used for treatment of water intended for human consumption - Half-burnt dolomite; German and English version prEN 1017:2023 / Note: Date of issue 2023-06-02
DIN

DIN EN 14069:2018-02

Anulada
2025-11-01
Liming materials - Denominations, specifications and labelling; German version EN 14069:2017
DIN

DIN EN ISO 16140-4/A1:2023-08

Anulada
2025-07-01
Microbiology of the food chain - Method validation - Part 4: Protocol for method validation in a single laboratory - AMENDMENT 1: Validation of a larger test portion size for qualitative methods (ISO 16140-4:2020/DAM 1:2023); German and English version EN ISO 16140-4:2020/prA1:2023 / Note: Date of issue 2023-07-14
DIN

DIN EN 12310-1:2023-09

Anulada
2025-09-01
Flexible sheets for waterproofing - Part 1: Bitumen sheets for roof waterproofing - Determination of resistance to tearing (nail shank); German and English version prEN 12310-1:2023 / Note: Date of issue 2023-08-04
DIN

DIN EN ISO 5530-1:2015-03

Anulada
2025-09-01
Wheat flour - Physical characteristics of doughs - Part 1: Determination of water absorption and rheological properties using a farinograph (ISO 5530-1:2013); German version EN ISO 5530-1:2014
DIN

DIN EN ISO/IEC 5259-1:2025-03

Anulada
2025-09-01
Artificial intelligence - Data quality for analytics and machine learning (ML) - Part 1: Overview, terminology, and examples (ISO/IEC 5259-1:2024); German and English version prEN ISO/IEC 5259-1:2025 / Note: Date of issue 2025-01-31
DIN

DIN EN 3359:2025-04

Anulada
2025-11-01
DIN

DIN EN 3375-011:2023-03

Anulada
2025-09-01
Aerospace series - Cable, electrical for digital data transmission - Part 011: Single braid - Star Quad 100 ohms - Lightweight - Type KL - Product standard; German and English version EN 3375-011:2022
DIN

DIN 41543:1974-02

Anulada
2025-07-01
Side contacts for picture tubes and cathode ray tubes
DIN

DIN EN 1169:2023-11

Anulada
2025-09-01
Precast concrete products - General rules for factory production control of Glass fibre Reinforced Concrete; German and English version prEN 1169:2023 / Note: Date of issue 2023-10-13
DIN

DIN EN ISO 7040:2013-04

Anulada
2025-09-01
Prevailing torque type hexagon regular nuts (with non-metallic insert) - Property classes 5, 8 and 10 (ISO 7040:2012); German version EN ISO 7040:2012
DIN

DIN EN 15955-1:2013-08

Anulada
2025-11-01
Railway applications - Track - Demountable machines and associated equipment - Part 1: Technical requirements for running and working; German version EN 15955-1:2013
DIN

DIN EN 3527:2025-04

Anulada
2025-11-01
DIN

DIN EN ISO 17635:2023-12

Anulada
2025-08-01
Non-destructive testing of welds - General rules for metallic materials (ISO/DIS 17635:2023); German and English version prEN ISO 17635:2023 / Note: Date of issue 2023-11-17
DIN

DIN 51869:2000-09

Anulada
2025-07-01
Testing of gaseous fuels and other gases - Determination of water content according to Karl Fischer - coulometric method
DIN

DIN 939:1995-02

Anulada
2025-08-01
Studs - Metal end 1,25 d
DIN

DIN EN 61300-3-46:2012-04

Anulada
2025-11-01
Fibre optic interconnecting devices and passive components - Basic test and measurement procedures - Part 3-46: Measurement - Bore diameter for guide pin in MT ferrules (IEC 61300-3-46:2011); German version EN 61300-3-46:2011 / Note: A transition period, as set out in DIN EN IEC 61300-3-46 (2025-11), exists until 2026-07-31.
DIN

DIN EN 3155-016:2025-04

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

DIN 14961:2025-01

Anulada
2025-09-01
Boats for fire-brigade / Note: Date of issue 2024-11-29
DIN

DIN EN ISO 14912:2023-09

Anulada
2025-09-01
Gas analysis - Conversion of gas mixture composition data (ISO/DIS 14912:2023); German and English version prEN ISO 14912:2023 / Note: Date of issue 2023-08-04
DIN

DIN EN ISO 26304:2018-05

Anulada
2025-08-01
Welding consumables - Solid wire electrodes, tubular cored electrodes and electrode-flux combinations for submerged arc welding of high strength steels - Classification (ISO 26304:2017); German version EN ISO 26304:2018
DIN

DIN EN 12046-2:2000-12

Anulada
2025-07-01
Operating forces - Test method - Part 2: Doors; German version EN 12046-2:2000
DIN

DIN 14827-1:2018-12

Anulada
2025-08-01
Fire fighting equipment - Cages for transport of delivery hoses - Part 1: Cages for transport of delivery hoses type B, C and D
DIN

DIN EN 415-8 Berichtigung 1:2016-12

Anulada
2025-08-01
Safety of packaging machines - Part 8: Strapping machines; German version EN 415-8:2008, Corrigendum to DIN EN 415-8:2011-06
DIN

DIN EN 15698-2:2023-08

Anulada
2025-07-01
District heating pipes - Bonded twin pipe systems for directly buried hot water networks - Part 2: Factory made fitting and valve assemblies of steel service pipes, polyurethane thermal insulation and one casing of polyethylene; German and English version prEN 15698-2:2023 / Note: Date of issue 2023-07-07
DIN

DIN EN 302307-2:2022-02

Anulada
2025-07-01
Digital Video Broadcasting (DVB) - Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications - Part 2: DVB-S2 Extensions (DVB-S2X) (Endorsement of the English version EN 302 307-2 V1.3.1 (2021-07) as a German standard) / Note: DIN ETS standards collection*Endorsement notice
DIN

DIN ISO 20121:2013-04

Anulada
2025-09-01
Event sustainability management systems - Requirements with guidance for use (ISO 20121:2012)
DIN

DIN 19052-2:1979-10

Anulada
2025-09-01
Microfilming of engineering drawings on microfilm 35 mm; technical proceeding of recording
DIN

DIN EN 1170-1:1998-01

Anulada
2025-09-01
Precast concrete products - Test method for glass-fibre reinforced cement - Part 1: Measuring the consistency of the matrix; "Slump test" method; German version EN 1170-1:1997
DIN

DIN 25252:1987-03

Anulada
2025-07-01
Rail vehicles; self-discharging wagon with side-wall flaps; square for locking shaft
DIN

DIN 55634-1:2024-07

Anulada
2025-08-01
Paints, varnishes and coatings - Corrosion protection of supporting thin-walled building components made of steel - Part 1: Requirements and test methods / Note: Date of issue 2024-06-21
DIN

DIN 4051-1:2025-02

Anulada
2025-11-01
Sewer clinkers - Part 1: Requirements and testing / Note: Date of issue 2025-01-10
DIN

DIN EN 16139:2014-03

Anulada
2025-09-01
Furniture - Strength, durability and safety - Requirements for non-domestic seating; German version EN 16139:2013 + AC:2013 / Note: DIN EN 13761 (2002-12) and DIN EN 15373 (2007-09) remain valid alongside this standard until 2013-09-30.
DIN

DIN EN ISO 11357-6:2018-07

Anulada
2025-09-01
Plastics - Differential scanning calorimetry (DSC) - Part 6: Determination of oxidation induction time (isothermal OIT) and oxidation induction temperature (dynamic OIT) (ISO 11357-6:2018); German version EN ISO 11357-6:2018
DIN

DIN 15992:1978-09

Anulada
2025-08-01
Editing tables, film viewers, rewind apparatus and film inspection apparatus; safety regulations
DIN

DIN EN 16586-2:2022-06

Anulada
2025-11-01
Railway applications - Design for PRM use - Accessibility of persons with reduced mobility to rolling stock - Part 2: Boarding aids; German and English version prEN 16586-2:2022 / Note: Date of issue 2022-05-13
DIN

DIN EN ISO 16610-21:2023-12

Anulada
2025-08-01
Geometrical product specifications (GPS) - Filtration - Part 21: Linear profile filters: Gaussian filters (ISO/DIS 16610-21:2023); German and English version prEN ISO 16610-21:2023 / Note: Date of issue 2023-11-03
DIN

DIN EN 448:2023-08

Anulada
2025-07-01
District heating pipes - Bonded single pipe systems for directly buried hot water networks - Factory made fitting assemblies of steel service pipes, polyurethane thermal insulation and a casing of polyethylene; German and English version prEN 448:2023 / Note: Date of issue 2023-07-07