Class: UU::OS::VUC::Navigation

Inherits:
Object
  • Object
show all
Defined in:
uu_adk-0.28.16/lib/uu/os/vuc/navigation.rb

Overview

Form navigation object.

Defined Under Namespace

Classes: NavigationAction, Progress

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Navigation) initialize(data = nil)

Creates new instance of navigation.

Parameters:

  • data (String, Hash) (defaults to: nil)

    Initialization data in form of JSON string or Hash (optional)



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'uu_adk-0.28.16/lib/uu/os/vuc/navigation.rb', line 33

def initialize(data = nil)
  if data.nil?
    @raw_attrs = {}
    return
  end
  if data.kind_of?String
    data = JSON.parse(data, :symbolize_names => true)
  end
  if data.kind_of?Hash
    @raw_attrs = data
  elsif data.kind_of?Navigation
    if data.raw_attrs
      @raw_attrs = data.raw_attrs
    else
      @raw_attrs = {}
    end
  else
    raise ArgumentError.new("Navigation data must be JSON String or Hash, but was #{data.class}.")
  end
end

Instance Attribute Details

- (String, UU::OS::UESURI) action

Navigation action. Can be UESURI or value from NavigationAction.

Parameters:

Returns:



24
25
26
# File 'uu_adk-0.28.16/lib/uu/os/vuc/navigation.rb', line 24

def action
  @action
end

- (UU::OS::VUC::Navigation::Progress) progress (readonly)

Progress dialog settings (progress must be enabled via action).



28
29
30
# File 'uu_adk-0.28.16/lib/uu/os/vuc/navigation.rb', line 28

def progress
  @progress
end

Class Method Details

+ (String) create_download_action(download_uri)

Creates action for launching download from client (browser).

Examples:

# end VUC event processing by downloading an attachment
view.navigation.action = UU::OS::VUC::Navigation.create_download_action('ues:TER:ART:ATTACHMENT')

Parameters:

  • download_uri (String, UU::OS::UESURI)

    The UES-URI which will end with download when used.

Returns:

  • (String)

    Action (URI) for launching download.



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'uu_adk-0.28.16/lib/uu/os/vuc/navigation.rb', line 87

def self.create_download_action(download_uri)
  if download_uri.nil? || (download_uri.kind_of?(String) && download_uri.empty?)
    return download_uri
  end
  unless (download_uri.kind_of?(String) && (download_uri.start_with?('ues:') || download_uri.start_with?('uu-uds:'))) || download_uri.kind_of?(UU::OS::UESURI)
    raise ArgumentError.new("download_uri must be UES-URI instance or URI string containing UES-URI or UDS-URI, but it was #{download_uri}.")
  end
  uri = UU::OS::UESURI.new(download_uri)
  p = []
  p = uri.parameters unless uri.parameters.nil?
  win_params = p.drop_while { |it| it.name != 'windowParameters' }.first
  if !win_params.nil? && win_params.value.start_with?('{')
    win_params = JSON.parse(win_params.value, :symbolize_names => true)
  else
    win_params = {}
  end
  win_params[:target] = 'DOWNLOAD'
  action_uri_b = UU::OS::UESURIBuilder.parse_uesuri(uri).clear_parameters()
  p.each { |it| action_uri_b.add_parameter(it.name, it.value) unless it.name == 'windowParameters' }
  action_uri_b.add_parameter('windowParameters', win_params.to_json)
  uri.schema + ':' + action_uri_b.to_uesuri.to_s.gsub(/^ues:/, "") # UESURIBuilder currently forces scheme to 'ues:' but the initial URI might have different one, e.g. uu-uds:
end