Skip to content

Commit

Permalink
Add element form type model, admin area
Browse files Browse the repository at this point in the history
  • Loading branch information
beque committed Oct 6, 2023
1 parent 43e06b4 commit b6fefe9
Show file tree
Hide file tree
Showing 12 changed files with 773 additions and 151 deletions.
1 change: 1 addition & 0 deletions app/api/api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ def to_json_camel_case(val)
mount Labimotion::GenericDatasetAPI
mount Labimotion::SegmentAPI
mount Labimotion::LabimotionHubAPI
mount Chemotion::ElementFormTypeAPI

if Rails.env.development?
add_swagger_documentation(info: {
Expand Down
72 changes: 72 additions & 0 deletions app/api/chemotion/element_form_type_api.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# frozen_string_literal: true

module Chemotion
class ElementFormTypeAPI < Grape::API
resource :element_form_types do
desc 'Index: List all element form types'
get do
present ElementFormType.all, with: Entities::ElementFormTypeEntity
end

desc 'create a new element form type'
params do
requires :name, type: String
optional :description, type: String
requires :element_type, type: String, values: %w[sample reaction wellplate screen]
optional :enabled, type: Boolean
end
post do
element_form_type =
ElementFormType.create!(
creator: current_user,
name: params[:name],
description: params[:description],
element_type: params[:element_type],
enabled: params[:enabled],
)
present element_form_type, with: Entities::ElementFormTypeEntity
end

desc 'get element form type by id'
params do
requires :id, type: Integer, desc: 'element form type id'
end
route_param :id do
get do
present ElementFormType.find_by(id: params[:id]), with: Entities::ElementFormTypeEntity
end
end

desc 'update a element form type'
params do
optional :id, type: Integer
optional :name, type: String
optional :description, type: String
optional :element_type, type: String, values: %w[sample reaction wellplate screen]
optional :enabled, type: Boolean
optional :structure, type: Hash
end
put ':id' do
element_form_type = ElementFormType.find_by(id: params[:id])
element_form_type.update!(
name: params[:name],
description: params[:description],
element_type: params[:element_type],
enabled: params[:enabled],
structure: params[:structure],
)
present element_form_type, with: Entities::ElementFormTypeEntity
end

desc 'update a element form type'
delete ':id' do
element_form_type = ElementFormType.find_by(id: params[:id])
unless element_form_type.present? && element_form_type.destroy
error!('element form type could not be deleted', 400)
end

{ deleted: element_form_type.id }
end
end
end
end
16 changes: 16 additions & 0 deletions app/api/entities/element_form_type_entity.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

module Entities
class ElementFormTypeEntity < ApplicationEntity
root :element_form_types # root key when rendering a list of element form types

expose :id
expose :name
expose :description
expose :element_type
expose :structure, default: {}
expose :enabled

# expose_timestamps
end
end
16 changes: 16 additions & 0 deletions app/assets/stylesheets/form-fields-modal.scss
Original file line number Diff line number Diff line change
Expand Up @@ -302,3 +302,19 @@ div[class^="grouped-fields-row cols-"] {
.glyphicon.glyphicon-info-sign.with-padding {
padding-left: 5px;
}

button.element-form-type-add-button {
margin-bottom: 15px;
}

.element-form-type-group.input-group {
width: 100%;
}
.element-form-type-label.input-group-addon {
width: 18%;
text-align: left;
}
.element-form-type-alert {
margin-left: -15px;
margin-right: -15px;
}
5 changes: 5 additions & 0 deletions app/models/element_form_type.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# frozen_string_literal: true

class ElementFormType < ApplicationRecord
belongs_to :creator, class_name: 'User'
end
17 changes: 15 additions & 2 deletions app/packs/src/apps/admin/AdminHome.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import NovncSettings from 'src/apps/admin/NovncSettings';
import MatrixManagement from 'src/apps/admin/MatrixManagement';
import TextTemplateContainer from 'src/apps/admin/textTemplates/TextTemplateContainer';
import DelayedJobs from 'src/apps/admin/DelayedJobs';
import ElementFormType from 'src/apps/admin/ElementFormType';
// import TemplateManagement from 'src/apps/admin/TemplateManagement';

class AdminHome extends React.Component {
Expand Down Expand Up @@ -65,6 +66,8 @@ class AdminHome extends React.Component {
return this.renderTemplateManagement();
} else if (pageIndex === 13) {
return this.renderDelayedJobs();
} else if (pageIndex === 14) {
return this.renderElementFormTypes();
}
return (<div />);
}
Expand All @@ -88,8 +91,9 @@ class AdminHome extends React.Component {
<NavItem eventKey={8}>Text Templates</NavItem>
<NavItem eventKey={2}>Message Publish</NavItem>
<NavItem eventKey={5}>Load OLS Terms</NavItem>
{/* <NavItem eventKey={12}>Report-template Management</NavItem> */}
<NavItem eventKey={13}>Delayed Jobs </NavItem>
{/* <NavItem eventKey={12}>Report-template Management</NavItem> */}
<NavItem eventKey={13}>Delayed Jobs</NavItem>
<NavItem eventKey={14}>Element Form Types</NavItem>
</Nav>
</Col>
</div>
Expand Down Expand Up @@ -195,6 +199,15 @@ class AdminHome extends React.Component {
);
}

renderElementFormTypes() {
const { contentClassName } = this.state;
return (
<Col className={contentClassName} >
<ElementFormType />
</Col>
);
}

render() {
return (
<div>
Expand Down
Loading

0 comments on commit b6fefe9

Please sign in to comment.