# app/runtime/subscribers/ui_subscriber.py

from Copilot.dataAcquisition.Core.BaseSubscriber import BaseSubscriber
from Copilot.dataAcquisition.Core.CollectedData import CollectedData
from models.factory_structure_model import Parameter

class UIParmsValueHandler(BaseSubscriber):

    def __init__(self, socketio):

        super().__init__()

        self.socketio = socketio

    def handle(self, event: CollectedData):

        self.socketio.emit(
            "signal_update",
            {
                "tag": event.tag,
                "parm_id": event.parameter.id,
                "value": event.value,
                "timestamp": event.timestamp.isoformat(),
            }
        )