Class: BulkSubmissionExcel::Worksheet::DataWorksheet
- Inherits:
-
SequencescapeExcel::Worksheet::Base
- Object
- SequencescapeExcel::Worksheet::Base
- BulkSubmissionExcel::Worksheet::DataWorksheet
- Includes:
- SequencescapeExcel::Helpers::Worksheet
- Defined in:
- app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb
Overview
DataWorksheet creates a data worksheet to be filled in by a client.
Constant Summary
Constants included from SequencescapeExcel::Helpers::Worksheet
SequencescapeExcel::Helpers::Worksheet::STYLES
Instance Attribute Summary collapse
-
#assets ⇒ Object
Returns the value of attribute assets.
-
#defaults ⇒ Object
Returns the value of attribute defaults.
Attributes inherited from SequencescapeExcel::Worksheet::Base
#axlsx_worksheet, #columns, #name, #password, #ranges, #workbook
Instance Method Summary collapse
-
#add_columns ⇒ Object
Adds columns with all required data to a worksheet.
-
#add_title_and_description ⇒ Object
Adds title and description (study abbreviation, supplier name, number of assets sent) to a worksheet.
-
#build_details(asset) ⇒ Object
Extract the details for the given asset.
-
#create_row(detail) ⇒ Object
Creates row filled in with required column values, also unlocks (adds unlock style) the cells that should be filled in by clients.
- #first_row ⇒ Object
-
#freeze_after_column(name) ⇒ Object
Finds the column after which the panes should be frozen.
-
#freeze_panes(name = :sanger_sample_id) ⇒ Object
Freezes panes vertically after particular column (sanger_sample_id by default) and horizontally after headings.
-
#initialize(attributes = {}) ⇒ DataWorksheet
constructor
A new instance of DataWorksheet.
-
#last_row ⇒ Object
The row where the table with data end.
-
#present_defaults ⇒ Hash
Returns a hash of defaults where a value has been provided.
Methods included from SequencescapeExcel::Helpers::Worksheet
#add_headers, #create_styles, #find_or_create_style, #styles
Methods inherited from SequencescapeExcel::Worksheet::Base
#add_row, #add_rows, #create_worksheet, #insert_axlsx_worksheet, #protect
Constructor Details
#initialize(attributes = {}) ⇒ DataWorksheet
Returns a new instance of DataWorksheet.
14 15 16 17 18 19 20 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 14 def initialize(attributes = {}) super create_styles add_title_and_description add_columns freeze_panes end |
Instance Attribute Details
#assets ⇒ Object
Returns the value of attribute assets.
8 9 10 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 8 def assets @assets end |
#defaults ⇒ Object
Returns the value of attribute defaults.
8 9 10 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 8 def defaults @defaults end |
Instance Method Details
#add_columns ⇒ Object
Adds columns with all required data to a worksheet
46 47 48 49 50 51 52 53 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 46 def add_columns columns.update(first_row, last_row, ranges, axlsx_worksheet) add_headers assets.each do |asset| detail = build_details(asset) create_row(detail) end end |
#add_title_and_description ⇒ Object
Adds title and description (study abbreviation, supplier name, number of assets sent) to a worksheet.
37 38 39 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 37 def add_title_and_description add_row ['Bulk Submissions Form'] end |
#build_details(asset) ⇒ Object
Extract the details for the given asset
56 57 58 59 60 61 62 63 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 56 def build_details(asset) { project_name: asset.projects.one? ? asset.projects.first.name : '', study_name: asset.studies.one? ? asset.studies.first.name : '', barcode: asset., plate_well: asset.respond_to?(:map_description) ? asset.map_description : nil }.reverse_merge(present_defaults) end |
#create_row(detail) ⇒ Object
Creates row filled in with required column values, also unlocks (adds unlock style) the cells that should be filled in by clients
68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 68 def create_row(detail) axlsx_worksheet.add_row do |row| columns.each do |column| if column.unlocked? row.add_cell column.attribute_value(detail), type: column.type, style: styles[:unlocked].reference else row.add_cell column.attribute_value(detail), type: column.type end end end end |
#first_row ⇒ Object
22 23 24 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 22 def first_row 3 end |
#freeze_after_column(name) ⇒ Object
Finds the column after which the panes should be frozen. If the column was not found freezes the panes after column 0 (basically not frozen vertically)
95 96 97 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 95 def freeze_after_column(name) columns.find_by(:name, name) ? columns.find_by(:name, name).number : 0 end |
#freeze_panes(name = :sanger_sample_id) ⇒ Object
Freezes panes vertically after particular column (sanger_sample_id by default) and horizontally after headings
83 84 85 86 87 88 89 90 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 83 def freeze_panes(name = :sanger_sample_id) axlsx_worksheet.sheet_view.pane do |pane| pane.state = :frozen pane.y_split = first_row - 1 pane.x_split = freeze_after_column(name) pane.active_pane = :bottom_right end end |
#last_row ⇒ Object
The row where the table with data end
100 101 102 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 100 def last_row @last_row ||= assets.count + first_row - 1 end |
#present_defaults ⇒ Hash
Returns a hash of defaults where a value has been provided
30 31 32 |
# File 'app/bulk_submission_excel/bulk_submission_excel/worksheet/data_worksheet.rb', line 30 def present_defaults defaults.select { |_k, v| v.present? } end |