Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Incorporate "Gas Scheme" feature in reaction variations table #2250

Open
wants to merge 33 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
acebfc6
Add comment to give some context w.r.t. state management
JanCBrammer Oct 11, 2024
16fdefd
Move function
JanCBrammer Oct 11, 2024
8bbdab4
Refactor column definitions
JanCBrammer Oct 11, 2024
dc59a70
Adapt column definitions to material's gas types
JanCBrammer Oct 18, 2024
04f4211
Move components to dedicated file
JanCBrammer Oct 18, 2024
e635b33
Rename file
JanCBrammer Oct 18, 2024
e487aaa
Set columnDefinitions with useReducer hook
JanCBrammer Oct 22, 2024
a5f6f80
Remove local state reactionVariations
JanCBrammer Oct 24, 2024
80fed62
Fix formatting after rebase
JanCBrammer Oct 25, 2024
c276a4a
Change editability of duration according to gas mode
JanCBrammer Oct 25, 2024
4234944
Enable updates of column group properties
JanCBrammer Oct 29, 2024
5be39a9
Update columnDefinitions on gasMode change
JanCBrammer Oct 30, 2024
edd47d9
Update materials' gas type in columnDefinitions
JanCBrammer Oct 31, 2024
a14a1e0
Enable representation of gaseous materials
JanCBrammer Nov 5, 2024
560fe3a
Add gas parser
JanCBrammer Nov 20, 2024
515d5e9
Inline function
JanCBrammer Nov 21, 2024
713c8e1
Move functions
JanCBrammer Nov 21, 2024
40e5e3f
Add feedstock parser
JanCBrammer Nov 21, 2024
fc21a29
Test and refactor gas parser
JanCBrammer Nov 26, 2024
23db085
Test helper functions
JanCBrammer Nov 27, 2024
de261b3
Adapt entities to gas types
JanCBrammer Nov 28, 2024
5930ae4
Adapt report generation to gas types
JanCBrammer Nov 28, 2024
0a0b51b
Shorten comment
JanCBrammer Nov 29, 2024
4e75dfe
Migrate to material-specific entries
JanCBrammer Nov 29, 2024
7627af8
Update changelog
JanCBrammer Nov 29, 2024
feac292
Extract predicates
JanCBrammer Jan 8, 2025
f4eefbf
Add factory for reaction with variations
JanCBrammer Jan 8, 2025
847c040
Resolve merge conflicts
JanCBrammer Jan 21, 2025
832771c
Show all material entries in overlay
JanCBrammer Jan 24, 2025
b88f4ae
Return numbers from formatters
JanCBrammer Jan 31, 2025
d97c2c6
Stop editing when cells loose focus
JanCBrammer Jan 31, 2025
52ad4e1
Auto-size columns when tab is (re-)entered
JanCBrammer Jan 31, 2025
6353375
Update gas material on catalyst material change
JanCBrammer Feb 6, 2025
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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Chemotion_ELN Changelog
## Latest

* Features and enhancements
* Reaction variations table can now represent gaseous materials

## [v1.10.5]
> (2024-12-16)

Expand Down
48 changes: 38 additions & 10 deletions app/api/entities/reaction_variation_entity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,28 @@ def properties
end
end

def materials(material_type)
def materials(material_type, entity)
{}.tap do |materials|
object[material_type]&.each do |k, v|
materials[k] = ReactionVariationMaterialEntity.represent(v)
materials[k] = entity.represent(v)
end
end
end

def starting_materials
materials(:startingMaterials)
materials(:startingMaterials, StartingMaterialEntity)
end

def reactants
materials(:reactants)
materials(:reactants, StartingMaterialEntity)
end

def products
materials(:products)
materials(:products, ProductMaterialEntity)
end

def solvents
materials(:solvents)
materials(:solvents, SolventMaterialEntity)
end
end

Expand All @@ -52,10 +52,37 @@ class ReactionVariationPropertyEntity < ApplicationEntity
)
end

class ReactionVariationMaterialEntity < ApplicationEntity
class SolventMaterialEntity < ApplicationEntity
expose :volume, using: 'Entities::ReactionVariationMaterialEntryEntity'

expose :aux, using: 'Entities::ReactionVariationMaterialAuxEntity'
end

class ProductMaterialEntity < ApplicationEntity
IS_GAS = ->(object, _) { (object[:aux][:gasType] == 'gas') }.freeze

expose :mass, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :amount, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :volume, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :yield, using: 'Entities::ReactionVariationMaterialEntryEntity'

expose :duration, if: IS_GAS, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :temperature, if: IS_GAS, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :concentration, if: IS_GAS, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :turnoverNumber, if: IS_GAS, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :turnoverFrequency, if: IS_GAS, using: 'Entities::ReactionVariationMaterialEntryEntity'

expose :aux, using: 'Entities::ReactionVariationMaterialAuxEntity'
end

class StartingMaterialEntity < ApplicationEntity
IS_FEEDSTOCK = ->(object, _) { (object[:aux][:gasType] == 'feedstock') }.freeze

expose :mass, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :amount, using: 'Entities::ReactionVariationMaterialEntryEntity'
expose :equivalent, using: 'Entities::ReactionVariationMaterialEntryEntity'

expose :volume, if: IS_FEEDSTOCK, using: 'Entities::ReactionVariationMaterialEntryEntity'

expose :aux, using: 'Entities::ReactionVariationMaterialAuxEntity'
end

Expand All @@ -68,8 +95,9 @@ class ReactionVariationMaterialAuxEntity < ApplicationEntity
:molarity,
:molecularWeight,
:sumFormula,
:yield,
:equivalent,
:gasType,
:vesselVolume,
:materialType,
)
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ import ElementActions from 'src/stores/alt/actions/ElementActions';
import DetailActions from 'src/stores/alt/actions/DetailActions';
import LoadingActions from 'src/stores/alt/actions/LoadingActions';
import ReactionVariations from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations';
import {
REACTION_VARIATIONS_TAB_KEY
} from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils';
import DetailsTabLiteratures from 'src/apps/mydb/elements/details/literature/DetailsTabLiteratures';
import ReactionDetailsContainers from 'src/apps/mydb/elements/details/reactions/analysesTab/ReactionDetailsContainers';
import SampleDetailsContainers from 'src/apps/mydb/elements/details/samples/analysesTab/SampleDetailsContainers';
Expand Down Expand Up @@ -585,10 +588,16 @@ export default class ReactionDetails extends Component {
</Tab>
),
variations: (
<Tab eventKey="variations" title="Variations" key={`variations_${reaction.id}`} unmountOnExit={false}>
<Tab
eventKey={REACTION_VARIATIONS_TAB_KEY}
title="Variations"
key={`variations_${reaction.id}`}
unmountOnExit={false}
>
<ReactionVariations
reaction={reaction}
onReactionChange={this.handleReactionChange}
isActive={activeTab === REACTION_VARIATIONS_TAB_KEY}
/>
</Tab>
)
Expand Down
Loading
Loading