taskwarrior-web 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. data/.gitignore +1 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +6 -0
  5. data/Rakefile +2 -0
  6. data/bin/task-web +10 -0
  7. data/config.ru +9 -0
  8. data/lib/taskwarrior-web/app.rb +172 -0
  9. data/lib/taskwarrior-web/config.rb +11 -0
  10. data/lib/taskwarrior-web/task.rb +131 -0
  11. data/lib/taskwarrior-web/version.rb +3 -0
  12. data/lib/taskwarrior-web.rb +8 -0
  13. data/public/css/gh-buttons.css +388 -0
  14. data/public/css/jquery-ui.css +738 -0
  15. data/public/css/jquery.tagsinput.css +6 -0
  16. data/public/css/styles.css +283 -0
  17. data/public/css/tipsy.css +7 -0
  18. data/public/favicon.ico +0 -0
  19. data/public/images/ajax-loader.gif +0 -0
  20. data/public/images/arrow_right_black.png +0 -0
  21. data/public/images/arrow_right_grey.png +0 -0
  22. data/public/images/bg_fallback.png +0 -0
  23. data/public/images/gh-icons.png +0 -0
  24. data/public/images/grid-view.png +0 -0
  25. data/public/images/icon_sprite.png +0 -0
  26. data/public/images/list-view.png +0 -0
  27. data/public/images/logo.png +0 -0
  28. data/public/images/progress_bar.gif +0 -0
  29. data/public/images/slider_handles.png +0 -0
  30. data/public/images/subnav_background.gif +0 -0
  31. data/public/images/tab_background.gif +0 -0
  32. data/public/images/tipsy.gif +0 -0
  33. data/public/images/ui-icons_222222_256x240.png +0 -0
  34. data/public/images/ui-icons_454545_256x240.png +0 -0
  35. data/public/js/application.js +130 -0
  36. data/public/js/jquery-ui.min.js +163 -0
  37. data/public/js/jquery.cookie.js +96 -0
  38. data/public/js/jquery.min.js +16 -0
  39. data/public/js/jquery.tagsinput.js +218 -0
  40. data/public/js/jquery.tipsy.js +104 -0
  41. data/taskwarrior-web.gemspec +25 -0
  42. data/views/404.erb +3 -0
  43. data/views/_navigation.erb +21 -0
  44. data/views/layout.erb +47 -0
  45. data/views/listing.erb +29 -0
  46. data/views/project.erb +25 -0
  47. data/views/projects.erb +35 -0
  48. data/views/task_form.erb +28 -0
  49. metadata +134 -0
