private void ShowMachineHoursInRough()
        {
            int amount = machineGroups[selectedMachineGroup].Count;

            HoursSpan[] hourSpan = new HoursSpan[amount];

            CaculateMachineHoursInRough(ref hourSpan);
            FillPieChartData(ref hourSpan);
        }
        private void CalculateHours(DateTime startPoint, DateTime endPoint, int startStatus, ref HoursSpan hoursSpan)
        {
            TimeSpan start = new TimeSpan(startPoint.Ticks);
            TimeSpan end   = new TimeSpan(endPoint.Ticks);
            TimeSpan span  = start.Subtract(end).Duration();

            switch (startStatus)
            {
            case gVariable.MACHINE_STATUS_DOWN:
                hoursSpan.off = hoursSpan.off.Add(span);
                break;

            case gVariable.MACHINE_STATUS_IDLE:
                hoursSpan.idle = hoursSpan.idle.Add(span);
                break;

            case gVariable.MACHINE_STATUS_STARTED:
                hoursSpan.valid = hoursSpan.valid.Add(span);
                break;

            case gVariable.MACHINE_STATUS_DATA_ALARM:
            case gVariable.MACHINE_STATUS_MATERIAL_ALARM:
            case gVariable.MACHINE_STATUS_DEVICE_ALARM:
                hoursSpan.alarm = hoursSpan.alarm.Add(span);
                break;
            }
        }