コード例 #1
0
        public static async Task <DateTime> getValNextDate(string iess, DateTime dateStart, DateTime dateEnd, string func, double limitVal)
        {
            TabularRequest req = new TabularRequest();

            req.period = new TimePeriod()
            {
                from = new Timestamp()
                {
                    second = EDSClass.toTS(dateStart)
                },
                till = new Timestamp()
                {
                    second = EDSClass.toTS(dateEnd)
                }
            };

            req.step = new TimeDuration()
            {
                seconds = (long)(dateEnd - dateStart).TotalSeconds
            };

            List <TabularRequestItem> list = new List <TabularRequestItem>();

            list.Add(new TabularRequestItem()
            {
                function = func,
                pointId  = new PointId()
                {
                    iess = iess
                },
                @params = new double[] { limitVal }
            });

            req.items = list.ToArray();
            uint id = 0;

            try
            {
                id = EDSClass.Client.requestTabular(EDSClass.AuthStr, req);
            }
            catch (Exception e)
            {
                Logger.Info(e.ToString());
            }
            TabularRow[] rows;
            bool         ok = await EDSClass.ProcessQueryAsync(id);

            PointId[] points = EDSClass.Client.getTabular(EDSClass.AuthStr, id, out rows);
            if (rows.Length > 0)
            {
                TabularRow row = rows[0];
                double     ts  = getVal(row.values[0].value);
                return(EDSClass.fromTS((long)ts));
            }
            else
            {
                return(dateEnd);
            }
        }
コード例 #2
0
        public void CreateTest()
        {
            var row = TabularRow.Create(key, name, unit);

            Assert.AreEqual(key, row.Key);
            Assert.AreEqual(name, row.Name);
            Assert.AreEqual(unit, row.Unit);
        }
コード例 #3
0
        public void GetLatex_TabularRowWithSingleElement_CorrectGenerateLatexCode()
        {
            var row = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element"));

            AssertExtensions.CompareLatex(row.GetLatex(), @"New element \\");
        }
コード例 #4
0
        public void CreateTest1()
        {
            var desc = new PropertyDescription(key, name, unit);
            var row  = TabularRow.Create(desc);

            Assert.AreEqual(key, row.Key);
            Assert.AreEqual(name, row.Name);
            Assert.AreEqual(unit, row.Unit);
        }
コード例 #5
0
        public void AddElement_DefaultConfiguration_ThrowIncompatibleNumberOfColumns()
        {
            var tabular  = new Tabular();
            var row      = new TabularRow <ILatexElement>();
            var emptyRow = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element"));
            tabular.AddElement(row);

            Assert.Throws <IncompatibleNumberOfColumnsException>(() => tabular.AddElement(emptyRow));
        }
コード例 #6
0
        public void AddTest()
        {
            // add succeeded
            var row   = TabularRow.Create(key, name, unit);
            var value = "dummy";

            Assert.AreEqual(0, row.Values.Count);
            row.Add(value);
            Assert.AreEqual(1, row.Values.Count);
            Assert.AreEqual(value, row.Values[0]);
        }
コード例 #7
0
        public void AddElement_CustomConfiguration_ThrowIncompatibleNumberOfColumns()
        {
            var configuration = new List <Alligment>()
            {
                Alligment.Left, Alligment.Right
            };

            var tabular = new Tabular(configuration);
            var row     = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element"));

            Assert.Throws <IncompatibleNumberOfColumnsException>(() => tabular.AddElement(row));
        }
