dorsale 3.7.4 → 3.7.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/app/assets/stylesheets/dorsale/engines/flyboy.sass +10 -6
- data/app/controllers/dorsale/flyboy/task_comments_controller.rb +1 -0
- data/app/controllers/dorsale/flyboy/tasks_controller.rb +3 -12
- data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +1 -1
- data/app/filters/dorsale/flyboy/small_data/filter_strategy_by_task_state.rb +9 -0
- data/app/helpers/dorsale/flyboy/application_helper.rb +3 -13
- data/app/models/dorsale/flyboy/task.rb +29 -0
- data/app/models/dorsale/flyboy/task_comment.rb +1 -1
- data/app/sorters/dorsale/flyboy/task_comments_sorter.rb +12 -0
- data/app/views/dorsale/flyboy/_filters.html.slim +1 -1
- data/app/views/dorsale/flyboy/task_comments/_form.html.slim +11 -0
- data/app/views/dorsale/flyboy/task_comments/_list.html.slim +7 -26
- data/app/views/dorsale/flyboy/task_comments/_task_comment.html.slim +13 -0
- data/app/views/dorsale/flyboy/tasks/_context.html.slim +1 -1
- data/app/views/dorsale/flyboy/tasks/_list.html.slim +1 -1
- data/app/views/dorsale/flyboy/tasks/_reminder_fields.html.slim +15 -11
- data/app/views/dorsale/flyboy/tasks/_term_fields.html.slim +11 -7
- data/config/locales/flyboy.en.yml +8 -6
- data/config/locales/flyboy.fr.yml +8 -6
- data/features/step_definitions/flyboy_tasks_steps.rb +2 -2
- data/lib/dorsale/version.rb +1 -1
- data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +2 -2
- data/spec/models/dorsale/flyboy/task_spec.rb +68 -5
- metadata +7 -6
- data/app/filters/dorsale/flyboy/small_data/filter_strategy_by_done.rb +0 -6
- data/spec/helpers/dorsale/flyboy/application_helper_spec.rb +0 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ad479d894fe508bd2db24dbcb03d17c986fd482b
|
|
4
|
+
data.tar.gz: 1122ddf76aabb70beab2c05c4807051b12d35e33
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 215f9de605cb95f630c71f709c514e617c8c942bcd22af69411a295900efdfb818b1ef7ae1a392dc5c5d13697c5756d13f1bd064e0ef6ef999e9fa1f59f9c3de
|
|
7
|
+
data.tar.gz: 45b40e12c35892c1a2741a70210195746737105bd673bb08543332e237a3ea3b48387c6a00ec9409f81f8c460f93f0ebdfad6299c4d758954d00e6ba95901b6f
|
data/CHANGELOG.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
th
|
|
10
10
|
text-align: left
|
|
11
11
|
|
|
12
|
-
.
|
|
12
|
+
.done td, .context-body.done
|
|
13
13
|
background: $state-success-bg !important
|
|
14
14
|
|
|
15
15
|
.onwarning td, .context-body.onwarning
|
|
@@ -61,13 +61,17 @@
|
|
|
61
61
|
|
|
62
62
|
.task_reminder_fields,
|
|
63
63
|
.task_term_fields,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
> div
|
|
67
|
-
margin-right: 15px
|
|
64
|
+
height: 34px
|
|
68
65
|
|
|
69
66
|
label
|
|
70
|
-
|
|
67
|
+
padding-left: 0
|
|
68
|
+
|
|
69
|
+
.form-sub-group-container
|
|
70
|
+
display: flex
|
|
71
|
+
|
|
72
|
+
> div
|
|
73
|
+
margin-right: 15px
|
|
74
|
+
|
|
71
75
|
|
|
72
76
|
input, select
|
|
73
77
|
width: auto
|
|
@@ -60,19 +60,10 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
|
|
|
60
60
|
|
|
61
61
|
def show
|
|
62
62
|
authorize @task, :read?
|
|
63
|
-
@task_comments = @task.comments
|
|
64
63
|
|
|
65
|
-
@
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
%(LOWER(#{column}) #{direction})
|
|
69
|
-
when :progress
|
|
70
|
-
%(#{column} #{direction})
|
|
71
|
-
else
|
|
72
|
-
"date #{direction}"
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
@task_comments = @task_comments.reorder(@order)
|
|
64
|
+
@task_comments = @task.comments.preload(:author)
|
|
65
|
+
|
|
66
|
+
@task_comments = Dorsale::Flyboy::TaskCommentsSorter.(@task_comments, params[:sort] ||= "-date")
|
|
76
67
|
end
|
|
77
68
|
|
|
78
69
|
def new
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class Dorsale::Flyboy::SmallData::FilterForTasks < ::Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
|
-
"
|
|
3
|
+
"fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
|
|
4
4
|
"fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id)
|
|
5
5
|
}
|
|
6
6
|
end
|
|
@@ -25,20 +25,10 @@ module Dorsale::Flyboy::ApplicationHelper
|
|
|
25
25
|
render "dorsale/flyboy/tasks/summary"
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def task_color(task)
|
|
29
|
-
return "finished" if task.done
|
|
30
|
-
return "onalert" if task.term < Time.zone.now.to_date
|
|
31
|
-
return "onwarning" if task.reminder_date && task.reminder_date < Time.zone.now.to_date
|
|
32
|
-
return "ontime"
|
|
33
|
-
|
|
34
|
-
end
|
|
35
|
-
|
|
36
28
|
def flyboy_status_for_filters_select
|
|
37
|
-
|
|
38
|
-
Dorsale::Flyboy::Task.t("
|
|
39
|
-
|
|
40
|
-
Dorsale::Flyboy::Task.t("status.closed") => "closed",
|
|
41
|
-
}
|
|
29
|
+
Dorsale::Flyboy::Task::STATES.map do |state|
|
|
30
|
+
[Dorsale::Flyboy::Task.t("state.#{state}"), state]
|
|
31
|
+
end
|
|
42
32
|
end
|
|
43
33
|
|
|
44
34
|
def flyboy_tasks_owners_for_filters_select
|
|
@@ -15,6 +15,35 @@ class Dorsale::Flyboy::Task < ::Dorsale::ApplicationRecord
|
|
|
15
15
|
polymorphic_id_for :taskable
|
|
16
16
|
polymorphic_id_for :owner
|
|
17
17
|
|
|
18
|
+
STATES = %w(done undone ontime onwarning onalert)
|
|
19
|
+
|
|
20
|
+
def state
|
|
21
|
+
return "done" if done
|
|
22
|
+
return "onalert" if term && term <= Time.zone.now.to_date
|
|
23
|
+
return "onwarning" if reminder_date && reminder_date <= Time.zone.now.to_date
|
|
24
|
+
return "ontime"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
scope :done, -> { where(done: true) }
|
|
28
|
+
scope :undone, -> { where(done: false) }
|
|
29
|
+
|
|
30
|
+
scope :ontime, -> {
|
|
31
|
+
undone
|
|
32
|
+
.where("term IS NULL OR term > ?", Time.zone.now.to_date)
|
|
33
|
+
.where("reminder_date IS NULL OR reminder_date > ?", Time.zone.now.to_date)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
scope :onwarning, -> {
|
|
37
|
+
undone
|
|
38
|
+
.where("reminder_date <= ?", Time.zone.now.to_date)
|
|
39
|
+
.where("term IS NULL OR term > ?", Time.zone.now.to_date)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
scope :onalert, -> {
|
|
43
|
+
undone
|
|
44
|
+
.where("term <= ?", Time.zone.now.to_date)
|
|
45
|
+
}
|
|
46
|
+
|
|
18
47
|
scope :delayed, -> { where(done: false).where("term < ?", Time.zone.now.to_date) }
|
|
19
48
|
scope :today, -> { where(done: false).where("term = ?", Time.zone.now.to_date) }
|
|
20
49
|
scope :tomorrow, -> { where(done: false).where("term = ?", Date.tomorrow) }
|
|
@@ -10,7 +10,7 @@ class Dorsale::Flyboy::TaskComment < ::Dorsale::ApplicationRecord
|
|
|
10
10
|
validates :description, presence: true
|
|
11
11
|
validates :progress, inclusion: {in: 0..100}
|
|
12
12
|
|
|
13
|
-
default_scope -> { order(
|
|
13
|
+
default_scope -> { order(date: :desc) }
|
|
14
14
|
|
|
15
15
|
def assign_default_values
|
|
16
16
|
assign_default :date, Time.zone.now
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
= filters_form do |f|
|
|
2
|
-
= f.input :
|
|
2
|
+
= f.input :fb_state, collection: flyboy_status_for_filters_select, include_blank: Dorsale::Flyboy::Task.t("state.all")
|
|
3
3
|
|
|
4
4
|
- if @filters.class::STRATEGIES.include?("fb_owner")
|
|
5
5
|
= f.input :fb_owner, collection: flyboy_tasks_owners_for_filters_select, include_blank: t("filters.all_owners")
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
- if policy(@task).comment?
|
|
2
|
+
tr#new_task_comment_tr
|
|
3
|
+
td.task_comment-progress
|
|
4
|
+
= f.input :progress, label: false
|
|
5
|
+
|
|
6
|
+
td.task_comment-content
|
|
7
|
+
= f.hidden_field :task_id
|
|
8
|
+
|
|
9
|
+
.textarea-input-group
|
|
10
|
+
= f.text_area :description, rows: 3, class: "form-control"
|
|
11
|
+
input type="submit" value=t("actions.save")
|
|
@@ -3,36 +3,17 @@
|
|
|
3
3
|
thead
|
|
4
4
|
tr
|
|
5
5
|
th.task_comment-progress
|
|
6
|
-
= sortable_column Dorsale::Flyboy::TaskComment.t(:progress), :
|
|
6
|
+
= sortable_column Dorsale::Flyboy::TaskComment.t(:progress), :date
|
|
7
7
|
|
|
8
8
|
th.task_comment-description
|
|
9
9
|
= sortable_column Dorsale::Flyboy::TaskComment.t(:description), :description
|
|
10
10
|
|
|
11
11
|
tbody
|
|
12
|
-
- if
|
|
13
|
-
|
|
14
|
-
td.task_comment-progress
|
|
15
|
-
= f.input :progress, label: false
|
|
12
|
+
- if params[:sort] != "date"
|
|
13
|
+
= render "dorsale/flyboy/task_comments/form", f: f
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
- @task_comments.each do |task_comment|
|
|
16
|
+
= render "dorsale/flyboy/task_comments/task_comment", task_comment: task_comment
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
input type="submit" value=t("actions.save")
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- @task_comments.each do |comment|
|
|
26
|
-
tr.task_comment
|
|
27
|
-
td.task_comment-progress
|
|
28
|
-
= progress_bar percentage: comment.progress, label: true
|
|
29
|
-
|
|
30
|
-
td.task_comment-content
|
|
31
|
-
p: small
|
|
32
|
-
span.task_comment-date = date(comment.date)
|
|
33
|
-
= " "
|
|
34
|
-
= comment.t(:written_by)
|
|
35
|
-
= " "
|
|
36
|
-
span.task_comment-author = comment.author
|
|
37
|
-
|
|
38
|
-
p.task_comment-description = text2html comment.description
|
|
18
|
+
- if params[:sort] == "date"
|
|
19
|
+
= render "dorsale/flyboy/task_comments/form", f: f
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
tr.task_comment
|
|
2
|
+
td.task_comment-progress
|
|
3
|
+
= progress_bar percentage: task_comment.progress, label: true
|
|
4
|
+
|
|
5
|
+
td.task_comment-content
|
|
6
|
+
p: small
|
|
7
|
+
span.task_comment-date = date(task_comment.date)
|
|
8
|
+
= " "
|
|
9
|
+
= task_comment.t(:written_by)
|
|
10
|
+
= " "
|
|
11
|
+
span.task_comment-author = task_comment.author
|
|
12
|
+
|
|
13
|
+
p.task_comment-description = text2html task_comment.description
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
.task_reminder_fields
|
|
2
|
-
.
|
|
3
|
-
= f.label :reminder, class: "control-label"
|
|
1
|
+
.form-group.task_reminder_fields class=("has-error" if f.object.errors.key?(:reminder_date))
|
|
2
|
+
= f.label :reminder, class: "control-label col-sm-3"
|
|
4
3
|
|
|
5
|
-
.
|
|
6
|
-
|
|
4
|
+
.col-sm-9
|
|
5
|
+
.form-sub-group-container
|
|
6
|
+
.form-sub-group.task_reminder_type
|
|
7
|
+
= f.select :reminder_type, flyboy_reminder_types_for_select, {include_blank: false}, {class: "form-control"}
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
.form-sub-group.task_reminder_duration
|
|
10
|
+
= f.text_field :reminder_duration, class: "form-control"
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
.form-sub-group.task_reminder_unit
|
|
13
|
+
= f.select :reminder_unit, flyboy_reminder_type_units_for_select, {include_blank: false}, {class: "form-control"}
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
.form-sub-group.task_reminder_date
|
|
16
|
+
= f.date_field :reminder_date, class: "form-control"
|
|
17
|
+
|
|
18
|
+
- if errors = f.object.errors[:reminder_date].join(", ").presence
|
|
19
|
+
span.help-block = errors
|
|
16
20
|
|
|
17
21
|
coffee:
|
|
18
22
|
$("#task_reminder_type")
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
.task_term_fields
|
|
2
|
-
.
|
|
3
|
-
= f.label :term, class: "control-label"
|
|
1
|
+
.form-group.task_term_fields class=("has-error" if f.object.errors.key?(:term))
|
|
2
|
+
= f.label :term, class: "control-label col-sm-3"
|
|
4
3
|
|
|
5
|
-
.
|
|
6
|
-
|
|
4
|
+
.col-sm-9
|
|
5
|
+
.form-sub-group-container
|
|
6
|
+
.form-sub-group.task_term_type
|
|
7
|
+
= f.select :term, task_term_values_for_select, {include_blank: true}, {class: "form-control"}
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
.form-sub-group.task_term_custom
|
|
10
|
+
= f.date_field :term, class: "form-control", id: "task_term_custom"
|
|
11
|
+
|
|
12
|
+
- if errors = f.object.errors[:term].join(", ").presence
|
|
13
|
+
span.help-block = errors
|
|
10
14
|
|
|
11
15
|
coffee:
|
|
12
16
|
$("#task_term")
|
|
@@ -35,12 +35,6 @@ en:
|
|
|
35
35
|
other: "Task Comments"
|
|
36
36
|
|
|
37
37
|
attributes:
|
|
38
|
-
dorsale/flyboy/task/status:
|
|
39
|
-
all: "All status"
|
|
40
|
-
open: "Open"
|
|
41
|
-
closed: "Closed"
|
|
42
|
-
unknown: "Unknown"
|
|
43
|
-
|
|
44
38
|
dorsale/flyboy/task:
|
|
45
39
|
taskable: "Origin"
|
|
46
40
|
taskable_type: "Origin type"
|
|
@@ -58,6 +52,14 @@ en:
|
|
|
58
52
|
description: "Description"
|
|
59
53
|
progress: "Progress"
|
|
60
54
|
|
|
55
|
+
dorsale/flyboy/task/state:
|
|
56
|
+
all: "All states"
|
|
57
|
+
done: "Finished"
|
|
58
|
+
undone: "Not finished"
|
|
59
|
+
ontime: "On time"
|
|
60
|
+
onwarning: "Reminder outdated"
|
|
61
|
+
onalert: "Term outdated"
|
|
62
|
+
|
|
61
63
|
dorsale/flyboy/task_comment:
|
|
62
64
|
progress: "Progress"
|
|
63
65
|
description: "Description"
|
|
@@ -37,12 +37,6 @@ fr:
|
|
|
37
37
|
other: "Commentaires de tâche"
|
|
38
38
|
|
|
39
39
|
attributes:
|
|
40
|
-
dorsale/flyboy/task/status:
|
|
41
|
-
all: "Tous les status"
|
|
42
|
-
open: "Ouvert"
|
|
43
|
-
closed: "Fermé"
|
|
44
|
-
unknown: "Inconnu"
|
|
45
|
-
|
|
46
40
|
dorsale/flyboy/task:
|
|
47
41
|
taskable: "Origine"
|
|
48
42
|
taskable_type: "Type origine"
|
|
@@ -60,6 +54,14 @@ fr:
|
|
|
60
54
|
description: "Description"
|
|
61
55
|
progress: "Progression"
|
|
62
56
|
|
|
57
|
+
dorsale/flyboy/task/state:
|
|
58
|
+
all: "Tous les états"
|
|
59
|
+
done: "Terminée"
|
|
60
|
+
undone: "Non terminée"
|
|
61
|
+
ontime: "À temps"
|
|
62
|
+
onwarning: "Rappel dépassé"
|
|
63
|
+
onalert: "Échéance dépassée"
|
|
64
|
+
|
|
63
65
|
dorsale/flyboy/task_comment:
|
|
64
66
|
progress: "Progression"
|
|
65
67
|
description: "Description"
|
|
@@ -93,12 +93,12 @@ When(/^I snooze this task$/) do
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
When(/^I filter tasks by done$/) do
|
|
96
|
-
select "
|
|
96
|
+
select "Terminée"
|
|
97
97
|
find(".filters [type=submit]:last-child").click
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
When(/^I filter tasks by undone$/) do
|
|
101
|
-
select "
|
|
101
|
+
select "Non terminé"
|
|
102
102
|
find(".filters [type=submit]:last-child").click
|
|
103
103
|
end
|
|
104
104
|
|
data/lib/dorsale/version.rb
CHANGED
|
@@ -58,13 +58,13 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it 'should filter by status closed' do
|
|
61
|
-
cookies["filters"] = {'
|
|
61
|
+
cookies["filters"] = {'fb_state' => "done"}.to_json
|
|
62
62
|
get :index
|
|
63
63
|
expect(assigns(:tasks).to_a).to eq [@task1]
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
it 'should filter by status opened' do
|
|
67
|
-
cookies["filters"] = {'
|
|
67
|
+
cookies["filters"] = {'fb_state' => "undone"}.to_json
|
|
68
68
|
get :index
|
|
69
69
|
expect(assigns(:tasks).to_a).to eq [@task2]
|
|
70
70
|
end
|
|
@@ -89,7 +89,7 @@ describe Dorsale::Flyboy::Task do
|
|
|
89
89
|
end # describe "reminders"
|
|
90
90
|
|
|
91
91
|
describe "scopes" do
|
|
92
|
-
it "should return delayed
|
|
92
|
+
it "should return delayed undone tasks" do
|
|
93
93
|
task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+1)
|
|
94
94
|
task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-1, done: true)
|
|
95
95
|
task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-1, done: false)
|
|
@@ -99,7 +99,7 @@ describe Dorsale::Flyboy::Task do
|
|
|
99
99
|
expect(tasks).to contain_exactly(task_2, task_4)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
-
it "should return today
|
|
102
|
+
it "should return today undone tasks" do
|
|
103
103
|
task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+1)
|
|
104
104
|
task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: true)
|
|
105
105
|
task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: false)
|
|
@@ -107,7 +107,7 @@ describe Dorsale::Flyboy::Task do
|
|
|
107
107
|
expect(tasks).to contain_exactly(task_2)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
it "should return tomorrow
|
|
110
|
+
it "should return tomorrow undone tasks" do
|
|
111
111
|
task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date)
|
|
112
112
|
task_1 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: true)
|
|
113
113
|
task_2 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: false)
|
|
@@ -115,7 +115,7 @@ describe Dorsale::Flyboy::Task do
|
|
|
115
115
|
expect(tasks).to contain_exactly(task_2)
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
it "should return this week
|
|
118
|
+
it "should return this week undone tasks" do
|
|
119
119
|
Timecop.freeze(2015, 5, 21, 12, 0, 0)
|
|
120
120
|
task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-7, done: false)
|
|
121
121
|
task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+2, done: true)
|
|
@@ -126,7 +126,7 @@ describe Dorsale::Flyboy::Task do
|
|
|
126
126
|
expect(tasks).to contain_exactly(task_2, task_3)
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
it "should return next week
|
|
129
|
+
it "should return next week undone tasks" do
|
|
130
130
|
Timecop.freeze(2015, 5, 21)
|
|
131
131
|
task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: false)
|
|
132
132
|
task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+7, done: true)
|
|
@@ -137,4 +137,67 @@ describe Dorsale::Flyboy::Task do
|
|
|
137
137
|
expect(tasks).to contain_exactly(task_2, task_3)
|
|
138
138
|
end
|
|
139
139
|
end # describe "scopes"
|
|
140
|
+
|
|
141
|
+
describe "states" do
|
|
142
|
+
# L’affichage de la couleur de la tâche dépend de son achèvement:
|
|
143
|
+
# Si date jour < date relance alors noir
|
|
144
|
+
let(:task_ontime) {
|
|
145
|
+
create(:flyboy_task,
|
|
146
|
+
:reminder_type => "custom",
|
|
147
|
+
:reminder_date => Time.zone.now.to_date + 1.day,
|
|
148
|
+
:term => Time.zone.now.to_date + 3.days,
|
|
149
|
+
:done => false,
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
it "should return :ontime" do
|
|
154
|
+
expect(task_ontime.state).to eq "ontime"
|
|
155
|
+
expect(described_class.ontime).to eq [task_ontime]
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Si date relance <= date jour
|
|
159
|
+
let(:task_onwarning) {
|
|
160
|
+
create(:flyboy_task,
|
|
161
|
+
:reminder_type => "custom",
|
|
162
|
+
:reminder_date => Time.zone.now.to_date,
|
|
163
|
+
:term => Time.zone.now.to_date + 3.days,
|
|
164
|
+
:done => false,
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
it "should return :onwarning" do
|
|
169
|
+
expect(task_onwarning.state).to eq "onwarning"
|
|
170
|
+
expect(described_class.onwarning).to eq [task_onwarning]
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Si date butoir <= date jour alors rouge
|
|
174
|
+
let(:task_onalert) {
|
|
175
|
+
create(:flyboy_task,
|
|
176
|
+
:reminder_type => "custom",
|
|
177
|
+
:reminder_date => Time.zone.now.to_date - 3.days,
|
|
178
|
+
:term => Time.zone.now.to_date,
|
|
179
|
+
:done => false,
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
it "should return :onalert" do
|
|
184
|
+
expect(task_onalert.state).to eq "onalert"
|
|
185
|
+
expect(described_class.onalert).to eq [task_onalert]
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Si action faite alors vert
|
|
189
|
+
let(:task_done) {
|
|
190
|
+
create(:flyboy_task,
|
|
191
|
+
:reminder_type => "custom",
|
|
192
|
+
:reminder_date => Time.zone.now.to_date - 3.days,
|
|
193
|
+
:term => Time.zone.now.to_date - 1.day,
|
|
194
|
+
:done => true,
|
|
195
|
+
)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
it "should return :done" do
|
|
199
|
+
expect(task_done.state).to eq "done"
|
|
200
|
+
expect(described_class.done).to eq [task_done]
|
|
201
|
+
end
|
|
202
|
+
end # describe "states"
|
|
140
203
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dorsale
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.7.
|
|
4
|
+
version: 3.7.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- agilidée
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-10-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -558,7 +558,7 @@ files:
|
|
|
558
558
|
- app/filters/dorsale/customer_vault/small_data/filter_strategy_by_activity_type.rb
|
|
559
559
|
- app/filters/dorsale/expense_gun/small_data/filter_for_expenses.rb
|
|
560
560
|
- app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb
|
|
561
|
-
- app/filters/dorsale/flyboy/small_data/
|
|
561
|
+
- app/filters/dorsale/flyboy/small_data/filter_strategy_by_task_state.rb
|
|
562
562
|
- app/helpers/dh.rb
|
|
563
563
|
- app/helpers/dorsale/alexandrie/attachments_helper.rb
|
|
564
564
|
- app/helpers/dorsale/all_helpers.rb
|
|
@@ -642,6 +642,7 @@ files:
|
|
|
642
642
|
- app/services/dorsale/flyboy/task/snoozer.rb
|
|
643
643
|
- app/services/dorsale/service.rb
|
|
644
644
|
- app/services/dorsale/tag_list_for_model.rb
|
|
645
|
+
- app/sorters/dorsale/flyboy/task_comments_sorter.rb
|
|
645
646
|
- app/uploaders/dorsale/alexandrie/file_uploader.rb
|
|
646
647
|
- app/uploaders/dorsale/application_uploader.rb
|
|
647
648
|
- app/uploaders/dorsale/avatar_uploader.rb
|
|
@@ -767,7 +768,9 @@ files:
|
|
|
767
768
|
- app/views/dorsale/expense_gun/expenses/new.html.slim
|
|
768
769
|
- app/views/dorsale/expense_gun/expenses/show.html.slim
|
|
769
770
|
- app/views/dorsale/flyboy/_filters.html.slim
|
|
771
|
+
- app/views/dorsale/flyboy/task_comments/_form.html.slim
|
|
770
772
|
- app/views/dorsale/flyboy/task_comments/_list.html.slim
|
|
773
|
+
- app/views/dorsale/flyboy/task_comments/_task_comment.html.slim
|
|
771
774
|
- app/views/dorsale/flyboy/task_mailer/new_task.html.slim
|
|
772
775
|
- app/views/dorsale/flyboy/task_mailer/term_email.html.slim
|
|
773
776
|
- app/views/dorsale/flyboy/tasks/_context.html.slim
|
|
@@ -950,7 +953,6 @@ files:
|
|
|
950
953
|
- spec/factories/flyboy_tasks.rb
|
|
951
954
|
- spec/files/avatar.png
|
|
952
955
|
- spec/files/pdf.pdf
|
|
953
|
-
- spec/helpers/dorsale/flyboy/application_helper_spec.rb
|
|
954
956
|
- spec/mailers/user_mailer.rb
|
|
955
957
|
- spec/models/dorsale/address_spec.rb
|
|
956
958
|
- spec/models/dorsale/alexandrie/attachment_spec.rb
|
|
@@ -1021,7 +1023,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1021
1023
|
version: '0'
|
|
1022
1024
|
requirements: []
|
|
1023
1025
|
rubyforge_project:
|
|
1024
|
-
rubygems_version: 2.6.
|
|
1026
|
+
rubygems_version: 2.6.13
|
|
1025
1027
|
signing_key:
|
|
1026
1028
|
specification_version: 4
|
|
1027
1029
|
summary: Modular ERP made with Ruby on Rails
|
|
@@ -1058,7 +1060,6 @@ test_files:
|
|
|
1058
1060
|
- spec/factories/flyboy_tasks.rb
|
|
1059
1061
|
- spec/files/avatar.png
|
|
1060
1062
|
- spec/files/pdf.pdf
|
|
1061
|
-
- spec/helpers/dorsale/flyboy/application_helper_spec.rb
|
|
1062
1063
|
- spec/mailers/user_mailer.rb
|
|
1063
1064
|
- spec/models/dorsale/address_spec.rb
|
|
1064
1065
|
- spec/models/dorsale/alexandrie/attachment_spec.rb
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
describe Dorsale::Flyboy::ApplicationHelper, type: :helper do
|
|
4
|
-
describe '#task_color' do
|
|
5
|
-
# L’affichage de la couleur de la tâche dépend de son achèvement:
|
|
6
|
-
# Si date jour < date relance alors noir
|
|
7
|
-
it 'should return .ontime' do
|
|
8
|
-
task = create(:flyboy_task, reminder_type: "custom", reminder_date: Time.zone.now.to_date + 1.day, term: Time.zone.now.to_date + 3.days, done: false)
|
|
9
|
-
expect(task_color(task)).to eq('ontime')
|
|
10
|
-
end
|
|
11
|
-
# Si date relance < date jour < date butoir alors orange
|
|
12
|
-
it 'should return .onwarning' do
|
|
13
|
-
task = create(:flyboy_task, reminder_type: "custom", reminder_date: Time.zone.now.to_date - 1.day, term: Time.zone.now.to_date + 3.days, done: false)
|
|
14
|
-
expect(task_color(task)).to eq('onwarning')
|
|
15
|
-
end
|
|
16
|
-
# Si date butoir < date jour alors rouge
|
|
17
|
-
it 'should return .onalert' do
|
|
18
|
-
task = create(:flyboy_task, reminder_type: "custom", reminder_date: Time.zone.now.to_date - 3.days, term: Time.zone.now.to_date - 1.day, done: false)
|
|
19
|
-
expect(task_color(task)).to eq('onalert')
|
|
20
|
-
end
|
|
21
|
-
# Si action faite alors vert
|
|
22
|
-
it 'should return .finished' do
|
|
23
|
-
task = create(:flyboy_task, reminder_type: "custom", reminder_date: Time.zone.now.to_date - 3.days, term: Time.zone.now.to_date - 1.day, done: true )
|
|
24
|
-
expect(task_color(task)).to eq('finished')
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|