Exemplo n.º 1
0
XttTCurve::XttTCurve( void *parent_ctx,
		      const char *name,
		      pwr_tAttrRef *xn_arefv,
		      int xn_color_theme,
		      int *sts) :
  xnav(parent_ctx), gcd(0), curve(0), rows(0), vsize(0), timerid(0), close_cb(0), help_cb(0), 
  get_select_cb(0), first_scan(1), time_low_old(0), time_high_old(0), color_theme(xn_color_theme)
{
  pwr_tTime from, to;

  memset( &tc, 0, sizeof(tc));

  if ( xn_arefv == 0 || xn_arefv[0].Objid.vid == 0) {
    aref_cnt = 0;
    gcd = new GeCurveData( curve_eDataType_DsTrend);
    *sts = 1;
    return;
  }

  // Count number of curves
  for ( aref_cnt = 0; xn_arefv[aref_cnt].Objid.vid != 0; aref_cnt++) ;

  if ( aref_cnt > XTT_TCURVE_MAX)
    aref_cnt = XTT_TCURVE_MAX;

  memcpy( arefv, xn_arefv, aref_cnt * sizeof(arefv[0]));

  time_Period( time_ePeriod_OneMinute, &from, &to, 0, 0);
  if ( aref_cnt == 1) {
    get_data( sts, from, to);
    if ( EVEN(*sts)) return;
  }
  else {
    get_multidata( sts, from, to);
    if ( EVEN(*sts)) return;
  }
  cdh_StrncpyCutOff( title, name, sizeof(title), 1);
}
Exemplo n.º 2
0
void time_PreviousPeriod( time_ePeriod period, pwr_tTime *prev_from, pwr_tTime *prev_to,
			  pwr_tTime *from, pwr_tTime *to)
{

  switch ( period) {
  case time_ePeriod_OneSecond:
  case time_ePeriod_LastSecond:
    *to = *from = *prev_from;
    from->tv_sec -= 1;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = 1;
    }
    break;
  case time_ePeriod_10Seconds:
  case time_ePeriod_Last10Seconds:
    *to = *from = *prev_from;
    from->tv_sec -= 10;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = 10;
    }
    break;
  case time_ePeriod_OneMinute:
  case time_ePeriod_LastMinute:
    *to = *from = *prev_from;
    from->tv_sec -= 60;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = 60;
    }
    break;
  case time_ePeriod_10Minutes:
  case time_ePeriod_Last10Minutes:
    *to = *from = *prev_from;
    from->tv_sec -= 600;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = 600;
    }
    break;
  case time_ePeriod_OneHour:
  case time_ePeriod_LastHour:
    *to = *from = *prev_from;
    from->tv_sec -= 3600;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = 3660;
    }
    break;
  case time_ePeriod_OneDay:
  case time_ePeriod_Today:
  case time_ePeriod_Yesterday:
    *to = *from = *prev_from;
    from->tv_sec -= ONEDAY;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = ONEDAY;
    }
    break;
  case time_ePeriod_OneWeek:
  case time_ePeriod_ThisWeek:
  case time_ePeriod_LastWeek:
    *to = *from = *prev_from;
    from->tv_sec -= ONEDAY * 7;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = ONEDAY * 7;
    }
    break;
  case time_ePeriod_OneMonth:
  case time_ePeriod_ThisMonth:
  case time_ePeriod_LastMonth:
    time_PeriodMonth( prev_from, from, to, 1);
    from->tv_sec += prev_from->tv_sec - to->tv_sec;
    from->tv_nsec = prev_from->tv_nsec;
    *to = *prev_from;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = ONEDAY * 30;
    }
    break;
  case time_ePeriod_OneYear:
  case time_ePeriod_ThisYear:
    time_PeriodYear( prev_from, from, to, 1);
    from->tv_sec += prev_from->tv_sec - to->tv_sec;
    from->tv_nsec = prev_from->tv_nsec;
    *to = *prev_from;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = ONEDAY * 365;
    }
    break;
  case time_ePeriod_AllTime:
    time_Period( period, from, to, 0, 1);
    break;
  case time_ePeriod_UserDefined:
    // Same lenth of intervall as before
    *to = *from = *prev_from;
    from->tv_sec -= prev_to->tv_sec - prev_from->tv_sec;
    if ( from->tv_sec < 0) {
      from->tv_sec = 0;
      to->tv_sec = prev_to->tv_sec - prev_from->tv_sec;
    }
    break;
  default: ;
  }
}
Exemplo n.º 3
0
void time_NextPeriod( time_ePeriod period, pwr_tTime *prev_from, pwr_tTime *prev_to,
		      pwr_tTime *from, pwr_tTime *to)
{
  int	    sts;
  pwr_tTime current;

  sts = time_GetTime( &current);

  switch ( period) {
  case time_ePeriod_OneSecond:
  case time_ePeriod_LastSecond:
    *to = *from = *prev_to;
    to->tv_sec += 1;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 1;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_10Seconds:
  case time_ePeriod_Last10Seconds:
    *to = *from = *prev_to;
    to->tv_sec += 10;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 10;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneMinute:
  case time_ePeriod_LastMinute:
    *to = *from = *prev_to;
    to->tv_sec += 60;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 60;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_10Minutes:
  case time_ePeriod_Last10Minutes:
    *to = *from = *prev_to;
    to->tv_sec += 600;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 600;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneHour:
  case time_ePeriod_LastHour:
    *to = *from = *prev_to;
    to->tv_sec += 3600;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 3600;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneDay:
  case time_ePeriod_Today:
  case time_ePeriod_Yesterday:
    *to = *from = *prev_to;
    to->tv_sec += ONEDAY;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - ONEDAY;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneWeek:
  case time_ePeriod_ThisWeek:
  case time_ePeriod_LastWeek:
    *to = *from = *prev_to;
    to->tv_sec += 7 * ONEDAY;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 7 * ONEDAY;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneMonth:
  case time_ePeriod_ThisMonth:
  case time_ePeriod_LastMonth:
    time_PeriodMonth( prev_to, from, to, 0);
    to->tv_sec += prev_to->tv_sec - from->tv_sec;
    *from = *prev_to;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 30 * ONEDAY;
      from->tv_nsec = current.tv_nsec;
    }
    break;
  case time_ePeriod_OneYear:
  case time_ePeriod_ThisYear:
    time_PeriodYear( prev_to, from, to, 0);
    to->tv_sec += prev_to->tv_sec - from->tv_sec;
    *from = *prev_to;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - 365 * ONEDAY;
      from->tv_nsec = current.tv_nsec;
    }
    break;
    break;
  case time_ePeriod_AllTime:
    time_Period( period, from, to, 0, 1);
    break;
  case time_ePeriod_UserDefined:
    // Same lenth of intervall as before
    *to = *from = *prev_to;
    to->tv_sec += prev_to->tv_sec - prev_from->tv_sec;
    if ( time_Acomp( &current, to) != 1) {
      *to = current;
      from->tv_sec = current.tv_sec - (prev_to->tv_sec - prev_from->tv_sec);
      from->tv_nsec = current.tv_nsec;
    }
    break;
  default: ;
  }
}
Exemplo n.º 4
0
void time_Period( time_ePeriod period, pwr_tTime *from, pwr_tTime *to, pwr_tTime *center, 
		  int daybreak)
{
  int	    sts;
  pwr_tTime current;

  switch ( period) {
  case time_ePeriod_OneSecond:
    if ( !center) {
      time_Period( time_ePeriod_LastSecond, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 1);
    break;
  case time_ePeriod_10Seconds:
    if ( !center) {
      time_Period( time_ePeriod_10Seconds, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 10);
    break;
  case time_ePeriod_OneMinute:
    if ( !center) {
      time_Period( time_ePeriod_LastMinute, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 60);
    break;
  case time_ePeriod_10Minutes:
    if ( !center) {
      time_Period( time_ePeriod_Last10Minutes, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 600);
    break;
  case time_ePeriod_OneHour:
    if ( !center) {
      time_Period( time_ePeriod_LastHour, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 3600);
    break;
  case time_ePeriod_OneDay:
    if ( !center) {
      time_Period( time_ePeriod_LastHour, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, ONEDAY);
    break;
  case time_ePeriod_OneWeek:
    if ( !center) {
      time_Period( time_ePeriod_LastWeek, from, to, center, daybreak);
      return;
    }
    time_PeriodSec( from, to, center, 7 * ONEDAY);
    break;
  case time_ePeriod_OneMonth:
    if ( !center) {
      time_Period( time_ePeriod_LastMonth, from, to, center, daybreak);
      return;
    }
    time_PeriodMonth( center, from, to, 0);
    int middle = from->tv_sec + (to->tv_sec - from->tv_sec) / 2;
    int half = middle - from->tv_sec;
    if ( center->tv_sec >= middle - ONEDAY/2 &&
	 center->tv_sec <= middle + ONEDAY/2)
      return;

    if ( center->tv_sec < middle) {
      // Take period from previous month
      time_PeriodMonth( center, from, to, 1);
      middle = from->tv_sec + (to->tv_sec - from->tv_sec) / 2;
      half = middle - from->tv_sec;
    }
    to->tv_sec = center->tv_sec + half;
    from->tv_sec = center->tv_sec - half;

    sts = time_GetTime( &current);
    if ( time_Acomp( to, &current) == 1) {
      from->tv_sec = current.tv_sec - (to->tv_sec - from->tv_sec);
      from->tv_nsec = current.tv_sec;
      *to = current;
    }
    break;
  case time_ePeriod_LastSecond:
    sts = time_GetTime( to);
    from->tv_sec = to->tv_sec - 1;
    from->tv_nsec = to->tv_nsec;
    break;
  case time_ePeriod_Last10Seconds:
    sts = time_GetTime( to);
    from->tv_sec = to->tv_sec - 10;
    from->tv_nsec = to->tv_nsec;
    break;
  case time_ePeriod_LastMinute:
    sts = time_GetTime( to);
    from->tv_sec = to->tv_sec - 60;
    from->tv_nsec = to->tv_nsec;
    break;
  case time_ePeriod_Last10Minutes:
    sts = time_GetTime( to);
    from->tv_sec = to->tv_sec - 600;
    from->tv_nsec = to->tv_nsec;
    break;
  case time_ePeriod_LastHour:
    sts = time_GetTime( to);
    from->tv_sec = to->tv_sec - 3600;
    from->tv_nsec = to->tv_nsec;
    break;
  case time_ePeriod_Today:
    sts = time_GetTime( from);
    *to = *from;

    time_PreviousDayBreak( from, from);

    if ( daybreak) {
      to->tv_sec += ONEDAY;
      time_PreviousDayBreak( to, to);
    }
    break;
  case time_ePeriod_Yesterday:
    sts = time_GetTime( to);
    time_PreviousDayBreak( to, to);
    
    from->tv_sec = to->tv_sec - ONEDAY;
    from->tv_nsec = 0;
    break;
  case time_ePeriod_ThisWeek:
    sts = time_GetTime( &current);

    sts = time_PeriodPreviousWeek( &current, 0, from);

    *to = current;
    if ( daybreak) {
      to->tv_sec += ONEDAY;
      time_PreviousDayBreak( to, to);
    }
    break;
  case time_ePeriod_LastWeek:
    sts = time_GetTime( &current);

    sts = time_PeriodPreviousWeek( &current, from, to);
    break;
  case time_ePeriod_ThisMonth:
    sts = time_GetTime( &current);

    sts = time_PeriodMonth( &current, 0, from, 1);

    *to = current;
    if ( daybreak) {
      to->tv_sec += ONEDAY;
      time_PreviousDayBreak( to, to);
    }
    break;
  case time_ePeriod_LastMonth:
    sts = time_GetTime( &current);

    sts = time_PeriodMonth( &current, from, to, 1);
    break;
  case time_ePeriod_OneYear:
  case time_ePeriod_ThisYear:
    sts = time_GetTime( &current);

    sts = time_PeriodYear( &current, 0, from, 1);

    *to = current;
    if ( daybreak) {
      to->tv_sec += ONEDAY;
      time_PreviousDayBreak( to, to);
    }
    break;
  default: {
    // time_ePeriod_All: 
    struct tm	*tm;

    sts = time_GetTime( to);
    if ( daybreak) {
      to->tv_sec += ONEDAY;
      time_PreviousDayBreak( to, to);
    }

    time_t sec = to->tv_sec;
    tm = localtime(&sec);
    tm->tm_sec = 0; 
    tm->tm_min = 0; 
    tm->tm_hour = 0; 
    tm->tm_mday = 1; 
    tm->tm_mon = 0; 
    tm->tm_year = 70; 
    from->tv_sec = mktime(tm); 
    from->tv_nsec = 0;    

    break;
  }
  }
}