wxr
2021-01-11 160e6863bf3ecb420986f31abb1ab1372218d921
HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs
New file
@@ -0,0 +1,283 @@
using System;
using System.Collections.Generic;
using Shared;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
    public class Time3:FrameLayout
    {
        public Time3()
        {
            Tag = "Logic";
        }
        public void Show(string titelText, bool edit, int index)
        {
            #region  界面布局
            LogicView.TopView topView = new LogicView.TopView();
            topView.frameLayout.Height = Application.GetRealHeight(64 + 20);
            this.AddChidren(topView.FLayoutView());
            topView.topNameBtn.Text = titelText;
            //获取宽度
            int widthValue = topView.topNameBtn.GetTextWidth();
            int textWidth = (Application.GetRealWidth(255) - widthValue) / 2;
            Button locationBtn = new Button
            {
                Width = Application.GetRealWidth(18),
                Height = Application.GetRealWidth(18),
                X = Application.GetRealWidth(60 + 4) + textWidth + widthValue,
                Y = Application.GetRealHeight(34 + 1),
                UnSelectedImagePath = "LogicIcon/location.png",
            };
            topView.frameLayout.AddChidren(locationBtn);
            Button textBtn = new Button
            {
                Height = Application.GetRealHeight(14),
                Y = Application.GetRealHeight(57),
                TextSize = LogicView.TextSize.text10,
                TextColor = CSS.CSS_Color.textCancelColor,
                Text = "广东广州市番禺区石楼镇",
            };
            topView.frameLayout.AddChidren(textBtn);
            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
            {
                RemoveFromParent();
            };
            FrameLayout viewLayout = new FrameLayout
            {
                Y = Application.GetRealHeight(64 + 20),
                Width = Application.GetRealWidth(LogicView.TextSize.view375),
                Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64 - 20),
                BackgroundColor = CSS.CSS_Color.viewMiddle,
            };
            this.AddChidren(viewLayout);
            #endregion
            //(日出时,日落时,正午时)
            string str1 = "";
            //(提前,延时)
            string str2 = "";
            //(提前,延时多少分钟)
            string value = "";
            if (edit)
            {
                new SpeciaTime().GetText(index, (s1, s2, s3) =>
                {
                    str1 = s1;
                    str2 = s2;
                    value = s3;
                });
            }
            var list = new List<string> {
                Language.StringByID(StringId.punctually),
                Language.StringByID(StringId.advanced),
                Language.StringByID(StringId.delayLogic),
            };
            for (int i = 0; i < list.Count; i++)
            {
                LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
                timeView.frameLayout.Y = Application.GetRealHeight(i * 50);
                timeView.btnIcon.Visible = false;
                timeView.btnText.X = Application.GetRealWidth(16);
                timeView.btnLine.X = Application.GetRealWidth(16);
                timeView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16);
                timeView.btnText.Text = list[i];
                timeView.btnClick.Tag = list[i];
                if (i == 0)
                {
                    timeView.btnNextIcon.Visible = false;
                }
                //判断是(日出,日落,正午)
                if (str1 == titelText)
                {
                    //判断是(提前,延时)
                    if (str2 == list[i])
                    {
                        string s = "";
                        if (value != "0")
                        {
                            if (value == "30")
                            {
                                s = value + Language.StringByID(StringId.s);
                            }
                            else
                            {
                                s =value + Language.StringByID(StringId.minute);
                            }
                        }
                        timeView.btnState.Visible = true;
                        timeView.btnState.Text = s;
                    }
                }
                viewLayout.AddChidren(timeView.FLayoutView());
                timeView.btnClick.MouseUpEventHandler += (sen, e) =>
                {
                    string clickText = timeView.btnClick.Tag.ToString();
                    string keyValue = GetKeyValue(clickText, titelText);
                    if (clickText == Language.StringByID(StringId.punctually))
                    {
                        //正点
                        AddDic(keyValue, "0", edit, index);
                    }
                    else
                    {
                        //定义一个局部变量
                        string stateValue = "";
                        //判断是(日出,日落,正午)
                        if (str1 == titelText)
                        {
                            //判断是(提前,延时)
                            if (str2 == clickText)
                            {
                                string s = "";
                                if (value != "0")
                                {
                                    if (value == "30")
                                    {
                                        s = value + " s";
                                    }
                                    else
                                    {
                                        s = value + " min";
                                    }
                                }
                                //更新值stateValue
                                //为了显示之前的状态
                                stateValue = s;
                            }
                        }
                        PublicInterface timePublicInterface = new PublicInterface();
                        var timelist = timePublicInterface.GetViewList("time");
                        timePublicInterface.SingleSelectionShow(this, timelist, clickText, stateValue
                           , (value1) =>
                           {
                               string timeValue = value1.Split(" ")[0];
                               AddDic(keyValue, timeValue, edit, index);
                           });
                    }
                };
            }
        }
        /// <summary>
        /// 获取键值
        /// </summary>
        /// <param name="clickText">当前选中文本</param>
        /// <param name="titelText">标题文本</param>
        /// <returns></returns>
        private string GetKeyValue(string clickText, string titelText)
        {
            string keyValue = "";
            if (titelText == Language.StringByID(StringId.sunrise) + Language.StringByID(StringId.h))
            {
                if (clickText == Language.StringByID(StringId.advanced))
                {
                    keyValue = "before_sunrise";
                }
                else if (clickText == Language.StringByID(StringId.delayLogic))
                {
                    keyValue = "after_sunrise";
                }
                else
                {
                    keyValue = "after_sunrise";
                }
            }
            else if (titelText == Language.StringByID(StringId.sunset) + Language.StringByID(StringId.h))
            {
                if (clickText == Language.StringByID(StringId.advanced))
                {
                    keyValue = "before_sunset";
                }
                else if (clickText == Language.StringByID(StringId.delayLogic))
                {
                    keyValue = "after_sunset";
                }
                else
                {
                    keyValue = "after_sunset";
                }
            }
            else
            {
                if (clickText == Language.StringByID(StringId.advanced))
                {
                    keyValue = "before_noon";
                }
                else if (clickText == Language.StringByID(StringId.delayLogic))
                {
                    keyValue = "after_noon";
                }
                else
                {
                    keyValue = "after_noon";
                }
            }
            return keyValue;
        }
        /// <summary>
        /// 封装数据
        /// </summary>
        /// <param name="keyValue"></param>
        /// <param name="value"></param>
        /// <param name="edit"></param>
        /// <param name="index"></param>
        private void AddDic(string keyValue, string value, bool edit, int index)
        {
            Input inputTime = new Input();
            inputTime.sid = LogicMethod.NewSid();
            inputTime.condition_type = "1";
            Dictionary<string, string> dic = new Dictionary<string, string>();
            LogicMethod.dictionary(dic, "key", keyValue);
            LogicMethod.dictionary(dic, "comparator", "=");
            LogicMethod.dictionary(dic, "data_type", "string");
            LogicMethod.dictionary(dic, "value", value);
            inputTime.condition.Add(dic);
            AddCondition(inputTime, edit, index);
        }
        /// <summary>
        /// 添加条件
        /// </summary>
        /// <param name="input"></param>
        private void AddCondition(Input input, bool edit, int index)
        {
            if (edit)
            {
                //移除旧数据
                Logic.currlogic.input.RemoveAt(index);
                //新数据插入旧数据的位置
                Logic.currlogic.input.Insert(index, input);
            }
            else
            {
                //添加一个新的时间条件
                Logic.currlogic.input.Add(input);
            }
            LogicMethod.RemoveAllView();
            AddLogic addLogic = new AddLogic();
            MainPage.BasePageView.AddChidren(addLogic);
            addLogic.Show();
            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
        }
    }
}