Class: GoodData::Dashboard

Inherits:
MdObject show all
Includes:
Mixin::Lockable
Defined in:
lib/gooddata/models/metadata/dashboard.rb

Constant Summary collapse

EMPTY_OBJECT =
{
  'projectDashboard' => {
    'content' => {
      'tabs' => [],
      'filters' => []
    },
    'meta' => {
      'tags' => '',
      'summary' => '',
      'title' => ''
    }
  }
}
ASSIGNABLE_MEMBERS =
[
  :filters,
  :tabs,
  :tags,
  :summary,
  :title
]

Constants inherited from MdObject

MdObject::IDENTIFIERS_CFG, MdObject::MD_OBJ_CTG

Constants included from Mixin::MdIdToUri

Mixin::MdIdToUri::IDENTIFIERS_CFG

Constants included from Mixin::MdObjectIndexer

Mixin::MdObjectIndexer::MD_OBJ_CTG

Instance Attribute Summary

Attributes inherited from Rest::Object

#client, #json, #project

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixin::Lockable

#lock, #lock!, #lock_with_dependencies!, #locked?, #unlock, #unlock!, #unlock_with_dependencies!, #unlocked?

Methods inherited from MdObject

#==, #add_tag, #browser_uri, #delete, #deprecated, #deprecated=, find_replaceable_values, #initialize, #listed?, #project, #reload!, #remove_tag, replace, #replace!, replace_bracketed, replace_quoted, #save, #save_as, #tag_set, #unlisted, #unlisted=, #validate

Methods included from Mixin::MdIdToUri

#identifier_to_uri

Methods included from Mixin::MdObjectIndexer

#[]

Methods included from Mixin::MdObjectQuery

#all, #dependency, #dependency?, #query, #usedby, #usedby?, #using, #using?

Methods included from Mixin::MdFinders

#find_by_identifier, #find_by_tag, #find_by_title, #find_first_by_identifier, #find_first_by_title

Methods included from Mixin::MdObjId

#uri_obj_id

Methods included from Mixin::MdGrantees

#change_permission, #grant, #grantees, #revoke

Methods included from Mixin::MdRelations

#dependency, #dependency?, #usedby, #usedby?, #using, #using?

Methods included from Mixin::ObjId

#obj_id

Methods included from Mixin::Links

#links

Methods inherited from Rest::Resource

#initialize

Methods inherited from Rest::Object

client, default_client, #initialize, #saved?

Methods included from Mixin::DataPropertyReader

#data_property_reader

Methods included from Mixin::DataPropertyWriter

#data_property_writer

Methods included from Mixin::MetaPropertyReader

#metadata_property_reader

Methods included from Mixin::MetaPropertyWriter

#metadata_property_writer

Methods included from Mixin::MetaGetter

#meta

Methods included from Mixin::DataGetter

#data

Methods included from Mixin::RootKeyGetter

#root_key

Methods included from Mixin::ContentGetter

#content

Constructor Details

This class inherits a constructor from GoodData::MdObject

Class Method Details

.all(options = { :client => GoodData.connection, :project => GoodData.project }) ⇒ Array<GoodData::MdObject> | Array<Hash>

Method intended to get all objects of that type in a specified project

Parameters:

  • options (Hash) (defaults to: { :client => GoodData.connection, :project => GoodData.project })

    the options hash

Options Hash (options):

  • :full (Boolean)

    if passed true the subclass can decide to pull in full objects. This is desirable from the usability POV but unfortunately has negative impact on performance so it is not the default

Returns:

  • (Array<GoodData::MdObject> | Array<Hash>)

    Return the appropriate metadata objects or their representation



51
52
53
# File 'lib/gooddata/models/metadata/dashboard.rb', line 51

def all(options = { :client => GoodData.connection, :project => GoodData.project })
  query('projectDashboard', Dashboard, options)
end

.create(dashboard = {}, options = { :client => GoodData.client, :project => GoodData.project }) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/gooddata/models/metadata/dashboard.rb', line 55

def create(dashboard = {}, options = { :client => GoodData.client, :project => GoodData.project })
  client, project = GoodData.get_client_and_project(GoodData::Helpers.symbolize_keys(options))

  res = client.create(Dashboard, GoodData::Helpers.deep_dup(GoodData::Helpers.stringify_keys(EMPTY_OBJECT)), :project => project)
  dashboard.each do |k, v|
    res.send("#{k}=", v) if ASSIGNABLE_MEMBERS.include? k
  end
  res
end

Instance Method Details

#add_tab(tab) ⇒ Object Also known as: create_tab



66
67
68
69
70
# File 'lib/gooddata/models/metadata/dashboard.rb', line 66

def add_tab(tab)
  new_tab = GoodData::DashboardTab.create(self, tab)
  content['tabs'] << new_tab.json
  new_tab
end

#export(format, options = {}) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/gooddata/models/metadata/dashboard.rb', line 78

def export(format, options = {})
  supported_formats = [:pdf]
  fail "Wrong format provied \"#{format}\". Only supports formats #{supported_formats.join(', ')}" unless supported_formats.include?(format)
  tab = options[:tab] || ''

  req_uri = "/gdc/projects/#{project.pid}/clientexport"
  x = client.post(req_uri, 'clientExport' => { 'url' => "#{client.connection.server_url}/dashboard.html#project=#{project.uri}&dashboard=#{uri}&tab=#{tab}&export=1", 'name' => title })
  client.poll_on_code(x['asyncTask']['link']['poll'], options.merge(process: false))
end

#exportable?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/gooddata/models/metadata/dashboard.rb', line 74

def exportable?
  true
end

#replace(mapping) ⇒ GoodData::Dashboard

Method used for replacing values in their state according to mapping. Can be used to replace any values but it is typically used to replace the URIs. Returns a new object of the same type.

Parameters:

  • Mapping (Array<Array>)

    specifying what should be exchanged for what. As mapping should be used output of GoodData::Helpers.prepare_mapping.

Returns:



92
93
94
95
96
# File 'lib/gooddata/models/metadata/dashboard.rb', line 92

def replace(mapping)
  x = GoodData::MdObject.replace_quoted(self, mapping)
  vals = GoodData::MdObject.find_replaceable_values(self, mapping)
  GoodData::MdObject.replace_quoted(x, vals)
end

#tabsObject



98
99
100
101
102
# File 'lib/gooddata/models/metadata/dashboard.rb', line 98

def tabs
  content['tabs'].map do |tab|
    GoodData::DashboardTab.new(self, tab)
  end
end

#tabs_idsObject



104
105
106
# File 'lib/gooddata/models/metadata/dashboard.rb', line 104

def tabs_ids
  tabs.map { |t| t['identifier'] }
end