Opened 12 years ago

Closed 12 years ago

#191 closed Fehler (fixed)

Trend: Löschen

Reported by: Melanie Hermann Owned by: Melanie Hermann
Priority: kurzfristig Milestone:
Component: Gesamtsystem Version: ALLE
Severity: Fehler Keywords:
Cc:

Description

Probleme mit Löschen des Trends.

  • Löschen funktioniert nicht mehr, sobald der Ringspeicher anfängt sich zu überschreiben
  • Trend-Fenster bleibt hängen

Change History (4)

comment:1 by Melanie Hermann, 12 years ago

Lösung:
1) In der Funktion 'CTrendInterface::DeleteAllTrendValues() muss auch die Variable overwrite zurückgesetzt werden. Denn diese dient später in der Funktion CTrend::DrawTrend() als Anhaltspunkt wieviele Werte im Moment dargestellt werden sollen. Ausserdem werden die Werte beim Löschen nicht wirklich gelöscht werden, sondern es wird lediglich der Startpunkt für die Aufzeichnung verschoben.

comment:2 by Melanie Hermann, 12 years ago

Lösung:
2) Es gab Probleme wenn die Zeichenfunktion, ohne vorhanden Daten, aufgerufen wurde. Um dies zu verhindern wurde die Reihenfolge der Abprüfungen verändert:

Vorher:

void CTrend::Draw(CDC *dc)
{
  ...
  if (-1 != CDlgTrend::sm_comboBoxValueSel)
  { // Wenn in der ComboBox ein Wert zur Anzeige ausgewählt wurde
    bool dtOk = CheckDatatype(CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].kooIdxOfValue);
    
    if (-1 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].isVisible) 
    { // Hinweis ausgeben (Wert nicht verfügbar in aktuellem Profil)
      ShowTrendHint(&memDC, 3);	
    }
    else if (0 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].starttime)
    { // Hinweis ausgeben (Keine Daten für Anzeige vorhanden) 
      ShowTrendHint(&memDC, 2);	
    }
    else if (!dtOk)
    { // Hinweis ausgeben (Datentyp nicht darstellbar)
      ShowTrendHint(&memDC, 1);	
    }
    else //if (true == dtOk)
    { // Wert sichtbar, Daten vorhanden und Datentyp des gewählten Wertes ist für Anzeige geeignet
      ...
    } 
  }
  ...
}

Nachher:

void CTrend::Draw(CDC *dc)
{
  ...
  if (-1 != CDlgTrend::sm_comboBoxValueSel)
  { // Wenn in der ComboBox ein Wert zur Anzeige ausgewählt wurde
    // Prüfen, ob bereits Daten aufgezeichnet wurden
    if (0 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].starttime)
    { // Wenn noch keine Daten aufgezeichnet wurden ...
      ShowTrendHint(&memDC, 2);	// ... Hinweis ausgeben (Keine Daten für Anzeige vorhanden) 
    }
    else
    { // Wenn bereits Daten aufgezeichnet wurden ...
      // ... Prüfen, ob der Benutzer die Daten einsehen darf
      if (-1 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].isVisible) 
      { // Wenn der Benutzer die Daten nicht einsehen darf ...
	ShowTrendHint(&memDC, 3);	// ... Hinweis ausgeben (Wert nicht verfügbar in aktuellem Profil)
      }
      else
      { // Wenn der Benutzer die Daten einsehen darf ...
	// Prüfen, ob der Datentyp des ausgewählten Wertes zur Anzeige geeignet ist 
	bool dtOk = CheckDatatype(CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].kooIdxOfValue);
	if (!dtOk)
	{ // Wenn die Daten nicht zur Anzeige geeignet sind ...
	  ShowTrendHint(&memDC, 1);	// ... Hinweis ausgeben (Datentyp nicht darstellbar)
	}
	else
	{ // Wenn die Daten zur Anzeige geeignet sind ... (UND Werte vorhanden sind UND diese der Benutzer einsehen darf)     
          ...
	} 
      } 
    }
  }
  ...
}

comment:3 by Melanie Hermann, 12 years ago

Weitere Änderungen:

  • TrendInterface.h:
    • static Membervariable sm_delete entfernt
  • TrendInterface.cpp:
    • CTrendInterface::SaveNewTrendValues(): Aufruf von DeleteAllTrendValues() entfernt
    • CTrendInterface::DeleteAllTrendValues(): Rücksetzen von sm_delete entfernt
  • gcvars.cpp:
    • fkt_DeleteTrends(): Hier wird nicht mehr sm_delete gesetzt, sondern DeleteAllTrendValues() aufgerufen
  • Compat_Trend.cpp:
    • updfnc_deltrend(): Auch hier wird nicht mehr sm_delete gesetzt, sondern DeleteAllTrendValues() aufgerufen


comment:4 by Melanie Hermann, 12 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.