| | |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class MainView |
| | | public class MainView |
| | | { |
| | | /// <summary> |
| | | /// VerticalRefreshLayout父控件 |
| | | /// </summary> |
| | | public static FrameLayout automationPage; |
| | | /// <summary> |
| | | /// 加载逻辑列表显示界面 |
| | | /// </summary> |
| | | public static void MainShow() |
| | | { |
| | | /// <summary> |
| | | /// VerticalRefreshLayout父控件 |
| | | /// </summary> |
| | | public static FrameLayout automationPage; |
| | | /// <summary> |
| | | /// 加载逻辑列表显示界面 |
| | | /// </summary> |
| | | 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) => |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 按+跳转到逻辑界面的方法 |
| | | /// </summary> |
| | | public void SkipAddLogicPage(Logic logic=null) |
| | | //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) => |
| | | { |
| | | if (logic == null) |
| | | 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 |
| | | { |
| | | 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 |
| | | { |
| | | //逻辑使能的命令 |
| | | Send.SwitchLogic(currLogic); |
| | | |
| | | var onePortAutomation = new OnePortAutomation(); |
| | | MainPage.BasePageView.AddChidren(onePortAutomation); |
| | | onePortAutomation.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | } |
| | | /// <summary> |
| | | ///返回循环描述文本 |
| | | /// </summary> |
| | | /// <param name="logic"></param> |
| | | public static string GetCyclicText(Logic logic) |
| | | catch { } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | }; |
| | | GetSelectIcon(logicView.frameLayout, currLogic); |
| | | if (i == 0)//降序排列 |
| | | //if (Logic.LogicList.Count - 1 == i) |
| | | { |
| | | |
| | | 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; |
| | | ///最后一个距离最底部12,界面显示效果作用; |
| | | vv.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) }); |
| | | } |
| | | /// <summary> |
| | | /// 返回星期描述文本 |
| | | /// </summary> |
| | | /// <param name="weekList"></param> |
| | | /// <returns></returns> |
| | | public static string GetWeekString(List<string> weekList) |
| | | if (currLogic.enable == "true") |
| | | { |
| | | 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(','); |
| | | logicView.btnSwitchIcon.IsSelected = true; |
| | | } |
| | | /// <summary> |
| | | /// 获取每月的字符串 |
| | | /// </summary> |
| | | /// <param name="monList"></param> |
| | | /// <returns></returns> |
| | | public static string GetMonString(List<string> monList) |
| | | else |
| | | { |
| | | string monTextName = Language.StringByID(StringId.monthly); |
| | | |
| | | for (int i = 1; i < 32; i++) |
| | | { |
| | | if (monList.Contains(i.ToString())) |
| | | { |
| | | monTextName += i.ToString() + ","; |
| | | } |
| | | } |
| | | return monTextName.TrimEnd(','); |
| | | logicView.btnSwitchIcon.IsSelected = false; |
| | | } |
| | | /// <summary> |
| | | /// 获取逻辑列表 |
| | | /// </summary> |
| | | public static void GetLogicList() |
| | | } |
| | | |
| | | if (Logic.LogicList.Count == 0) |
| | | { |
| | | Button btnTipNot = new Button() |
| | | { |
| | | if (Logic.LogicList.Count != 0) |
| | | { |
| | | //自动化列表为0才去获取自动化列表; |
| | | return; |
| | | } |
| | | List<string> logicIdList = new List<string>(); |
| | | //获取逻辑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<List<LogicData>>(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<Logic>(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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 判断JObject对象是存在健值 |
| | | /// </summary> |
| | | /// <param name="jObject"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | private bool Exist(JObject jObject, string key) |
| | | 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() |
| | | { |
| | | |
| | | if (jObject.Property(key) != null) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | /// <summary> |
| | | /// 显示条件或者目标类型图标 |
| | | /// </summary> |
| | | /// <param name="layouFrame">父控件</param> |
| | | /// <param name="logic">当前自动化</param> |
| | | private static void GetSelectIcon(FrameLayout layouFrame, Logic logic) |
| | | { |
| | | |
| | | //重新排列图标序号 |
| | | List<int> iconIntValue = new List<int>(); |
| | | 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; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 判断网关类型(0:bus网关;1:A协议网关) |
| | | /// </summary> |
| | | /// <returns>true=A协议网关;false=bus网关</returns> |
| | | public static bool IsGatewayType |
| | | { |
| | | get |
| | | { |
| | | if (Entity.DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | class LogicData |
| | | /// <summary> |
| | | /// 按+跳转到逻辑界面的方法 |
| | | /// </summary> |
| | | public void SkipAddLogicPage(Logic logic = null) |
| | | { |
| | | /// <summary> |
| | | /// 云端唯一id |
| | | /// </summary> |
| | | public string userLogicId = ""; |
| | | /// <summary> |
| | | /// 网关id |
| | | /// </summary> |
| | | public string gatewayId = ""; |
| | | /// <summary> |
| | | /// 逻辑唯一标识 |
| | | /// </summary> |
| | | public string sid = ""; |
| | | /// <summary> |
| | | /// 逻辑名称 |
| | | /// </summary> |
| | | public string name = ""; |
| | | /// <summary> |
| | | /// 逻辑使能(开,关) |
| | | /// </summary> |
| | | public string enable = ""; |
| | | /// <summary> |
| | | /// 地理围栏配置 |
| | | /// </summary> |
| | | public Fence geo_fence = new Fence(); |
| | | } |
| | | 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 |
| | | { |
| | | |
| | | class CycleA |
| | | { |
| | | public string type = ""; |
| | | public string[] value; |
| | | var onePortAutomation = new OnePortAutomation(); |
| | | MainPage.BasePageView.AddChidren(onePortAutomation); |
| | | onePortAutomation.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | } |
| | | /// <summary> |
| | | ///返回循环描述文本 |
| | | /// </summary> |
| | | /// <param name="logic"></param> |
| | | 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; |
| | | } |
| | | /// <summary> |
| | | /// 返回星期描述文本 |
| | | /// </summary> |
| | | /// <param name="weekList"></param> |
| | | /// <returns></returns> |
| | | public static string GetWeekString(List<string> 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(','); |
| | | } |
| | | /// <summary> |
| | | /// 获取每月的字符串 |
| | | /// </summary> |
| | | /// <param name="monList"></param> |
| | | /// <returns></returns> |
| | | public static string GetMonString(List<string> 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(','); |
| | | } |
| | | /// <summary> |
| | | /// 获取逻辑列表 |
| | | /// </summary> |
| | | public static void GetLogicList() |
| | | { |
| | | if (Logic.LogicList.Count != 0) |
| | | { |
| | | //自动化列表为0才去获取自动化列表; |
| | | return; |
| | | } |
| | | List<string> logicIdList = new List<string>(); |
| | | //获取逻辑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<List<LogicData>>(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<Logic>(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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 判断JObject对象是存在健值 |
| | | /// </summary> |
| | | /// <param name="jObject"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | private bool Exist(JObject jObject, string key) |
| | | { |
| | | |
| | | if (jObject.Property(key) != null) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | /// <summary> |
| | | /// 显示条件或者目标类型图标 |
| | | /// </summary> |
| | | /// <param name="layouFrame">父控件</param> |
| | | /// <param name="logic">当前自动化</param> |
| | | private static void GetSelectIcon(FrameLayout layouFrame, Logic logic) |
| | | { |
| | | |
| | | //重新排列图标序号 |
| | | List<int> iconIntValue = new List<int>(); |
| | | 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; |
| | | case 8: |
| | | { |
| | | iconInt = 5; |
| | | |
| | | } |
| | | 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 5: |
| | | { |
| | | |
| | | strIcon = "LogicIcon/selectTheautomLocation.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/selectTheautomSecurity.png"; |
| | | } |
| | | break; |
| | | case 15: |
| | | { |
| | | //strIcon = "LogicIcon/timeicon.png"; |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | btnIcon.UnSelectedImagePath = strIcon; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 判断网关类型(0:bus网关;1:A协议网关) |
| | | /// </summary> |
| | | /// <returns>true=A协议网关;false=bus网关</returns> |
| | | public static bool IsGatewayType |
| | | { |
| | | get |
| | | { |
| | | if (Entity.DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | class LogicData |
| | | { |
| | | /// <summary> |
| | | /// 云端唯一id |
| | | /// </summary> |
| | | public string userLogicId = ""; |
| | | /// <summary> |
| | | /// 网关id |
| | | /// </summary> |
| | | public string gatewayId = ""; |
| | | /// <summary> |
| | | /// 逻辑唯一标识 |
| | | /// </summary> |
| | | public string sid = ""; |
| | | /// <summary> |
| | | /// 逻辑名称 |
| | | /// </summary> |
| | | public string name = ""; |
| | | /// <summary> |
| | | /// 逻辑使能(开,关) |
| | | /// </summary> |
| | | public string enable = ""; |
| | | /// <summary> |
| | | /// 地理围栏配置 |
| | | /// </summary> |
| | | public Fence geo_fence = new Fence(); |
| | | } |
| | | |
| | | class CycleA |
| | | { |
| | | public string type = ""; |
| | | public string[] value; |
| | | } |
| | | } |