foreman_statistics 0.1.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_statistics/api/v2/statistics_controller.rb +9 -1
  3. data/app/controllers/foreman_statistics/api/v2/trends_controller.rb +8 -0
  4. data/app/jobs/foreman_statistics/trend_counter_job.rb +23 -0
  5. data/app/views/foreman_statistics/layouts/application_react.html.erb +1 -2
  6. data/app/views/foreman_statistics/trends/_empty_data.html.erb +0 -1
  7. data/app/views/foreman_statistics/trends/index.html.erb +3 -12
  8. data/app/views/foreman_statistics/trends/welcome.html.erb +1 -1
  9. data/db/migrate/20200605153005_migrate_core_types.rb +6 -2
  10. data/lib/foreman_statistics/engine.rb +13 -1
  11. data/lib/foreman_statistics/version.rb +1 -1
  12. data/lib/tasks/foreman_statistics_tasks.rake +3 -2
  13. data/locale/action_names.rb +5 -0
  14. data/locale/en/LC_MESSAGES/foreman_statistics.mo +0 -0
  15. data/locale/en/foreman_statistics.edit.po +258 -0
  16. data/locale/en/foreman_statistics.po +181 -2
  17. data/locale/en/foreman_statistics.po.time_stamp +0 -0
  18. data/locale/foreman_statistics.pot +265 -8
  19. data/locale/gemspec.rb +1 -1
  20. data/package.json +42 -0
  21. data/test/functional/foreman_statistics/api/v2/statistics_controller_test.rb +1 -1
  22. data/test/functional/foreman_statistics/api/v2/trends_controller_test.rb +1 -1
  23. data/test/functional/foreman_statistics/statistics_controller_test.rb +5 -7
  24. data/test/functional/foreman_statistics/trends_controller_test.rb +3 -3
  25. data/test/models/foreman_statistics/trend_counter_test.rb +1 -1
  26. data/test/models/foreman_statistics/trend_test.rb +1 -1
  27. data/test/{test_plugin_helper.rb → test_statistics_helper.rb} +0 -0
  28. data/test/unit/foreman_statistics/access_permissions_test.rb +1 -1
  29. data/test/unit/foreman_statistics/statistics_test.rb +1 -1
  30. data/test/unit/foreman_statistics_test.rb +1 -1
  31. data/test/unit/tasks/foreman_statistics_tasks_test.rb +1 -1
  32. data/webpack/__mocks__/foremanReact/API.js +7 -0
  33. data/webpack/__mocks__/foremanReact/common/HOC.js +24 -0
  34. data/webpack/__mocks__/foremanReact/common/I18n.js +3 -0
  35. data/webpack/__mocks__/foremanReact/common/helpers.js +1 -0
  36. data/webpack/__mocks__/foremanReact/common/urlHelpers.js +1 -0
  37. data/webpack/__mocks__/foremanReact/components/ChartBox/index.js +2 -0
  38. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalActions.js +2 -0
  39. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +10 -0
  40. data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +4 -0
  41. data/webpack/__mocks__/foremanReact/components/Layout/LayoutActions.js +2 -0
  42. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
  43. data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +5 -0
  44. data/webpack/__mocks__/foremanReact/components/common/MessageBox.js +4 -0
  45. data/webpack/__mocks__/foremanReact/components/common/dates/LongDateTime.js +5 -0
  46. data/webpack/__mocks__/foremanReact/components/common/dates/RelativeDateTime.js +3 -0
  47. data/webpack/__mocks__/foremanReact/components/common/table.js +5 -0
  48. data/webpack/__mocks__/foremanReact/components/common/table/actionsHelpers/actionTypeCreator.js +7 -0
  49. data/webpack/__mocks__/foremanReact/constants.js +24 -0
  50. data/webpack/__mocks__/foremanReact/readme.md +11 -0
  51. data/webpack/__mocks__/foremanReact/redux/actions/toasts.js +8 -0
  52. data/webpack/__mocks__/foremanReact/routes/common/PageLayout/PageLayout.js +10 -0
  53. data/webpack/__mocks__/foremanReact/routes/common/PageLayout/components/ExportButton/ExportButton.js +5 -0
  54. data/webpack/__mocks__/foremanReact/routes/common/reducerHOC/withDataReducer.js +35 -0
  55. data/webpack/fills_index.js +15 -0
  56. data/webpack/index.js +21 -0
  57. data/webpack/src/Components/StatisticsChartsList/StatisticsChartsList.fixtures.js +19 -0
  58. data/webpack/src/Components/StatisticsChartsList/StatisticsChartsList.test.js +18 -0
  59. data/webpack/src/Components/StatisticsChartsList/StatisticsChartsListStyles.scss +28 -0
  60. data/webpack/src/Components/StatisticsChartsList/__snapshots__/StatisticsChartsList.test.js.snap +42 -0
  61. data/webpack/src/Components/StatisticsChartsList/index.js +32 -0
  62. data/webpack/src/ForemanStatistics.js +11 -0
  63. data/webpack/src/Router/StatisticsPage/Statistics/Statistics.js +27 -0
  64. data/webpack/src/Router/StatisticsPage/StatisticsPage.fixtures.js +11 -0
  65. data/webpack/src/Router/StatisticsPage/StatisticsPage.js +21 -0
  66. data/webpack/src/Router/StatisticsPage/StatisticsPageActions.js +43 -0
  67. data/webpack/src/Router/StatisticsPage/StatisticsPageSelectors.js +13 -0
  68. data/webpack/src/Router/StatisticsPage/__tests__/StatisticsPage.test.js +12 -0
  69. data/webpack/src/Router/StatisticsPage/__tests__/StatisticsPageActions.test.js +27 -0
  70. data/webpack/src/Router/StatisticsPage/__tests__/StatisticsPageSelectors.test.js +34 -0
  71. data/webpack/src/Router/StatisticsPage/__tests__/__snapshots__/StatisticsPage.test.js.snap +32 -0
  72. data/webpack/src/Router/StatisticsPage/__tests__/__snapshots__/StatisticsPageActions.test.js.snap +54 -0
  73. data/webpack/src/Router/StatisticsPage/__tests__/__snapshots__/StatisticsPageSelectors.test.js.snap +35 -0
  74. data/webpack/src/Router/StatisticsPage/constants.js +4 -0
  75. data/webpack/src/Router/StatisticsPage/index.js +36 -0
  76. data/webpack/src/Router/__snapshots__/routes.test.js.snap +47 -0
  77. data/webpack/src/Router/index.js +14 -0
  78. data/webpack/src/Router/routes.js +11 -0
  79. data/webpack/src/Router/routes.test.js +27 -0
  80. data/webpack/src/index.js +1 -0
  81. data/webpack/src/reducers.js +9 -0
  82. data/webpack/src/trends.js +7 -0
  83. data/webpack/src/trends.test.js +44 -0
  84. metadata +67 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0094cb8e21670259fbfd32cfe6c5655734a13dd8ce3a9798e12ff9e1b4a9d3a2'
