dorsale 3.7.1 → 3.7.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf48ad101657528cc823ff034689b86429052dd2
4
- data.tar.gz: cadb1010f520ae56b346f951772e46cc0f87670c
3
+ metadata.gz: a0af47396cd8de5b81e92f797844f5df65ae2de4
4
+ data.tar.gz: 5ab1c66f64fe05aa3fedee65da652ce0cdf7b9c7
5
5
  SHA512:
6
- metadata.gz: 8d45e6c14fb4c2192e1c77b8d12061e7a5834a23a439577892122f5f05a524b855b61475c2fe40e30e457442211a52f491bb72f7092d450280f29ac5afe2bee5
7
- data.tar.gz: 34e5c7642da701322077d221fb263ebc671243ddf16b1acf388648f6c25203b0fb70f9fa96bf37b6b77d67dbe2dde79bbabe2a66eb365802cbac6093b200152a
6
+ metadata.gz: 79e8263485452c962cf22e8f45ddc8696ce5ebb5af6d3f9f8fcc3f3fac19c4163d9c705fc240a8048546aea7a871608451de77c40480a833f69ab2f9702f345b
7
+ data.tar.gz: 509a11ebc78b11f47e64557ff9f7f00898a0ead78f718bec312445dbbfcc004ea9ef362e8a31ae89f304522d0593682842297b7b865667cf8a44b941a02d3d7e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.2
4
+ - Add sorting for task comments
5
+ - Add copy for tasks
6
+ - Add comment when reporting
7
+
3
8
  ## 3.7.1
4
9
  - Add activity type and origin filters for people
5
10
  - Add activity type and origin in people export
@@ -9,13 +9,13 @@
9
9
  th
10
10
  text-align: left
11
11
 
12
- .finished td
12
+ .finished td, .context-body.finished
13
13
  background: $state-success-bg !important
14
14
 
15
- .onwarning td
15
+ .onwarning td, .context-body.onwarning
16
16
  background: $state-warning-bg !important
17
17
 
18
- .onalert td
18
+ .onalert td, .context-body.onalert
19
19
  background: $state-danger-bg !important
20
20
 
21
21
  td.actions
@@ -14,11 +14,16 @@ class Dorsale::ApplicationController < ::ApplicationController
14
14
  end
15
15
  }
16
16
 
17
+ def filters_jar
18
+ cookies
19
+ end
20
+
17
21
  def model
18
22
  raise NotImplementedError
19
23
  end
20
24
 
21
25
  helper_method :model
26
+ helper_method :filters_jar
22
27
 
23
28
  def scope
24
29
  policy_scope(model)
@@ -13,7 +13,7 @@ class Dorsale::BillingMachine::InvoicesController < ::Dorsale::BillingMachine::A
13
13
  authorize model, :list?
14
14
 
15
15
  @invoices ||= scope.all.preload(:customer)
16
- @filters ||= ::Dorsale::BillingMachine::SmallData::FilterForInvoices.new(cookies)
16
+ @filters ||= ::Dorsale::BillingMachine::SmallData::FilterForInvoices.new(filters_jar)
17
17
 
18
18
  @invoices = @filters.apply(@invoices)
19
19
  @invoices_without_pagination = @invoices
@@ -13,7 +13,7 @@ class Dorsale::BillingMachine::QuotationsController < ::Dorsale::BillingMachine:
13
13
  authorize model, :list?
14
14
 
15
15
  @quotations ||= scope.all.preload(:customer)
16
- @filters ||= ::Dorsale::BillingMachine::SmallData::FilterForQuotations.new(cookies)
16
+ @filters ||= ::Dorsale::BillingMachine::SmallData::FilterForQuotations.new(filters_jar)
17
17
 
18
18
  @quotations = @filters.apply(@quotations)
19
19
  @quotations_without_pagination = @quotations # All filtered quotations (not paginated)
@@ -4,7 +4,7 @@ class Dorsale::CustomerVault::PeopleController < ::Dorsale::CustomerVault::Appli
4
4
  def index
5
5
  authorize model, :list?
6
6
 
7
- @filters ||= ::Dorsale::CustomerVault::SmallData::FilterForPeople.new(cookies)
7
+ @filters ||= ::Dorsale::CustomerVault::SmallData::FilterForPeople.new(filters_jar)
8
8
  @tags ||= customer_vault_tag_list
9
9
  @origins ||= policy_scope(Dorsale::CustomerVault::Origin)
10
10
  @activity_types ||= policy_scope(Dorsale::CustomerVault::ActivityType)
@@ -16,7 +16,7 @@ class Dorsale::ExpenseGun::ExpensesController < Dorsale::ExpenseGun::Application
16
16
  authorize model, :list?
17
17
 
18
18
  @expenses ||= scope.all.preload(:user, :expense_lines)
19
- @filters ||= Dorsale::ExpenseGun::SmallData::FilterForExpenses.new(cookies)
19
+ @filters ||= Dorsale::ExpenseGun::SmallData::FilterForExpenses.new(filters_jar)
20
20
  @expenses = @filters.apply(@expenses)
