From eda3fb873e59544ff36301b51e05aef64f87b0f9 Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期五, 27 八月 2021 13:21:21 +0800 Subject: [PATCH] Merge branch 'newBranch1' of http://172.16.1.23:6688/r/~wxr/HDL_APP_Project into newBranch1 --- HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs | 841 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 644 insertions(+), 197 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs index 909a6ba..b9d0e37 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs @@ -1,6 +1,9 @@ -锘縰sing System; +using System; using Shared; using System.Collections.Generic; +using HDL_ON.Entity; + + namespace HDL_ON.UI.UI2.Intelligence.Automation { public class ConditionDeviceFunList : FrameLayout @@ -17,10 +20,7 @@ /// 瀹氫箟涓�涓彉閲忥紝璁板綍閫変腑鐘舵�� /// </summary> private string selectedState = "unknown"; - /// <summary> - /// 瀹氫箟涓�涓彉閲忥紝璁板綍閫変腑鐘舵�佽褰曞睘鎬� - /// </summary> - private string keyVlaue = ""; + public void Show(Entity.Function device, int index, bool edit) { #region 鐣岄潰甯冨眬 @@ -40,48 +40,323 @@ }; this.AddChidren(fLayout); #endregion - switch (device.functionType) + switch (device.spk) { //寮�鍏崇伅鍏� light.Switch - case FunctionType.Dimmer: - case FunctionType.RGB: - case FunctionType.RGBW: - case FunctionType.CCT: - case FunctionType.Relay: + case SPK.LightDimming: + case SPK.LightRGB: + case SPK.LightRGBW: + case SPK.LightCCT: + case SPK.LightSwitch: //绐楀笜 - case FunctionType.Curtain: - case FunctionType.RollerCurtain: - case FunctionType.TrietexCurtain: + case SPK.CurtainSwitch: + case SPK.CurtainRoller: + case SPK.CurtainTrietex: //绌鸿皟 - case FunctionType.AC: + case SPK.AcStandard: //鍦扮儹 - case FunctionType.FloorHeating: + case SPK.FloorHeatStandard: { - LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); - lightSwitchView.btnText.TextID = StringId.switchLogic; - lightSwitchView.btnState.Text = ""; - fLayout.AddChidren(lightSwitchView.FLayoutView()); - lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => + + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.switchLogic; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => { - FrameLayout frame = new FrameLayout - { - BackgroundColor = CSS.CSS_Color.viewTrans60lucence, - }; - this.AddChidren(frame); - SwitchViewMethod(frame, device, lightSwitchView.btnState, 2); + DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic); }; if (edit) { - GetEditState(device, edit, index, lightSwitchView.btnState, null, null, null); + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //姘存蹈浼犳劅鍣� + case SPK.SensorWater: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.luoshuiandwuluoshui; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.luoshui, StringId.wuluoshui); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); } } break; - - - - - + //鐑熼浘浼犳劅鍣� + case SPK.SensorSmoke: + //鐕冩皵浼犳劅鍣� + case SPK.SensorGas: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.xieluoandwuxieluo; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.xieluo, StringId.wuxieluo); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //骞叉帴鐐� + case SPK.SensorDryContact: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.switchLogic; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + + } + break; + //绾㈠鐝婃爮浼犳劅鍣� + case SPK.SensorShanLan: + //绾㈠瀵瑰皠浼犳劅鍣� + case SPK.SensorDuiShe: + //绾㈠绉诲姩浼犳劅鍣� + case SPK.SensorPir: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.yourenandwuren; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.youren, StringId.wuren); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //闂ㄧ獥浼犳劅鍣� + case SPK.SensorDoorWindow: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.kaiqiandbihe; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.kaiqi, StringId.bihe); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //瓒呭0娉紶鎰熷櫒 + case SPK.SensorUtrasonic: + { + + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.yourenandwuren; + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.youren, StringId.wuren); + }; + LogicView.FunTypeView view1 = new LogicView.FunTypeView(); + view1.frameLayout.Y = view.frameLayout.Bottom; + view1.btnText.TextID = StringId.fangchaigongneng; + fLayout.AddChidren(view1.FLayoutView()); + view1.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view1.btnState, StringId.zaixian, StringId.buzaixian); + }; + + if (edit) + { + GetEditState(device, index, view.btnState, view1.btnState, null, null); + } + } + break; + //姣背娉紶鎰熷櫒 + case SPK.SenesorMegahealth: + { + LogicView.FunTypeView view = new LogicView.FunTypeView(); + view.btnText.TextID = StringId.mubiaozhuangtai;//鐩爣鐘舵�� + fLayout.AddChidren(view.FLayoutView()); + view.btnClick.MouseUpEventHandler += (sender, e) => + { + DeviceView(device, view.btnState, StringId.wuren, StringId.diedao); + }; + if (edit) + { + GetEditState(device, index, view.btnState, null, null, null); + } + } + break; + //鐜妫�娴嬩紶鎰熷櫒 + case SPK.SensorEnvironment: + case SPK.SensorEnvironment2: + case SPK.SensorEnvironment3: + { + #region 鐣岄潰 + ///娓╁害 + LogicView.FunTypeView wenuView = new LogicView.FunTypeView(); + wenuView.btnText.TextID = StringId.wendu; + fLayout.AddChidren(wenuView.FLayoutView()); + ///婀垮害 + LogicView.FunTypeView shiduView = new LogicView.FunTypeView(); + shiduView.frameLayout.Y = wenuView.frameLayout.Bottom; + shiduView.btnText.TextID = StringId.shidu; + fLayout.AddChidren(shiduView.FLayoutView()); + ///pm2.5 + LogicView.FunTypeView pm25View = new LogicView.FunTypeView(); + pm25View.frameLayout.Y = shiduView.frameLayout.Bottom; + pm25View.btnText.TextID = StringId.pm25; + fLayout.AddChidren(pm25View.FLayoutView()); + ///co2 + LogicView.FunTypeView co2View = new LogicView.FunTypeView(); + co2View.frameLayout.Y = pm25View.frameLayout.Bottom; + co2View.btnText.TextID = StringId.co2; + fLayout.AddChidren(co2View.FLayoutView()); + ///tvoc + LogicView.FunTypeView tvocView = new LogicView.FunTypeView(); + tvocView.frameLayout.Y = co2View.frameLayout.Bottom; + tvocView.btnText.TextID = StringId.tvoc; + if (SPK.SensorEnvironment3 != device.spk) + { + fLayout.AddChidren(tvocView.FLayoutView()); + } + + #endregion + #region 鐐瑰嚮浜嬩欢 + ///娓╁害鐐瑰嚮浜嬩欢 + wenuView.btnClick.MouseUpEventHandler += (sender, e) => + { + new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) => + { + InputBoxAction(device,intText, index, edit); + }); + }; + ///婀垮害鐐瑰嚮浜嬩欢 + shiduView.btnClick.MouseUpEventHandler += (sender, e) => + { + new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) => + { + InputBoxAction(device,intText, index, edit); + }); + + }; + ///pm2.5鐐瑰嚮浜嬩欢 + pm25View.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this,device, "pm25",StringId.pm25, index,edit); + }; + ///co2鐐瑰嚮浜嬩欢 + co2View.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this,device, "co2", StringId.co2, index, edit); + }; + ///tvoc鐐瑰嚮浜嬩欢 + tvocView.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this,device, "tvoc", StringId.tvoc, index, edit); + + }; + #endregion + } + break; + //娓╁害浼犳劅鍣� + case SPK.SensorTemperature: + { + ///娓╁害 + LogicView.FunTypeView wenuView = new LogicView.FunTypeView(); + wenuView.btnText.TextID = StringId.wendu; + fLayout.AddChidren(wenuView.FLayoutView()); + + ///娓╁害鐐瑰嚮浜嬩欢 + wenuView.btnClick.MouseUpEventHandler += (sender, e) => + { + new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) => + { + InputBoxAction(device, intText, index, edit); + }); + }; + } + break; + //婀垮害浼犳劅鍣� + case SPK.SensorHumidity: + { + ///婀垮害 + LogicView.FunTypeView shiduView = new LogicView.FunTypeView(); + shiduView.btnText.TextID = StringId.shidu; + fLayout.AddChidren(shiduView.FLayoutView()); + ///婀垮害鐐瑰嚮浜嬩欢 + shiduView.btnClick.MouseUpEventHandler += (sender, e) => + { + new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) => + { + InputBoxAction(device, intText, index, edit); + }); + + }; + } + break; + //co2 + case SPK.SensorCO2: + { + + + ///co2 + LogicView.FunTypeView co2View = new LogicView.FunTypeView(); + co2View.btnText.TextID = StringId.co2; + fLayout.AddChidren(co2View.FLayoutView()); + + ///co2鐐瑰嚮浜嬩欢 + co2View.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this, device, "co2", StringId.co2, index, edit); + }; + } + break; + //pm2.5 + case SPK.SensorPm25: + { + ///pm2.5 + LogicView.FunTypeView pm25View = new LogicView.FunTypeView(); + pm25View.btnText.TextID = StringId.pm25; + fLayout.AddChidren(pm25View.FLayoutView()); + + ///pm2.5鐐瑰嚮浜嬩欢 + pm25View.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this, device, "pm25", StringId.pm25, index, edit); + }; + } + break; + //tvoc + case SPK.SensorTVOC: + { + ///tvoc + LogicView.FunTypeView tvocView = new LogicView.FunTypeView(); + tvocView.btnText.TextID = StringId.tvoc; + fLayout.AddChidren(tvocView.FLayoutView()); + + ///tvoc鐐瑰嚮浜嬩欢 + tvocView.btnClick.MouseUpEventHandler += (sender, e) => + { + PmCo2TvocAction(this, device, "tvoc", StringId.tvoc, index, edit); + + }; + } + break; } #region 淇濆瓨 ///淇濆瓨View @@ -91,135 +366,330 @@ this.AddChidren(saveView.FLayoutView()); saveView.btnClick.MouseUpEventHandler += (sen, e) => { - - - if (selectedState != "unknown") - { - Input inputDevice = new Input(); - inputDevice.condition_type = "3"; - inputDevice.sid = device.sid; - inputDevice.condition = dicSateteList; - if (edit) - { - //绉婚櫎鏃ф暟鎹� - Logic.currlogic.input.RemoveAt(index); - //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�; - Logic.currlogic.input.Insert(index, inputDevice); - } - else - { - //娣诲姞涓�涓潯浠� - AddCondition(inputDevice); - } - } - else - { - if (!edit) - { - //鎻愮ず鐢ㄦ埛 - return; - } - this.RemoveFromParent(); - return; - } - LogicMethod.RemoveAllView(); - AddLogic addLogic = new AddLogic(); - MainPage.BasePageView.AddChidren(addLogic); - addLogic.Show(); - MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + Save(device,index, edit); }; #endregion } /// <summary> - /// 绉婚櫎鎺т欢 + /// 淇濆瓨杈撳叆鏉′欢 /// </summary> - /// <param name="frame"></param> - private void RemView(FrameLayout frame) + /// <param name="index">绱㈠紩鍊�</param> + /// <param name="edit"></param> + private void Save(Entity.Function device,int index, bool edit) { - frame.RemoveFromParent(); + + if (selectedState != "unknown") + { + Input inputDevice = new Input(); + inputDevice.condition_type = "3"; + inputDevice.sid = device.sid; + inputDevice.condition = dicSateteList; + if (edit) + { + //绉婚櫎鏃ф暟鎹� + Logic.currlogic.input.RemoveAt(index); + //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�; + Logic.currlogic.input.Insert(index, inputDevice); + } + else + { + //娣诲姞涓�涓潯浠� + AddCondition(inputDevice); + } + } + else + { + if (!edit) + { + //鎻愮ず鐢ㄦ埛 + return; + } + this.RemoveFromParent(); + return; + } + LogicMethod.CurrLogicMethod.RemoveAllView(); + if (MainView.IsGatewayType) + { //A缃戝叧 + 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; + } + + } + /// <summary> + /// 璁惧閫夋嫨鏉′欢鐣岄潰 + /// </summary> + /// <param name="device">璁惧</param> + /// <param name="button">閫変腑鐘舵�佹樉绀烘枃鏈珺tn鎺т欢</param> + /// <param name="btnText1">灞炴�х姸鎬佸�兼枃鏈�1</param> + /// <param name="btnText2">灞炴�х姸鎬佸�兼枃鏈�2</param> + private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2) + { + FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence }; + this.AddChidren(frame); + LogicView.SwitchView switchView = new LogicView.SwitchView(); + switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) => + { + //璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�; + string keyVlaue = "on_off"; + string value = ""; + switch (device.spk) + { + //浼犳劅鍣� + case SPK.SensorWater: + case SPK.SensorSmoke: + case SPK.SensorGas: + case SPK.SensorDryContact: + case SPK.SensorShanLan: + case SPK.SensorDuiShe: + case SPK.SensorPir: + case SPK.SensorDoorWindow: + case SPK.SensorUtrasonic: + { + keyVlaue = "status"; + } + break; + case SPK.SenesorMegahealth: + { + keyVlaue = "action_state"; + } + break; + + } + switch (intValue) + { + case StringId.xieluo: + case StringId.luoshui: + { + value = "alarm"; + } + break; + case StringId.wuxieluo: + case StringId.wuluoshui: + { + value = "normal"; + } + break; + case StringId.onLogic: + { + value = "on"; + } + break; + case StringId.offLogic: + { + value = "off"; + } + break; + case StringId.youren: + { + value = "true"; + } + break; + case StringId.wuren: + { + if (device.spk == SPK.SenesorMegahealth) + { + value = "uninhabited"; + } + else + { + value = "false"; + } + } + break; + case StringId.kaiqi: + { + value = "open"; + } + break; + case StringId.bihe: + { + value = "close"; + } + break; + case StringId.zaixian: + { + keyVlaue = "dismantle"; + value = "true"; + }; break; + case StringId.buzaixian: + { + keyVlaue = "dismantle"; + value = "false"; + }; break; + case StringId.diedao: + { + value = "fall"; + }; break; + } + //鏄剧ず鏂囨湰 + button.TextID = intValue; + selectedState = device.spk + "_" + value; + AddDictionary(keyVlaue, value, "string"); + + }); + + } + /// <summary> + /// 娓╁害,婀垮害寮规璁剧疆鍊� + /// </summary> + /// <param name="textInt">鏂囨湰</param> + /// <param name="stateValue">缂栬緫涔嬪墠鐨勭姸鎬佸��,榛樿涓�20</param> + public void InputBoxAction(Entity.Function device, int textInt, int index, bool edit, string stateValue = "20") + { + if (edit) + { + Input inputs = Logic.currlogic.input[index]; + //娓呴櫎涔嬪墠鏃ф暟鎹� + dicSateteList.Clear(); + if (inputs.condition.Count != 0) + { + //鏈夋暟鎹噸鏂拌祴鍊� + dicSateteList = inputs.condition; + } + } + new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) => + { + string keyValue = "20"; + string data_type = "integer"; + string comparator = "="; + switch (textInt) + { + case StringId.wendugaoyu: + { + keyValue = "temperature"; + comparator = ">"; + data_type = "float"; + } + break; + case StringId.wendudiyu: + { + keyValue = "temperature"; + comparator = "<"; + data_type = "float"; + } + break; + case StringId.shidugaoyu: + { + keyValue = "humidity"; + comparator = ">"; + } + break; + case StringId.shidudiyu: + { + keyValue = "humidity"; + comparator = "<"; + } + break; + } + selectedState = device.spk + "_" + value; + AddDictionary(keyValue, value, data_type, comparator); + Save(device,index, edit); + }); + } + /// PM2.5,Co2,Tvoc璁剧疆鍊� + /// </summary> + /// <param name="frame">褰撳墠鐣岄潰</param> + /// <param name="key">灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�<</param> + /// <param name="title">鏍囬鏂囨湰</param> + /// <param name="index"></param> + /// <param name="edit"></param> + /// <param name="stateValue">缂栬緫涔嬪墠鐨勭姸鎬佸��,榛樿涓�""</param> + public void PmCo2TvocAction(FrameLayout frame, Entity.Function device,string key,int title, int index, bool edit, string stateValue = "") + { + if (edit) + { + Input inputs = Logic.currlogic.input[index]; + //娓呴櫎涔嬪墠鏃ф暟鎹� + dicSateteList.Clear(); + if (inputs.condition.Count != 0) + { + //鏈夋暟鎹噸鏂拌祴鍊� + dicSateteList = inputs.condition; + } + } + PublicInterface view = new PublicInterface(); + var listStr = view.GetViewList(key); + view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetString(key, stateValue) + , (text) => + { + var value = view.GetValue(key, text); + selectedState = device.spk + "_"+ key; + AddDictionary(key, value, "integer","in"); + Save(device,index, edit); + }); } /// <summary> /// 鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬� /// </summary> /// <param name="device">缂栬緫璁惧</param> - /// <param name="edit">缂栬緫鐘舵��</param> /// <param name="index">缂栬緫鏁版嵁鐨勭储寮�</param> /// <param name="button1">鏄剧ずBtn</param> /// <param name="button2">鏄剧ずBtn</param> /// <param name="button3">鏄剧ずBtn</param> /// <param name="button4">鏄剧ずBtn</param> - private void GetEditState(Entity.Function device, bool edit, int index, Button button1, Button button2, Button button3, Button button4) + private void GetEditState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4) { Input inputs = Logic.currlogic.input[index]; - var dicList = inputs.condition as List<Dictionary<string, string>>; - switch (device.functionType) + var dicList = inputs.condition; + //娓呴櫎涔嬪墠鏃ф暟鎹� + dicSateteList.Clear(); + if (dicList.Count != 0) { - //寮�鍏崇伅鍏� light.Switch - case FunctionType.Dimmer: - case FunctionType.RGB: - case FunctionType.RGBW: - case FunctionType.CCT: - case FunctionType.Relay: - //绐楀笜 - case FunctionType.Curtain: - case FunctionType.RollerCurtain: - case FunctionType.TrietexCurtain: - //绌鸿皟 - case FunctionType.AC: - //鍦扮儹 - case FunctionType.FloorHeating: - { - foreach (var dic in dicList) - { - string value = dic["value"]; - if (value == "on") - { - button1.Text = Language.StringByID(StringId.onLogic); - } - else - { - button1.Text = Language.StringByID(StringId.offLogic); - } - } - } - break; - + //鏈夋暟鎹噸鏂拌祴鍊� + dicSateteList = dicList; } + InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4); } /// <summary> /// 娣诲姞閫変腑鏁版嵁 /// </summary> - /// <param name="dicList">瀛樺偍鏁版嵁鍒楄〃</param> - /// <param name="keyValue">璇嗗埆璁惧</param> - /// <param name="dictionary">閫変腑鏁版嵁</param> - /// <returns></returns> - private void AddDictionaryData(List<Dictionary<string, string>> dicList, string keyValue, Dictionary<string, string> dictionary) + /// <param name="KeyValue">璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�</param> + /// <param name="selectedValue">鐘舵�佸��</param> + /// <param name="data_type">绫诲瀷</param> + /// <param name="comparator">姣旇緝鍏崇郴</param> + private void AddDictionary(string KeyValue, string selectedValue, string data_type, string comparator = "=") { - int indexValue = -1; - for (int i = 0; i < dicList.Count; i++) - { - var dic = dicList[i]; - if (dic.ContainsValue(keyValue)) - { - //鍒ゆ柇鏄惁瀛樺湪 - indexValue = i; - break; - } - } - + //鏁版嵁灏佽 + Dictionary<string, string> dic = new Dictionary<string, string>(); + LogicMethod.CurrLogicMethod.dictionary(dic, "key", KeyValue); + LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", comparator); + LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", data_type); + LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue); + AddDictionaryList(dic); + } + /// <summary> + /// 鏇存柊鏁版嵁鍒楄〃 + /// </summary> + /// <param name="keyValue">璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�</param> + /// <param name="comparator">姣旇緝鍏崇郴</param> + /// <param name="dictionary">娣诲姞閫変腑鏁版嵁</param> + /// <returns></returns> + private void AddDictionaryList(Dictionary<string, string> dictionary) + { + var indexValue = IsContainsAll(dictionary, dicSateteList); if (indexValue != -1) { //瀛樺湪绉婚櫎 - dicList.RemoveAt(indexValue); + dicSateteList.RemoveAt(indexValue); //閲嶆柊娣诲姞 - dicList.Insert(indexValue, dictionary); + dicSateteList.Insert(indexValue, dictionary); } else { //鏂版坊鍔� - dicList.Add(dictionary); + dicSateteList.Add(dictionary); } } @@ -234,8 +704,13 @@ { if (Logic.currlogic.input[i].sid == input.sid) { - indexValue = i; - break; + //鏈変簺璁惧姣旇緝鐗规畩锛堜緥濡傦細娴锋灄浼犳劅鍣ㄨ繕鏄鍒ゆ柇灞炴�у�硷紝娓╂箍搴﹀睘鎬ц繕瑕佸垽鏂瘮杈冨叧绯伙紝鎵嶈兘纭鏄惁宸茬粡瀛樺湪璇ユ潯浠讹紝鍏朵粬璁惧鏉′欢鐩存帴鐢╯id鍒ゆ柇鍗冲彲锛� + //鍔犱竴绾у垽鏂槸涓哄吋瀹圭壒娈婅澶� + if (IsContainsAll(input.condition, Logic.currlogic.input[i].condition)) + { + indexValue = i; + break; + } } } @@ -251,80 +726,52 @@ } /// <summary> - /// 寮�鍏冲姛鑳藉睍寮�鐣岄潰 + /// 鍒ゆ柇dictionaryB鍒楄〃鏄惁瀹屾暣鍖呭惈鍙︿竴涓猟ictionaryA /// </summary> - /// <param name="frame"></param> - /// <param name="device"></param> - /// <param name="button"></param> - /// <param name="len"></param> - public void SwitchViewMethod(FrameLayout frame, Entity.Function device, Button button, int len) + /// <param name="dictionaryA">瀵硅薄</param> + /// <param name="dictionaryB">鍒楄〃</param> + /// <returns>杩斿洖鍒楄〃鐨勭储寮曞��</returns> + public int IsContainsAll(Dictionary<string, string> dictionaryA, List<Dictionary<string, string>> dictionaryB) { - - LogicView.SwitchView switchView = new LogicView.SwitchView(); - switchView.FLayoutView(frame, len); - - Button btnOn = new Button + int valueInt = -1; + for (int i = 0; i < dictionaryB.Count; i++) { - TextAlignment = TextAlignment.Center, - TextSize = LogicView.TextSize.text16, - TextColor = CSS.CSS_Color.textCancelColor, - TextID = StringId.onLogic, - Height = Application.GetRealHeight(44), - Width = Application.GetRealWidth(343), - - }; - switchView.frameLayout.AddChidren(btnOn); - Button btnLine = new Button - { - Height = 1, - BackgroundColor = CSS.CSS_Color.viewLine, - Y = btnOn.Bottom, - }; - switchView.frameLayout.AddChidren(btnLine); - Button btnOff = new Button - { - Y = btnLine.Bottom, - TextAlignment = TextAlignment.Center, - TextSize = LogicView.TextSize.text16, - TextColor = CSS.CSS_Color.textCancelColor, - TextID = StringId.offLogic, - Height = Application.GetRealHeight(44), - Width = Application.GetRealWidth(343), - }; - switchView.frameLayout.AddChidren(btnOff); - - Dictionary<string, string> dic = new Dictionary<string, string>(); - LogicMethod.dictionary(dic, "key", "on_off"); - LogicMethod.dictionary(dic, "comparator", "="); - LogicMethod.dictionary(dic, "data_type", "string"); - keyVlaue = "on_off"; - btnOn.MouseUpEventHandler += (sender2, e2) => - { - LogicMethod.dictionary(dic, "value", "on"); - RemView(frame); - button.TextID = StringId.onLogic; - selectedState = device.functionType + "_on"; - AddDictionaryData(dicSateteList, keyVlaue, dic); - }; - btnOff.MouseUpEventHandler += (sender3, e3) => - { - LogicMethod.dictionary(dic, "value", "off"); - RemView(frame); - button.TextID = StringId.offLogic; - selectedState = device.functionType + "_off"; - AddDictionaryData(dicSateteList, keyVlaue, dic); - }; - if (button.Text != "") - { - if (button.Text == btnOn.Text) + var dic = dictionaryB[i]; + string key = dic["key"]; + string comparatorValue = dic["comparator"]; + if (dictionaryA["key"] == key && dictionaryA["comparator"] == comparatorValue) { - btnOn.TextColor = CSS.CSS_Color.textConfirmColor; - } - else - { - btnOff.TextColor = CSS.CSS_Color.textConfirmColor; + //鍒ゆ柇鏄惁瀛樺湪 + valueInt = i; + break; } } + return valueInt; } + /// <summary> + /// 鍒ゆ柇dictionaryB鏄惁瀹屾暣鍖呭惈鍙︿竴涓猟ictionaryA + /// </summary> + /// <param name="dictionaryA"></param> + /// <param name="dictionaryB"></param> + /// <returns></returns> + public bool IsContainsAll(List<Dictionary<string, string>> dictionaryA, List<Dictionary<string, string>> dictionaryB) + { + + for (int i = 0; i < dictionaryA.Count; i++) + { + var dic = dictionaryA[i]; + string key = dic["key"]; + string comparatorValue = dic["comparator"]; + var list = dictionaryB.FindAll((dictionary) => dictionary["key"] == key && dictionary["comparator"] == comparatorValue); + if (list.Count> 0) + { + return true; + } + + } + return false; + } + + } } -- Gitblit v1.8.0