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 @@ -4,3 +4,12 @@
@import "../../shared/styles/formatting/panels";
@import "../../Shared/styles/components/infoPanel";
@import "../../Shared/styles/components/summaryGridPanel";


.right-panel {
flex: 1;
padding-left: 1rem;
flex-direction: column;
height: $m-panel;
max-width: $m-panel-width;
}
24 changes: 20 additions & 4 deletions snprc_ehr/src/client/NewAnimalPage/NewAnimalPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ export default class NewAnimalPage extends React.Component {
))
}).catch(error => {
console.log(`Error in loadLists: ${error}`)
this.setState(prevState => (
{
...prevState,
errorMessage: error.message
}
))
})
}

Expand Down Expand Up @@ -125,6 +131,12 @@ export default class NewAnimalPage extends React.Component {
))
}).catch(error => {
console.log(`Error in handleSpeciesChange: ${error}`)
this.setState(prevState => (
{
...prevState,
errorMessage: error.message
}
))
})
}

Expand Down Expand Up @@ -155,7 +167,8 @@ export default class NewAnimalPage extends React.Component {
}

handleSpeciesChange = selectedSpecies => {
if (this.state.newAnimalData.species !== undefined) {
// ignore sub-species change
if (this.state.newAnimalData.species !== undefined && this.state.newAnimalData.species.arcSpeciesCode !== selectedSpecies.arcSpeciesCode) {
this.selectedSpecies = selectedSpecies
this.setState(prevState => (
{
Expand Down Expand Up @@ -369,6 +382,7 @@ export default class NewAnimalPage extends React.Component {
{
...initialState,
isLoading: false,
selectedOption: prevState.selectedOption,
speciesList: [
...prevState.speciesList
],
Expand All @@ -389,7 +403,8 @@ export default class NewAnimalPage extends React.Component {
],
newAnimalData: {
...initialState.newAnimalData,
species: this.selectedSpecies
species: this.selectedSpecies,
selectedOption: prevState.newAnimalData.selectedOption
}
}
), this.loadListsForSpecies(this.selectedSpecies))
Expand All @@ -408,11 +423,12 @@ export default class NewAnimalPage extends React.Component {
}

print = id => {
// const newAnimalData = this.state.summaryData.find(o => o.id === id)
const reportPath = getReportPath('BirthRecord')
const fullPath = `${reportPath}&rc:Parameters=Collapsed&TargetID=${id}` // &rs:Format=PDF // uncomment to print to PDF

window.open(fullPath)
const left = window.screenX + 20

window.open(fullPath, '_blank', `location=yes,height=850,width=768,status=yes, left=${left}`)
}

render() {
Expand Down
32 changes: 22 additions & 10 deletions snprc_ehr/src/client/NewAnimalPage/api/fetchLocations.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Filter } from '@labkey/api'
import { request } from '../../Shared/api/api'
import { executeSql } from '../../Shared/api/api'

const parse = rows => {
return rows.map(({ data }, key) => {
Expand All @@ -8,16 +7,29 @@ const parse = rows => {
}

const fetchLocations = species => {
const sql = `SELECT h.species AS species,
r.room AS room,
r.maxCages AS maxCages,
r.rowId AS rowId
FROM ehr_lookups.rooms r
LEFT OUTER JOIN (
SELECT DISTINCT d.species.arc_species_code as species, d2.room AS room
FROM study.housing AS d2
INNER join study.demographics d on d2.id = d.id
WHERE d2.enddate IS NULL
AND d2.qcstate.publicdata = true
) AS h ON r.room = h.room
WHERE r.dateDisabled is NULL
AND CAST(r.room as FLOAT) BETWEEN 1.00 AND 799.99
AND (h.species = '${species}' OR h.species is NULL)`

return new Promise((resolve, reject) => {
request({
if (!species || species.length !== 2) reject(new Error('Invalid species format detected'))

executeSql({
schemaName: 'snprc_ehr',
queryName: 'ActiveLocationsAll',
columns: ['species', 'room', 'maxCages', 'rowId'],
sort: '-species, room',
filterArray: [
// Filter.create('species', species, Filter.Types.EQUAL)
Filter.create('species', `${species}; null`, Filter.Types.IN)
]
sql,
sort: '-species, room'
}).then(({ rows }) => {
resolve(parse(rows))
}).catch(error => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ export default class SpeciesPanel extends React.Component {
className="shared-dropdown shared-dropdown__species_width"
classNamePrefix="shared-select"
id="species-select"
isClearable
isDisabled={ this.props.disabled }
isLoading={ !this.props.speciesList }
onChange={ this.handleSpeciesChange }
Expand Down
17 changes: 15 additions & 2 deletions snprc_ehr/src/client/NewAnimalPage/styles/newAnimalPage.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@import "../../Shared/styles/style";
@import "../../shared/styles/formatting/wizard";
@import "../../shared/styles/formatting/panels";
@import "../../Shared/styles/formatting/wizard";
@import "../../Shared/styles/formatting/panels";
@import "../../Shared/styles/components/wrappedDatePicker";
@import "../../Shared/styles//components/modal";
@import "../../Shared/styles/components/shared";
Expand All @@ -10,3 +10,16 @@
@import "./components/locationPanel";
@import "./components/dietPanel";
@import "./components/summaryPanel";

.right-panel {
flex: 1;
padding-left: 1rem;
flex-direction: column;
min-height: $l-panel;
}

.table-scroll {
overflow-y: auto;
height:$l-panel;
padding: 0, .1rem !important;
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ exports[`Should render the SpeciesPanel 1`] = `
defaultMenuIsOpen={false}
defaultValue={null}
id="species-select"
isClearable={true}
isDisabled={false}
isLoading={false}
onChange={[Function]}
Expand Down
93 changes: 50 additions & 43 deletions snprc_ehr/src/client/Shared/api/__mocks__/api.js
Original file line number Diff line number Diff line change
@@ -1,55 +1,62 @@
/* eslint-disable no-unused-vars, camelcase */

import { NewAnimalData } from '../../../BirthRecordReport/tests/fixtures/apiTestData'
import { CurrentSpeciesLookup, AccountLookup, validInstitutions, ValidDiet, AcquisitionTypesLookup,
import {
CurrentSpeciesLookup, AccountLookup, validInstitutions, ValidDiet, AcquisitionTypesLookup,
valid_bd_status, PotentialDams, PotentialSires, ActiveLocationsAll, colonyGroups,
ProtocolLookup, pedigreeGroups } from '../../../NewAnimalPage/tests/fixtures/apiTestData'
ProtocolLookup, pedigreeGroups
} from '../../../NewAnimalPage/tests/fixtures/apiTestData'

export const request = ({ schemaName, queryName, viewName = '', sort = '', columns = [], filterArray = [] }) => {
// console.log(`loading list: ${queryName}`);
return new Promise(resolve => {
switch (queryName) {
case 'CurrentSpeciesLookup':
resolve(CurrentSpeciesLookup)
break
case 'AccountLookup':
resolve(AccountLookup)
break
case 'validInstitutions':
resolve(validInstitutions)
break
case 'ValidDiet':
resolve(ValidDiet)
break
case 'AcquisitionTypesLookup':
resolve(AcquisitionTypesLookup)
break
case 'PotentialDams':
resolve(PotentialDams)
break
case 'PotentialSires':
resolve(PotentialSires)
break
case 'ActiveLocationsAll':
resolve(ActiveLocationsAll)
break
case 'colonyGroups':
resolve(colonyGroups)
break
case 'ProtocolLookup':
resolve(ProtocolLookup)
break
case 'pedigreeGroups':
resolve(pedigreeGroups)
break
case 'valid_bd_status':
resolve(valid_bd_status)
break
case 'NewAnimalData':
resolve(NewAnimalData)
break
default:
break
case 'CurrentSpeciesLookup':
resolve(CurrentSpeciesLookup)
break
case 'AccountLookup':
resolve(AccountLookup)
break
case 'validInstitutions':
resolve(validInstitutions)
break
case 'ValidDiet':
resolve(ValidDiet)
break
case 'AcquisitionTypesLookup':
resolve(AcquisitionTypesLookup)
break
case 'PotentialDams':
resolve(PotentialDams)
break
case 'PotentialSires':
resolve(PotentialSires)
break
case 'colonyGroups':
resolve(colonyGroups)
break
case 'ProtocolLookup':
resolve(ProtocolLookup)
break
case 'pedigreeGroups':
resolve(pedigreeGroups)
break
case 'valid_bd_status':
resolve(valid_bd_status)
break
case 'NewAnimalData':
resolve(NewAnimalData)
break
default:
break
}
})
}

export const executeSql = ({ schemaName, sql, sort = '' }) => {
return new Promise(resolve => {
if (sql.indexOf('FROM ehr_lookups.rooms') > 0) {
resolve(ActiveLocationsAll)
}
})
}
19 changes: 19 additions & 0 deletions snprc_ehr/src/client/Shared/api/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,22 @@ export const request = ({ schemaName, queryName, viewName = '', sort = '', colum
})
})
}

export const executeSql = ({ schemaName, sql, sort = '' }) => {
return new Promise((resolve, reject) => {
const success = response => {
resolve(response)
}
const failure = error => {
reject(error)
}
Query.executeSql({
requiredVersion: 19.2,
schemaName,
sql,
sort,
success,
failure
})
})
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
.table-scroll {
overflow-y: auto;
height:$m-panel;
padding: 0, .1rem !important;

min-height:$m-panel;
padding: 0, 0.1rem !important;
}

.table-bordered > thead > tr > th {
Expand Down
3 changes: 0 additions & 3 deletions snprc_ehr/src/client/Shared/styles/formatting/_panels.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
.right-panel {
flex: 1;
padding-left: 1rem;
flex-direction: column;
height: $m-panel;
max-width: $m-panel-width;
}
.parent-panel {
display: flex;
Expand Down
2 changes: 1 addition & 1 deletion snprc_ehr/src/client/Shared/styles/settings.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
$dark-gray: #333333;
$light-gray: #999;
$gray: #666;
$disabled-gray: #f5f5f5; //eeee;
$disabled-gray: #eeee; //#f5f5f5;
$button-blue: #282aa5;
$dark-blue: #364051;
$off-white: #f7f7f7;
Expand Down