4
- data.tar.gz: 91c6c4af0fe04f4f913f20df878f6f94f82a7bea432c569317324f3523f6ba61
3
+ metadata.gz: 16e30e607469d7d04baec4a0e68f5dfbf8b5bcbd992e6465978089db5852da01
4
+ data.tar.gz: b3454888914a4426634f90493134f6c41f5b1fff1e23d4b4804821e1830ce3d2
5
5
  SHA512:
6
- metadata.gz: ea438fe613e741f923a4885c18cc4368f916c59e84a424a324328a707262e46f868035a04f114bc7426b23f381d67b7558f4193383541b7b26f327ff63dd0d4f
7
- data.tar.gz: 0c615fb794f7cf4e194680b12abe8373e3efc8f6c3347f748f524c105eed5ba3a7777d3b687aa89795aa15e9190f22c20e3d76dcc9286411a20185e5f7dcfe9a
6
+ metadata.gz: 75cadf6efe100a11c4fff5e0d0902bf24caa7aeff4f7fb3be8dc0eebc095c51d24731dbc617e6cf83c3555813c32c5bb75ce512f1e4e50098e97eb81d58de6a4
7
+ data.tar.gz: 1b087e7a64d26f1f5c57ae873edb975ffd947609bae07d1aea8a038a8dbdae4a4476fa5790b24a42372f424852a55861536332baf7d7b9cc8834144337b8f7e2
@@ -2,13 +2,14 @@ module ForemanStatistics
2
2
  module Api
