public MachineStatusService(DeltaConnection conn, HttpContext e) : base(conn, e)
        {
            packagesTable = new HTMLTableGenerator <NetManagerPackage>(
                new List <string>()
            {
                "Name", "Latest Version", "Actions"
            },
                (NetManagerPackage s) =>
            {
                string name          = s.name;
                string latestVersion = s.latest_version;
                string actions       = GenerateFormBtnHtml("add_version", "Update", new KeyValuePair <string, string>("package_name", s.name)) + " " + GenerateFormBtnHtml("add_instance", "New Instance", new KeyValuePair <string, string>("package_name", s.name), new KeyValuePair <string, string>("count", "1"));
                return(new List <string>()
                {
                    name, latestVersion, actions
                });
            });
            versionsTable = new HTMLTableGenerator <NetManagerVersion>(
                new List <string>()
            {
                "ID", "Package Name", "Time", "Uses", "Actions"
            },
                (NetManagerVersion s) =>
            {
                string id          = s.id;
                string packageName = s.package_name;
                DateTime timeLocal = ConvertUtcToLocal(s.time);
                string time        = timeLocal.ToShortDateString() + " " + timeLocal.ToLongTimeString();
                string actions     = GenerateFormBtnHtml("delete_version", "Delete", new KeyValuePair <string, string>("version_id", id));

                //Count uses
                int usesCount = 0;
                foreach (var i in instanceList)
                {
                    if (i.version_id == s.id)
                    {
                        usesCount++;
                    }
                }
                string uses = usesCount == 0 ? "<span style=\"color:red;\">0</span>" : usesCount.ToString();

                return(new List <string>()
                {
                    id, packageName, time, uses, actions
                });
            });
            instancesTable = new HTMLTableGenerator <NetManagerInstance>(
                new List <string>()
            {
                "ID", "Package Name", "Version", "Site", "Status", "Actions"
            },
                (NetManagerInstance s) =>
            {
                string id          = s.id.ToString();
                string packageName = s.package_name;
                string versionId   = s.version_id;
                string status      = $"<div style=\"height:21px;width:150px;position:relative;\"><div style=\"font-size:13px;text-align:center;color:gray;line-height:21px;\">PINGING...</div><iframe scrolling=\"no\" src=\"ping_instance?instance_id={s.id}\" style=\"border:0;padding:0;margin:0;height:21px;width:150px;position:absolute;top:0;left:0;\"></iframe></div>";

                //Check if this is outdated
                bool isOutdated = false;
                foreach (var p in packageList)
                {
                    if (p.name == packageName)
                    {
                        isOutdated = isOutdated || !(p.latest_version == s.version_id);
                    }
                }
                if (isOutdated)
                {
                    versionId += " " + GenerateBubbleHtml("#ffb94f", "Outdated");
                }

                //Generate sites list
                string sites;
                if (s.ports.Length == 0)
                {
                    sites = "<i style=\"color:gray;\">No Ports Allocated</i>";
                }
                else
                {
                    sites = $"<form method=\"post\" action=\"assign_site\" style=\"margin:0;\"><input type=\"hidden\" value=\"{s.id}\" name=\"instance_id\"><select name=\"site_id\" onchange=\"this.parentElement.submit();\">";
                    foreach (var si in sitesList)
                    {
                        if (si.id == s.site_id)
                        {
                            sites += $"<option value=\"{si.id}\">{si.site_domain}</option>";
                        }
                    }
                    sites += $"<option value=\"\"><i>No Assigned Site</i></option>";
                    foreach (var si in sitesList)
                    {
                        if (si.id != s.site_id)
                        {
                            sites += $"<option value=\"{si.id}\">{si.site_domain}</option>";
                        }
                    }
                    sites += "</select><noscript><input type=\"submit\" value=\"Update\"></noscript></form>";
                }

                //Generate
                string actions = GenerateFormBtnHtml("update_instance", "Upgrade", !isOutdated, new KeyValuePair <string, string>("instance_id", id)) + " " +
                                 GenerateFormBtnHtml("reboot_instance", "Reboot", new KeyValuePair <string, string>("instance_id", id)) + " " +
                                 GenerateFormBtnHtml("destroy_instance", "Remove", new KeyValuePair <string, string>("instance_id", id)) + " " +
                                 GenerateFormBtnHtml("instances/" + id, "Manage", new KeyValuePair <string, string>());

                return(new List <string>()
                {
                    id, packageName, versionId, sites, status, actions
                });
            });
            sitesTable = new HTMLTableGenerator <NetManagerSite>(
                new List <string>()
            {
                "Domain", "Proxies", "SSL Expires In", "Instances", "Actions"
            },
                (NetManagerSite s) =>
            {
                //string name = s.name;
                //string latestVersion = s.latest_version;
                //string actions = GenerateFormBtnHtml("add_version", "Update", new KeyValuePair<string, string>("package_name", s.name)) + " " + GenerateFormBtnHtml("add_instance", "New Instance", new KeyValuePair<string, string>("package_name", s.name), new KeyValuePair<string, string>("count", "1"));
                //Count uses
                int usesCount = 0;
                foreach (var i in instanceList)
                {
                    if (i.site_id == s.id)
                    {
                        usesCount++;
                    }
                }
                return(new List <string>()
                {
                    s.site_domain, s.proxies.Length.ToString(), Math.Floor((s.cert_expiry - DateTime.UtcNow).TotalDays) + " days", usesCount == 0 ? "<span style=\"color:red;\">0</span>" : usesCount.ToString(), ""
                });
            });
        }
