陈嘉乐
2020-11-20 35a33afeeb29466c20ee39dc34e0468d687afce9
HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs
@@ -1,5 +1,6 @@
using System;
using Shared;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.Intelligence.Automation
@@ -8,14 +9,14 @@
    {
        public AddLogic()
        {
            Tag = "Logic";
        }
        public void Show()
        {
            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
            LogicView.TopView topView = new LogicView.TopView();
            this.AddChidren(topView.TopFLayoutView());
            this.AddChidren(topView.FLayoutView());
            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
             {
                 RemoveFromParent();
@@ -40,9 +41,144 @@
            titleCondition.frameLayout.SetCornerWithSameRadius(12,HDLUtils.RectCornerTopLeft| HDLUtils.RectCornerTopRight);
            titleCondition.btnText.TextID = StringId.whenTheFollowingConditionsAreMet;
            viewLayout.AddChidren(titleCondition.FLayoutView());
            ///输入各种条件的View
            LogicView.AddOutputInputView InputView = new LogicView.AddOutputInputView();
            viewLayout.AddChidren(InputView.FLayoutView());
            for (int i = 0; i < Logic.currlogic.input.Count; i++)
            {
                Input inputCondition = Logic.currlogic.input[i];
                ///输入各种条件的View
                LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
                viewLayout.AddChidren(inputView.FLayoutView());
                ///记录条件类型
                inputView.btnClick.Name = inputCondition.condition_type;
                ///记录选中条件
                inputView.btnClick.Tag = i;
                ///输入条件状态数组
                List<Dictionary<string, string>> dicList = inputCondition.condition as List<Dictionary<string, string>>;
                //显示条件各种状态
                switch (inputCondition.condition_type)
                {
                    case "1":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/timecondition.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
                                inputView.btnClick.AddTag("timepoint", value);
                            }
                        }
                        break;
                    case "2":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/timecondition.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
                                inputView.btnClick.AddTag("timeHorizon", value);
                            }
                        }
                        break;
                }
                //再次编辑条件状态点击事件
                inputView.btnClick.MouseUpEventHandler += (sen, e) =>
                {
                    Button button = (Button)sen;
                    switch (button.Name)
                    {
                        case "1":
                            {  //主界面控件
                                FrameLayout fLayout = new FrameLayout
                                {
                                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                                };
                                //添加主界面
                                this.AddChidren(fLayout);
                                LogicView.TimeView timePointView = new LogicView.TimeView();
                                timePointView.FLayoutView(fLayout);
                                EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) =>
                                {
                                    //移除fLayout界面
                                    fLayout.RemoveFromParent();
                                };
                                //界面点击事件
                                fLayout.MouseUpEventHandler += RemovefLayout;
                                //取消点击事件
                                timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
                                //加载数据界面的设置方法(列表互不联动)
                                timePointView.mUIPickerView.setNPicker(timePointView.GethStringList(), timePointView.GetmStringList(), null);
                                string startingVulae = button.GetTagByKey("timepoint").ToString();
                                //默认初始选中状态
                                timePointView.mUIPickerView.setCurrentItems(1, 30, 0);
                                //定义一个局部变量记录选中时间
                                string timepoint = "01:05";
                                if (!string.IsNullOrEmpty(startingVulae))
                                {
                                    int hIndex = timePointView.GetValueIndex(startingVulae, 0, 1, timePointView.GethIntList());
                                    int mIndex = timePointView.GetValueIndex(startingVulae, 1, 0, timePointView.GetmIntList());
                                    //更新初始状态
                                    timePointView.mUIPickerView.setCurrentItems(hIndex - 1, mIndex, 0);
                                    timepoint = startingVulae;
                                }
                                //选中时间回调方法,时间变化一次回调一次
                                timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
                                {
                                    string hour = timePointView.GethStringList()[index1].Split(' ')[0];
                                    string minuet = timePointView.GetmStringList()[index2].Split(' ')[0];
                                    timepoint = hour + ":" + minuet;
                                };
                                //确定点击事件
                                timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
                                {
                                    if (startingVulae == timepoint)
                                    {
                                        ///编辑新时间和之前时间一样,直接关闭界面返回;
                                        fLayout.RemoveFromParent();
                                        return;
                                    }
                                    Input inputTime = new Input();
                                    inputTime.sid = LogicMethod.NewSid();
                                    inputTime.condition_type = "1";
                                    Dictionary<string, string> dic = new Dictionary<string, string>();
                                    LogicMethod.dictionary(dic, "key", "timepoint");
                                    LogicMethod.dictionary(dic, "comparator", "=");
                                    LogicMethod.dictionary(dic, "data_type", "string");
                                    LogicMethod.dictionary(dic, "value", timepoint);
                                    inputTime.condition.Add(dic);
                                    //旧数据索引
                                    int indexValue = int.Parse(inputView.btnClick.Tag.ToString());
                                    //移除旧数据
                                    Logic.currlogic.input.RemoveAt(indexValue);
                                    //新数据插入旧数据的位置;
                                    Logic.currlogic.input.Insert(indexValue, inputTime);
                                    //添加一个新的时间点条件
                                    RemoveViewByTag("Logic");
                                    AddLogic addLogic = new AddLogic();
                                    MainPage.BasePageView.AddChidren(addLogic);
                                    addLogic.Show();
                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                };
                            }
                            break;
                        case "2":
                            {
                                FrameLayout fLayout = new FrameLayout
                                {
                                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                                };
                                this.AddChidren(fLayout);
                                TimeTpye timeTpye = new TimeTpye();
                                timeTpye.TimeHorizon(fLayout,true,int.Parse(inputView.btnClick.Tag.ToString()));
                            }
                            break;
                    }
                };
            }
            ///添加图标的View
            LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView();
            addInputIcon.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);