using DevExpress.Utils.Html;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Forms;
using XdCxRhDW.App.Controllers;
using XdCxRhDW.App.EditForms;
using XdCxRhDW.App.Model;
using XdCxRhDW.Dto;
namespace XdCxRhDW.App.UserControl
{
public partial class CtrlSvrs : DevExpress.XtraEditors.XtraUserControl
{
List list = new List();
public CtrlSvrs()
{
InitializeComponent();
gridSvrs.UseDefault(list).UseGroup().UseRowNumber();
gridSvrs.UseEdit();
var linkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
this.gridSvrs.RepositoryItems.Add(linkEdit);
gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].ColumnEdit = linkEdit;
gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].OptionsColumn.AllowEdit = true;
}
private void CtrlSvrs_Load(object sender, EventArgs e)
{
this.list.AddRange(ServerContext.Instance.GetAll());
gridView1.RefreshData();
Messenger.Defalut.Sub>("服务集合改变", RefreshSvr);
}
private void RefreshSvr(List items)
{
if (!this.IsHandleCreated || this.Disposing || this.IsDisposed) return;
try
{
var listCopy = list.Skip(0).ToList();
foreach (var item in listCopy)
{
var find = items.Find(p => p.BaseHttpAddr == item.BaseHttpAddr);
if (find == null)
{
list.Remove(item);
}
}
foreach (var item in items)
{
var find = list.Find(p => p.BaseHttpAddr == item.BaseHttpAddr);
if (find == null)
{
list.Add(new ModelSvr()
{
SvrType = item.SvrType,
SvrID = item.SvrID,
BaseHttpAddr = item.BaseHttpAddr,
SwaggerAddr = item.SwaggerAddr,
ReportTime = item.ReportTime,
});
}
else
{
find.BaseHttpAddr = item.BaseHttpAddr;
find.SwaggerAddr = item.SwaggerAddr;
find.SvrType = item.SvrType;
find.SvrID = item.SvrID;
find.ReportTime = item.ReportTime;
}
}
this.BeginInvoke(new Action(() =>
{
gridView1.RefreshData();
}));
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "处理服务状态上报异常");
}
}
protected override void Dispose(bool disposing)
{
Messenger.Defalut.UnSub>("服务集合改变", RefreshSvr);
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
}
}