Пример #2
0
        public AdditionalValuesForm(CorrelationCalc calc)
        {
            InitializeComponent();
            htmlPanel = new TheArtOfDev.HtmlRenderer.WinForms.HtmlPanel();

            var          table = calc.Table;
            var          gen   = new HTMLTableGenerator();
            HTMLTableRow row;

            //Создание шапки
            row = gen.AddRow();
            row.AddCell("Границы и середины интервалов для y", 1, 4);
            row.AddCell("Vj", 1, 3);
            row.AddCell("Границы и середины интервалов для x", table.Width, 1);
            row.AddCell("Nj", 1, 4);
            row.AddCell("NjVj", 1, 4);
            row.AddCell("NjVj^2", 1, 4);

            row = gen.AddRow();
            foreach (var x in table.XHeaders)
            {
                row.AddCell(range_to_string(x), "#B2DFDB");
            }

            row = gen.AddRow();
            //row.AddCell("Ui", table.Width, 1);

            row = gen.AddRow();
            row.AddCell("Ui ->");
            foreach (var x in calc.Ui)
            {
                row.AddCell(x.ToString("N2"));
            }


            //Создание таблицы
            for (int y = 0; y < table.Height; y++)
            {
                row = gen.AddRow();
                row.AddCell(range_to_string(table.YHeaders[y]), "#B2DFDB");
                row.AddCell(calc.Vj[y].ToString("N2"));

                //Значения
                for (int x = 0; x < table.Width; x++)
                {
                    row.AddCell(table[x, y].ToString("N2"), "#B2DFDB");
                }

                row.AddCell(calc.Nj[y].ToString("N2"));
                row.AddCell((calc.Nj[y] * calc.Vj[y]).ToString("N2"));
                row.AddCell((calc.Nj[y] * calc.Vj[y] * calc.Vj[y]).ToString("N2"));
            }

            //Нижние строки
            //Ni
            row = gen.AddRow();
            row.AddCell("Ni", 2, 1);
            foreach (var x in calc.Ni)
            {
                row.AddCell(x.ToString("N2"));
            }

            row.AddCell("Сумма: " + calc.N.ToString("N2"));
            row.AddCell("Сумма: " + calc.NjVj.ToString("N2"));
            row.AddCell("Сумма: " + calc.NjVj2.ToString("N2"));

            //NiUi
            row = gen.AddRow();
            row.AddCell("NiUi", 2, 1);
            for (int i = 0; i < table.Width; i++)
            {
                row.AddCell((calc.Ni[i] * calc.Ui[i]).ToString("N2"));
            }

            row.AddCell("Сумма: " + calc.NiUi.ToString("N2"));

            //NiUi2
            row = gen.AddRow();
            row.AddCell("NiUi^2", 2, 1);
            for (int i = 0; i < table.Width; i++)
            {
                row.AddCell((calc.Ni[i] * calc.Ui[i] * calc.Ui[i]).ToString("N2"));
            }

            row.AddCell("Сумма: " + calc.NiUi2.ToString("N2"));

            /*var str = gen.GetHTML();
             * using (var sw = new StreamWriter("D:\\index.html"))
             * {
             *      sw.WriteLine(str);
             * }*/

            htmlPanel.Text = gen.GetHTML();
            htmlPanel.Dock = DockStyle.Fill;
            Controls.Add(htmlPanel);
            htmlPanel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom;
            htmlPanel.Width  = this.Width;
            htmlPanel.Height = this.ClientSize.Height - groupBox1.Height - 10;

            txtQu.Text  = calc.Qu.ToString("N4");
            txtQv.Text  = calc.Qv.ToString("N4");
            txtQuv.Text = calc.Quv.ToString("N4");
        }