using APT.BaseData.Domain.ApiModel.PF;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace APT.BaseData.Domain.ApiModel
{
    /// 
    /// 图表配置
    /// 
    public class ChartPageModel
    {
        /// 
        /// 构造
        /// 
        public ChartPageModel()
        {
            this.Nav_PageCharts = new List();
        }
        /// 
        /// 表单
        /// 
        public T_PF_FORM Nav_PageForm { get; set; }
        /// 
        /// 图表配置信息
        /// 
        public List Nav_PageCharts { get; set; }
    }
    /// 
    /// 图表接口统一数据结构
    /// 
    public class ChartDataModel
    {
        /// 
        /// 图表名称
        /// 
        public string Name { get; set; }
        /// 
        /// 构造函数
        /// 
        public ChartDataModel()
        {
            this.XAxis = new List();
            this.YAxis = new List();
            this.Data = new List();
            this.Radar = new List();
        }
        /// 
        /// X轴数据   至少存在一笔记录 
        /// 
        public List XAxis { get; set; }
        /// 
        /// Y轴数据(可选)
        /// 
        public List YAxis { get; set; }
        /// 
        /// 分组数据  至少存在一笔
        /// 
        public List Data { get; set; }
        public List Radar { get; set; }
    }
    /// 
    /// X轴 数据
    /// 
    public class ChartDataXAxisModel
    {
        /// 
        /// 构造函数
        /// 
        public ChartDataXAxisModel()
        {
            this.Data = new List();
        }
        /// 
        /// 数据
        /// 
        public List Data { get; set; }
    }
    /// 
    /// Y轴数据
    /// 
    public class ChartDataYAxisModel
    {
        /// 
        /// 数据分组名称 与分组数据中的Name对应
        /// 
        public string Name { get; set; }
        /// 
        /// 最大值
        /// 
        public double Max { get; set; }
        /// 
        /// 最小值
        /// 
        public double Min { get; set; }
        /// 
        /// 是否翻转
        /// 
        public bool IsInverse { get; set; }
    }
    /// 
    /// 分组数据 
    /// 
    public class ChartDataDetailModel
    {
        /// 
        /// 
        /// 
        public ChartDataDetailModel()
        {
            this.Data = new List();
        }
        public string Key { get; set; }
        /// 
        /// 名称
        /// 
        public string Name { get; set; }
        /// 
        /// PFChartTypeEnum
        /// 
        public int ChartType { get; set; } = (int)PFChartTypeEnum.bar;
        public string Stack { get; set; }
        /// 
        /// 颜色
        /// 
        public string Color { get; set; }
        /// 
        /// Y轴索引 从0开始 
        /// 
        public int YAxisIndex { get; set; }
        /// 
        /// X轴索引 从0开始 
        /// 
        public int XAxisIndex { get; set; }
        /// 
        /// 类型bar或者line
        /// 
        public string Type
        {
            get { return ((PFChartTypeEnum)ChartType).ToString(); }
        }
        /// 
        /// 类型dashed虚线
        /// 
        public string LineType { get; set; }
        public bool LegendSelected { get; set; } = true;
        public string LegendIcon { get; set; }
        /// 
        /// 值 个数必须与XAxis的Data个数相同
        /// 
        public List Data { get; set; }
        /// 
        /// 分段样式
        /// 
        public List Pieces { get; set; }
        public PiecesOption PiecesOption { get; set; }
    }
    public class Piece
    {
        public int gt { get; set; }
        public int lte { get; set; }
        public string color { get; set; }
    }
    public class PiecesOption
    {
        public string symbol { get; set; }
        public AreaStyle areaStyle { get; set; }
    }
    /// 
    /// 区域样式
    /// 
    public class AreaStyle
    {
        /// 
        /// 透明度
        /// 
        public decimal opacity { get; set; }
    }
    /// 
    /// 值
    /// 
    public class ChartDataValueModel
    {
        /// 
        /// 构造函数
        /// 
        public ChartDataValueModel()
        {
            this.Heads = new List();
            this.Data = new List>();
        }
        /// 
        /// 值
        /// 
        public double Value { get; set; }
        public string TooltipValue { get; set; }
        public int YAxisIndex { get; set; }//Y轴
        /// 
        /// 表头
        /// 
        public List Heads { get; set; }
        /// 
        /// 表身
        /// 
        public List> Data { get; set; }
    }
    /// 
    /// 桑基图图表数据实体模型
    /// 
    public class SankeyCharModel
    {
        public List Nodes { get; set; }
        public List Links { get; set; }
        public List Levels { get; set; }
    }
    public class LinkModel
    {
        /// 
        /// 源
        /// 
        public string source { get; set; }
        /// 
        /// 目标
        /// 
        public string target { get; set; }
        /// 
        /// 值
        /// 
        public decimal value { get; set; }
        /// 
        /// 自定义显示内容
        /// 
        public string text { get; set; }
        public Dictionary lineStyle { get; set; }
    }
    public class NodeModel
    {
        /// 
        /// 名称
        /// 
        public string name { get; set; }
        /// 
        /// 编码
        /// 
        public string code { get; set; }
        public decimal LossRate { get; set; }
        public decimal value { get; set; }
        public List views { get; set; }
        public Dictionary itemStyle { get; set; }
    }
    public class LevelModel
    {
        /// 
        /// 名称
        /// 
        public string name { get; set; }
        /// 
        /// 层级
        /// 
        public int level { get; set; }
        /// 
        /// 当前层级总用量
        /// 
        public decimal value { get; set; }
        /// 
        /// 颜色
        /// 
        public string color { get; set; }
        /// 
		/// 视图
		/// 
		public List views { get; set; }
        /// 
        /// 层级节点数量
        /// 
        public List nodes { get; set; }
    }
    public class ViewModel
    {
        /// 
        /// 名称
        /// 
		public string name { get; set; }
        /// 
        /// 值
        /// 
        public decimal value { get; set; }
        /// 
        /// 单位
        /// 
        public string unit { get; set; }
    }
    /// 
    /// 雷达图数据实体模型
    /// 
    public class IndiCatorModel
    {
        public List IndiCator { get; set; }
    }
    public class IndiCatorItemModel
    {
        public string Text { get; set; }
        public decimal Max { get; set; }
    }
    #region 大屏
    public class ApplianceInfoModel
    {
        /// 
        /// 名称
        /// 
        public string Name { get; set; }
        public string Code { get; set; }
        /// 
        /// 总数
        /// 
        public int Total { get; set; }
        /// 
        /// 在线
        /// 
        public int Online { get; set; }
        public string Img { get; set; }
    }
    public class EnergyDosageScan
    {
        /// 
        /// 名称
        /// 
        public string Name { get; set; }
        public string Code { get; set; }
        /// 
        /// 用量
        /// 
        public List EnergyList { get; set; }
    }
    public class EnergyDosageTime
    {
        public string Time { get; set; }
        public decimal Value { get; set; }
    }
    public class EneryUseModel
    {
        /// 
        /// 名称
        /// 
        public string Name { get; set; }
        public string Code { get; set; }
        /// 
        /// 总数
        /// 
        public string Total { get; set; }
        /// 
        /// 总数
        /// 
        public decimal iTotal { get; set; }
        /// 
        /// 在线
        /// 
        public decimal Percent { get; set; }
        public string Color { get; set; }
    }
    public class EneryUseModelByDept
    {
        public string Title { get; set; }
        public List Data { get; set; }
    }
    /// 
    /// 部门本月用电量排行
    /// 
    public class EneryDosageByDept
    {
        public string Title { get; set; }
        public List dataSource { get; set; }
        public List columns { get; set; }
    }
    public class RankingTableData
    {
        public int Ranking { get; set; }
        public string Name { get; set; }
        public string Value { get; set; }
        public string Ratio { get; set; }
    }
    public class SummaryInfoModel
    {
        /// 
        /// 月总能耗
        /// 
        public decimal MonthEnergyConsu { get; set; }
        /// 
        /// 日总能耗
        /// 
        public decimal DayEnergyConsu { get; set; }
        /// 
        /// 同比能耗
        /// 
        public decimal YearOnYearConsu { get; set; }
        /// 
        /// 环比能耗
        /// 
        public decimal MonthOnMonthConsu { get; set; }
        /// 
        /// 用量
        /// 
        public List EnergyDosageSummary { get; set; }
        public string Title { get; set; }
        public string Unit { get; set; }
    }
    public class EnergyDosageSummary
    {
        public string Title { get; set; }
        /// 
        /// 能源名称
        /// 
        public string Name { get; set; }
        /// 
        /// 能源编码
        /// 
        public string Code { get; set; }
        public string Unit { get; set; }
        public string Img { get; set; }
        /// 
        /// 月总用量
        /// 
        public decimal MonthEnergyDosage { get; set; }
        /// 
        /// 日总用量
        /// 
        public decimal DayEnergyDosage { get; set; }
        /// 
        /// 月总能耗
        /// 
        public decimal MonthEnergyConsu { get; set; }
        /// 
        /// 日总能耗
        /// 
        public decimal DayEnergyConsu { get; set; }
        /// 
        /// 同比能耗
        /// 
        public decimal YearOnYearDosage { get; set; }
        /// 
        /// 环比能耗
        /// 
        public decimal MonthOnMonthDosage { get; set; }
    }
    public class ListTableModel
    {
        public string Time { get; set; }
        public List ListTableHead { get; set; }
        public List> DicList { get; set; }
    }
    public class THeadModel
    {
        public string Title { get; set; }
        public string DataIndex { get; set; }
    }
    #endregion
    public class FlowTableModel
    {
        public List margeCellModels { get; set; }
        public List Links { get; set; }
        public List Levels { get; set; }
    }
    public class MargeCellModel
    {
        /// 
        /// 名称
        /// 
        public string name { get; set; }
        /// 
        /// 编码
        /// 
        public string code { get; set; }
        /// 
        /// 子节点数
        /// 
        public int keyNode { get; set; }
    }
    public class TreeNodeModel
    {
        /// 
        /// 名称
        /// 
        public string name { get; set; }
        /// 
        /// 值
        /// 
        public decimal value { get; set; }
        /// 
        /// 损耗量
        /// 
        public decimal loss { get; set; }
        /// 
        /// 损耗率
        /// 
        public decimal lossRate { get; set; }
        /// 
        /// 单位
        /// 
        public string unit { get; set; }
        public int childNodeKey { get; set; }
        /// 
        /// 子节点
        /// 
        public List childNode { get; set; }
    }
}