1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
using FLY.DownBlowing.Client;
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using MultiLayout.UiModule;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// TempAreaPanel.xaml 的交互逻辑
/// </summary>
public partial class TempAreaPanel : UserControl
{
IDownBlowingSystemService downBlowingSystemService;
IUnityContainer container;
List<SetPLCUpdatePlan> setPlan_items = new List<SetPLCUpdatePlan>();
static string[] update_propertynames;
static TempAreaPanel()
{
string[] propertynames = new string[] {
nameof(Common.TempArea.TempPV1),
nameof(Common.TempArea.TempSV1),
nameof(Common.TempArea.IsHeating1),
nameof(Common.TempArea.IsHeatingSet1),
nameof(Common.TempArea.IsCooling1),
nameof(Common.TempArea.IsSelfAdjusting1)
};
List<string> update_propertynames = new List<string>();
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < propertynames.Count(); j++)
{
update_propertynames.Add(propertynames[j].Replace("1", (i + 1).ToString()));
}
}
update_propertynames.Add(nameof(Common.TempArea.MeltingTemp));
TempAreaPanel.update_propertynames = update_propertynames.ToArray();
}
public TempAreaPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.container = container;
this.DataContext = this.downBlowingSystemService;
for (int i = 0; i < this.downBlowingSystemService.TAreas.Count(); i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.TAreas[i],
update_propertynames);
setPlan_items.Add(plan);
}
if (this.downBlowingSystemService is DownBlowingSystemServiceClient)
{
(this.downBlowingSystemService as DownBlowingSystemServiceClient).ResetItemsEvent += MWeighterCsService_ResetItemsEvent;
}
}
private void MWeighterCsService_ResetItemsEvent()
{
//把多出来的删除
int remove_cnt = setPlan_items.Count() - this.downBlowingSystemService.TAreas.Count();
if (remove_cnt > 0)
{
for (int i = 0; i < remove_cnt; i++)
{
SetPLCUpdatePlan plan = setPlan_items[setPlan_items.Count() - 1 - i];
plan.Dispose();
}
setPlan_items.RemoveRange(setPlan_items.Count() - remove_cnt, remove_cnt);
}
else
{
int start_idx = setPlan_items.Count();
int add_cnt = -remove_cnt;
for (int i = 0; i < add_cnt; i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.TAreas[start_idx + i],
update_propertynames);
setPlan_items.Add(plan);
}
}
}
private void btnTAreaClick(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var tempArea = button.Tag as TempArea;
WdTempAreaSet w = new WdTempAreaSet();
w.Init(this.downBlowingSystemService, tempArea);
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < setPlan_items.Count(); i++)
{
setPlan_items[i].Dispose();
}
setPlan_items.Clear();
}
private void UserControl_Initialized(object sender, System.EventArgs e)
{
}
}
public class UiModule2_TempAreaPanel : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "下吹.温控";
public ComponentType Type => ComponentType.Graph;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
TempAreaPanel graph = new TempAreaPanel();
container.BuildUp(graph);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}