using System;

namespace SWRIS.Models
{
    public class LiveStreamDataModel
    {
        /// <summary>
        /// 传感器数量
        /// </summary>
        public byte SensorCount { get; set; }

        /// <summary>
        /// 采样点数
        /// </summary>
        public ushort SampleCount { get; set; }

        /// <summary>
        /// 采样数据
        /// </summary>
        public ushort[][] Data { get; set; }

        public override string ToString()
        {
            // 创建一个字符串构建器来高效拼接字符串
            var sb = new System.Text.StringBuilder();

            // 添加类名
            sb.Append(nameof(LiveStreamDataModel));
            sb.Append(" { ");

            // 添加基本属性
            sb.Append("SensorCount = ").Append(SensorCount);
            sb.Append(", SampleCount = ").Append(SampleCount);

            // 添加数据摘要（如果Data不为空）
            if (Data != null && Data.Length > 0)
            {
                sb.Append(", Data = [ ");

                // 计算要显示的传感器数量（最多显示3个，避免输出过长）
                int sensorsToShow = Math.Min(Data.Length, 3);

                for (int i = 0; i < sensorsToShow; i++)
                {
                    sb.Append("[");

                    if (Data[i] != null && Data[i].Length > 0)
                    {
                        // 计算要显示的采样点数量（最多显示5个）
                        int samplesToShow = Math.Min(Data[i].Length, 5);

                        for (int j = 0; j < samplesToShow; j++)
                        {
                            sb.Append(Data[i][j]);

                            if (j < samplesToShow - 1)
                                sb.Append(", ");
                        }

                        // 如果采样点超过显示数量，添加省略号
                        if (Data[i].Length > 5)
                            sb.Append(", ...");
                    }

                    sb.Append("]");

                    if (i < sensorsToShow - 1)
                        sb.Append(", ");
                }

                // 如果传感器数量超过显示数量，添加省略号
                if (Data.Length > 3)
                    sb.Append(", ...");

                sb.Append(" ]");
            }
            else
            {
                sb.Append(", Data = null");
            }

            sb.Append(" }");

            return sb.ToString();
        }
    }
}
