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;
}
}