Module: Trees::ClassMethods

Defined in:
backend/app/model/mixins/trees.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) assemble_tree(node, links, properties)



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'backend/app/model/mixins/trees.rb', line 227

def assemble_tree(node, links, properties)
  result = properties[node].clone

  if !result.has_key?('has_children')
    result['has_children'] = !!links[node]
  end

  if links[node]
    result['children'] = links[node].sort_by(&:first).map do |position, child_id|
      assemble_tree(child_id, links, properties)
    end
  else
    result['children'] = []
  end

  result
end

- (Object) calculate_object_graph(object_graph, opts = {})



257
258
259
260
261
262
263
264
265
266
267
268
269
270
# File 'backend/app/model/mixins/trees.rb', line 257

def calculate_object_graph(object_graph, opts = {})
  object_graph.each do |model, id_list|
    next if self != model

    ids = node_model.any_repo.filter(:root_record_id => id_list).
                     select(:id).map {|row|
      row[:id]
    }

    object_graph.add_objects(node_model, ids)
  end

  super
end

- (Object) node_model



222
223
224
# File 'backend/app/model/mixins/trees.rb', line 222

def node_model
  Kernel.const_get(node_type.to_s.camelize)
end

- (Object) node_type



217
218
219
# File 'backend/app/model/mixins/trees.rb', line 217

def node_type
  @node_type
end

- (Object) root_type



212
213
214
# File 'backend/app/model/mixins/trees.rb', line 212

def root_type
  @root_type
end

- (Object) sequel_to_jsonmodel(objs, opts = {})



246
247
248
249
250
251
252
253
254
# File 'backend/app/model/mixins/trees.rb', line 246

def sequel_to_jsonmodel(objs, opts = {})
  jsons = super

  jsons.zip(objs).each do |json, obj|
    json['tree'] = {'ref' => obj.uri + '/tree'}
  end

  jsons
end

- (Object) tree_of(root_type, node_type)



206
207
208
209
# File 'backend/app/model/mixins/trees.rb', line 206

def tree_of(root_type, node_type)
  @root_type = root_type
  @node_type = node_type
end