Exemple #1
0
        public override void setDataGridViewAdmin(DateTime date)
        {
            int offset            = -1
            , nextIndx            = -1;
            string strFmtDatetime = string.Empty;

            switch (modeGetRDGValues)
            {
            case MODE_GET_RDG_VALUES.DISPLAY:
                //??? не очень изящное решение
                if (IsHandleCreated /*InvokeRequired*/ == true)
                {
                    m_evtAdminTableRowCount.Reset();
                    // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления
                    this.BeginInvoke(new DelegateFunc(normalizedTableHourRows));
                    //??? ожидать, пока не завершится выполнение предыдущего потока
                    m_evtAdminTableRowCount.WaitOne(System.Threading.Timeout.Infinite);
                }
                else
                {
                    Logging.Logg().Error(@"PanelTAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001);
                }

                ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0;

                //??? отобразить значения - почему не внутри класса-объекта представления
                for (int i = 0; i < m_admin.m_curRDGValues.Length; i++)
                {
                    strFmtDatetime = m_admin.GetFmtDatetime(i);
                    offset         = m_admin.GetSeasonHourOffset(i + 1);

                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.DATE_HOUR].Value = date.AddHours(i + 1 - offset).ToString(strFmtDatetime);

                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.PLAN].Value       = m_admin.m_curRDGValues[i].pbr.ToString("F2");
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.PLAN].ToolTipText = m_admin.m_curRDGValues[i].pbr_number;
                    if (i > 0)
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues[i - 1].pbr) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2");
                    }
                    else
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2");
                    }
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.RECOMENDATION].Value       = m_admin.m_curRDGValues[i].recomendation.ToString("F2");
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.RECOMENDATION].ToolTipText = m_admin.m_curRDGValues[i].dtRecUpdate.ToString();
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.FOREIGN_CMD].Value         = m_admin.m_curRDGValues[i].fc.ToString();
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.DEVIATION_TYPE].Value      = m_admin.m_curRDGValues[i].deviationPercent.ToString();
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.DESC_INDEX.DEVIATION].Value           = m_admin.m_curRDGValues[i].deviation.ToString("F2");
                }

                //this.dgwAdminTable.Invalidate();

                m_admin.CopyCurToPrevRDGValues();
                break;

            case MODE_GET_RDG_VALUES.EXPORT:
                nextIndx = Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date);

                if (nextIndx < 0)
                {
                    Invoke(new Action(btnRefresh.PerformClick));
                }
                else
                {
                    Admin.GetRDGValues(nextIndx, mcldrDate.SelectionStart.Date);
                }
                break;

            default:
                break;
            }
        }
        /// <summary>
        /// Отобразить значения в представлении
        /// </summary>
        /// <param name="date">Дата, за которую получены значения для отображения</param>
        /// <param name="bResult">Признак наличия новых значений, иначе требуется изменить оформление представления</param>
        public override void SetDataGridViewAdmin(DateTime date, bool bResult)
        {
            int offset = -1;

            FormChangeMode.KeyDevice nextKey;
            string       strFmtDatetime = string.Empty;
            IAsyncResult iar;

            Action exportPBRValuesEnded = delegate() {
                ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                btnRefresh.PerformClick();
            };

            if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY)
            {
                if (bResult == true)
                {
                    //??? не очень изящное решение
                    if (IsHandleCreated == true)
                    {
                        if (InvokeRequired == true)
                        {
                            //m_evtAdminTableRowCount.Reset ();
                            // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления
                            iar = this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired);
                            //??? ожидать, пока не завершится выполнение предыдущего потока
                            //m_evtAdminTableRowCount.WaitOne (System.Threading.Timeout.Infinite);
                            WaitHandle.WaitAny(new WaitHandle [] { iar.AsyncWaitHandle }, System.Threading.Timeout.Infinite);
                            this.EndInvoke(iar);
                        }
                        else
                        {
                            normalizedTableHourRows(InvokeRequired);
                        }
                    }
                    else
                    {
                        normalizedTableHourRows(false);

                        if (!((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST))
                        {
                            Logging.Logg().Error(@"PanelAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001);
                        }
                        else
                        {
                            ;
                        }
                    }

                    ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0;

                    //??? отобразить значения - почему не внутри класса-объекта представления
                    for (int i = 0; i < m_admin.m_curRDGValues.Length; i++)
                    {
                        strFmtDatetime = m_admin.GetFmtDatetime(i);
                        offset         = m_admin.GetSeasonHourOffset(i + 1);

                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Value = date.AddHours(i + 1 - offset).ToString(strFmtDatetime);
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor;

                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Value       = m_admin.m_curRDGValues [i].pbr.ToString("F2");
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].ToolTipText = m_admin.m_curRDGValues [i].pbr_number;
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor;
                        if (i > 0)
                        {
                            this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues [i - 1].pbr) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2");
                        }
                        else
                        {
                            this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2");
                        }
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Value       = m_admin.m_curRDGValues [i].recomendation.ToString("F2");
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].ToolTipText = m_admin.m_curRDGValues [i].dtRecUpdate.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Value = m_admin.m_curRDGValues [i].fc.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Value = m_admin.m_curRDGValues [i].deviationPercent.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Value = m_admin.m_curRDGValues [i].deviation.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor;
                    }

                    m_admin.CopyCurToPrevRDGValues();
                }
                else
                {
                    ;
                }
            }
            else if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT)
            {
                nextKey = bResult == true
                    ? Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date)
                        : new FormChangeMode.KeyDevice();

                if (!(nextKey.Id > 0))
                {
                    if (InvokeRequired == true)
                    {
                        Invoke((MethodInvoker) delegate() {
                            exportPBRValuesEnded();
                        });
                    }
                    else
                    {
                        exportPBRValuesEnded();
                    }
                }
                else
                {
                    Admin.GetRDGValues(nextKey, date);
                }
            }
            // сообщить в модульный тест о завершении очередной итерации
            EventUnitTestSetDataGridViewAdminCompleted?.Invoke();
        }