class imagen_presupuesto {

    constructor(data) {
        this.id = data.id;
        this.imagen = data.imagen;
        this.alt = data.alt || "";
        this.group = data.group || ""; // Grupo al que pertenece el radio
        this.texto = data.texto || ""; // Texto de la etiqueta
        this.selected = data.selected || false;
        this.extraClass = (data.extraClass && !(data.extraClass===undefined))? (data.extraClass + ' ') : ''; 
        this.extraData = data.extra_data || {}; // Datos extra opcionales
    }

    render() {
        const contenedor = $('<div>', {
            id: this.id,
            class: `${this.extraClass + ' '}image-container imagen-selector${this.selected ? ' selected' : ''}`
        });
        // Añadir atributos extra al contenedor
        for (const [key, value] of Object.entries(this.extraData)) {   
            contenedor.attr(`data-${key}`, value);
        }
        contenedor.attr("data-summary-text", this.texto); // Para el resumen

        const input = $('<input>', {
            type: 'radio',
            name: this.group,
            value: this.id,
            hidden: true
        });


        const imagen = $('<img>', {
            class: 'image-presupuesto',
            id: this.id + '-img',
            src: this.imagen,
            alt: this.alt
        });

        const etiqueta = $('<label>', {
            for: this.id + '-img',
            class: 'form-label',
            text: this.texto
        });

        contenedor.append(imagen, etiqueta);
        return contenedor;
    }

    setSelected(selected) {

        this.selected = selected;
        const contenedor = $(`#${this.id}`);
        const radio = contenedor.find('input[type="radio"]');

        if (selected) {
            contenedor.addClass('selected');
            radio.prop('checked', true).trigger('change'); // <-- esto actualiza el input y lanza evento
        } else {
            contenedor.removeClass('selected');
            radio.prop('checked', false);
        }
    }
}

export default imagen_presupuesto;