3
3
  module V2
4
4
  class StatisticsController < ::Api::V2::BaseController
5
+ before_action :show_deprecation_for_core_routes
6
+
5
7
  resource_description do
6
8
  api_version 'v2'
7
9
  api_base_url '/foreman_statistics/api'
8
10
  end
9
11
 
10
12
  api :GET, '/statistics/', N_('Get statistics')
11
-
12
13
  def index
13
14
  @os_count = Host.authorized(:view_hosts).count_distribution :operatingsystem
14
15
  @arch_count = Host.authorized(:view_hosts).count_distribution :architecture
@@ -27,6 +28,13 @@ module ForemanStatistics
27
28
  :model_count => @model_count, :mem_size => @mem_size, :mem_free => @mem_free,
28
29
  :swap_free => @swap_free, :mem_totsize => @mem_totsize, :mem_totfree => @mem_totfree }
29
30
  end
31
+
32
+ private
33
+
34
+ def show_deprecation_for_core_routes
35
+ return if request.path.starts_with?('/foreman_statistics')
36
+ Foreman::Deprecation.api_deprecation_warning('/api/v2/statistics API endpoint is deprecated, please use /foreman_statistics/api/v2/statistics instead')
37
+ end
30
38
  end
31
39
  end
32
40
  end
@@ -4,6 +4,7 @@ module ForemanStatistics
4
4
  class TrendsController < ::Api::V2::BaseController
5
5
  include ForemanStatistics::Parameters::Trend
6
6
 
7
+ before_action :show_deprecation_for_core_routes
7
8
  before_action :find_resource, :only => %i[show destroy]
8
9
 