21
21
  @expenses = @expenses.page(params[:page]).per(25)
22
22
  end
@@ -7,7 +7,8 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
7
7
  :update,
8
8
  :destroy,
9
9
  :complete,
10
- :snooze
10
+ :snooze,
11
+ :copy,
11
12
  ]
12
13
 
13
14
  def index
@@ -33,7 +34,7 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
33
34
  end
34
35
  end
35
36
 
36
- @filters ||= ::Dorsale::Flyboy::SmallData::FilterForTasks.new(cookies)
37
+ @filters ||= ::Dorsale::Flyboy::SmallData::FilterForTasks.new(filters_jar)
37
38
 
38
39
  @tasks = @filters.apply(@tasks)
39
40
  @tasks = @tasks.search(params[:q])
@@ -51,6 +52,19 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
51
52
 
52
53
  def show
53
54
  authorize @task, :read?
55
+ @task_comments = @task.comments
56
+
57
+ @order ||= sortable_column_order do |column, direction|
58
+ case column
59
+ when :description
60
+ %(LOWER(#{column}) #{direction})
61
+ when :progress
62
+ %(#{column} #{direction})
63
+ else
64
+ "date #{direction}"
65
+ end
66
+ end
67
+ @task_comments = @task_comments.reorder(@order)
54
68
  end
55
69
 
56
70
  def new
@@ -131,6 +145,8 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
131
145
  authorize @task, :snooze?
132
146
 
133
147
  if @task.snoozer.snooze
148
+ comment = Dorsale::Flyboy::TaskComment.new(task: @task, progress: @task.progress, description: t("messages.tasks.snooze_ok"), author: current_user)
149
+ comment.save!
134
150
  flash[:success] = t("messages.tasks.snooze_ok")
135
151
  else
136
152
  flash[:danger] = t("messages.tasks.snooze_error")
@@ -139,6 +155,14 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
139
155
  redirect_to back_url
140
156
  end
141
157
 
158
+ def copy
159
+ authorize @task, :copy?
160
+
161
+ @original = @task
162
+ @task = Dorsale::Flyboy::Task::Copy.(@original)
163
+ render :new
164
+ end
165
+
142
166
  def summary
143
167
  authorize model, :list?
144
168
 
@@ -1,6 +1,6 @@
1
1
  module Dorsale::Flyboy::ApplicationHelper
2
2
  def tasks_for(taskable)
3
- @filters = ::Dorsale::Flyboy::SmallData::FilterForTasks.new(cookies)
3
+ @filters = ::Dorsale::Flyboy::SmallData::FilterForTasks.new(filters_jar)
4
4
 
5
5
  order ||= sortable_column_order do |column, direction|
6
6
  case column
@@ -9,6 +9,7 @@ module Dorsale::Flyboy::TaskPolicyHelper
9
9
  :delete?,
10
10
  :complete?,
11
11
  :snooze?,
12
+ :copy?,
12
13
  ]
13
14
 
14
15
  def create?
@@ -16,14 +17,6 @@ module Dorsale::Flyboy::TaskPolicyHelper
16
17
  super
17
18
  end
18
19
 
19
- def update?
20
- super
21
- end
22
-
23
- def delete?
24
- super
25
- end
26
-
27
20
  def complete?
28
21
  return false if task.done?
29
22
  super
@@ -0,0 +1,18 @@
1
+ class Dorsale::Flyboy::Task::Copy < ::Dorsale::Service
2
+ attr_accessor :task, :copy
3
+
4
+ def initialize(task)
5
+ @task = task
6
+ end
7
+
8
+ def call
9
+ @copy = @task.dup
10
+ @copy.reminder_date = nil
11
+ @copy.reminder_type = nil
12
+ @copy.term = nil
13
+ @copy.done = nil
14
+ @copy.progress = nil
15
+ @copy.assign_default_values
16
+ @copy
17
+ end
18
+ end
@@ -3,10 +3,10 @@
3
3
  thead
4
4
  tr
5
5
  th.task_comment-progress
6
- = Dorsale::Flyboy::TaskComment.t(:progress)
6
+ = sortable_column Dorsale::Flyboy::TaskComment.t(:progress), :progress
7
7
 
8
8
  th.task_comment-description
9
- = Dorsale::Flyboy::TaskComment.t(:description)
9
+ = sortable_column Dorsale::Flyboy::TaskComment.t(:description), :description
10
10
 
11
11
  tbody
12
12
  - if policy(@task).comment?
@@ -22,7 +22,7 @@
22
22
  input type="submit" value=t("actions.save")
23
23
 
24
24
 
25
- - @task.reload.comments.map do |comment|
25
+ - @task_comments.each do |comment|
26
26
  tr.task_comment
27
27
  td.task_comment-progress
28
28
  = progress_bar percentage: comment.progress, label: true
@@ -4,7 +4,7 @@
4
4
  = " "
5
5
  = task
6
6
 
7
- .context-body
7
+ .context-body class=task_color(task)
8
8
  = info task, :progress, progress_bar(percentage: task.progress, label: true)
9
9
  = info task, :owner
10
10
  = info task, :created_at
@@ -14,3 +14,9 @@
14
14
 
15
15
  .context-footer
16
16
  = actions_for task
17
+
18
+ - if policy(task).copy?
19
+ = copy_button copy_flyboy_task_path(task), method: :patch
20
+
21
+ - if policy(task).snooze?
22
+ = snooze_button snooze_flyboy_task_path(task), method: :patch
@@ -11,6 +11,8 @@ fr:
11
11
  snooze_eror: "Impossible de reporter la tâche"
12
12
  complete_ok: "La tâche a été marquée comme terminée"
13
13
  complete_eror: "Impossible de terminer la tâche"
14
+ copy_ok: "La tâche a été copiée"
15
+ copy_ko: "Impossible de copier cette tâche"
14
16
 
15
17
  task_mailer:
16
18
  new_task:
data/config/routes.rb CHANGED
@@ -21,6 +21,7 @@ Dorsale::Engine.routes.draw do
21
21
  member do
22
22
  patch :complete
23
23
  patch :snooze
24
+ patch :copy
24
25
  end
25
26
  end
26
27
 
@@ -1,3 +1,3 @@
1
1
  module Dorsale
2
- VERSION = "3.7.1"
2
+ VERSION = "3.7.2"
3
3
  end
@@ -234,6 +234,11 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
234
234
  patch :snooze, params: {:id => task.to_param}
235
235
  expect(response).to redirect_to(task)
236
236
  end
237
+
238
+ it "is expected to create a task comment" do
239
+ task = create(:flyboy_task, term: 3.days.ago)
240
+ expect{patch :snooze, params: {:id => task.to_param}}.to change{Dorsale::Flyboy::TaskComment.count}.by(1)
241
+ end
237
242
  end
238
243
 
239
244
  describe "summary" do
@@ -44,5 +44,8 @@ describe ::Dorsale::Flyboy::TasksController, type: :routing do
44
44
  expect(delete("flyboy/tasks/1")).to route_to("dorsale/flyboy/tasks#destroy", id: "1")
45
45
  end
46
46
 
47
+ it "routes to #copy" do
48
+ expect(patch("flyboy/tasks/1/copy")).to route_to("dorsale/flyboy/tasks#copy", id: "1")
49
+ end
47
50
  end
48
51
  end
@@ -0,0 +1,25 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe Dorsale::Flyboy::Task::Copy do
4
+ let(:task) {
5
+ create(:flyboy_task, done: true, progress: 50)
6
+ }
7
+
8
+ let(:copy) {
9
+ copy = Dorsale::Flyboy::Task::Copy.(task)
10
+ copy.save
11
+ copy
12
+ }
13
+
14
+ it "is expected to duplicate the whole object" do
15
+ expect(copy).to be_persisted
16
+ expect(copy.name).to eq task.name
17
+ expect(copy.owner).to eq task.owner
18
+ expect(copy.description).to eq task.description
19
+ end
20
+
21
+ it "is expected to set the progress to 0" do
22
+ expect(copy.progress).to eq 0
23
+ end
24
+
25
+ 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.1
4
+ version: 3.7.2
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-05-05 00:00:00.000000000 Z
11
+ date: 2017-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -636,6 +636,7 @@ files:
636
636
  - app/services/dorsale/billing_machine/quotation/statistics.rb
637
637
  - app/services/dorsale/billing_machine/quotation/to_invoice.rb
638
638
  - app/services/dorsale/expense_gun/expense/copy.rb
639
+ - app/services/dorsale/flyboy/task/copy.rb
639
640
  - app/services/dorsale/flyboy/task/snoozer.rb
640
641
  - app/services/dorsale/service.rb
641
642
  - app/services/dorsale/tag_list_for_model.rb
@@ -990,6 +991,7 @@ files:
990
991
  - spec/services/dorsale/billing_machine/quotation/statistics.rb
991
992
  - spec/services/dorsale/billing_machine/quotation/to_invoice_spec.rb
992
993
  - spec/services/dorsale/expense_gun/expense/copy_spec.rb
994
+ - spec/services/dorsale/flyboy/task/copy_spec.rb
993
995
  - spec/services/dorsale/flyboy/task/snoozer_spec.rb
994
996
  - spec/spec_helper.rb
995
997
  - spec/support/devise.rb
@@ -1095,6 +1097,7 @@ test_files:
1095
1097
  - spec/services/dorsale/billing_machine/quotation/statistics.rb
1096
1098
  - spec/services/dorsale/billing_machine/quotation/to_invoice_spec.rb
1097
1099
  - spec/services/dorsale/expense_gun/expense/copy_spec.rb
1100
+ - spec/services/dorsale/flyboy/task/copy_spec.rb
1098
1101
  - spec/services/dorsale/flyboy/task/snoozer_spec.rb
1099
1102
  - spec/spec_helper.rb
1100
1103
  - spec/support/devise.rb