liquidplanner 0.0.2 → 0.0.3
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.
- data/HISTORY +9 -1
- data/examples/README +17 -4
- data/examples/create_task.rb +7 -2
- data/examples/post-commit.rb +102 -0
- data/examples/svn-post-commit.sh +11 -0
- data/lib/liquidplanner.rb +8 -7
- data/lib/liquidplanner/debug.rb +1 -1
- data/lib/liquidplanner/liquidplanner_resource.rb +5 -1
- data/lib/liquidplanner/resources/client.rb +1 -2
- data/lib/liquidplanner/resources/container.rb +2 -1
- data/lib/liquidplanner/resources/document.rb +0 -4
- data/lib/liquidplanner/resources/folder.rb +0 -1
- data/lib/liquidplanner/resources/leaf.rb +9 -5
- data/lib/liquidplanner/resources/member.rb +3 -0
- data/lib/liquidplanner/resources/movable.rb +13 -0
- data/lib/liquidplanner/resources/move_or_package.rb +23 -0
- data/lib/liquidplanner/resources/{tasklist.rb → package.rb} +2 -2
- data/lib/liquidplanner/resources/packageable.rb +13 -0
- data/lib/liquidplanner/resources/project.rb +1 -2
- data/lib/liquidplanner/resources/root.rb +6 -0
- data/lib/liquidplanner/resources/{item.rb → treeitem.rb} +18 -6
- data/lib/liquidplanner/resources/workspace.rb +27 -5
- metadata +14 -11
- data/lib/liquidplanner/resources/order.rb +0 -13
- data/lib/liquidplanner/resources/priority.rb +0 -13
- data/lib/liquidplanner/resources/relative_resource.rb +0 -12
data/HISTORY
CHANGED
data/examples/README
CHANGED
@@ -1,14 +1,27 @@
|
|
1
|
-
|
1
|
+
Command Line Examples:
|
2
|
+
======================
|
3
|
+
|
4
|
+
Files: create_task.rb, list_tasks.rb, track_time.rb
|
5
|
+
|
6
|
+
All of these examples expect you to pass in your account name and workspace id,
|
2
7
|
for instance:
|
3
8
|
|
4
|
-
|
9
|
+
ruby examples/list_tasks.rb alice@example.com 7
|
5
10
|
|
6
11
|
If you set the VERBOSE environment variable, the examples will print out their
|
7
12
|
http requests to the console:
|
8
13
|
|
9
|
-
|
14
|
+
ruby examples/list_tasks.rb alice@example.com 7 --verbose
|
10
15
|
|
11
16
|
These examples all use highline library for prompting the user. Install the
|
12
17
|
gem with:
|
13
18
|
|
14
|
-
|
19
|
+
sudo gem install highline
|
20
|
+
|
21
|
+
Source Control Management Examples:
|
22
|
+
===================================
|
23
|
+
|
24
|
+
Files: post-commit.rb, svn-post-commit.sh
|
25
|
+
|
26
|
+
This is a working example of integrating LiquidPlanner with SVN. See
|
27
|
+
post-commit.rb for more information.
|
data/examples/create_task.rb
CHANGED
@@ -13,6 +13,11 @@ email, password, space_id = get_credentials!
|
|
13
13
|
lp = LiquidPlanner::Base.new(:email=>email, :password=>password)
|
14
14
|
workspace = lp.workspaces(space_id)
|
15
15
|
|
16
|
+
unless parent = workspace.packages(:first) || workspace.projects(:first)
|
17
|
+
say "There are no packages or projects in this workspace; cannot add a task."
|
18
|
+
exit
|
19
|
+
end
|
20
|
+
|
16
21
|
# Ask for a task's name and estimate
|
17
22
|
say "Add a new task to '#{workspace.name}'"
|
18
23
|
name = ask("New task name")
|
@@ -21,8 +26,8 @@ high = ask("Max effort", Float){|q| q.above = low}
|
|
21
26
|
|
22
27
|
# Submit the task and estimate
|
23
28
|
say "Submitting: '#{name}' [#{low} - #{high}] to LiquidPlanner"
|
24
|
-
task = workspace.create_task(:name=>name)
|
29
|
+
task = workspace.create_task(:name=>name, :parent_id => parent.id)
|
25
30
|
task.create_estimate(:low=>low, :high=>high)
|
26
31
|
|
27
32
|
# All done
|
28
|
-
say "Added task"
|
33
|
+
say "Added task"
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This script is intended as a commit (or check-in, push, etc.) message
|
4
|
+
# processor with your SCM (Subversion, git, etc.) of choice. It scans the
|
5
|
+
# message for link(s) to tasks in LiquidPlanner, and creates a comment
|
6
|
+
# on each such task containing the text of the commit message.
|
7
|
+
#
|
8
|
+
# == Prerequisites
|
9
|
+
#
|
10
|
+
# You'll need a LiquidPlanner account and the liquidplanner gem.
|
11
|
+
#
|
12
|
+
# == Usage
|
13
|
+
#
|
14
|
+
# The script takes a single command-line parameter, which is the path to a
|
15
|
+
# YAML config file containing your LiquidPlanner credentials.
|
16
|
+
#
|
17
|
+
# So, you might create a post-commit.yml file containing:
|
18
|
+
#
|
19
|
+
# email: your_email_address@example.com
|
20
|
+
# password: your_liquidplanner_password
|
21
|
+
#
|
22
|
+
# Then you pass the commit message to the script on its standard input.
|
23
|
+
#
|
24
|
+
# Initially, try placing a test message (containing at least one link to a
|
25
|
+
# task in your LiquidPlanner workspace) in a file named commit_message.txt.
|
26
|
+
# Then run a command:
|
27
|
+
#
|
28
|
+
# cat commit_message.txt | ruby ./post-commit.rb post-commit.yml
|
29
|
+
#
|
30
|
+
# This should create a comment on the linked task.
|
31
|
+
#
|
32
|
+
# == Integrating with your SCM
|
33
|
+
#
|
34
|
+
# Now it's just a matter of invoking this script on each commit to your SCM.
|
35
|
+
#
|
36
|
+
# Refer to the docs for your system of choice; we've included an example for
|
37
|
+
# Subversion in svn-post-commit.sh
|
38
|
+
#
|
39
|
+
|
40
|
+
require 'rubygems'
|
41
|
+
require 'liquidplanner'
|
42
|
+
require 'cgi'
|
43
|
+
|
44
|
+
class LiquidPlannerCommitMessenger
|
45
|
+
|
46
|
+
# pattern for identifying task IDs in the message; this matches URLs copied
|
47
|
+
# from LiquidPlanner, but you could choose to adopt a more compact notation
|
48
|
+
# and modify this pattern accordingly
|
49
|
+
#
|
50
|
+
LINK_PATTERN = %r{https://app.liquidplanner.com/space/([0-9]+)/[^\/]+/show\?id=([0-9]+)}
|
51
|
+
|
52
|
+
def initialize(email, password)
|
53
|
+
@lp = LiquidPlanner::Base.new(:email => email, :password => password)
|
54
|
+
end
|
55
|
+
|
56
|
+
# scan the message for one or more links to a LiquidPlanner task; for each
|
57
|
+
# such link, create a comment on the referenced task containing the text of
|
58
|
+
# the message
|
59
|
+
def process_commit_message(message)
|
60
|
+
comment = convert_message_to_comment(message)
|
61
|
+
message.scan(LINK_PATTERN) do |space_id, task_id|
|
62
|
+
add_comment(space_id, task_id, comment)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
protected
|
67
|
+
|
68
|
+
# create a comment on the given task in the given space,
|
69
|
+
# if they exist
|
70
|
+
def add_comment(space_id, task_id, comment)
|
71
|
+
if space = @lp.workspaces(space_id)
|
72
|
+
if task = space.tasks(task_id)
|
73
|
+
task.create_comment(:comment => comment)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# convert the commit message to HTML comment
|
79
|
+
def convert_message_to_comment(message)
|
80
|
+
# escape HTML, so that it can be read as comment text rather than
|
81
|
+
# interpreted as markup
|
82
|
+
m = CGI::escapeHTML(message)
|
83
|
+
|
84
|
+
# compress runs of newlines, and convert to br tags
|
85
|
+
m = m.gsub(/([\r?\n\r?]){3,}/, "\n\n").gsub(/\r?\n\r?/, "<br/>")
|
86
|
+
|
87
|
+
m
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
if $0 == __FILE__
|
93
|
+
|
94
|
+
config = YAML.load(File.read(ARGV[0]))
|
95
|
+
email = config["email"]
|
96
|
+
password = config["password"]
|
97
|
+
|
98
|
+
message = STDIN.read
|
99
|
+
LiquidPlannerCommitMessenger.new(email, password).process_commit_message(message)
|
100
|
+
|
101
|
+
end
|
102
|
+
|
data/lib/liquidplanner.rb
CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
module LiquidPlanner
|
5
|
-
VERSION = "0.0.
|
5
|
+
VERSION = "0.0.3"
|
6
6
|
API_BASE_URL = "https://app.liquidplanner.com/api"
|
7
7
|
end
|
8
8
|
|
@@ -20,17 +20,18 @@ require "liquidplanner/resources/account"
|
|
20
20
|
require "liquidplanner/resources/member"
|
21
21
|
require "liquidplanner/resources/workspace"
|
22
22
|
|
23
|
-
require "liquidplanner/resources/
|
24
|
-
require "liquidplanner/resources/
|
25
|
-
require "liquidplanner/resources/
|
23
|
+
require "liquidplanner/resources/move_or_package"
|
24
|
+
require "liquidplanner/resources/movable"
|
25
|
+
require "liquidplanner/resources/packageable"
|
26
26
|
|
27
|
-
require "liquidplanner/resources/
|
27
|
+
require "liquidplanner/resources/treeitem"
|
28
28
|
require "liquidplanner/resources/container"
|
29
29
|
require "liquidplanner/resources/leaf"
|
30
|
+
require "liquidplanner/resources/root"
|
30
31
|
require "liquidplanner/resources/task"
|
31
32
|
require "liquidplanner/resources/event"
|
32
33
|
require "liquidplanner/resources/milestone"
|
33
|
-
require "liquidplanner/resources/
|
34
|
+
require "liquidplanner/resources/package"
|
34
35
|
require "liquidplanner/resources/folder"
|
35
36
|
require "liquidplanner/resources/project"
|
36
37
|
require "liquidplanner/resources/client"
|
@@ -46,4 +47,4 @@ require "liquidplanner/resources/activity"
|
|
46
47
|
|
47
48
|
require "liquidplanner/ext/hash"
|
48
49
|
require "liquidplanner/ext/connection"
|
49
|
-
require "liquidplanner/ext/exceptions"
|
50
|
+
require "liquidplanner/ext/exceptions"
|
data/lib/liquidplanner/debug.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module LiquidPlanner
|
2
2
|
# Print out all the outgoing requests from the LiquidPlanner API
|
3
3
|
def self.watch_requests!(&block)
|
4
|
-
ActiveSupport::Notifications.subscribe('active_resource
|
4
|
+
ActiveSupport::Notifications.subscribe('request.active_resource') do |name, time, stamp, id, payload|
|
5
5
|
method = payload[:method]
|
6
6
|
request = payload[:request_uri]
|
7
7
|
|
@@ -13,6 +13,10 @@ module LiquidPlanner
|
|
13
13
|
@prefix_options.merge!(initial_prefix_options){|k, old_attr,new_attr| old_attr || new_attr }
|
14
14
|
self
|
15
15
|
end
|
16
|
+
|
17
|
+
def get_raw(custom_method_name, options = {})
|
18
|
+
connection.get_raw(custom_method_element_url(custom_method_name, options), self.class.headers)
|
19
|
+
end
|
16
20
|
|
17
21
|
private
|
18
22
|
# Override the default instantiate_record to support polymorphic types
|
@@ -41,7 +45,7 @@ module LiquidPlanner
|
|
41
45
|
# workspace.create_task(:name=>'new task').create_estimate(:low_effort=>1, :high_effort=>3)
|
42
46
|
def method_missing(name, *args)
|
43
47
|
if name.to_s =~ /^(create|build)_(.+)/
|
44
|
-
operation
|
48
|
+
operation = $1.to_sym
|
45
49
|
resource = $2
|
46
50
|
attributes = args.shift || {}
|
47
51
|
klass = LiquidPlanner::Resources.const_get(resource.classify)
|
@@ -1,18 +1,22 @@
|
|
1
1
|
#------------------------------------------------------------------------
|
2
2
|
# leaves
|
3
3
|
#------------------------------------------------------------------------
|
4
|
-
|
5
4
|
module LiquidPlanner
|
6
5
|
module Resources
|
7
|
-
class Leaf <
|
8
|
-
include
|
9
|
-
include
|
6
|
+
class Leaf < Treeitem
|
7
|
+
include Movable
|
8
|
+
include Packageable
|
10
9
|
|
11
10
|
TRACK_TIME_KEYS = [ :work, :activity_id, :member_id, :low, :high, :is_done, :done_on, :work_performed_on, :comment ].freeze
|
12
11
|
def track_time( options={} )
|
13
12
|
options.assert_valid_keys( *TRACK_TIME_KEYS )
|
14
13
|
request_body = options.to_json
|
15
|
-
|
14
|
+
# ActiveResource post() by default:
|
15
|
+
# response = post(:track_time, {}, request_body)
|
16
|
+
# will set this route with 'new': /api/workspaces/36/tasks/new/activities.json
|
17
|
+
# it's because of how it sets @persisted = true by default, calling custom_method_new_element_url()
|
18
|
+
# what we want is: /api/workspaces/36/tasks/:id/activities.json, which is accomplished here:
|
19
|
+
response = connection.post(custom_method_element_url(:track_time, options), request_body)
|
16
20
|
load( self.class.format.decode( response.body ) )
|
17
21
|
end
|
18
22
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module LiquidPlanner
|
2
|
+
# For resources that can be moved
|
3
|
+
module Movable
|
4
|
+
include MoveOrPackage
|
5
|
+
def move_before(item, is_packaged_other=false)
|
6
|
+
move_or_package :move, :before, item, is_packaged_other
|
7
|
+
end
|
8
|
+
|
9
|
+
def move_after(item, is_packaged_other=false)
|
10
|
+
move_or_package :move, :after, item, is_packaged_other
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module LiquidPlanner
|
2
|
+
module MoveOrPackage
|
3
|
+
def move_or_package(motion, relative, other, is_packaged_other=false)
|
4
|
+
|
5
|
+
raise ArgumentError.new("motion must be move or package") unless [:move, :package].include?(motion)
|
6
|
+
raise ArgumentError.new("relative must be before or after") unless [:before, :after].include?(relative)
|
7
|
+
action = "#{motion}_#{relative}"
|
8
|
+
|
9
|
+
other_id = other.is_a?(LiquidPlanner::LiquidPlannerResource) ? other.id : other
|
10
|
+
|
11
|
+
params = {}
|
12
|
+
if is_packaged_other && :move == motion
|
13
|
+
params[:packaged_other_id] = other_id
|
14
|
+
else
|
15
|
+
params[:other_id] = other_id
|
16
|
+
end
|
17
|
+
|
18
|
+
response = post(action, params)
|
19
|
+
|
20
|
+
load( self.class.format.decode( response.body ) )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module LiquidPlanner
|
2
|
+
# For resources that can be packaged
|
3
|
+
module Packageable
|
4
|
+
include MoveOrPackage
|
5
|
+
def package_before(item)
|
6
|
+
move_or_package :package, :before, item
|
7
|
+
end
|
8
|
+
|
9
|
+
def package_after(item)
|
10
|
+
move_or_package :package, :after, item
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -3,16 +3,24 @@
|
|
3
3
|
#------------------------------------------------------------------------
|
4
4
|
module LiquidPlanner
|
5
5
|
module Resources
|
6
|
-
class
|
6
|
+
class Treeitem < LiquidPlanner::LiquidPlannerResource
|
7
7
|
|
8
8
|
self.prefix = "/api/workspaces/:workspace_id/"
|
9
9
|
|
10
|
-
def
|
11
|
-
|
10
|
+
def parent
|
11
|
+
parent_id && Treeitem.find( :one, :from => "/api/workspaces/#{workspace_id}/treeitems/#{parent_id}" )
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
14
|
+
def package
|
15
|
+
package_id && Package.find( :one, :from => "/api/workspaces/#{workspace_id}/packages/#{package_id}" )
|
16
|
+
end
|
17
|
+
|
18
|
+
def project
|
19
|
+
project_id && Project.find( :one, :from => "/api/workspaces/#{workspace_id}/projects/#{project_id}" )
|
20
|
+
end
|
21
|
+
|
22
|
+
def client
|
23
|
+
client_id && Client.find( :one, :from => "/api/workspaces/#{workspace_id}/clients/#{client_id}" )
|
16
24
|
end
|
17
25
|
|
18
26
|
def note
|
@@ -20,7 +28,11 @@ module LiquidPlanner
|
|
20
28
|
n.prefix_options = luggage_params
|
21
29
|
end
|
22
30
|
end
|
23
|
-
|
31
|
+
|
32
|
+
def activities( scope=:all )
|
33
|
+
Activity.find( scope, :params => luggage_params )
|
34
|
+
end
|
35
|
+
|
24
36
|
def comments( scope=:all )
|
25
37
|
Comment.find( scope, :params => luggage_params )
|
26
38
|
end
|
@@ -6,19 +6,40 @@ module LiquidPlanner
|
|
6
6
|
Member.find( scope, :params => { :workspace_id => self.id }.merge(options) )
|
7
7
|
end
|
8
8
|
|
9
|
+
def treeitems( scope=:all, options={} )
|
10
|
+
Treeitem.find( scope, :params => { :workspace_id => self.id, :flat => true }.merge(options) )
|
11
|
+
end
|
12
|
+
|
9
13
|
def tasks( scope=:all, options={} )
|
10
14
|
Task.find( scope, :params => { :workspace_id => self.id }.merge(options) )
|
11
15
|
end
|
12
16
|
|
13
|
-
def
|
14
|
-
|
17
|
+
def events( scope=:all, options={} )
|
18
|
+
Event.find( scope, :params => { :workspace_id => self.id }.merge(options) )
|
19
|
+
end
|
20
|
+
|
21
|
+
def milestones( scope=:all, options={} )
|
22
|
+
Milestone.find( scope, :params => { :workspace_id => self.id }.merge(options) )
|
23
|
+
end
|
24
|
+
|
25
|
+
def clients( scope=:all, options={} )
|
26
|
+
Client.find( scope, :params => { :workspace_id => self.id, :flat => true }.merge(options) )
|
15
27
|
end
|
16
28
|
|
17
|
-
def
|
18
|
-
|
29
|
+
def projects( scope=:all, options={} )
|
30
|
+
Project.find( scope, :params => { :workspace_id => self.id, :flat => true }.merge(options) )
|
31
|
+
end
|
32
|
+
|
33
|
+
def packages( scope=:all, options={} )
|
34
|
+
Package.find( scope, :params => { :workspace_id => self.id, :flat => true }.merge(options) )
|
35
|
+
end
|
36
|
+
|
37
|
+
def folders( scope=:all, options={} )
|
38
|
+
Folder.find( scope, :params => { :workspace_id => self.id, :flat => true }.merge(options) )
|
19
39
|
end
|
20
40
|
|
21
|
-
|
41
|
+
protected
|
42
|
+
|
22
43
|
# create a new instance of klass (Task, Folder, etc.),
|
23
44
|
# with the workspace_id set as a prefix option
|
24
45
|
#
|
@@ -29,6 +50,7 @@ module LiquidPlanner
|
|
29
50
|
item.prefix_options[:workspace_id] = self.id
|
30
51
|
end
|
31
52
|
end
|
53
|
+
|
32
54
|
end
|
33
55
|
end
|
34
56
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liquidplanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brett Bender
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date:
|
19
|
+
date: 2012-03-14 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -137,7 +137,9 @@ files:
|
|
137
137
|
- examples/README
|
138
138
|
- examples/create_task.rb
|
139
139
|
- examples/list_tasks.rb
|
140
|
+
- examples/post-commit.rb
|
140
141
|
- examples/support/helper.rb
|
142
|
+
- examples/svn-post-commit.sh
|
141
143
|
- examples/track_time.rb
|
142
144
|
- lib/liquidplanner.rb
|
143
145
|
- lib/liquidplanner/base.rb
|
@@ -155,20 +157,21 @@ files:
|
|
155
157
|
- lib/liquidplanner/resources/estimate.rb
|
156
158
|
- lib/liquidplanner/resources/event.rb
|
157
159
|
- lib/liquidplanner/resources/folder.rb
|
158
|
-
- lib/liquidplanner/resources/item.rb
|
159
160
|
- lib/liquidplanner/resources/leaf.rb
|
160
161
|
- lib/liquidplanner/resources/link.rb
|
161
162
|
- lib/liquidplanner/resources/luggage.rb
|
162
163
|
- lib/liquidplanner/resources/member.rb
|
163
164
|
- lib/liquidplanner/resources/milestone.rb
|
165
|
+
- lib/liquidplanner/resources/movable.rb
|
166
|
+
- lib/liquidplanner/resources/move_or_package.rb
|
164
167
|
- lib/liquidplanner/resources/note.rb
|
165
|
-
- lib/liquidplanner/resources/
|
166
|
-
- lib/liquidplanner/resources/
|
168
|
+
- lib/liquidplanner/resources/package.rb
|
169
|
+
- lib/liquidplanner/resources/packageable.rb
|
167
170
|
- lib/liquidplanner/resources/project.rb
|
168
|
-
- lib/liquidplanner/resources/
|
171
|
+
- lib/liquidplanner/resources/root.rb
|
169
172
|
- lib/liquidplanner/resources/snapshot.rb
|
170
173
|
- lib/liquidplanner/resources/task.rb
|
171
|
-
- lib/liquidplanner/resources/
|
174
|
+
- lib/liquidplanner/resources/treeitem.rb
|
172
175
|
- lib/liquidplanner/resources/workspace.rb
|
173
176
|
- test/liquidplanner_resource_test.rb
|
174
177
|
- test/workspace_test.rb
|
@@ -177,8 +180,8 @@ homepage: http://github.com/liquidplanner/liquidplanner
|
|
177
180
|
licenses: []
|
178
181
|
|
179
182
|
post_install_message:
|
180
|
-
rdoc_options:
|
181
|
-
|
183
|
+
rdoc_options: []
|
184
|
+
|
182
185
|
require_paths:
|
183
186
|
- lib
|
184
187
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module LiquidPlanner
|
2
|
-
# For resources that can be prioritized
|
3
|
-
module Order
|
4
|
-
include RelativeResource
|
5
|
-
def organize_before(item)
|
6
|
-
move_relative_to :organize, :before, item
|
7
|
-
end
|
8
|
-
|
9
|
-
def organize_after(item)
|
10
|
-
move_relative_to :organize, :after, item
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module LiquidPlanner
|
2
|
-
# For resources that can be prioritized
|
3
|
-
module Priority
|
4
|
-
include RelativeResource
|
5
|
-
def prioritize_before(item)
|
6
|
-
move_relative_to :prioritize, :before, item
|
7
|
-
end
|
8
|
-
|
9
|
-
def prioritize_after(item)
|
10
|
-
move_relative_to :prioritize, :after, item
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module LiquidPlanner
|
2
|
-
module RelativeResource
|
3
|
-
def move_relative_to(tree, relative, other)
|
4
|
-
raise ArgumentError.new("tree must be prioritize or organize") unless [:prioritize, :organize].include?(tree)
|
5
|
-
raise ArgumentError.new("relative must be before or after") unless [:before, :after].include?(relative)
|
6
|
-
other_id = other.is_a?(LiquidPlanner::LiquidPlannerResource) ? other.id : other
|
7
|
-
|
8
|
-
response = post("#{tree}_#{relative}", :other_id=>other_id)
|
9
|
-
load( self.class.format.decode( response.body ) )
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|