help_desk_dashboard 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,19 +1,31 @@
1
1
  $stdout.sync = true
2
2
 
3
+ require_relative '../lib/help-desk-dashboard/config_loader'
4
+ require_relative '../lib/help-desk-dashboard/extensions'
3
5
  require_relative '../lib/help-desk-dashboard/provider_factory'
4
6
 
5
- ENV['HTTP_PROXY'] = nil
6
- ENV['CONFIG_FILE'] ||= 'config.json'
7
-
8
- config = JSON.parse File.read(ENV['CONFIG_FILE'])
9
- config['thread_limit'] = ENV['THREAD_LIMIT'] ||= '5'
7
+ config = load_config
10
8
  provider_factory = ProviderFactory.new
11
9
  provider = provider_factory.create config
12
- requests = provider.get_requests
10
+ requests = provider.get_requests.map do |r|
11
+ r.pick :id, :title, :status, :deadline, :assigned_to, :submitted_by, :submitted_on, :resolved_on
12
+ end
13
+
14
+ requests.each do |r|
15
+ user = config[:users].select { |u| u[:username] == r[:assigned_to] }[0]
16
+ r[:assigned_to] = user[:name] if user
17
+ user = config[:users].select { |u| u[:username] == r[:submitted_by] }[0]
18
+ r[:submitted_by] = user[:name] if user
19
+ end
20
+
21
+ data = {
22
+ title: config[:title],
23
+ requests: requests
24
+ }
13
25
 
14
26
  public_web_dir = File.join File.dirname(__FILE__) + '/../lib/help-desk-dashboard/web/public'
15
27
  data_file = File.join public_web_dir, 'data.json'
16
- File.write data_file, requests.to_json
17
- FileUtils.cp_r "#{public_web_dir}/.", config['output_dir']
28
+ File.write data_file, data.to_json
29
+ FileUtils.cp_r "#{public_web_dir}/.", config[:output_dir]
18
30
 
19
31
  puts 'Done.'
@@ -0,0 +1,13 @@
1
+ require 'hashie'
2
+ require 'json'
3
+
4
+ def load_config
5
+ ENV['HTTP_PROXY'] = nil
6
+ ENV['CONFIG_FILE'] ||= 'config.json'
7
+ json = File.read(ENV['CONFIG_FILE'])
8
+ config = Hashie::Mash.new JSON.parse(json)
9
+ config[:title] ||= 'Help Desk Dashboard'
10
+ config[:output_dir] ||= 'output'
11
+ config[:threads] = (config[:threads] || '1').to_i
12
+ config
13
+ end
@@ -0,0 +1,6 @@
1
+ class Hash
2
+ def pick(*keys)
3
+ values = values_at(*keys)
4
+ Hash[keys.zip(values)]
5
+ end
6
+ end
@@ -1,7 +1,8 @@
1
1
  class ProviderFactory
2
2
 
3
3
  def create(config)
4
- path = File.join File.dirname(__FILE__), 'providers', config['provider'], config['version'], 'provider.rb'
4
+ provider = config[:provider]
5
+ path = File.join File.dirname(__FILE__), 'providers', provider[:name], provider[:version], 'provider.rb'
5
6
  load path
6
7
  Provider.new config
7
8
  end
@@ -10,8 +10,8 @@ class Provider
10
10
  end
11
11
 
12
12
  def get_requests
13
- url = @config['url']
14
- users = @config['users']
13
+ url = @config[:provider][:url]
14
+ users = @config[:users].select { |u| u[:password] }
15
15
 
16
16
  b = Watir::Browser.new
17
17
  navigator = Navigator.new b, url
@@ -20,7 +20,7 @@ class Provider
20
20
  b.close
21
21
 
22
22
  user = users.first
23
- parallel_request_scraper = ParallelRequestScraper.new url, user, @config['thread_limit'].to_i
23
+ parallel_request_scraper = ParallelRequestScraper.new url, user, @config[:threads]
24
24
  parallel_request_scraper.scrape request_ids
25
25
  end
26
26
 
@@ -1,16 +1,16 @@
1
- <html>
2
- <head>
3
- <title>Track-It Tracker</title>
4
- <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
5
- <link href="css/app.css" rel="stylesheet"/>
6
- <script src="js/jquery-1.10.1.min.js"></script>
7
- <script src="/bootstrap/js/bootstrap.min.js"></script>
8
- <script src="js/moment.min.js"></script>
9
- <script src="js/app.js"></script>
10
- </head>
11
- <body>
12
- <div id="container" class="container-fluid">
13
- <div class="title">Track-It Tracker</div>
14
- </div>
15
- </body>
1
+ <html>
2
+ <head>
3
+ <title>Help Desk Dashboard</title>
4
+ <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
5
+ <link href="css/app.css" rel="stylesheet"/>
6
+ <script src="js/jquery-1.10.1.min.js"></script>
7
+ <script src="/bootstrap/js/bootstrap.min.js"></script>
8
+ <script src="js/moment.min.js"></script>
9
+ <script src="js/app.js"></script>
10
+ </head>
11
+ <body>
12
+ <div id="container" class="container-fluid">
13
+ <div class="title">Help Desk Dashboard</div>
14
+ </div>
15
+ </body>
16
16
  </html>
@@ -94,12 +94,13 @@ function getParameterByName(name) {
94
94
  }
95
95
 
96
96
  $(document).ready(function () {
97
- $.getJSON('data.json', function (requests) {
98
- $.each(requests, function (i, request) {
97
+ $.getJSON('data.json', function (data) {
98
+ $('div.title').text(data.title);
99
+ $.each(data.requests, function (i, request) {
99
100
  add_methods_to_request(request);
100
101
  });
101
102
 
102
- create_requests_table(requests);
103
+ create_requests_table(data.requests);
103
104
  });
104
105
 
105
106
  var font_size = getParameterByName('font-size');
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: help_desk_dashboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-29 00:00:00.000000000 Z
12
+ date: 2013-06-30 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hashie
16
+ requirement: &70140410978900 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.5
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70140410978900
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: json
16
- requirement: &70136763279140 !ruby/object:Gem::Requirement
27
+ requirement: &70140410978420 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ~>
@@ -21,10 +32,10 @@ dependencies:
21
32
  version: 1.7.7
22
33
  type: :runtime
23
34
  prerelease: false
24
- version_requirements: *70136763279140
35
+ version_requirements: *70140410978420
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: watir-webdriver
27
- requirement: &70136763278660 !ruby/object:Gem::Requirement
38
+ requirement: &70140410977960 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ~>
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: 0.6.4
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *70136763278660
46
+ version_requirements: *70140410977960
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rack
38
- requirement: &70136763278200 !ruby/object:Gem::Requirement
49
+ requirement: &70140410977500 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,7 +54,7 @@ dependencies:
43
54
  version: 1.5.2
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *70136763278200
57
+ version_requirements: *70140410977500
47
58
  description:
48
59
  email: matthew-github@matthewriley.name
49
60
  executables:
@@ -51,6 +62,8 @@ executables:
51
62
  extensions: []
52
63
  extra_rdoc_files: []
53
64
  files:
65
+ - lib/help-desk-dashboard/config_loader.rb
66
+ - lib/help-desk-dashboard/extensions.rb
54
67
  - lib/help-desk-dashboard/provider_factory.rb
55
68
  - lib/help-desk-dashboard/providers/service-desk-plus/8.1/provider.rb
56
69
  - lib/help-desk-dashboard/providers/track-it/2003.10.1/navigator.rb