taskwarrior-web 1.0.9 → 1.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +9 -0
- data/lib/taskwarrior-web.rb +5 -3
- data/lib/taskwarrior-web/app.rb +18 -9
- data/lib/taskwarrior-web/config/navigation.rb +18 -0
- data/lib/taskwarrior-web/helpers.rb +0 -23
- data/lib/taskwarrior-web/{command.rb → model/command.rb} +0 -0
- data/lib/taskwarrior-web/{config.rb → model/config.rb} +0 -0
- data/lib/taskwarrior-web/{task.rb → model/task.rb} +8 -9
- data/lib/taskwarrior-web/public/js/application.js +1 -0
- data/lib/taskwarrior-web/views/_subnav.erb +1 -7
- data/lib/taskwarrior-web/views/_topbar.erb +1 -6
- data/lib/taskwarrior-web/views/projects.erb +2 -2
- data/spec/app/app_spec.rb +1 -0
- data/spec/app/helpers_spec.rb +0 -6
- data/spec/{models → model}/command_spec.rb +1 -1
- data/spec/{models → model}/config_spec.rb +1 -1
- data/spec/{models → model}/task_spec.rb +1 -1
- data/spec/services/builder/base_spec.rb +1 -1
- data/spec/services/builder/v1_spec.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/taskwarrior-web.gemspec +3 -1
- metadata +53 -30
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## v1.0.10 (11/20/12)
|
2
|
+
|
3
|
+
* Adding ability to specify a filter for the task listing. See [the wiki][1]
|
4
|
+
for more information.
|
5
|
+
* Added the SimpleNavigation library for navigation, and moved a bunch of stuff
|
6
|
+
to ActiveSupport.
|
7
|
+
|
8
|
+
[1]: http://github.com/theunraveler/taskwarrior-web/wiki/Filters-for-the-task-listing-page
|
9
|
+
|
1
10
|
## v1.0.9 (11/19/12)
|
2
11
|
|
3
12
|
* Fixed bug on projects listing page where projects with no pending tasks were
|
data/lib/taskwarrior-web.rb
CHANGED
@@ -2,13 +2,15 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
|
+
require 'active_support/core_ext/object/blank'
|
6
|
+
require 'active_support/core_ext/string/inflections'
|
5
7
|
|
6
8
|
module TaskwarriorWeb
|
7
9
|
autoload :App, 'taskwarrior-web/app'
|
8
10
|
autoload :Helpers, 'taskwarrior-web/helpers'
|
9
|
-
autoload :Task, 'taskwarrior-web/task'
|
10
|
-
autoload :Config, 'taskwarrior-web/config'
|
11
|
-
autoload :Command, 'taskwarrior-web/command'
|
11
|
+
autoload :Task, 'taskwarrior-web/model/task'
|
12
|
+
autoload :Config, 'taskwarrior-web/model/config'
|
13
|
+
autoload :Command, 'taskwarrior-web/model/command'
|
12
14
|
autoload :CommandBuilder, 'taskwarrior-web/services/builder'
|
13
15
|
autoload :Runner, 'taskwarrior-web/services/runner'
|
14
16
|
autoload :Parser, 'taskwarrior-web/services/parser'
|
data/lib/taskwarrior-web/app.rb
CHANGED
@@ -5,6 +5,7 @@ require 'erb'
|
|
5
5
|
require 'time'
|
6
6
|
require 'rinku'
|
7
7
|
require 'digest'
|
8
|
+
require 'sinatra/simple-navigation'
|
8
9
|
|
9
10
|
class TaskwarriorWeb::App < Sinatra::Base
|
10
11
|
autoload :Helpers, 'taskwarrior-web/helpers'
|
@@ -14,6 +15,10 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
14
15
|
set :app_file, __FILE__
|
15
16
|
set :public_folder, File.dirname(__FILE__) + '/public'
|
16
17
|
set :views, File.dirname(__FILE__) + '/views'
|
18
|
+
|
19
|
+
# Helpers
|
20
|
+
helpers Helpers
|
21
|
+
register Sinatra::SimpleNavigation
|
17
22
|
|
18
23
|
def protected!
|
19
24
|
response['WWW-Authenticate'] = %(Basic realm="Taskworrior Web") and throw(:halt, [401, "Not authorized\n"]) and return unless authorized?
|
@@ -31,9 +36,6 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
31
36
|
protected! if TaskwarriorWeb::Config.property('task-web.user')
|
32
37
|
end
|
33
38
|
|
34
|
-
# Helpers
|
35
|
-
helpers Helpers
|
36
|
-
|
37
39
|
# Redirects
|
38
40
|
get '/' do
|
39
41
|
redirect '/tasks/pending'
|
@@ -46,8 +48,12 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
46
48
|
get '/tasks/:status/?' do
|
47
49
|
pass unless ['pending', 'waiting', 'completed', 'deleted'].include?(params[:status])
|
48
50
|
@title = "Tasks"
|
49
|
-
|
50
|
-
|
51
|
+
if params[:status] == 'pending' && filter = TaskwarriorWeb::Config.property('task-web.filter')
|
52
|
+
@tasks = TaskwarriorWeb::Task.query(:description => filter)
|
53
|
+
else
|
54
|
+
@tasks = TaskwarriorWeb::Task.find_by_status(params[:status])
|
55
|
+
end
|
56
|
+
@tasks.sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s, x.project.to_s] }
|
51
57
|
erb :listing
|
52
58
|
end
|
53
59
|
|
@@ -65,7 +71,7 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
65
71
|
redirect '/tasks'
|
66
72
|
end
|
67
73
|
|
68
|
-
@messages = @task.
|
74
|
+
@messages = @task._errors.map { |error| { :severity => 'alert-error', :message => error } }
|
69
75
|
call! env.merge('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/tasks/new')
|
70
76
|
end
|
71
77
|
|
@@ -76,7 +82,6 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
76
82
|
|
77
83
|
get '/projects/overview/?' do
|
78
84
|
@title = 'Projects'
|
79
|
-
@subnav = subnav('projects')
|
80
85
|
@tasks = TaskwarriorWeb::Task.query('status.not' => :deleted, 'project.not' => '')
|
81
86
|
.sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s] }
|
82
87
|
.group_by { |x| x.project.to_s }
|
@@ -85,7 +90,6 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
85
90
|
end
|
86
91
|
|
87
92
|
get '/projects/:name/?' do
|
88
|
-
@subnav = subnav('projects')
|
89
93
|
subbed = params[:name].gsub('--', '.')
|
90
94
|
@tasks = TaskwarriorWeb::Task.query('status.not' => 'deleted', :project => subbed)
|
91
95
|
.sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s] }
|
@@ -99,7 +103,12 @@ class TaskwarriorWeb::App < Sinatra::Base
|
|
99
103
|
end
|
100
104
|
|
101
105
|
get '/ajax/count/?' do
|
102
|
-
TaskwarriorWeb::
|
106
|
+
if filter = TaskwarriorWeb::Config.property('task-web.filter')
|
107
|
+
total = TaskwarriorWeb::Task.query(:description => filter).count
|
108
|
+
else
|
109
|
+
total = TaskwarriorWeb::Task.count(:status => :pending)
|
110
|
+
end
|
111
|
+
total.to_s
|
103
112
|
end
|
104
113
|
|
105
114
|
post '/ajax/task-complete/:id/?' do
|
@@ -0,0 +1,18 @@
|
|
1
|
+
SimpleNavigation::Configuration.run do |navigation|
|
2
|
+
navigation.selected_class = 'active'
|
3
|
+
|
4
|
+
navigation.items do |primary|
|
5
|
+
primary.dom_class = 'nav'
|
6
|
+
primary.item :tasks, 'Tasks', '/tasks' do |tasks|
|
7
|
+
tasks.dom_class = 'nav nav-pills'
|
8
|
+
tasks.item :pending, "Pending <span class=\"badge\"></span>", '/tasks/pending'
|
9
|
+
tasks.item :waiting, 'Waiting', '/tasks/waiting'
|
10
|
+
tasks.item :completed, 'Completed', '/tasks/completed'
|
11
|
+
tasks.item :deleted, 'Deleted', '/tasks/deleted'
|
12
|
+
end
|
13
|
+
primary.item :projects, 'Projects', '/projects' do |projects|
|
14
|
+
projects.dom_class = 'nav nav-pills'
|
15
|
+
projects.item :overview, 'Overview', '/projects/overview'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -23,30 +23,7 @@ module TaskwarriorWeb::App::Helpers
|
|
23
23
|
item.gsub('.', '--')
|
24
24
|
end
|
25
25
|
|
26
|
-
def idify(item)
|
27
|
-
return if item.nil?
|
28
|
-
linkify(item).gsub(' ', '-').gsub("'", '').downcase
|
29
|
-
end
|
30
|
-
|
31
26
|
def auto_link(text)
|
32
27
|
Rinku.auto_link(text, :all, 'target="_blank"')
|
33
28
|
end
|
34
|
-
|
35
|
-
def subnav(type)
|
36
|
-
case type
|
37
|
-
when 'tasks'
|
38
|
-
{ '/tasks/pending' => "Pending <span class=\"badge\">#{TaskwarriorWeb::Task.count(:status => :pending)}</span>",
|
39
|
-
'/tasks/waiting' => "Waiting",
|
40
|
-
'/tasks/completed' => "Completed",
|
41
|
-
'/tasks/deleted' => 'Deleted'
|
42
|
-
}
|
43
|
-
when 'projects'
|
44
|
-
{
|
45
|
-
'/projects/overview' => 'Overview'
|
46
|
-
}
|
47
|
-
else
|
48
|
-
{ }
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
29
|
end
|
File without changes
|
File without changes
|
@@ -7,7 +7,7 @@ module TaskwarriorWeb
|
|
7
7
|
|
8
8
|
attr_accessor :entry, :project, :priority, :uuid, :description, :status,
|
9
9
|
:due, :start, :end, :tags, :depends, :wait, :annotations,
|
10
|
-
:
|
10
|
+
:_errors
|
11
11
|
alias :annotate= :annotations=
|
12
12
|
|
13
13
|
####################################
|
@@ -17,7 +17,10 @@ module TaskwarriorWeb
|
|
17
17
|
def initialize(attributes = {})
|
18
18
|
attributes.each do |attr, value|
|
19
19
|
send("#{attr}=", value) if respond_to?(attr.to_sym)
|
20
|
-
end
|
20
|
+
end
|
21
|
+
|
22
|
+
@_errors = []
|
23
|
+
@tags = [] if @tags.nil?
|
21
24
|
end
|
22
25
|
|
23
26
|
def save!
|
@@ -29,21 +32,17 @@ module TaskwarriorWeb
|
|
29
32
|
end
|
30
33
|
|
31
34
|
# Make sure that the tags are an array.
|
32
|
-
def tags
|
33
|
-
@tags ? @tags : []
|
34
|
-
end
|
35
35
|
def tags=(value)
|
36
36
|
@tags = value.is_a?(String) ? value.split(/\W+/).reject(&:empty?) : value
|
37
37
|
end
|
38
38
|
|
39
39
|
def is_valid?
|
40
|
-
self.
|
41
|
-
|
42
|
-
self.errors.empty?
|
40
|
+
@_errors << 'You must provide a description' if self.description.blank?
|
41
|
+
@_errors.empty?
|
43
42
|
end
|
44
43
|
|
45
44
|
def to_hash
|
46
|
-
Hash[instance_variables.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
|
45
|
+
Hash[instance_variables.select { |var| !var.to_s.start_with?('@_') }.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
|
47
46
|
end
|
48
47
|
|
49
48
|
##################################
|
@@ -1,13 +1,7 @@
|
|
1
1
|
<div class="page-header" id="subnav-bar">
|
2
2
|
<h1 class="pull-left"><%= @title %></h1>
|
3
|
-
<% if @subnav %>
|
4
3
|
<nav class="subnav pull-right">
|
5
|
-
|
6
|
-
<% @subnav.each do |path, text| %>
|
7
|
-
<li<%= ' class="active"' if @current_page.index(path) == 0 %>><a href="<%= path %>"><%= text %></a></li>
|
8
|
-
<% end %>
|
9
|
-
</ul>
|
10
|
-
<% end %>
|
4
|
+
<%= render_navigation :level => 2 %>
|
11
5
|
</nav>
|
12
6
|
<div class="clear"></div>
|
13
7
|
</div>
|
@@ -1,12 +1,7 @@
|
|
1
1
|
<div class="navbar navbar-fixed-top">
|
2
2
|
<div class="navbar-inner"><div class="container">
|
3
3
|
<a href="/" class="brand">Taskwarrior Web</a>
|
4
|
-
|
5
|
-
<ul class="nav">
|
6
|
-
<% tabs.each do |path, text| %>
|
7
|
-
<li<%= ' class="active"' if @current_page.index(path) == 0 %>><a href="<%= path %>"><%= text %></a></li>
|
8
|
-
<% end %>
|
9
|
-
</ul>
|
4
|
+
<%= render_navigation :level => 1 %>
|
10
5
|
<ul class="nav pull-right">
|
11
6
|
<li>
|
12
7
|
<a href="/tasks/new">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<ul class="nav nav-list" data-spy="affix" data-offset-top="125">
|
4
4
|
<% @tasks.keys.each do |project| %>
|
5
5
|
<li>
|
6
|
-
<a href="#project-<%=
|
6
|
+
<a href="#project-<%= project.parameterize %>"><i class="icon-chevron-right"></i> <%= project %></a>
|
7
7
|
</li>
|
8
8
|
<% end %>
|
9
9
|
</ul>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<div id="listing">
|
14
14
|
<% @tasks.each do |proj, tasks| %>
|
15
15
|
<% doneness = (tasks.select { |t| t.status == 'completed' }.count.to_f / tasks.count.to_f) * 100 %>
|
16
|
-
<section class="project-container" id="project-<%=
|
16
|
+
<section class="project-container" id="project-<%= proj.parameterize %>">
|
17
17
|
<h2 class="project <%= doneness == 100 ? 'done' : 'pending' %>">
|
18
18
|
<%= proj %>
|
19
19
|
<a href="/projects/<%= linkify(proj) %>"><i class="icon-circle-arrow-right"></i></a>
|
data/spec/app/app_spec.rb
CHANGED
@@ -12,6 +12,7 @@ describe TaskwarriorWeb::App do
|
|
12
12
|
|
13
13
|
before do
|
14
14
|
TaskwarriorWeb::Config.should_receive(:property).with('task-web.user').any_number_of_times.and_return(nil)
|
15
|
+
TaskwarriorWeb::Config.should_receive(:property).with('task-web.filter').any_number_of_times.and_return(nil)
|
15
16
|
TaskwarriorWeb::Runner.should_receive(:run).any_number_of_times.and_return('{}')
|
16
17
|
end
|
17
18
|
|
data/spec/app/helpers_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'sinatra'
|
2
2
|
require 'rack/test'
|
3
3
|
require 'rspec'
|
4
|
+
require 'simple_navigation'
|
4
5
|
|
5
6
|
# Simplecov
|
6
7
|
require 'simplecov'
|
@@ -16,3 +17,5 @@ RSpec.configure do |config|
|
|
16
17
|
config.mock_with :rspec
|
17
18
|
config.include(RSpec::Mocks::Methods)
|
18
19
|
end
|
20
|
+
|
21
|
+
SimpleNavigation.config_file_paths << File.dirname(__FILE__) + '/../lib/taskwarrior-web/config'
|
data/taskwarrior-web.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "taskwarrior-web"
|
6
|
-
s.version = '1.0.
|
6
|
+
s.version = '1.0.10'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Jake Bell"]
|
9
9
|
s.email = ["jake@theunraveler.com"]
|
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency('vegas')
|
22
22
|
s.add_dependency('rinku')
|
23
23
|
s.add_dependency('versionomy')
|
24
|
+
s.add_dependency('activesupport')
|
25
|
+
s.add_dependency('sinatra-simple-navigation')
|
24
26
|
|
25
27
|
s.add_development_dependency('rake')
|
26
28
|
s.add_development_dependency('rack-test')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskwarrior-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70364966614320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70364966614320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thin
|
27
|
-
requirement: &
|
27
|
+
requirement: &70364966613720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70364966613720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: parseconfig
|
38
|
-
requirement: &
|
38
|
+
requirement: &70364966613280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70364966613280
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: vegas
|
49
|
-
requirement: &
|
49
|
+
requirement: &70364966612800 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70364966612800
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rinku
|
60
|
-
requirement: &
|
60
|
+
requirement: &70364966612360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70364966612360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: versionomy
|
71
|
-
requirement: &
|
71
|
+
requirement: &70364966611800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,32 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70364966611800
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: activesupport
|
82
|
+
requirement: &70364966611080 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70364966611080
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: sinatra-simple-navigation
|
93
|
+
requirement: &70364966610460 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70364966610460
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: rake
|
82
|
-
requirement: &
|
104
|
+
requirement: &70364966609880 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ! '>='
|
@@ -87,10 +109,10 @@ dependencies:
|
|
87
109
|
version: '0'
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *70364966609880
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
114
|
name: rack-test
|
93
|
-
requirement: &
|
115
|
+
requirement: &70364966609200 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ! '>='
|
@@ -98,10 +120,10 @@ dependencies:
|
|
98
120
|
version: '0'
|
99
121
|
type: :development
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *70364966609200
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
125
|
name: rspec
|
104
|
-
requirement: &
|
126
|
+
requirement: &70364966608700 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
@@ -109,7 +131,7 @@ dependencies:
|
|
109
131
|
version: '0'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *70364966608700
|
113
135
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
114
136
|
It is based on Sinatra.
|
115
137
|
email:
|
@@ -131,9 +153,11 @@ files:
|
|
131
153
|
- config.ru
|
132
154
|
- lib/taskwarrior-web.rb
|
133
155
|
- lib/taskwarrior-web/app.rb
|
134
|
-
- lib/taskwarrior-web/
|
135
|
-
- lib/taskwarrior-web/config.rb
|
156
|
+
- lib/taskwarrior-web/config/navigation.rb
|
136
157
|
- lib/taskwarrior-web/helpers.rb
|
158
|
+
- lib/taskwarrior-web/model/command.rb
|
159
|
+
- lib/taskwarrior-web/model/config.rb
|
160
|
+
- lib/taskwarrior-web/model/task.rb
|
137
161
|
- lib/taskwarrior-web/public/css/bootstrap-responsive.min.css
|
138
162
|
- lib/taskwarrior-web/public/css/bootstrap.min.css
|
139
163
|
- lib/taskwarrior-web/public/css/datepicker.css
|
@@ -154,7 +178,6 @@ files:
|
|
154
178
|
- lib/taskwarrior-web/services/parser/csv.rb
|
155
179
|
- lib/taskwarrior-web/services/parser/json.rb
|
156
180
|
- lib/taskwarrior-web/services/runner.rb
|
157
|
-
- lib/taskwarrior-web/task.rb
|
158
181
|
- lib/taskwarrior-web/views/404.erb
|
159
182
|
- lib/taskwarrior-web/views/_subnav.erb
|
160
183
|
- lib/taskwarrior-web/views/_topbar.erb
|
@@ -166,9 +189,9 @@ files:
|
|
166
189
|
- spec/app/app_spec.rb
|
167
190
|
- spec/app/helpers_spec.rb
|
168
191
|
- spec/files/taskrc
|
169
|
-
- spec/
|
170
|
-
- spec/
|
171
|
-
- spec/
|
192
|
+
- spec/model/command_spec.rb
|
193
|
+
- spec/model/config_spec.rb
|
194
|
+
- spec/model/task_spec.rb
|
172
195
|
- spec/services/builder/base_spec.rb
|
173
196
|
- spec/services/builder/v1_spec.rb
|
174
197
|
- spec/services/builder_spec.rb
|
@@ -196,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
219
|
version: '0'
|
197
220
|
segments:
|
198
221
|
- 0
|
199
|
-
hash:
|
222
|
+
hash: 1101487011083302650
|
200
223
|
requirements: []
|
201
224
|
rubyforge_project: taskwarrior-web
|
202
225
|
rubygems_version: 1.8.11
|
@@ -207,9 +230,9 @@ test_files:
|
|
207
230
|
- spec/app/app_spec.rb
|
208
231
|
- spec/app/helpers_spec.rb
|
209
232
|
- spec/files/taskrc
|
210
|
-
- spec/
|
211
|
-
- spec/
|
212
|
-
- spec/
|
233
|
+
- spec/model/command_spec.rb
|
234
|
+
- spec/model/config_spec.rb
|
235
|
+
- spec/model/task_spec.rb
|
213
236
|
- spec/services/builder/base_spec.rb
|
214
237
|
- spec/services/builder/v1_spec.rb
|
215
238
|
- spec/services/builder_spec.rb
|