Class: Mxrb::Dsl::PageBuilder

Inherits:
Object
  • Object
show all
Includes:
WidgetDsl
Defined in:
lib/mxrb/dsl/builder.rb

Instance Method Summary collapse

Methods included from WidgetDsl

#button, #check_box, #container, #data_grid, #date_picker, #drop_down, #native_widget, #number_input, #pluggable_widget, #reference_selector, #snippet, #tab_control, #text, #text_area, #text_box

Constructor Details

#initialize(name) ⇒ PageBuilder

Returns a new instance of PageBuilder.



1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
# File 'lib/mxrb/dsl/builder.rb', line 1211

def initialize(name)
  @name          = name.to_s
  @layout        = "Atlas_Default"
  @title         = name.to_s
  @popup         = false
  @data_source   = nil
  @events        = []
  @widgets       = []
  @allowed_roles = nil
  @deep_structure = nil
end

Instance Method Details

#allowed_roles(*roles) ⇒ Object



1239
1240
1241
# File 'lib/mxrb/dsl/builder.rb', line 1239

def allowed_roles(*roles)
  @allowed_roles = roles.map(&:to_s)
end

#bson_binary(base64, subtype: :generic) ⇒ Object



1235
1236
1237
# File 'lib/mxrb/dsl/builder.rb', line 1235

def bson_binary(base64, subtype: :generic)
  BSON::Binary.new(Base64.strict_decode64(base64), subtype.to_sym)
end

#data_source(query: nil, microflow: nil, nanoflow: nil) ⇒ Object

Raises:

  • (ArgumentError)


1243
1244
1245
1246
1247
# File 'lib/mxrb/dsl/builder.rb', line 1243

def data_source(query: nil, microflow: nil, nanoflow: nil)
  choices = { microflow: microflow || query, nanoflow: nanoflow }.compact
  raise ArgumentError, "data_source requires exactly one target" unless choices.size == 1
  @data_source = { kind: choices.keys.first, name: choices.values.first.to_s }
end

#deep_structure(value) ⇒ Object

Full, editable Mendix page payload for structures without a concise typed DSL yet (layout grids, custom widgets, list views, etc.).

Raises:

  • (ArgumentError)


1229
1230
1231
1232
1233
# File 'lib/mxrb/dsl/builder.rb', line 1229

def deep_structure(value)
  raise ArgumentError, "deep_structure requires a Hash" unless value.is_a?(Hash)

  @deep_structure = value
end

#layout(l) ⇒ Object



1223
# File 'lib/mxrb/dsl/builder.rb', line 1223

def layout(l) = (@layout = l)

#popup!Object



1225
# File 'lib/mxrb/dsl/builder.rb', line 1225

def popup!    = (@popup = true)

#title(t) ⇒ Object



1224
# File 'lib/mxrb/dsl/builder.rb', line 1224

def title(t)  = (@title = t)

#to_hObject



1260
1261
1262
1263
1264
1265
1266
# File 'lib/mxrb/dsl/builder.rb', line 1260

def to_h
  {
    name: @name, layout: @layout, title: @title, popup: @popup,
    data_source: @data_source, events: @events, widgets: @widgets,
    allowed_roles: @allowed_roles, deep_structure: @deep_structure
  }
end