Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import japgolly.scalajs.react.*
import japgolly.scalajs.react.vdom.html_<^.*
import lucuma.core.enums.CalibrationRole
import lucuma.core.enums.ScienceMode
import lucuma.core.math.Coordinates
import lucuma.core.model.ConstraintSet
import lucuma.core.model.CoordinatesAt
import lucuma.core.model.User
import lucuma.core.util.NewBoolean
import lucuma.core.util.Timestamp
Expand All @@ -51,7 +51,7 @@ case class BasicConfigurationPanel(
selectedConfig: View[ConfigSelection],
constraints: ConstraintSet,
itcTargets: EitherNec[ItcTargetProblem, NonEmptyList[ItcTarget]],
baseCoordinates: Option[CoordinatesAt],
baseCoordinates: Option[Coordinates],
calibrationRole: Option[CalibrationRole],
createConfig: IO[Unit],
confMatrix: ScienceModes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import explore.undo.*
import japgolly.scalajs.react.*
import japgolly.scalajs.react.vdom.html_<^.*
import lucuma.core.math.Angle
import lucuma.core.model.CoordinatesAt
import lucuma.core.math.Coordinates
import lucuma.core.model.PosAngleConstraint
import lucuma.core.model.Program
import lucuma.core.model.User
Expand All @@ -72,7 +72,7 @@ object ConfigurationTile:
requirements: UndoSetter[ScienceRequirements],
pacAndMode: UndoSetter[PosAngleConstraintAndObsMode],
scienceTargetIds: AsterismIds,
baseCoordinates: Option[CoordinatesAt],
baseCoordinates: Option[Coordinates],
obsConf: ObsConfiguration,
selectedConfig: View[ConfigSelection],
revertedInstrumentConfig: List[ItcInstrumentConfig], // configuration rows selected if reverted
Expand Down Expand Up @@ -206,7 +206,7 @@ object ConfigurationTile:
pacAndMode: UndoSetter[PosAngleConstraintAndObsMode],
obsConf: ObsConfiguration,
itcTargets: EitherNec[ItcTargetProblem, NonEmptyList[ItcTarget]],
baseCoordinates: Option[CoordinatesAt],
baseCoordinates: Option[Coordinates],
selectedConfig: View[ConfigSelection],
revertedInstrumentConfig: List[ItcInstrumentConfig],
modes: ScienceModes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ import lucuma.core.enums.*
import lucuma.core.math.Angle
import lucuma.core.math.BoundedInterval
import lucuma.core.math.BoundedInterval.*
import lucuma.core.math.Coordinates
import lucuma.core.math.SignalToNoise
import lucuma.core.math.Wavelength
import lucuma.core.math.WavelengthDelta
import lucuma.core.model.ConstraintSet
import lucuma.core.model.CoordinatesAt
import lucuma.core.model.ExposureTimeMode
import lucuma.core.model.User
import lucuma.core.syntax.all.*
Expand All @@ -64,7 +64,7 @@ final case class ImagingModesTable(
matrix: ImagingModesMatrix,
constraints: ConstraintSet,
targets: EitherNec[ItcTargetProblem, NonEmptyList[ItcTarget]],
baseCoordinates: Option[CoordinatesAt],
baseCoordinates: Option[Coordinates],
customSedTimestamps: List[Timestamp],
units: WavelengthUnits,
targetView: View[Option[ItcTarget]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ case class SpectroscopyModesTable(
spectroscopyRequirements: ScienceRequirements.Spectroscopy,
constraints: ConstraintSet,
targets: EitherNec[ItcTargetProblem, NonEmptyList[ItcTarget]],
baseCoordinates: Option[CoordinatesAt],
baseCoordinates: Option[Coordinates],
matrix: SpectroscopyModesMatrix,
customSedTimestamps: List[Timestamp],
units: WavelengthUnits
Expand Down Expand Up @@ -246,7 +246,7 @@ private object SpectroscopyModesTable extends ModesTableCommon:
(props.matrix,
props.exposureTimeMode,
props.spectroscopyRequirements,
props.baseCoordinates.map(_.value.dec),
props.baseCoordinates.map(_.dec),
itcResults.get.cache.size,
props.targets,
props.constraints,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@ import explore.model.display.given
import explore.model.enums.PlotRange
import explore.model.enums.TimeDisplay
import explore.model.enums.Visible
import explore.model.extensions.*
import japgolly.scalajs.react.*
import japgolly.scalajs.react.vdom.html_<^.*
import lucuma.core.enums.Site
import lucuma.core.enums.TimingWindowInclusion
import lucuma.core.math.BoundedInterval
import lucuma.core.model.CoordinatesAt
import lucuma.core.math.Coordinates
import lucuma.core.model.Semester
import lucuma.core.model.TimingWindow
import lucuma.core.model.User
Expand Down Expand Up @@ -213,11 +214,11 @@ object ElevationPlotTile:
)
case PlotRange.Semester =>
props.plotData.value.headOption.map { case (_, data) =>
val coords: CoordinatesAt =
val coords: Coordinates =
data.tracking
.at(semesterView.get.start.atSite(siteView.get).toInstant)
.getOrElse:
CoordinatesAt(data.tracking.baseCoordinates)
data.tracking.baseCoordinates

SemesterPlot(
plotOptions.get,
Expand Down
10 changes: 6 additions & 4 deletions explore/app/src/main/scala/explore/plots/ObjectPlotData.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import cats.Order
import cats.derived.*
import eu.timepit.refined.cats.given
import eu.timepit.refined.types.string.NonEmptyString
import explore.model.extensions.*
import japgolly.scalajs.react.*
import lucuma.core.enums.Site
import lucuma.core.math.skycalc.SkyCalcResults
import lucuma.core.model.CoordinatesAt
import lucuma.core.model.ObjectTracking
import lucuma.core.model.Observation
import lucuma.core.model.Target
import lucuma.core.model.Tracking
import lucuma.core.util.NewType
import lucuma.typed.highcharts.mod.Point
import lucuma.typed.highcharts.mod.PointOptionsObject
Expand All @@ -37,7 +37,7 @@ trait ElevationPointWithAirmass extends Point:
// Can wrap data for a target or an asterism.
case class ObjectPlotData(
name: NonEmptyString,
tracking: ObjectTracking,
tracking: Tracking,
sites: List[Site]
) derives Eq:
private val PlotEvery: Duration = Duration.ofMinutes(1)
Expand All @@ -51,7 +51,9 @@ case class ObjectPlotData(
PlotEvery,
// We are computing the coordinates at each point in time, this may be expensive
// and could be optimized for sidereals, but it's probably necessary for non-sidereals.
tracking.at(_).map(_.value).getOrElse(tracking.baseCoordinates)
tracking
.at(_)
.getOrElse(tracking.baseCoordinates)
)

object ObjectPlotData:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ import cats.syntax.all.*
import explore.model.ElevationPlotScheduling
import explore.model.enums.PlotRange
import explore.model.enums.TimeDisplay
import explore.model.extensions.*
import japgolly.scalajs.react.ReactCats.*
import japgolly.scalajs.react.Reusability
import lucuma.core.enums.Site
import lucuma.core.enums.TwilightType
import lucuma.core.math.BoundedInterval
import lucuma.core.math.Coordinates
import lucuma.core.model.CoordinatesAt
import lucuma.core.model.ObjectTracking
import lucuma.core.model.ObservingNight
import lucuma.core.model.Semester
import lucuma.core.model.Tracking
import monocle.Focus
import org.typelevel.cats.time.given

Expand Down Expand Up @@ -101,13 +101,13 @@ object ObjectPlotOptions:
def default(
predefinedSite: Option[Site],
observationTime: Option[Instant],
tracking: Option[ObjectTracking]
tracking: Option[Tracking]
) =
val coords: Option[Coordinates] =
for
time <- observationTime
t <- tracking
yield t.at(time).map(_.value).getOrElse(t.baseCoordinates)
yield t.at(time).getOrElse(t.baseCoordinates)
val site: Site =
predefinedSite
.orElse:
Expand Down
6 changes: 3 additions & 3 deletions explore/app/src/main/scala/explore/plots/SemesterPlot.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import explore.model.WorkerClients.PlotClient
import fs2.Stream
import japgolly.scalajs.react.*
import lucuma.core.math.BoundedInterval
import lucuma.core.model.CoordinatesAt
import lucuma.core.math.Coordinates
import lucuma.core.util.time.format.GppDateFormatter
import lucuma.react.common.ReactFnProps
import lucuma.react.highcharts.Chart
Expand All @@ -36,7 +36,7 @@ import js.JSConverters.*

case class SemesterPlot(
options: ObjectPlotOptions,
coords: CoordinatesAt,
coords: Coordinates,
excludeIntervals: List[BoundedInterval[Instant]]
) extends ReactFnProps(SemesterPlot.component)

Expand All @@ -55,7 +55,7 @@ object SemesterPlot:
.useState(none[Chart_]) // chart handler (chartOpt)
.useEffectStreamResourceWithDepsBy((props, _, chartOpt) =>
chartOpt.value.map: chart =>
(props.options.semester, props.options.site, props.coords.value, Reusable.always(chart))
(props.options.semester, props.options.site, props.coords, Reusable.always(chart))
): (_, ctx, _) =>
_.map { (semester, site, coords, chart) =>
import ctx.given
Expand Down
12 changes: 6 additions & 6 deletions explore/app/src/main/scala/explore/tabs/ObsTabTiles.scala
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ import lucuma.core.enums.CalibrationRole
import lucuma.core.enums.ProgramType
import lucuma.core.enums.Site
import lucuma.core.math.Angle
import lucuma.core.math.Coordinates
import lucuma.core.math.Offset
import lucuma.core.math.skycalc.averageParallacticAngle
import lucuma.core.model.ConstraintSet
import lucuma.core.model.CoordinatesAt
import lucuma.core.model.IntCentiPercent
import lucuma.core.model.ObjectTracking
import lucuma.core.model.PosAngleConstraint
import lucuma.core.model.Program
import lucuma.core.model.Target
import lucuma.core.model.Tracking
import lucuma.core.optics.syntax.lens.*
import lucuma.core.syntax.all.*
import lucuma.core.util.TimeSpan
Expand Down Expand Up @@ -117,7 +117,7 @@ case class ObsTabTiles(
val obsAttachmentAssignments: ObsAttachmentAssignmentMap =
programSummaries.obsAttachmentAssignments

val asterismTracking: Option[ObjectTracking] =
val asterismTracking: Option[Tracking] =
observation.get.asterismTracking(obsTargets)

val posAngleConstraint: PosAngleConstraint = observation.get.posAngleConstraint
Expand All @@ -133,7 +133,7 @@ case class ObsTabTiles(
NonEmptyList.fromList:
obsTargets.toList.map((_, t) => t)

def targetCoords(obsTime: Instant): Option[CoordinatesAt] =
def targetCoords(obsTime: Instant): Option[Coordinates] =
asterismAsNel
.flatMap(asterismNel => asterismNel.baseTracking.flatMap(_.at(obsTime)))

Expand All @@ -150,15 +150,15 @@ case class ObsTabTiles(
)

def obsIQLikelihood(obsTime: Instant): Option[IntCentiPercent] =
(centralWavelength, targetCoords(obsTime).map(_.value.dec), site).mapN((cw, dec, site) =>
(centralWavelength, targetCoords(obsTime).map(_.dec), site).mapN((cw, dec, site) =>
site
.minimumAirMassFor(dec)
.fold(IntCentiPercent.Min): airMass =>
constraintSet.get.imageQuality.toImageQuality.percentile(cw.value, airMass)
)

def obsConditionsLikelihood(obsTime: Instant): Option[IntCentiPercent] =
(centralWavelength, targetCoords(obsTime).map(_.value.dec), site).mapN((cw, dec, site) =>
(centralWavelength, targetCoords(obsTime).map(_.dec), site).mapN((cw, dec, site) =>
conditionsLikelihood(
constraintSet.get.skyBackground,
constraintSet.get.cloudExtinction.toCloudExtinction,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ import japgolly.scalajs.react.*
import japgolly.scalajs.react.extra.router.SetRouteVia
import japgolly.scalajs.react.vdom.html_<^.*
import lucuma.core.enums.Site
import lucuma.core.model.ObjectTracking
import lucuma.core.model.Program
import lucuma.core.model.Target
import lucuma.core.model.Tracking
import lucuma.core.model.User
import lucuma.core.model.sequence.ExecutionDigest
import lucuma.core.optics.syntax.lens.*
Expand Down Expand Up @@ -329,7 +329,7 @@ object TargetTabContents extends TwoPanels:
props.targets.get
.get(targetId)
.flatMap: targetWithId =>
ObjectTracking
Tracking
.fromTarget(targetWithId.target)
.map: tracking =>
ObjectPlotData.Id(targetId.asRight) -> ObjectPlotData(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import explore.model.boopickle.*
import explore.model.boopickle.CatalogPicklers.given
import explore.model.enums.AgsState
import explore.model.enums.Visible
import explore.model.extensions.*
import explore.model.reusability.given
import explore.optics.ModelOptics
import japgolly.scalajs.react.*
Expand All @@ -39,7 +40,7 @@ import lucuma.core.enums.PortDisposition
import lucuma.core.math.Angle
import lucuma.core.math.Coordinates
import lucuma.core.math.Offset
import lucuma.core.model.ObjectTracking
import lucuma.core.model.Tracking
import lucuma.core.model.User
import lucuma.core.model.sequence.flamingos2.Flamingos2FpuMask
import lucuma.react.common.*
Expand All @@ -64,7 +65,7 @@ case class AladinCell(
uid: User.Id,
obsId: Option[Observation.Id],
asterism: Asterism,
asterismTracking: ObjectTracking,
asterismTracking: Tracking,
obsTime: Instant,
obsConf: Option[ObsConfiguration],
fullScreen: View[AladinFullScreen],
Expand Down Expand Up @@ -352,7 +353,7 @@ object AladinCell extends ModelOptics with AladinCommon:
props.asterism.focus.id,
constraints,
centralWavelength.value,
base.value,
base,
props.sciencePositionsAt(vizTime),
positions,
p,
Expand Down
Loading
Loading