/// <summary> /// Признак актуальности даты/времени /// </summary> /// <param name="indxCell">Номер(индекс) столбца</param> /// <param name="dtChecked">Значение даты/времени для проверки</param> /// <returns>Признак актуальности</returns> protected override INDEX_CELL_STATE isRelevanceDateTime(int iColumn, DateTime dtChecked) { INDEX_CELL indxCell = (INDEX_CELL)iColumn; INDEX_CELL_STATE stateRes = INDEX_CELL_STATE.OK; TimeSpan tsDifference = SERVER_TIME - dtChecked; if (tsDifference.TotalSeconds > 0) { switch (indxCell) { case INDEX_CELL.DATETIME_VALUE: case INDEX_CELL.DATETIME_VERIFICATION: stateRes = (tsDifference.TotalMinutes > 3) ? (tsDifference.TotalMinutes > 9) ? INDEX_CELL_STATE.ERROR : INDEX_CELL_STATE.WARNING : INDEX_CELL_STATE.OK; break; default: break; } } else { // оставить 'OK' (дата/время обновления новее, чем время сервера) ; } return(stateRes); }
/// <summary> /// Признак актуальности даты/времени /// </summary> /// <param name="indxCell">Номер(индекс) столбца</param> /// <param name="dtChecked">Значение даты/времени для проверки</param> /// <returns>Признак актуальности</returns> private INDEX_CELL_STATE isRelevanceDateTime(INDEX_CELL indxCell, DateTime dtChecked) { INDEX_CELL_STATE stateRes = INDEX_CELL_STATE.ERROR; TimeSpan tsDifference = SERVER_TIME - dtChecked; if (tsDifference.TotalSeconds > 0) { switch (indxCell) { case INDEX_CELL.DATETIME_VALUE: case INDEX_CELL.DATETIME_VERIFICATION: stateRes = (tsDifference.TotalMinutes > 3) ? (tsDifference.TotalMinutes > 9) ? INDEX_CELL_STATE.ERROR : INDEX_CELL_STATE.WARNING : INDEX_CELL_STATE.OK; break; default: break; } } else { // оставить 'ERROR' ; } return(stateRes); }
/// <summary> /// Признак актуальности даты/времени /// </summary> /// <param name="indxCell">Номер(индекс) столбца</param> /// <param name="dtChecked">Значение даты/времени для проверки</param> /// <returns>Признак актуальности</returns> protected override INDEX_CELL_STATE isRelevanceDateTime(int iColumn, DateTime dtChecked) { INDEX_CELL indxCell = (INDEX_CELL)iColumn; INDEX_CELL_STATE stateRes = INDEX_CELL_STATE.OK; TimeSpan tsDifference = SERVER_TIME - dtChecked; if (tsDifference.TotalSeconds > 0) switch (indxCell) { case INDEX_CELL.DATETIME_VALUE: stateRes = (tsDifference.TotalMinutes > 76) ? (tsDifference.TotalMinutes > 121) ? INDEX_CELL_STATE.ERROR : INDEX_CELL_STATE.WARNING : INDEX_CELL_STATE.OK; break; case INDEX_CELL.DATETIME_VERIFICATION: stateRes = (tsDifference.TotalMinutes > 3) ? (tsDifference.TotalMinutes > 9) ? INDEX_CELL_STATE.ERROR : INDEX_CELL_STATE.WARNING : INDEX_CELL_STATE.OK; break; default: break; } else // оставить 'OK' ; return stateRes; }
/// <summary> /// Конструктор основной (без параметров) /// </summary> public DataGridViewDiagnosticTaskRow() : base() { //_states = new CELL_STATES((int)INDEX_CELL.COUNT); m_cell_states = new INDEX_CELL_STATE[(int)INDEX_CELL.COUNT]; }
public void SetValueCells(object [] values) { object value; INDEX_CELL_STATE indxState = INDEX_CELL_STATE.ERROR; Color clrCell = Color.Empty; bool enableValuePrevious = Enabled; foreach (INDEX_CELL i in Enum.GetValues(typeof(INDEX_CELL))) { try { if (((int)i < values.Length) && (!(values[(int)i] == null)) //&& (string.IsNullOrEmpty((string)values[(int)i]) == false) ) { indxState = INDEX_CELL_STATE.ERROR; clrCell = s_CellState[(int)INDEX_CELL_STATE.OK].m_Color; switch (i) { case INDEX_CELL.COUNT: continue; case INDEX_CELL.NAME: value = null; break; //case INDEX_CELL.STATE: // indxState = ((string)values[(int)i])?.Equals(1.ToString()) == true ? // INDEX_CELL_STATE.OK : // INDEX_CELL_STATE.ERROR; // value = s_CellState[(int)indxState].m_Text; // clrCell = s_CellState[(int)indxState].m_Color; // break; //case INDEX_CELL.DATETIME_VALUE: case INDEX_CELL.DATETIME_VERIFICATION: value = values[(int)i] is DateTime? formatDateTime((DateTime)values[(int)i]) : values[(int)i]; clrCell = s_CellState[(int)isRelevanceDateTime((int)i, (DateTime)values[(int)i])].m_Color; break; case INDEX_CELL.VALUE: value = values[(int)i]; clrCell = s_CellState[(int)isRelevanceValue((int)i, (double)values[(int)i])].m_Color; break; default: indxState = /*((string)values[(int)i])?.Equals(EtalonPBR) ==*/ true ? INDEX_CELL_STATE.OK : INDEX_CELL_STATE.ERROR; value = values[(int)i]; break; } if (!(value == null)) { Cells [(int)i].Value = value; } else { ; } // изменить цвет ячейки SetStyleCell((int)i, clrCell); } else { ; // значение == null } } catch (Exception e) { Logging.Logg().Exception(e, @"PanelTask.DataGridViewDbRow::SetValueCells () - ...", Logging.INDEX_MESSAGE.NOT_SET); } } // INDEX_CELL i in Enum.GetValues(typeof(INDEX_CELL)) }
/// <summary> /// Установить значения в ячейках /// </summary> /// <param name="values">Значения</param> public void SetValueCells(object[] values) { object value; INDEX_CELL_STATE indxState = INDEX_CELL_STATE.ERROR; Color clrCell = Color.Empty; //Доступно предыдущее значение bool enableValuePrevious = Enabled // Признак необходимости замены значения в ячейке , bCellValueChanged; //Для каждого параметра (столбца) в перечислении INDEX_CELL foreach (INDEX_CELL i in Enum.GetValues(typeof(INDEX_CELL))) { try { if (((int)i < values.Length) && (!(values[(int)i] == null)) //&& (string.IsNullOrEmpty((string)values[(int)i]) == false) ) { bCellValueChanged = true; //Связь=ошибка, цвет ячейки=пусто indxState = INDEX_CELL_STATE.ERROR; clrCell = s_CellState[(int)INDEX_CELL_STATE.OK].m_Color; switch (i) { case INDEX_CELL.NAME_GTP: case INDEX_CELL.COUNT: bCellValueChanged = false; value = null; break; case INDEX_CELL.STATE: // ???Если значение равно строковому типу, то статус ОК, иначе ERROR indxState = ((string)values[(int)i])?.Equals(1.ToString()) == true ? INDEX_CELL_STATE.OK : INDEX_CELL_STATE.ERROR; value = s_CellState[(int)indxState].m_Text; clrCell = s_CellState[(int)indxState].m_Color; break; case INDEX_CELL.DATETIME_VALUE: case INDEX_CELL.DATETIME_VERIFICATION: value = values[(int)i] is DateTime? formatDateTime((DateTime)values[(int)i]) : values[(int)i]; clrCell = s_CellState[(int)isRelevanceDateTime((int)i, (DateTime)values[(int)i])].m_Color; break; case INDEX_CELL.VALUE: //Крайнее значение (ПБРномер) // Если значение равно эталонному ПБР (на текущее время), то статус ОК, иначе ERROR value = values[(int)i]; indxState = (TecViewStandard.GetValidatePBR((string)value) == true) ? INDEX_CELL_STATE.OK : INDEX_CELL_STATE.ERROR; clrCell = s_CellState [(int)indxState].m_Color; break; default: value = values[(int)i]; break; } if (bCellValueChanged == true) { Cells [(int)i].Value = value; } else { ; } // изменить цвет ячейки SetStyleCell((int)i, clrCell); } else { ; // значение == null } //Если возникнет исключение, обработчик исключений установит сообщение "Не установлено" } catch (Exception e) { Logging.Logg().Exception(e, @"PanelContainerModes.PanelModes.DataGridViewGTPRow::SetValueCells () - ...", Logging.INDEX_MESSAGE.NOT_SET); } } // INDEX_CELL i in Enum.GetValues(typeof(INDEX_CELL)) }