class AdminModule::Pages::WorkflowDetailPage

Public Instance Methods

capture_events() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 212
def capture_events
  captured_events = {}

  workflow_events.each do |ev|
    captured_events[ev.event] = ev.guideline
  end

  captured_events
end
get_dynamic_url() click to toggle source

page_url(:get_dynamic_url)

# File lib/admin_module/pages/workflow_detail_page.rb, line 18
def get_dynamic_url
  AdminModule.configuration.url(WorkflowDetailPage)
end
get_stage_data() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 148
def get_stage_data
  stage_data = {}

  self.details_tab
  stage_data[:name] = self.name

  self.transition_to_states_tab
  stage_data[:transition_to] = get_selected_state_options

  self.groups_tab
  stage_data[:groups] = get_selected_group_options

  stage_data[:tasks] = get_tasks

  self.workflow_events_tab
  stage_data[:events] = capture_events

  self.data_clearing_definitions_tab
  stage_data[:dc] = Hash.new
  stage_data[:dc][:definition] = self.data_clearing_definition
  stage_data[:dc][:days] = self.data_clearing_days
  stage_data[:dc][:days_type] = self.data_clearing_days_type

  stage_data
end
get_tasks() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 267
def get_tasks
  self.tasks_tab

  tasks = Array.new
  selected_tasks_options.each do |task_name|
    tasks << { name: task_name }
  end

  # Open the Addl Details page and update the settings
  self.additional_details_button
  addtl_page = WorkflowDetailTaskAddlDetailPage.new(@browser, false)

  addl_data = addtl_page.get_data
  addtl_page.cancel

  # Merge addl detail data
  tasks.collect! do |task|
    task[:sequence] = addl_data[task[:name]][:sequence]
    task[:predecessors] = addl_data[task[:name]][:predecessors]
    task[:regenerate] = addl_data[task[:name]][:regenerate]
    task
  end

  # Open the screen mappings page and update the mappings
  self.screen_mappings_button
  mappings_page = WorkflowDetailTaskMappingsPage.new(@browser, false)

  mapping_data = mappings_page.get_data
  mappings_page.back

  tasks.collect! do |task|
    task[:mapped_screens] = mapping_data[task[:name]][:mapped_screens]
    task
  end

  #  Merge mapping data in to the task data structure
  tasks
end
save() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 242
def save
  self.save_button
end
set_data_clearing(dc) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 380
def set_data_clearing dc
  self.data_clearing_definitions_tab

  # No need to make changes if none need to be made
  return if dc[:definition].empty? && self.data_clearing_definition.empty?

  self.data_clearing_definition_element.select dc[:definition]
  self.data_clearing_days = dc[:days]
  self.data_clearing_days_type_element.select dc[:days_type]

  self.version_dc_button
end
set_events(events) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 352
def set_events events
  self.workflow_events_tab

  current_events = {}
  workflow_events.each do |ev|
    current_events[ev.event] = ev
  end

  events.each do |event, gdl|
    current_event = current_events[event]

    unless current_event.nil?
      id = current_event.id
      current_gdl = current_event.guideline

      if gdl != current_gdl
        sel = select_list_elements(id: id)[0]

        unless sel.nil?
          sel.select gdl
        end
      end
    end
  end

  self
end
set_groups(groups) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 260
def set_groups groups
  self.groups_tab
  set_group_data groups

  self
end
set_name(name) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 246
def set_name name
  self.details_tab
  self.name = name

  self
end
set_stage_data(data) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 222
def set_stage_data data
  # Set tasks first - Save button on Addl Details and/or Version button
  # causes a refresh which discards changes made in other tabs.
  set_tasks data[:tasks] if data.key?(:tasks)

  # Version button on DC tab may cause a refresh which discards changes
  # made in other tabs.
  set_data_clearing data[:dc] if data.key?(:dc)

  set_name data[:name] if data.key?(:name)

  set_transitions data[:transition_to] if data.key?(:transition_to)

  set_groups data[:groups] if data.key?(:groups)

  set_events data[:events] if data.key?(:events)

  self
end
set_tasks(tasks) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 306
def set_tasks tasks
  self.tasks_tab

  has_existing_tasks = (selected_tasks_options.count > 0)

  if has_existing_tasks
    # Open the Addl Details page and clear all settings
    self.additional_details_button
    addtl_page = WorkflowDetailTaskAddlDetailPage.new(@browser, false)

    addtl_page.clear_data
    addtl_page.save

    self.version_button
  end

  # Remove all tasks, then add back the requested tasks.
  self.remove_all_tasks_button
  tasks.each do |task|
    available_tasks_element.select(task[:name])
  end

  if tasks.count > 0
    self.add_task_button
    # Version the added tasks before opening Addtl Details screen
    self.version_button

    # Open the Addl Details page and update the settings
    self.additional_details_button
    addtl_page = WorkflowDetailTaskAddlDetailPage.new(@browser, false)

    addtl_page.set_data tasks
    addtl_page.save

    # Open the screen mappings page and update the mappings
    self.screen_mappings_button
    mappings_page = WorkflowDetailTaskMappingsPage.new(@browser, false)

    mappings_page.set_data tasks
    mappings_page.back

    # Click the version button to save the changes
    self.version_button
  end
end
set_transitions(trans) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 253
def set_transitions trans
  self.transition_to_states_tab
  set_transition_states trans

  self
end
workflow_events() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 196
def workflow_events
  events = []

  Nokogiri::HTML(@browser.html).css("table#ctl00_cntPlh_DatagridEvents").each do |tbl|
    rows = tbl.css('tr')
    rows.each do |r|
      next if r.attribute('class').value == 'GridHeader'
      cells = r.css('td')

      events << WorkflowEvent.new(cells)
    end # ech row
  end # nokogiri

  events
end

Private Instance Methods

get_available_group_options() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 423
def get_available_group_options
  vars = []
  Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsGroups_lstAvailable > option').each do |elem|
    vars << elem.text
  end
  vars
end
get_available_state_options() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 397
def get_available_state_options
  vars = []
  Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsStates_lstAvailable > option').each do |elem|
    vars << elem.text
  end
  vars
end
get_selected_group_options() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 431
def get_selected_group_options
  vars = []
  Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsGroups_lstSelected > option').each do |elem|
    vars << elem.text
  end
  vars
end
get_selected_state_options() click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 405
def get_selected_state_options
  vars = []
  Nokogiri::HTML(@browser.html).css('#ctl00_cntPlh_tsStates_lstSelected > option').each do |elem|
    vars << elem.text
  end
  vars
end
set_group_data(data) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 439
def set_group_data data
  sync_available_and_selected_lists get_available_group_options,
                                    available_groups_element,
                                    get_selected_group_options,
                                    selected_groups_element,
                                    add_group_button_element,
                                    remove_group_button_element,
                                    data
end
set_transition_states(data) click to toggle source
# File lib/admin_module/pages/workflow_detail_page.rb, line 413
def set_transition_states data
  sync_available_and_selected_lists get_available_state_options,
                                    available_states_element,
                                    get_selected_state_options,
                                    selected_states_element,
                                    add_state_button_element,
                                    remove_state_button_element,
                                    data
end