String funkcijas nesalīdzina izmantojot Equal
raksta ar operatoru value == value2
Neizmantot .First()
ja eksistē .FirstOrDefault()
- otrajā gadījumā var izvairīties no null exception
Novērst to, ka šeit 2x viens un tas pats kods if blokos - newChild
daļa var būt kopīga
Mainīgais nevar saturēt _
underscores, padodot funkcijai, novērst arī, ka tiek glabāts gan SelectionFile, gan fileDAD, gan selectionFileCollection
Novērst nesaprotamus mainīgo nosaukumus - Nevar būt, ka UI elementi tiek saukti selectionFileCollection
pārsaukt uiSelectedItems
Savukārt nedrīkst saukt kaut ko SelectionFile
, ja tas īstenībā ir ar tipu SelectionFileDAD
, piemērtos nosaukums būtu CurrentSelectionFileDAD
. Vai vispār ir nepieciešams šeit ObservableCollection? Kāpēct tur nevar iztikt ar property uz vienu UI Item?
Visur kur ir potenciāli crashable array selections kā arr[n]
arr?.Skip(n)?.FirstOrDefault()
https://thedotnetguide.com/null-conditional-operator-in-csharp/
Vai arī lietot IF statment un check Length / Count
Pat ja beigās izmantos kopīgu funkciju, katram event listeneram likt sākotnēji savu, jo vēlāk būs vieglāk atsekot un uzturēt kodu
Kā piemēru var skatīties UserControlViewData.uiDataGridPeaks
UserControlViewData.IntegrationDataTable
Paši dati atrodas iekš SelectionFileDAD.IntegrationDataSet
BET tie tiek saglabāti tikai konkrētai viļņu garumu kombinācijai, tiklīdz šo kombināciju pamaina ir jāveic pa jaunu “integrācija”, jeb pīķu atrašana hromatogrammā, to var salīdzinoši viegli izdarīt uz parent vai selected izsaucot SelectioFileDAD.Integrate(...)
funkciju, jāpato darī:
Laiks no kura līdz kuram atrast pīķus (by default ZeroTime/vai vnk 0 līdz MaxTime)
Rejection level (minimālais laukums pīķim) by default 0
ZeroTime (0 vai tas kas definēts eksperimentā)
Šos parametrus kā dizainā var ievadīt virs peak table ar ievades laukiem. Tāpat ir jāvar ar varu likt pār-integrēt izmantojot tās funkcijas
Iezīmētās pogas vajag jau tagad sakodēt un sajūgt ar Integrate funkciju
Ja iepriekš jau dotajā viļņa garumu konfigurācijā bija atrasti pīķi, tad nevajadzēs uzreiz integrēt, bet ja nav pīķi tad nepieciešams nointegrēt fonā
Vecajā versijā bija iespējams, ja ar peli sāk vilkt chromatogrammu, tad ieslēdzas UserControlViewData.m_isOffsetModeOn
pamainīt pašā SelectionFileDAD
iekšpusē OffsetWavelength
un OffsetIntensity
, kas nodrošina, ka var pabīdīt Oxplotā chromatogrammas tā, lai ērtāk salīdzīnāt, kā arī by default jau pārklājot jāpiedāvā tādi offseti, lai chromatogrammas būtu mazliet vienas no otras nobīdītas un ar tām varētu ērti strādāt (ja visas viena otrai virsū, tad pat sagrābt tās būs grūti)
Lai saprastu kā implementēt apskatīt šos
51//Mode to move around gaph lines with mouse
2private bool m_isOffsetModeOn = false;
3private bool m_offsetStarted = false;
4private LineSeries m_offsetLineSeries = null;
5private ScreenPoint m_offsetPoint = new ScreenPoint();
x
1OnOffseting_plotModel_MouseMove(...)
2
3selection.OffsetWavelength += (float)deltaSeries.X; selection.OffsetIntensity -= (float)deltaSeries.Y;