Skip to content

Commit

Permalink
Merge pull request #26 from gemini-hlsw/SCHED-600
Browse files Browse the repository at this point in the history
SCHED-600: Add peak score and other information
  • Loading branch information
stroncod authored Feb 5, 2024
2 parents c54cefc + 5824a28 commit db7129e
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/components/ControlPanel/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export const scheduleQuery = graphql(`
sites: $sites,
mode: $mode,
endTime: $endTime,
semesterVisibility:false,
thesisFactor: $thesisFactor,
power: $power,
visPower: $visPower,
Expand Down Expand Up @@ -45,6 +46,7 @@ export const scheduleQuery = graphql(`
score,
obsClass,
completion,
peakScore,
},
nightStats{
timeloss,
Expand Down
26 changes: 25 additions & 1 deletion src/components/Results/TimeEntry.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,36 @@ export default function TimeEntry({ timeEntry }: { timeEntry: TimeEntryType }) {
return score.toFixed(2)
};

function fractionToPercentage(fraction: string): number {
const parts = fraction.split('/');
if (parts.length !== 2) {
throw new Error('Invalid fraction format');
}
const numerator = parseFloat(parts[0]);
const denominator = parseFloat(parts[1]);
if (denominator === 0) {
throw new Error('Denominator cannot be zero');
}
const percentage = (numerator / denominator) * 100;

return percentage;
}


const obsClassBodyTemplate = (visit: Visit) => {
return <Tag value={visit.obsClass} severity={getSeverity(visit)}></Tag>;
};

const scoreBodyTemplate = (visit: Visit) => {
return formatScore(visit.score)
}
const peakScoreBodyTemplate = (visit: Visit) => {
return formatScore(visit.peakScore)
}

const obsCompletionBodyTemplate = (visit: Visit) => {
return `${visit.completion} (${fractionToPercentage(visit.completion).toFixed(0)}%)`
}

const getSeverity = (visit: Visit )=> {
switch (visit.obsClass) {
Expand Down Expand Up @@ -70,7 +93,8 @@ export default function TimeEntry({ timeEntry }: { timeEntry: TimeEntryType }) {
<Column header="Observation Class" body={obsClassBodyTemplate}></Column>
<Column field="atomStartIdx" header="Atom Start"> </Column>
<Column field="atomEndIdx" header="Atom End"> </Column>
<Column field="completion" header="Obs Completion"> </Column>
<Column header="Obs Completion" body={obsCompletionBodyTemplate}> </Column>
<Column header="peakScore" body={peakScoreBodyTemplate}></Column>
<Column header="Score" body={scoreBodyTemplate}></Column>
</DataTable>
</AccordionTab>
Expand Down
4 changes: 2 additions & 2 deletions src/gql/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
* Therefore it is highly recommended to use the babel-plugin for production.
*/
const documents = {
"\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n": types.ScheduleDocument,
"\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n semesterVisibility:false,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n peakScore,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n": types.ScheduleDocument,
};

/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n"): (typeof documents)["\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n"];
export function graphql(source: "\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n semesterVisibility:false,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n peakScore,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n"): (typeof documents)["\n query schedule($startTime: String!,\n $endTime: String!,\n $sites: Sites!,\n $mode: SchedulerModes!,\n $numNightsToSchedule: Int!,\n $thesisFactor: Float,\n $power: Int,\n $metPower: Float,\n $visPower: Float,\n $whaPower: Float ) {\n schedule(\n newScheduleInput: {\n startTime: $startTime, \n numNightsToSchedule: $numNightsToSchedule , \n sites: $sites, \n mode: $mode, \n endTime: $endTime,\n semesterVisibility:false,\n thesisFactor: $thesisFactor,\n power: $power,\n visPower: $visPower,\n metPower: $metPower,\n whaPower: $whaPower}\n ) {\n nightPlans{\n nightTimeline{\n nightIndex\n timeEntriesBySite{\n site,\n timeEntries{\n startTimeSlots,\n event,\n plan{\n startTime,\n visits{\n obsId,\n endTime,\n altitude,\n atomEndIdx,\n atomStartIdx,\n startTime,\n instrument,\n score,\n obsClass,\n completion,\n peakScore,\n },\n nightStats{\n timeloss,\n planScore,\n timeloss,\n nToos,\n completionFraction,\n }\n }\n }\n }\n }\n },\n plansSummary\n }\n }\n"];

/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
Expand Down
Loading

0 comments on commit db7129e

Please sign in to comment.