コード例 #1
0
        //AttachData()で自動的に呼び出される
        public List <BreathGraph.Data> GetBreathDatas()
        {
            //CSVから取得した睡眠データをBreathGraph.Dataに変換して返す
            List <BreathGraph.Data> resultList = new List <BreathGraph.Data>();

            foreach (SleepData data in sleepDataList)
            {
                DateTime time = data.GetDateTime();
                SleepData.BreathState breathState1 = data.GetBreathState1();
                SleepData.BreathState breathState2 = data.GetBreathState2();
                SleepData.BreathState breathState3 = data.GetBreathState3();
                SleepData.HeadDir     headDir1     = data.GetHeadDir1();
                SleepData.HeadDir     headDir2     = data.GetHeadDir2();
                SleepData.HeadDir     headDir3     = data.GetHeadDir3();
                resultList.Add(new BreathGraph.Data(
                                   new Time(time),
                                   breathState1,
                                   breathState2,
                                   breathState3,
                                   headDir1,
                                   headDir2,
                                   headDir3));
            }
            return(resultList);
        }
コード例 #2
0
 public Data(
     Graph.Time time,
     SleepData.BreathState breathState1,
     SleepData.BreathState breathState2,
     SleepData.BreathState breathState3,
     SleepData.HeadDir headDir1,
     SleepData.HeadDir headDir2,
     SleepData.HeadDir headDir3)
 {
     this.time         = time;
     this.BreathState1 = breathState1;
     this.BreathState2 = breathState2;
     this.BreathState3 = breathState3;
     this.HeadDir1     = headDir1;
     this.HeadDir2     = headDir2;
     this.HeadDir3     = headDir3;
 }
コード例 #3
0
        /// <summary>
        /// 呼吸グラフ(通常・無呼吸)を表示する
        /// </summary>
        /// <param name="breathDataList"></param>
        /// <param name="labelDataList"></param>
        void SetBreathDataToBarChart(List <Data> breathDataList, List <LabelData> labelDataList)
        {
            List <Vector2>         xValueRangeList = new List <Vector2>();
            List <float>           yValueList      = new List <float>();
            List <LabelData.Label> labelList       = new List <LabelData.Label>();

            for (int i = 0; i < breathDataList.Count - 1; i++)
            {
                LabelData[] labelDatas = new LabelData[3] {
                    labelDataList[i * 3 + 0], labelDataList[i * 3 + 1], labelDataList[i * 3 + 2]
                };

                SleepData.BreathState   breathState1 = breathDataList[i].GetBreathState1();
                SleepData.BreathState   breathState2 = breathDataList[i].GetBreathState2();
                SleepData.BreathState   breathState3 = breathDataList[i].GetBreathState3();
                SleepData.BreathState[] breathStates = new SleepData.BreathState[3] {
                    breathState1, breathState2, breathState3
                };

                SleepData.BreathState[] priorityStates = new SleepData.BreathState[4] {
                    SleepData.BreathState.Apnea, SleepData.BreathState.Snore, SleepData.BreathState.Normal, SleepData.BreathState.Empty
                };

                int selectIndex = -1;
                //呼吸レスが1つでもあれば呼吸レス、
                //呼吸レスがなくいびきが1つでもあればいびき、
                //呼吸レス、いびきが1つもない(全部快眠)なら快眠
                //(色の表示優先度が呼吸レス > いびき > 快眠 な感じですかね)
                for (int k = 0; k < priorityStates.Length; k++)
                {
                    for (int j = 0; j < breathStates.Length; j++)
                    {
                        if (breathStates[j] == priorityStates[k])
                        {
                            selectIndex = j;
                            break;
                        }
                    }

                    if (selectIndex != -1)
                    {
                        break;
                    }
                }

                if (selectIndex >= 0)
                {
                    SleepData.BreathState breathState = breathStates[selectIndex];

                    float yValueRate = breathLabelList.Where(label => label.GetBreathState().Equals(breathState)).First().GetValueRate();

                    float xStart = Graph.Time.GetPositionRate(
                        breathDataList[i].GetTime().Value.AddSeconds(0),
                        breathDataList.First().GetTime().Value,
                        breathDataList.Last().GetTime().Value);
                    float xEnd = Graph.Time.GetPositionRate(
                        breathDataList[i].GetTime().Value.AddSeconds(30),
                        breathDataList.First().GetTime().Value,
                        breathDataList.Last().GetTime().Value);

                    Vector2 xValueRange = new Vector2(xStart, xEnd);

                    xValueRangeList.Add(xValueRange);
                    yValueList.Add(yValueRate);
                    labelList.Add(labelDatas[selectIndex].GetLabel());
                }
            }

            Kaimin.Common.Utility.refineByCombineSameContinuousLabel(ref xValueRangeList, ref yValueList, ref labelList);

            Output_Bar.SetData(xValueRangeList, yValueList, labelList);
        }