コード例 #8
0
        public void GetLatex_TabularWithSingleRow_CorrectGenerateLatexCode()
        {
            var tabular = new Tabular();
            var row     = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element"));
            tabular.AddElement(row);

            AssertExtensions.CompareLatex(tabular.GetLatex(),
                                          @"\begin{tabular}{|c|}
                                                \hline
                                                    New element \\
                                                \hline
                                            \end{tabular}");
        }
コード例 #9
0
        public static async Task <double> getValFromServer(string iess, DateTime date)
        {
            TabularRequest req = new TabularRequest();

            req.period = new TimePeriod()
            {
                from = new Timestamp()
                {
                    second = EDSClass.toTS(date)
                },
                till = new Timestamp()
                {
                    second = EDSClass.toTS(date) + 1
                }
            };

            req.step = new TimeDuration()
            {
                seconds = 1
            };

            List <TabularRequestItem> list = new List <TabularRequestItem>();

            list.Add(new TabularRequestItem()
            {
                function = "VALUE",
                pointId  = new PointId()
                {
                    iess = iess
                },
                shadePriority = ShadePriority.REGULAROVERSHADE
            });

            req.items = list.ToArray();
            uint id = EDSClass.Client.requestTabular(EDSClass.AuthStr, req);

            TabularRow[] rows;
            bool         ok = await EDSClass.ProcessQueryAsync(id);

            PointId[]  points = EDSClass.Client.getTabular(EDSClass.AuthStr, id, out rows);
            double     val    = Double.MinValue;
            TabularRow row    = rows[0];

            {
                val = getVal(row.values[0].value);
            }
            return(val);
        }
コード例 #10
0
        public void GetLatex_TabularWithMultipleColumn_DefaultConfiguration()
        {
            var tabular = new Tabular();
            var row     = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element v1"));
            row.AddElement(new SimpleText("New element v2"));
            tabular.AddElement(row);
            tabular.AddElement(row);

            AssertExtensions.CompareLatex(tabular.GetLatex(),
                                          @"\begin{tabular}{|c|c|}
                                                \hline
                                                    New element v1 & New element v2 \\
                                                \hline
                                                    New element v1 & New element v2 \\
                                                \hline
                                            \end{tabular}");
        }
コード例 #11
0
        public static string ToLatex <T>(this IEnumerable <T> collection)
        {
            var latexTable   = new Table();
            var latexTabular = new Tabular();

            foreach (var element in collection)
            {
                var latexRow = new TabularRow <ILatexElement>();
                foreach (var property in typeof(T).GetProperties())
                {
                    var latexElement = new SimpleText(property.GetValue(element).ToString());
                    latexRow.AddElement(latexElement);
                }

                latexTabular.AddElement(latexRow);
            }
            latexTable.AddElement(latexTabular);

            return(latexTable.GetLatex());
        }
コード例 #12
0
        public void GetLatex_TabularWithMultipleColumn_CustomConfiguration()
        {
            var configuration = new List <Alligment>()
            {
                Alligment.Left, Alligment.Right
            };

            var tabular = new Tabular(configuration);
            var row     = new TabularRow <ILatexElement>();

            row.AddElement(new SimpleText("New element v1"));
            row.AddElement(new SimpleText("New element v2"));
            tabular.AddElement(row);
            tabular.AddElement(row);

            AssertExtensions.CompareLatex(tabular.GetLatex(),
                                          @"\begin{tabular}{|l|r|}
                                                \hline
                                                    New element v1 & New element v2 \\
                                                \hline
                                                    New element v1 & New element v2 \\
                                                \hline
                                            \end{tabular}");
        }
コード例 #13
0
        public async Task <bool> ReadData()
        {
            ResultData = new Dictionary <DateTime, Dictionary <string, double> >();
            DateTime date = DateStart.AddHours(0);

            while (date < DateEnd)
            {
                DateTime de = date.AddHours(0);
                switch (Period)
                {
                case EDSReportPeriod.sec:
                    de = date.AddSeconds(1);
                    break;

                case EDSReportPeriod.minute:
                    de = date.AddMinutes(1);
                    break;

                case EDSReportPeriod.hour:
                    de = date.AddHours(1);
                    break;

                case EDSReportPeriod.day:
                    de = date.AddDays(1);
                    break;

                case EDSReportPeriod.month:
                    de = date.AddMonths(1);
                    break;
                }
                ResultData.Add(date, new Dictionary <string, double>());
                foreach (string id in RequestData.Keys)
                {
                    ResultData[date].Add(id, 0);
                }
                date = de.AddHours(0);
            }


            List <TabularRequestItem> list = new List <TabularRequestItem>();

            foreach (EDSReportRequestRecord rec in RequestData.Values)
            {
                list.Add(new TabularRequestItem()
                {
                    function = EDSClass.getReportFunctionName(rec.Function),
                    pointId  = new PointId()
                    {
                        iess = rec.Point.IESS
                    },
                    shadePriority = rec.Point.IsShade ? ShadePriority.SHADEOVERREGULAR : ShadePriority.REGULAROVERSHADE
                });
            }



            if (!EDSClass.Connected)
            {
                EDSClass.Connect();
            }
            if (EDSClass.Connected)
            {
                if (Period != EDSReportPeriod.month)
                {
                    List <DateTime> dates = ResultData.Keys.ToList();
                    DateTime        ds    = DateStart.AddHours(0);
                    DateTime        de    = DateStart.AddHours(1);
                    while (ds < DateEnd)
                    {
                        if (Period == EDSReportPeriod.minute || Period == EDSReportPeriod.sec)
                        {
                            int i0 = dates.IndexOf(ds);
                            int i1 = i0 + 1000;
                            de = i1 < dates.Count ? dates[i1] : DateEnd;
                        }
                        else
                        {
                            de = de.AddDays(5);
                            try {
                                de = dates.First(d => d >= de);
                            } catch {
                                de = DateEnd;
                            }
                        }

                        EDSClass.Single.GlobalInfo = String.Format("{0}-{1}", ds.ToString("dd.MM.yyyy HH:mm:ss"), de.ToString("dd.MM.yyyy HH:mm:ss"));

                        TabularRequest req = new TabularRequest();
                        req.period = new TimePeriod()
                        {
                            from = new Timestamp()
                            {
                                second = EDSClass.toTS(ds)
                            },
                            till = new Timestamp()
                            {
                                second = EDSClass.toTS(de)
                            }
                        };

                        req.step = new TimeDuration()
                        {
                            seconds = EDSClass.getPeriodSeconds(Period)
                        };
                        req.items = list.ToArray();
                        uint         id = EDSClass.Client.requestTabular(EDSClass.AuthStr, req);
                        TabularRow[] rows;
                        bool         ok = await EDSClass.ProcessQueryAsync(id);

                        if (!ok)
                        {
                            break;
                        }
                        PointId[]     points = EDSClass.Client.getTabular(EDSClass.AuthStr, id, out rows);
                        List <string> keys   = RequestData.Keys.ToList();

                        foreach (TabularRow row in rows)
                        {
                            DateTime dt = EDSClass.fromTS(row.ts.second);
                            for (int i = 0; i < row.values.Count(); i++)
                            {
                                double  val   = EDSClass.getVal(row.values[i].value);
                                PointId point = points[i];
                                string  resId = keys[i];
                                EDSReportRequestRecord request = RequestData[resId];
                                if (request.Function == EDSReportFunction.vyrab && Period == EDSReportPeriod.day)
                                {
                                    val *= 24;
                                }
                                ResultData[dt][resId] = val;
                            }
                        }

                        ds = de.AddHours(0);
                    }
                }
                else
                {
                    DateTime ds = DateStart.AddHours(0);
                    while (ds < DateEnd)
                    {
                        EDSClass.Single.GlobalInfo = String.Format("{0}-{1}", ds.ToString("dd.MM.yyyy"), ds.AddMonths(1).ToString("dd.MM.yyyy"));
                        DateTime       de  = ds.AddMonths(1);
                        TabularRequest req = new TabularRequest();
                        req.period = new TimePeriod()
                        {
                            from = new Timestamp()
                            {
                                second = EDSClass.toTS(ds)
                            },
                            till = new Timestamp()
                            {
                                second = EDSClass.toTS(de)
                            }
                        };


                        int seconds = (int)(EDSClass.toTS(de) - EDSClass.toTS(ds));
                        req.step = new TimeDuration()
                        {
                            seconds = seconds
                        };
                        req.items = list.ToArray();
                        uint         id = EDSClass.Client.requestTabular(EDSClass.AuthStr, req);
                        TabularRow[] rows;
                        bool         ok = await EDSClass.ProcessQueryAsync(id);

                        if (!ok)
                        {
                            break;
                        }
                        PointId[]     points = EDSClass.Client.getTabular(EDSClass.AuthStr, id, out rows);
                        List <string> keys   = RequestData.Keys.ToList();

                        TabularRow row = rows.First();
                        DateTime   dt  = EDSClass.fromTS(row.ts.second);
                        for (int i = 0; i < row.values.Count(); i++)
                        {
                            double  val   = EDSClass.getVal(row.values[i].value);
                            PointId point = points[i];
                            string  resId = keys[i];
                            EDSReportRequestRecord request = RequestData[resId];
                            if (request.Function == EDSReportFunction.vyrab)
                            {
                                val *= seconds / 3600.0;
                            }
                            ResultData[dt][resId] = val;
                        }

                        ds = de.AddHours(0);
                    }
                }
            }

            return(true);
        }