data/views/layout.erb ADDED
@@ -0,0 +1,47 @@
1
+ <html>
2
+ <head>
3
+ <title><%= @title %> | Taskwarrior</title>
4
+
5
+ <!-- Styles -->
6
+ <link rel="stylesheet" href="/css/jquery-ui.css">
7
+ <link rel="stylesheet" href="/css/styles.css">
8
+ <link rel="stylesheet" href="/css/gh-buttons.css">
9
+ <link rel="stylesheet" href="/css/tipsy.css">
10
+ <link rel="stylesheet" href="/css/jquery.tagsinput.css">
11
+
12
+ <!-- Scripts -->
13
+ <script type="text/javascript" src="/js/jquery.min.js"></script>
14
+ <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
15
+ <script type="text/javascript" src="/js/jquery.cookie.js"></script>
16
+ <script type="text/javascript" src="/js/jquery.tipsy.js"></script>
17
+ <script type="text/javascript" src="/js/jquery.tagsinput.js"></script>
18
+ <script type="text/javascript" src="/js/application.js"></script>
19
+ </head>
20
+
21
+ <body>
22
+ <div id="page">
23
+ <header>
24
+ <h1>Taskwarrior</h1>
25
+ <div id="polling-info">
26
+ <a href="javascript:void(0);" class="button icon clock tooltip" data-tooltip="If polling is on, the page will be reloaded automatically every 3 seconds.">Stop polling</a>
27
+ </div>
28
+ </header>
29
+ <div class="clearer"></div>
30
+ <%= erb :_navigation %>
31
+ <section class="content">
32
+ <h2><%= @title %></h2>
33
+ <a href="/tasks/new" id="task-add" class="button icon add">Add a Task</a>
34
+ <div class="clearer"></div>
35
+ <div id="flash-messages">
36
+ <% if @messages %>
37
+ <% @messages.each do |message| %>
38
+ <div class="message <%= message.severity %>"><%= message.message %></div>
39
+ <% end %>
40
+ <% end %>
41
+ </div>
42
+ <%= yield %>
43
+ </section>
44
+ </div>
45
+ </body>
46
+
47
+ </html>
data/views/listing.erb ADDED
@@ -0,0 +1,29 @@
1
+ <div id="listing">
2
+ <table>
3
+ <thead>
4
+ <tr>
5
+ <th></th>
6
+ <th>Description</th>
7
+ <th>Project</th>
8
+ <th>Due</th>
9
+ <th>Tags</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <% @tasks.each do |task| %>
14
+ <% if task.status == 'pending' %>
15
+ <tr class="<%= colorize_date(task.due) %>">
16
+ <td><input type="checkbox" <%= 'checked="checked" ' if task.status == 'completed' %> class="<%= task.status %>" data-task="<%= task.id %>" /></td>
17
+ <% else %>
18
+ <tr class="<%= task.status %>">
19
+ <td></td>
20
+ <% end %>
21
+ <td><%= task.description %></td>
22
+ <td><a href="/projects/<%= linkify(task.project, :project) %>"><%= task.project %></a></td>
23
+ <td><%= format_date(task.due) unless task.due.nil? %></td>
24
+ <td><%= task.tags.join(', ') unless task.tags.nil? %></td>
25
+ </tr>
26
+ <% end %>
27
+ </tbody>
28
+ </table>
29
+ </div>
data/views/project.erb ADDED
@@ -0,0 +1,25 @@
1
+ <a class="button icon arrowleft" href="/projects">Back to Projects</a>
2
+ <div id="listing">
3
+ <table>
4
+ <thead>
5
+ <tr>
6
+ <th></th>
7
+ <th>Description</th>
8
+ <th>Due</th>
9
+ <th>Tags</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <% @tasks.each do |task| %>
14
+ <% if task.status == 'pending' %>
15
+ <tr class="<%= colorize_date(task.due) %>">
16
+ <td><input type="checkbox" <%= 'checked="checked" ' if task.status == 'completed' %> class="<%= task.status %>" data-task="<%= task.id %>" /></td>
17
+ <td><%= task.description %></td>
18
+ <td><%= format_date(task.due) unless task.due.nil? %></td>
19
+ <td><%= task.tags.join(', ') unless task.tags.nil? %></td>
20
+ </tr>
21
+ <% end %>
22
+ <% end %>
23
+ </tbody>
24
+ </table>
25
+ </div>
@@ -0,0 +1,35 @@
1
+ <div id="listing">
2
+ <% @tasks.each do |proj, tasks| %>
3
+ <% doneness = (tasks.select { |t| t.status == 'completed' }.count.to_f / tasks.count.to_f) * 100 %>
4
+ <% unless doneness == 100.0 %>
5
+ <div class="project-container">
6
+ <h3 class="project <%= doneness == 100.0 ? 'done' : 'pending' %>">
7
+ <a href="/projects/<%= linkify(proj, :project) %>"><%= proj %></a>
8
+ </h3>
9
+ <div class="doneness-container">
10
+ <div class="doneness-measure" style="width: <%= doneness.to_i * 2 %>px;"><%= doneness.to_i %>%</div>
11
+ </div>
12
+ <table>
13
+ <thead>
14
+ <tr>
15
+ <th>Description</th>
16
+ <th>Due</th>
17
+ <th>Tags</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody>
21
+ <% tasks.each do |task| %>
22
+ <% if task.status == 'pending' %>
23
+ <tr class="<%= colorize_date(task.due) %>">
24
+ <td><%= task.description %></td>
25
+ <td><%= format_date(task.due) unless task.due.nil? %></td>
26
+ <td><%= task.tags.join(', ') unless task.tags.nil? %></td>
27
+ </tr>
28
+ <% end %>
29
+ <% end %>
30
+ </tbody>
31
+ </table>
32
+ </div>
33
+ <% end %>
34
+ <% end %>
35
+ </div>
@@ -0,0 +1,28 @@
1
+ <form id="new-task-form" action="/tasks/new" method="post">
2
+
3
+ <div class="textfield form-element">
4
+ <label for="task-description">Description</label>
5
+ <input type="textfield" id="task-description" name="task[description]" value="<%= @task.description unless @task.nil? %>" />
6
+ </div>
7
+
8
+ <div class="textfield autocomplete form-element">
9
+ <label for="task-project">Project</label>
10
+ <input type="textfield" id="task-project" name="task[project]" value="<%= @task.project unless @task.nil? %>" />
11
+ </div>
12
+
13
+ <div class="datefield form-element">
14
+ <label for="task-due">Due Date</label>
15
+ <input type="textfield" id="task-due" name="task[due]" value="<%= @task.due unless @task.nil? %>" data-format="<%= @date_format %>" />
16
+ </div>
17
+
18
+ <div class="textfield form-element">
19
+ <label for="task-tags">Tags</label>
20
+ <input type="textfield" id="task-tags" name="task[tags]" value="<%= @task.tags unless @task.nil? %>" />
21
+ <div class="description">Enter tags separated by commas</div>
22
+ </div>
23
+
24
+ <div class="submit form-element">
25
+ <button type="submit" class="button">Create Task</button>
26
+ </div>
27
+
28
+ </form>
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: taskwarrior-web
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Jake Bell
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-07 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sinatra
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: parseconfig
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: vegas
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ description: This gem provides a graphical frontend for the Taskwarrior task manager. It is based on Sinatra.
49
+ email:
50
+ - jake@theunraveler.com
51
+ executables:
52
+ - task-web
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - .gitignore
59
+ - .rvmrc
60
+ - Gemfile
61
+ - README.md
62
+ - Rakefile
63
+ - bin/task-web
64
+ - config.ru
65
+ - lib/taskwarrior-web.rb
66
+ - lib/taskwarrior-web/app.rb
67
+ - lib/taskwarrior-web/config.rb
68
+ - lib/taskwarrior-web/task.rb
69
+ - lib/taskwarrior-web/version.rb
70
+ - public/css/gh-buttons.css
71
+ - public/css/jquery-ui.css
72
+ - public/css/jquery.tagsinput.css
73
+ - public/css/styles.css
74
+ - public/css/tipsy.css
75
+ - public/favicon.ico
76
+ - public/images/ajax-loader.gif
77
+ - public/images/arrow_right_black.png
78
+ - public/images/arrow_right_grey.png
79
+ - public/images/bg_fallback.png
80
+ - public/images/gh-icons.png
81
+ - public/images/grid-view.png
82
+ - public/images/icon_sprite.png
83
+ - public/images/list-view.png
84
+ - public/images/logo.png
85
+ - public/images/progress_bar.gif
86
+ - public/images/slider_handles.png
87
+ - public/images/subnav_background.gif
88
+ - public/images/tab_background.gif
89
+ - public/images/tipsy.gif
90
+ - public/images/ui-icons_222222_256x240.png
91
+ - public/images/ui-icons_454545_256x240.png
92
+ - public/js/application.js
93
+ - public/js/jquery-ui.min.js
94
+ - public/js/jquery.cookie.js
95
+ - public/js/jquery.min.js
96
+ - public/js/jquery.tagsinput.js
97
+ - public/js/jquery.tipsy.js
98
+ - taskwarrior-web.gemspec
99
+ - views/404.erb
100
+ - views/_navigation.erb
101
+ - views/layout.erb
102
+ - views/listing.erb
103
+ - views/project.erb
104
+ - views/projects.erb
105
+ - views/task_form.erb
106
+ homepage: http://taskwarrior.org
107
+ licenses: []
108
+
109
+ post_install_message:
110
+ rdoc_options: []
111
+
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: "0"
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: "0"
126
+ requirements: []
127
+
128
+ rubyforge_project: taskwarrior-web
129
+ rubygems_version: 1.8.1
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: Web frontend for taskwarrior command line task manager.
133
+ test_files: []
134
+