9
10
  TRENDABLE_TYPES = %w[
@@ -52,6 +53,13 @@ module ForemanStatistics
52
53
  def resource_scope(options = {})
53
54
  @resource_scope ||= scope_for(ForemanStatistics::Trend.types, options)
54
55
  end
56
+
57
+ private
58
+
59
+ def show_deprecation_for_core_routes
60
+ return if request.path.starts_with?('/foreman_statistics')
61
+ Foreman::Deprecation.api_deprecation_warning('/api/v2/trends API endpoints are deprecated, please use /foreman_statistics/api/v2/trends instead')
62
+ end
55
63
  end
56
64
  end
57
65
  end
@@ -0,0 +1,23 @@
1
+ module ForemanStatistics
2
+ class TrendCounterJob < ApplicationJob
3
+ def perform(options = {})
4
+ start_time = Time.zone.now
5
+ ForemanStatistics::TrendImporter.update!
6
+ ensure
7
+ duration = start_time.is_a?(Time) ? Time.zone.now - start_time : 0
8
+ self.class.set(wait: [30.minutes - duration, 0].max).perform_later(options)
9
+ end
10
+
11
+ rescue_from(StandardError) do |error|
12
+ Foreman::Logging.logger('background').error(
13
+ 'Trend Counter Job: '\
14
+ "Error while creating new data #{error.message}"
15
+ )
16
+ raise error # propagate the error to the tasking system to properly report it there
17
+ end
18
+
19
+ def humanized_name
20
+ _('Trend Counter Job')
21
+ end
22
+ end
23
+ end
@@ -10,7 +10,6 @@
10
10
  <%= notifications %>
11
11
  <div id="organization-id" data-id="<%= Organization.current.id if Organization.current %>" ></div>
12
12
  <div id="user-id" data-id="<%= User.current.id if User.current %>" ></div>
13
- <div id="foremanStatisticsRoot"></div>
13
+ <%= react_component('ForemanStatistics') %>
14
14
  <% end %>
15
15
  <%= render file: "layouts/base" %>
16
- <%= mount_react_component('ForemanStatistics', '#foremanStatisticsRoot') %>
@@ -2,6 +2,5 @@
2
2
  <div class="row">
3
3
  <div class="stats-well col-md-12">
4
4
  <p><strong><%= _('No data for this trend.') %></strong></p>
5
- <div><%= (_("Is the cron job that executes %s enabled?") % "<span class='black'>foreman-rake foreman_statistics:trends:counter</span>").html_safe %></div>
6
5
  </div>
7
6
  </div>
@@ -1,16 +1,7 @@
1
1
  <%= javascript 'charts' %>
2
2
  <% title _("Trends") %>
3
- <% title_actions new_link(_("Add Trend Counter")),
3
+ <% title_actions new_link(_("Add Trend Counter"), engine: foreman_statistics),
4
4
  documentation_button('4.1.3Trends') %>
5
- <% if @trends.empty? %>
6
- <%= alert :class => 'alert-info', :header => _("No trend counter defined"),
7
- :text => (_("To define trend counters, use the Add Trend Counter button.</br> To start collecting trend data, set a cron job to execute 'foreman-rake foreman_statistics:trends:counter' at least every %s minutes.") % Setting[:outofsync_interval]).html_safe %>
8
- <% end %>
9
-
10
- <% if @trends.any? and ForemanStatistics::TrendCounter.unconfigured? %>
11
- <%= alert :class => 'alert-info', :header => _("No trend counter found"),
12
- :text => (_("To start collecting trend data, set a cron job to execute <span class='black'>foreman-rake foreman_statistics:trends:counter</span> at least every %s minutes.") % Setting[:outofsync_interval]).html_safe %>
13
- <% end %>
14
5
 
15
6
  <table class="<%= table_css_classes 'table-fixed' %>">
16
7
  <thead>
@@ -33,7 +24,7 @@
33
24
  </tbody>
34
25
  </table>
35
26
  <%= will_paginate_with_info @trends %>
36
- <% unless ForemanStatistics::TrendCounter.unconfigured? %>
27
+ <% if (latest_counter_time = ForemanStatistics::TrendCounter.maximum(:created_at)) %>
37
28
  <%= _("Last update:") %>
38
- <%= date_time_relative(ForemanStatistics::TrendCounter.order(:created_at).last.created_at) %>
29
+ <%= date_time_relative(latest_counter_time) %>
39
30
  <% end %>
@@ -7,6 +7,6 @@
7
7
  <p><%= _("Trends in Foreman allow you to track changes in your infrastructure over time. It allows you to track both Foreman related information and to any fact. The Trend pages give a graph of how the number of hosts with that value have changed over time, and list the current hosts.") %></p>
8
8
  <p><%= link_to _('Learn more about this in the documentation.'), documentation_url("4.1.3Trends")%></p>
9
9
  <div class="blank-slate-pf-main-action">
10
- <%= new_link(_("Add Trend Counter"), :class => 'btn-lg') %>
10
+ <%= new_link(_("Add Trend Counter"), { engine: foreman_statistics }, :class => 'btn-lg') %>
11
11
  </div>
12
12
  </div>
@@ -1,15 +1,19 @@
1
1
  class MigrateCoreTypes < ActiveRecord::Migration[6.0]
2
+ class FakeTrend < ApplicationRecord
3
+ self.table_name = 'trends'
4
+ end
5
+
2
6
  def up
3
7
  Permission.where(:resource_type => 'Trend').update_all(:resource_type => 'ForemanStatistics::Trend')
4
8
  %w[ForemanTrend FactTrend Trend].each do |t|
5
- Trend.where(:type => t).update_all(:type => "ForemanStatistics::#{t}")
9
+ FakeTrend.where(:type => t).update_all(:type => "ForemanStatistics::#{t}")
6
10
  end
7
11
  end
8
12
 
9
13
  def down
10
14
  Permission.where(:resource_type => 'ForemanStatistics::Trend').update_all(:resource_type => 'Trend')
11
15
  %w[ForemanTrend FactTrend Trend].each do |t|
12
- Trend.where(:type => "ForemanStatistics::#{t}").update_all(:type => t)
16
+ FakeTrend.where(:type => "ForemanStatistics::#{t}").update_all(:type => t)
13
17
  end
14
18
  end
15
19
  end
@@ -8,7 +8,7 @@ module ForemanStatistics
8
8
  config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
9
9
  config.autoload_paths += Dir["#{config.root}/app/overrides"]
10
10
 
11
- config.paths['db/migrate'] << 'db/migrate_foreman' if Gem::Dependency.new('', '>= 2.2').match?('', SETTINGS[:version])
11
+ config.paths['db/migrate'] << 'db/migrate_foreman' unless Gem::Version.new(SETTINGS[:version]).release < Gem::Version.new('2.2')
12
12
 
13
13
  # Add any db migrations
14
14
  initializer 'foreman_statistics.load_app_instance_data' do |app|
@@ -73,6 +73,18 @@ module ForemanStatistics
73
73
  end
74
74
  end
75
75
 
76
+ initializer 'foreman_statistics.apipie' do
77
+ p = Foreman::Plugin.find(:foreman_statistics)
78
+ p.apipie_documented_controllers(["#{ForemanStatistics::Engine.root}/app/controllers/foreman_statistics/api/v2/*.rb"])
79
+ Apipie.configuration.checksum_path += ['/foreman_statistics/api/']
80
+ end
81
+
82
+ initializer 'foreman_statistics.trend_counter_job' do
83
+ ::Foreman::Application.dynflow.config.on_init do |world|
84
+ TrendCounterJob.spawn_if_missing(world)
85
+ end
86
+ end
87
+
76
88
  # Include concerns in this config.to_prepare block
77
89
  config.to_prepare do
78
90
  ::ComputeResource.include ForemanStatistics::ComputeResourceDecorations
@@ -1,3 +1,3 @@
1
1
  module ForemanStatistics
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -45,8 +45,9 @@ end
45
45
  namespace :test do
46
46
  desc 'Test ForemanStatistics'
47
47
  Rake::TestTask.new(:foreman_statistics) do |t|
48
- test_dir = File.join(File.dirname(__FILE__), '../..', 'test')
49
- t.libs << ['test', test_dir]
48
+ test_dir = File.expand_path('../../test', __dir__)
49
+ t.libs << 'test'
50
+ t.libs << test_dir
50
51
  t.pattern = "#{test_dir}/**/*_test.rb"
51
52
  t.verbose = true
52
53
  t.warning = false
@@ -0,0 +1,5 @@
1
+ # Autogenerated!
2
+ _('Action with sub plans')
3
+ _('Import facts')
4
+ _('Import Puppet classes')
5
+ _('Remote action:')
@@ -0,0 +1,258 @@
1
+ # foreman_statistics
2
+ #
3
+ # This file is distributed under the same license as foreman_statistics.
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: version 0.0.1\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "PO-Revision-Date: 2014-08-20 08:54+0100\n"
10
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
11
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
12
+ "Language: \n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
+
18
+ #: ../app/controllers/foreman_statistics/api/v2/statistics_controller.rb:12
19
+ msgid "Get statistics"
20
+ msgstr ""
21
+
22
+ #: ../app/controllers/foreman_statistics/api/v2/trends_controller.rb:20
23
+ msgid "List of trends counters"
24
+ msgstr ""
25
+
26
+ #: ../app/controllers/foreman_statistics/api/v2/trends_controller.rb:25
27
+ msgid "Show a trend"
28
+ msgstr ""
29
+
30
+ #: ../app/controllers/foreman_statistics/api/v2/trends_controller.rb:29
31
+ msgid "Create a trend counter"
32
+ msgstr ""
33
+
34
+ #: ../app/controllers/foreman_statistics/api/v2/trends_controller.rb:42
35
+ msgid "Delete a trend counter"
36
+ msgstr ""
37
+
38
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:6
39
+ msgid "Environment"
40
+ msgstr ""
41
+
42
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:6
43
+ msgid "Operating system"
44
+ msgstr ""
45
+
46
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:7
47
+ msgid "Model"
48
+ msgstr ""
49
+
50
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:7
51
+ msgid "Facts"
52
+ msgstr ""
53
+
54
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:7
55
+ msgid "Host group"
56
+ msgstr ""
57
+
58
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:7
59
+ msgid "Compute resource"
60
+ msgstr ""
61
+
62
+ #: ../app/helpers/foreman_statistics/trends_helper.rb:14
63
+ msgid "Trend of the last %s days."
64
+ msgstr ""
65
+
66
+ #: ../app/jobs/foreman_statistics/trend_counter_job.rb:20
67
+ msgid "Trend Counter Job"
68
+ msgstr ""
69
+
70
+ #: ../app/models/concerns/foreman_statistics/general_setting_decorations.rb:12
71
+ msgid "Max days for Trends graphs"
72
+ msgstr ""
73
+
74
+ #: ../app/models/concerns/foreman_statistics/general_setting_decorations.rb:12
75
+ msgid "Max trends"
76
+ msgstr ""
77
+
78
+ #: ../app/services/foreman_statistics/statistics.rb:6
79
+ msgid "Architecture Distribution"
80
+ msgstr ""
81
+
82
+ #: ../app/services/foreman_statistics/statistics.rb:7
83
+ msgid "Environment Distribution"
84
+ msgstr ""
85
+
86
+ #: ../app/services/foreman_statistics/statistics.rb:8
87
+ msgid "Host Group Distribution"
88
+ msgstr ""
89
+
90
+ #: ../app/services/foreman_statistics/statistics.rb:9
91
+ msgid "Compute Resource Distribution"
92
+ msgstr ""
93
+
94
+ #: ../app/services/foreman_statistics/statistics.rb:10
95
+ msgid "Number of CPUs"
96
+ msgstr ""
97
+
98
+ #: ../app/services/foreman_statistics/statistics.rb:11
99
+ msgid "Hardware"
100
+ msgstr ""
101
+
102
+ #: ../app/services/foreman_statistics/statistics.rb:12
103
+ msgid "Average Memory Usage"
104
+ msgstr ""
105
+
106
+ #: ../app/services/foreman_statistics/statistics.rb:13
107
+ msgid "Average Swap Usage"
108
+ msgstr ""
109
+
110
+ #: ../app/services/foreman_statistics/statistics.rb:14
111
+ msgid "Class Distribution"
112
+ msgstr ""
113
+
114
+ #: ../app/services/foreman_statistics/statistics.rb:15
115
+ msgid "Location Distribution"
116
+ msgstr ""
117
+
118
+ #: ../app/services/foreman_statistics/statistics.rb:16
119
+ msgid "Organization Distribution"
120
+ msgstr ""
121
+
122
+ #: ../app/services/foreman_statistics/statistics/count_numerical_fact_pair.rb:22
123
+ msgid "free memory"
124
+ msgstr ""
125
+
126
+ #: ../app/services/foreman_statistics/statistics/count_numerical_fact_pair.rb:26
127
+ msgid "used memory"
128
+ msgstr ""
129
+
130
+ #: ../app/views/foreman_statistics/trends/_empty_data.html.erb:1 ../app/views/foreman_statistics/trends/show.html.erb:2
131
+ msgid "Trends for %s"
132
+ msgstr ""
133
+
134
+ #: ../app/views/foreman_statistics/trends/_empty_data.html.erb:4
135
+ msgid "No data for this trend."
136
+ msgstr ""
137
+
138
+ #: ../app/views/foreman_statistics/trends/_form.html.erb:4
139
+ msgid "Please Select"
140
+ msgstr ""
141
+
142
+ #: ../app/views/foreman_statistics/trends/_hosts.html.erb:7
143
+ msgid "Show Host"
144
+ msgstr ""
145
+
146
+ #: ../app/views/foreman_statistics/trends/edit.html.erb:1
147
+ msgid "Edit Trend %s"
148
+ msgstr ""
149
+
150
+ #: ../app/views/foreman_statistics/trends/edit.html.erb:8
151
+ msgid "Fact Name"
152
+ msgstr ""
153
+
154
+ #: ../app/views/foreman_statistics/trends/edit.html.erb:9 ../app/views/foreman_statistics/trends/edit.html.erb:30
155
+ msgid "Display Name"
156
+ msgstr ""
157
+
158
+ #: ../app/views/foreman_statistics/trends/edit.html.erb:43
159
+ msgid "Cancel"
160
+ msgstr ""
161
+
162
+ #: ../app/views/foreman_statistics/trends/edit.html.erb:44
163
+ msgid "Submit"
164
+ msgstr ""
165
+
166
+ #: ../app/views/foreman_statistics/trends/index.html.erb:2 ../app/views/foreman_statistics/trends/welcome.html.erb:1 ../app/views/foreman_statistics/trends/welcome.html.erb:6 ../lib/foreman_statistics/engine.rb:63
167
+ msgid "Trends"
168
+ msgstr ""
169
+
170
+ #: ../app/views/foreman_statistics/trends/index.html.erb:3 ../app/views/foreman_statistics/trends/welcome.html.erb:10
171
+ msgid "Add Trend Counter"
172
+ msgstr ""
173
+
174
+ #: ../app/views/foreman_statistics/trends/index.html.erb:9
175
+ msgid "Name"
176
+ msgstr ""
177
+
178
+ #: ../app/views/foreman_statistics/trends/index.html.erb:10
179
+ msgid "Action"
180
+ msgstr ""
181
+
182
+ #: ../app/views/foreman_statistics/trends/index.html.erb:16
183
+ msgid "Show Trends"
184
+ msgstr ""
185
+
186
+ #: ../app/views/foreman_statistics/trends/index.html.erb:19
187
+ msgid "Edit"
188
+ msgstr ""
189
+
190
+ #: ../app/views/foreman_statistics/trends/index.html.erb:20
191
+ msgid "Delete all the trend history for %s?"
192
+ msgstr ""
193
+
194
+ #: ../app/views/foreman_statistics/trends/index.html.erb:28
195
+ msgid "Last update:"
196
+ msgstr ""
197
+
198
+ #: ../app/views/foreman_statistics/trends/new.html.erb:1
199
+ msgid "Create Trend"
200
+ msgstr ""
201
+
202
+ #: ../app/views/foreman_statistics/trends/show.html.erb:7
203
+ msgid "last %s day"
204
+ msgid_plural "last %s days"
205
+ msgstr[0] ""
206
+ msgstr[1] ""
207
+
208
+ #: ../app/views/foreman_statistics/trends/show.html.erb:8
209
+ msgid "Number of Hosts"
210
+ msgstr ""
211
+
212
+ #: ../app/views/foreman_statistics/trends/show.html.erb:16
213
+ msgid "Hosts"
214
+ msgstr ""
215
+
216
+ #: ../app/views/foreman_statistics/trends/welcome.html.erb:7
217
+ msgid "Trends in Foreman allow you to track changes in your infrastructure over time. It allows you to track both Foreman related information and to any fact. The Trend pages give a graph of how the number of hosts with that value have changed over time, and list the current hosts."
218
+ msgstr ""
219
+
220
+ #: ../app/views/foreman_statistics/trends/welcome.html.erb:8
221
+ msgid "Learn more about this in the documentation."
222
+ msgstr ""
223
+
224
+ #: ../lib/foreman_statistics/engine.rb:69 ../webpack/src/Router/StatisticsPage/StatisticsPage.js:8
225
+ msgid "Statistics"
226
+ msgstr ""
227
+
228
+ #: ../webpack/src/Components/StatisticsChartsList/index.js:14
229
+ msgid "No data available"
230
+ msgstr ""
231
+
232
+ #: ../webpack/src/Components/StatisticsChartsList/index.js:15
233
+ msgid "Expand the chart"
234
+ msgstr ""
235
+
236
+ #: ../webpack/src/Router/StatisticsPage/Statistics/Statistics.js:13
237
+ msgid "No Charts To Load"
238
+ msgstr ""
239
+
240
+ #: action_names.rb:2
241
+ msgid "Action with sub plans"
242
+ msgstr ""
243
+
244
+ #: action_names.rb:3
245
+ msgid "Import facts"
246
+ msgstr ""
247
+
248
+ #: action_names.rb:4
249
+ msgid "Import Puppet classes"
250
+ msgstr ""
251
+
252
+ #: action_names.rb:5
253
+ msgid "Remote action:"
254
+ msgstr ""
255
+
256
+ #: gemspec.rb:2
257
+ msgid "Statistics and Trends for Foreman gives users overview of their infrastructure."
258
+ msgstr ""