Esempio n. 1
0
        private void WriteUnifiedData(DataRecordArrayWriter writer, List <VTTQs> variables)
        {
            HistReader[] vars = variables.Select(v => new HistReader(v)).ToArray();

            writer.WriteArrayStart();

            bool hasNext = vars.Any(v => v.HasValue);

            while (hasNext)
            {
                writer.WriteRecordStart();

                Timestamp time = Timestamp.Max;

                foreach (var reader in vars)
                {
                    Timestamp?t = reader.Time;
                    if (t.HasValue && t.Value < time)
                    {
                        time = t.Value;
                    }
                }

                writer.WriteValueTimestamp(time);

                foreach (var reader in vars)
                {
                    writer.WriteColumSeparator();
                    Timestamp?t = reader.Time;
                    if (t.HasValue && t.Value == time)
                    {
                        DataValue v = reader.Value;
                        if (IsSimpleDouble(v.JSON))
                        {
                            writer.WriteValueJsonDouble(v.JSON);
                        }
                        else
                        {
                            double?value = v.AsDouble();
                            if (value.HasValue)
                            {
                                writer.WriteValueDouble(value.Value);
                            }
                            else
                            {
                                writer.WriteValueEmpty();
                            }
                        }
                        reader.MoveNext();
                    }
                    else
                    {
                        writer.WriteValueEmpty();
                    }
                }
                hasNext = vars.Any(v => v.HasValue);
                writer.WriteRecordEnd(hasMoreRecords: hasNext);
            }

            writer.WriteArrayEnd();
        }