//TODO: repasar y quitar lo relacionado con selectores y precio.
/*TODO:
-Se llama a la [async function init()] dentro de aqui [ecomNormaReferencedScript]
desde fragment [dxp-ecom-portal/misc/fragments/Collection Tienda/ECOM-Global_functions/index.js] de la siguiente manera:
if (typeof window.ecomNormaReferencedScript?.init === "function") {
await window.ecomNormaReferencedScript.init();
}
*/
window.ecomNormaReferencedScript = (function ($) {
/* === CONFIG === */
let DEBUG = false;
let ROOT_SELECTOR = null;
function log(...args) {
if (DEBUG) console.log("[ecomNorma]", ...args);
}
/* === FUNCIONES PRIVADAS === */
function _euros(v) {
const n = Number(v) || 0;
return n.toLocaleString("es-ES", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " €";
}
function _uniq(a) {
return Array.from(new Set(a));
}
function _fill($sel, values, textFn) {
const keep = $sel.val();
$sel.empty();
values.forEach(v => {
$sel.append($("<option>", { value: v, text: textFn ? textFn(v) : v }));
});
if (keep && values.includes(keep)) $sel.val(keep);
else if (values.length) $sel.val(values[0]);
}
function _relabel($sel, textFn) {
$sel.find("option").each(function () {
const v = $(this).attr("value");
$(this).text(textFn ? textFn(v) : v);
});
}
/* === initCarousel — PÚBLICA === */
function initCarousel(force = false) {
const $owl = $(ROOT_SELECTOR + " .standards-container");
// no inicializar si no existe, está oculto o no tiene items
if (!$owl.length || !$owl.hasClass("owl-carousel") || !$owl.is(':visible') || $owl.children().length === 0) {
log("initCarousel abortado: no visible o sin items", $owl);
return;
}
if (force && $owl.hasClass("owl-loaded") && $owl.data("owl.carousel")) {
log("initCarousel Destruyendo Owl Carousel existent:", $owl);
$owl.trigger('destroy.owl.carousel');
// limpiar también owl-hidden para permitir reinicialización
$owl.removeClass('owl-loaded owl-hidden');
// limpiar markup de Owl
$owl.find('.owl-stage-outer').children().unwrap();
}
if ($owl.length && !$owl.hasClass("owl-loaded") && !$owl.data("owl.carousel")) {
$owl.owlCarousel({
nav: true,
navText: [
'<i class="fa-solid fa-chevron-left"></i>',
'<i class="fa-solid fa-chevron-right"></i>'
],
loop: false,
dots: false,
pagination: false,
margin: 25,
autoHeight: false,
responsive: {
0: { items: 1 }, 500: { items: 1 }, 767: { items: 2 }, 1000: { items: 3 }, 1200: { items: 4 }
}
});
$owl.off("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel")
.on("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel", adjustHeights);
log("initCarousel executed");
}
}
/* === initCard — PÚBLICA === */
function initCard($card) {
const dataNode = $card.find("script.normas-data")[0];
let data = [];
if (dataNode) {
try { data = JSON.parse(dataNode.textContent); } catch {}
}
const hasData = Array.isArray(data) && data.length > 0;
let langMap = {};
const mapNode = $card.find("script.lang-map")[0];
try { if (mapNode) langMap = JSON.parse(mapNode.textContent); } catch {}
const $lang = $card.find(".select-language");
const $fmt = $card.find(".select-format");
const $price = $card.find(".price-ae");
const toUC = s => (s || "").toString().toUpperCase();
const labelOf = lang => langMap[toUC(lang)] || lang;
const formatsFor = lang => _uniq(data.filter(d => d.language === lang).map(d => d.format));
const languagesFor = fmt => _uniq(data.filter(d => d.format === fmt).map(d => d.language));
const priceOf = (lang, fmt) => {
const m = data.find(d => d.language === lang && d.format === fmt);
return m ? Number(m.price) || 0 : 0;
};
const parsePriceText = (text) => {
if (!text) return 0;
const clean = String(text).replace(/[^\d,.-]/g, "").trim();
if (!clean) return 0;
if (clean.includes(",") && clean.includes(".")) {
const normalized = clean.replace(/\./g, "").replace(",", ".");
return Number(normalized) || 0;
}
const normalized = clean.replace(",", ".");
return Number(normalized) || 0;
};
if (hasData) {
function onLanguageChange() {
const lang = $lang.val();
const fmts = formatsFor(lang);
_fill($fmt, fmts);
$price.text(_euros(priceOf(lang, $fmt.val())));
}
function onFormatChange() {
const fmt = $fmt.val();
const langs = languagesFor(fmt);
_fill($lang, langs, labelOf);
$price.text(_euros(priceOf($lang.val(), fmt)));
}
const l0 = $lang.val();
const f0 = $fmt.val();
if (!data.find(d => d.language === l0 && d.format === f0)) onLanguageChange();
else $price.text(_euros(priceOf(l0, f0)));
_relabel($lang, labelOf);
$lang.off("change.ae").on("change.ae", onLanguageChange);
$fmt.off("change.ae").on("change.ae", onFormatChange);
}
async function onAdd(e) {
e.preventDefault();
var entryType = ($card.data('entrytype') || 'Norma');
var code = ($card.data('code') || '').toString();
var codIdioma = ($card.find('.select-language').val() || '').toString();
var codFormato = ($card.find('.select-format').val() || '').toString();
if (!code) code = ($card.find('.title-standard').text() || '').trim();
await window.ecomGlobalScripts.functions.addToCart({
entryType: entryType,
code: code,
codIdioma: codIdioma,
codFormato: codFormato,
price: Number(priceOf(codIdioma, codFormato)) || 0,
name: ($card.data('title') || '').toString(),
amount: 1
});
}
$card.find(".standard-button").off("click.ae").on("click.ae", function(e){
const btn = this;
const run = () => onAdd(e);
const helper = window.ecomGlobalScripts?.functions?.withButtonSpinner;
if (typeof helper === "function") {
return helper(btn, run, { spinnerClass: "spinner-border spinner-border-sm text-light", mode: "replace" });
}
return run();
});
// Evita que Owl Carousel interprete el click como drag horizontal
$card.find(".standard-button")
.off("pointerdown.owl mousedown.owl touchstart.owl")
.on("pointerdown.owl mousedown.owl touchstart.owl", function(e){
e.stopPropagation();
});
}
/* === adjustHeights — PÚBLICA === */
function adjustHeights() {
if ($(window).width() > 766.98) {
let hT = 0, hD = 0;
$(ROOT_SELECTOR + " .title-standard").css("height","auto").each(function(){ hT=Math.max(hT,$(this).outerHeight()); });
$(ROOT_SELECTOR + " .description-text").css("height","auto").each(function(){ hD=Math.max(hD,$(this).outerHeight()); });
$(ROOT_SELECTOR + " .title-standard").height(hT);
$(ROOT_SELECTOR + " .description-text").height(hD);
} else {
$(ROOT_SELECTOR + " .title-standard, .description-text").css("height","auto");
}
log("adjustHeights executed");
}
/* === init — PÚBLICA === */
async function init() {
// debug externo
DEBUG = window.ecomNormaScripts?.properties?.isDebug === true;
// prefijo para todos los selectores
ROOT_SELECTOR =
window.ecomGlobalScripts?.properties?.querySelectors?.rootSelector ||
window.ecomNormaScripts?.properties?.querySelectors?.rootSelector ||
"#ecom-norma-detail-normas-referenced .standards-section";
log("window.ecomNormaReferencedScript init");
$(ROOT_SELECTOR + " .item-standard").each(function(){ initCard($(this)); });
initCarousel(true);
adjustHeights();
$(window).off("resize.standards").on("resize.standards", adjustHeights);
log("init executed");
}
/* === API pública === */
return { init, initCard, adjustHeights, initCarousel };
})(jQuery);
window.ecomNormaScripts = window.ecomNormaScripts || (function () {
/* =====================================
PROPIEDADES PRIVADAS
===================================== */
const privateProps = window.ecomNormaScripts?.privateProps || {
//test1: {},
//test2: 0
};
/* =====================================
INICIALIZACIÓN DE PROPERTIES PRIVADAS
===================================== */
(function initPrivateProps() {
/* privateProps.test1 = {
test11: "",
test111: {
test1112: "00,00",
test1113: "€",
test1114: "00",
test1115: "000-00-000",
test1116: "0000",
test1117: "000"
},
test2: ""
};*/
})();
/* =====================================
PROPIEDADES PÚBLICAS
===================================== */
const publicProps = {
funcsEcomGlobalScripts: null,
propsEcomGlobalScripts: null,
isDebug: false
};
/* =====================================
INICIALIZACIÓN DE PROPERTIES PÚBLICAS
===================================== */
(function initPublicProps() {
//publicProps.TEST1 = "";
//publicProps.TEST2 = 0;
})();
/* =====================================
FUNCIONES PÚBLICAS
===================================== */
//En functions declaramos la functions publicas
const functions = {};
functions.init = async function () {
await _initPublicProps();
await _DOMContentLoaded();
};
/* =====================================
FUNCIONES PRIVADAS
===================================== */
const _initPublicProps = async function() {
// Obtener referencias de ecomGlobalScripts
publicProps.funcsEcomGlobalScripts = window.ecomGlobalScripts?.functions || {};
publicProps.propsEcomGlobalScripts = window.ecomGlobalScripts?.properties || {};
// Configurar debug
publicProps.isDebug = (false || publicProps.propsEcomGlobalScripts?.isDebug) ?? false;
// Asegurar que querySelectors existe (crearlo si no existe)
publicProps.propsEcomGlobalScripts.querySelectors ??= {};
// Agregar las propiedades querySelectors
publicProps.propsEcomGlobalScripts.querySelectors.rootSelector = "#ecom-norma-detail-normas-referenced .standards-section";
};
const _DOMContentLoaded = async function () {
//Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded")
if (publicProps.isDebug) console.log("DOMContentLoaded ecom Norma scripts");
window.ecomGlobalScripts?.functions?.pushViewItemEvent?.({
name: "EN ISO 9117-2:2010",
id: "30060",
category: "Normas UNE"
});
};
// ---- Execute Listener DOMContentLoaded ----
document.addEventListener("DOMContentLoaded", async function() {
//Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded")
//await _DOMContentLoaded();
});
/* =====================================
API PÚBLICA
===================================== */
return {
properties: publicProps, // properties public
functions: functions // functions public
};
})();
EN ISO 9117-2:2010
Paints and varnishes - Drying tests - Part 2: Pressure test for stackability (ISO 9117-2:2010)
| Edition date: |
2010-03-01
In Force
|
|---|---|
| Available languages: | English, French |
| Summary: | Dieser Teil von EN ISO 9117 legt ein Prüfverfahren fest, nach dem bestimmt werden kann, ob unter Norm-bedingungen eine einzelne Schicht oder ein Mehrschichtsystem aus Beschichtungsstoffen oder ähnlichen Stoffen nach einer festgelegten Trocknungsdauer ausreichend trocken ist, um nicht beschädigt zu werden, wenn zwei beschichtete Oberflächen oder eine beschichtete und eine andere Oberfläche unter Druck mit-einander in Berührung gebracht werden.
Dieses Verfahren simuliert die Bedingungen beim Aufeinanderstapeln beschichteter Gegenstände.
ANMERKUNG In einigen Ländern wird die geprüfte Eigenschaft „Blockfestigkeit“ genannt ISO 9117-2:2010 specifies a test method for determining, under standard conditions, whether a single‑coat film or a multi-coat system of paints or related materials, after a specified drying period, is sufficiently dry to resist damage when two painted surfaces or one painted surface and another surface are placed in contact under pressure. The method is intended to simulate the conditions when painted articles are stacked upon each other. L'ISO 9117-2:2010 spécifie une méthode d'essai pour déterminer, dans des conditions normalisées, si un feuil monocouche ou un système multicouche de peintures ou de produits assimilés, après une durée spécifiée de séchage, est suffisamment sec pour ne pas être endommagé lorsque deux surfaces peintes ou une surface peinte et une autre surface sont placées en contact sous pression. La méthode est destinée à simuler les conditions auxquelles sont soumis des articles peints lorsqu'ils sont empilés les uns sur les autres. |
| ICS: | 87.040-Paints and varnishes |
| CTN: | CEN/TC 139 - 6121 |
|
Otras Relaciones |
Acuerdo de Viena ISO 9117-2:2010 |
|
Reemplazo Normas |










