using System; using HDL_ON.UI.UI2.Intelligence.Automation.LogicView; using Shared; using System.Collections.Generic; using Newtonsoft.Json.Linq; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class MainView { /// /// VerticalRefreshLayout父控件 /// public static FrameLayout automationPage; /// /// 加载逻辑列表显示界面 /// public static void MainShow() { automationPage.RemoveAll(); VerticalRefreshLayout vv = new VerticalRefreshLayout(); vv.Height = Application.GetRealHeight(667 - 64 - 49);//模拟高度 automationPage.AddChidren(vv); vv.BeginHeaderRefreshingAction += () => { //清除之前自动化列表; Logic.LogicList.Clear(); //获取自动列表 GetLogicList(); //刷新自动化界面 MainShow(); //关闭刷新View; vv.EndHeaderRefreshing(); }; //获取自动化列表 GetLogicList(); for (int i = Logic.LogicList.Count - 1; i >= 0; i--)//降序排列 //for (int i = 0; i < Logic.LogicList.Count; i++) { var currLogic = Logic.LogicList[i]; ///上下间隔12像素 vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) }); LogicView.SingleLogicView logicView = new LogicView.SingleLogicView(); vv.AddChidren(logicView.FLayoutView()); logicView.btnLogicName.Text = currLogic.name; logicView.btnWeekText.Text = GetCyclicText(currLogic); logicView.btnclick.MouseUpEventHandler += (sen, e) => { //Logic.currlogic = currLogic; //var addLogic = new AddLogic(); //MainPage.BasePageView.AddChidren(addLogic); //addLogic.Show(); //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; new MainView { }.SkipAddLogicPage(currLogic); }; //开关图标的点击事件 logicView.btnSwitchIcon.MouseUpEventHandler += (sender1, e1) => { logicView.btnSwitchIcon.IsSelected = !logicView.btnSwitchIcon.IsSelected; if (logicView.btnSwitchIcon.IsSelected) { logicView.btnSwitchIcon.IsSelected = true; currLogic.enable = "true"; } else { logicView.btnSwitchIcon.IsSelected = false; currLogic.enable = "false"; } //Send.switchLogic(currLogic); new System.Threading.Thread(() => { try { //逻辑使能的命令 Send.SwitchLogic(currLogic); } catch { } }) { IsBackground = true }.Start(); }; GetSelectIcon(logicView.frameLayout, currLogic); if (i == 0)//降序排列 //if (Logic.LogicList.Count - 1 == i) { ///最后一个距离最底部12,界面显示效果作用; vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) }); } if (currLogic.enable == "true") { logicView.btnSwitchIcon.IsSelected = true; } else { logicView.btnSwitchIcon.IsSelected = false; } } if (Logic.LogicList.Count == 0) { Button btnTipNot = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(120), Width = Application.GetRealWidth(180), Height = Application.GetRealWidth(180), UnSelectedImagePath = "TipNot.png", }; automationPage.AddChidren(btnTipNot); Button btnTipNotText = new Button() { Y = btnTipNot.Bottom + Application.GetRealHeight(16), Height = Application.GetRealHeight(20), TextID = StringId.logicnull, TextAlignment = TextAlignment.Center, TextSize = LogicView.TextSize.text14, TextColor = CSS.CSS_Color.textConfirmColor, }; automationPage.AddChidren(btnTipNotText); } } /// /// 按+跳转到逻辑界面的方法 /// public void SkipAddLogicPage(Logic logic=null) { if (logic == null) { Logic.currlogic = new Logic(); } else { Logic.currlogic = logic; } if (IsGatewayType) { var addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } else { var onePortAutomation = new OnePortAutomation(); MainPage.BasePageView.AddChidren(onePortAutomation); onePortAutomation.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } } /// ///返回循环描述文本 /// /// public static string GetCyclicText(Logic logic) { string weekName = ""; /// (执行一次:once,每天:day,每月:mon,星期:week,日期段:date_to_date) switch (logic.cycle.type) { case "once": { weekName = Language.StringByID(StringId.performA); } break; case "day": { weekName = Language.StringByID(StringId.days); } break; case "week": { weekName = GetWeekString(logic.cycle.value); } break; case "mon": { weekName = GetMonString(logic.cycle.value); } break; } return weekName; } /// /// 返回星期描述文本 /// /// /// public static string GetWeekString(List weekList) { string weekTextName = ""; if (weekList.Contains("1")) { weekTextName += Language.StringByID(StringId.monday) + ","; } if (weekList.Contains("2")) { weekTextName += Language.StringByID(StringId.tuesday) + ","; } if (weekList.Contains("3")) { weekTextName += Language.StringByID(StringId.wednesday) + ","; } if (weekList.Contains("4")) { weekTextName += Language.StringByID(StringId.thursday) + ","; } if (weekList.Contains("5")) { weekTextName += Language.StringByID(StringId.friday) + ","; } if (weekList.Contains("6")) { weekTextName += Language.StringByID(StringId.saturday) + ","; } if (weekList.Contains("0")) { weekTextName += Language.StringByID(StringId.sunday) + ","; } if (weekTextName == "") { return ""; } return weekTextName.TrimEnd(','); } /// /// 获取每月的字符串 /// /// /// public static string GetMonString(List monList) { string monTextName = Language.StringByID(StringId.monthly); for (int i = 1; i < 32; i++) { if (monList.Contains(i.ToString())) { monTextName += i.ToString() + ","; } } return monTextName.TrimEnd(','); } /// /// 获取逻辑列表 /// public static void GetLogicList() { if (Logic.LogicList.Count != 0) { //自动化列表为0才去获取自动化列表; return; } List logicIdList = new List(); //获取逻辑ID列表 var idStr = Send.GetLogicIdList(); if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "") { var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data); var dateList = Newtonsoft.Json.JsonConvert.DeserializeObject>(date); for (int i = 0; i < dateList.Count; i++) { //添加逻辑ID logicIdList.Add(dateList[i].userLogicId); } } //获取自动化列表 var logicStr = Send.GetLogic(logicIdList); if (logicStr.Code == "0" && logicStr.Data != null && logicStr.Data.ToString() != "") { //获取逻辑详细返回是一个数组(object类型转换为数组); var jArray = JArray.Parse(logicStr.Data.ToString()); for (int a = 0; a < jArray.Count; a++) { var jay = jArray[a]; //数据返序列化为Logic对象 var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay); var logic = Newtonsoft.Json.JsonConvert.DeserializeObject(str); if (logic != null) { //查找是否已经存在该逻辑 var if_logic = Logic.LogicList.Find((c) => c.userLogicId == logic.userLogicId); if (if_logic == null) { Logic newlogic = new Logic(); newlogic.name = logic.name; newlogic.userLogicId = logic.userLogicId; newlogic.sid = logic.sid; newlogic.relation = logic.relation; newlogic.enable = logic.enable; newlogic.cycle = logic.cycle; for (int i = 0; i < logic.input.Count; i++) { if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type)) { //防止调试软件乱传东西上来; //防止有空对象; //正常情况下不会出现的现象; continue; } newlogic.input.Add(logic.input[i]); } for (int i = 0; i < logic.output.Count; i++) { if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type)) { //防止调试软件乱传东西上来; //防止有空对象; //正常情况下不会该现象; continue; } newlogic.output.Add(logic.output[i]); } newlogic.noticeConfig = logic.noticeConfig; newlogic.pushConfigs = logic.pushConfigs; //添加逻辑 Logic.LogicList.Add(newlogic); } } } } } /// /// 判断JObject对象是存在健值 /// /// /// /// private bool Exist(JObject jObject, string key) { if (jObject.Property(key) != null) { return true; } return false; } /// /// 显示条件或者目标类型图标 /// /// 父控件 /// 当前自动化 private static void GetSelectIcon(FrameLayout layouFrame, Logic logic) { //重新排列图标序号 List iconIntValue = new List(); iconIntValue.Clear(); //1-10(表示条件图标)自己局部定义为了显示选中条件类型图标 //1-时间图标 //2-功能图标 //3-云端图标 //4-场景图标 for (int i = 0; i < logic.input.Count; i++) { if (logic.input[i] == null) continue; var int1 = int.Parse(logic.input[i].condition_type); int iconInt = 0; switch (int1) { case 1: case 2: { iconInt = 1; } break; case 3: { iconInt = 2; } break; case 4: case 6: case 9: { iconInt = 3; } break; case 10: { iconInt = 4; } break; } if (!iconIntValue.Contains(iconInt)) { iconIntValue.Add(iconInt); } } //分割条件和目标的图标 iconIntValue.Add(11); //12-20(表示目标图标)自己局部定义为了显示选中目标类型图标 //12-功能图标 //13-场景图标 //14-安防图标 //14-延时图标 for (int i = 0; i < logic.output.Count; i++) { var int1 = int.Parse(logic.output[i].target_type); int iconInt = 0; switch (int1) { case 1: { iconInt = 12; } break; case 2: { iconInt = 13; } break; case 3: { iconInt = 14; } break; case 4: { iconInt = 15; } break; } if (!iconIntValue.Contains(iconInt)) { iconIntValue.Add(iconInt); } } //图标控件的父控件 FrameLayout frame = new FrameLayout { Height = Application.GetRealHeight(40), Width = Application.GetRealWidth(275), Y = Application.GetRealHeight(56), }; layouFrame.AddChidren(frame); for (int i = 0; i < iconIntValue.Count; i++) { //图标控件 Button btnIcon = new Button { Width = Application.GetRealWidth(28), Height = Application.GetRealWidth(28), Gravity = Gravity.CenterVertical, }; frame.AddChidren(btnIcon); if (i == 0) { btnIcon.X = Application.GetRealWidth(12); } else { btnIcon.X = Application.GetRealWidth(12 + (28 + 4) * i); } string strIcon = ""; switch (iconIntValue[i]) { case 1: { strIcon = "LogicIcon/selectTheTime.png"; } break; case 2: { strIcon = "LogicIcon/selectTheFun.png"; } break; case 3: { strIcon = "LogicIcon/shiwaitianqi.png"; } break; case 4: { strIcon = "LogicIcon/selectTheScene.png"; } break; case 11: { //分割条件和目标的图标 strIcon = "LogicIcon/link.png"; } break; case 12: { strIcon = "LogicIcon/selectTheFun.png"; } break; case 13: { strIcon = "LogicIcon/selectTheScene.png"; } break; case 14: { strIcon = "LogicIcon/security.png"; } break; case 15: { //strIcon = "LogicIcon/timeicon.png"; } break; } btnIcon.UnSelectedImagePath = strIcon; } } /// /// 判断网关类型(0:bus网关;1:A协议网关) /// /// true=A协议网关;false=bus网关 public static bool IsGatewayType { get { if (Entity.DB_ResidenceData.Instance.GatewayType == 1) { return true; } return false; } } } class LogicData { /// /// 云端唯一id /// public string userLogicId = ""; /// /// 网关id /// public string gatewayId = ""; /// /// 逻辑唯一标识 /// public string sid = ""; /// /// 逻辑名称 /// public string name = ""; /// /// 逻辑使能(开,关) /// public string enable = ""; /// /// 地理围栏配置 /// public Fence geo_fence = new Fence(); } class CycleA { public string type = ""; public string[] value; } }