motion-prime 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +1 -1
  4. data/ROADMAP.md +3 -0
  5. data/files/Gemfile +1 -1
  6. data/motion-prime/api_client.rb +5 -2
  7. data/motion-prime/core_ext/kernel.rb +36 -0
  8. data/motion-prime/elements/_content_text_mixin.rb +32 -11
  9. data/motion-prime/elements/base_element.rb +33 -16
  10. data/motion-prime/elements/draw.rb +10 -4
  11. data/motion-prime/elements/draw/image.rb +26 -15
  12. data/motion-prime/elements/map.rb +5 -0
  13. data/motion-prime/models/_association_mixin.rb +0 -3
  14. data/motion-prime/models/_base_mixin.rb +24 -3
  15. data/motion-prime/models/_filter_mixin.rb +28 -0
  16. data/motion-prime/models/_sync_mixin.rb +13 -10
  17. data/motion-prime/models/association_collection.rb +41 -16
  18. data/motion-prime/models/errors.rb +46 -24
  19. data/motion-prime/models/model.rb +8 -0
  20. data/motion-prime/screens/_sections_mixin.rb +1 -1
  21. data/motion-prime/screens/extensions/_indicators_mixin.rb +4 -2
  22. data/motion-prime/screens/extensions/_navigation_bar_mixin.rb +1 -1
  23. data/motion-prime/screens/screen.rb +4 -0
  24. data/motion-prime/sections/_async_form_mixin.rb +12 -0
  25. data/motion-prime/sections/_async_table_mixin.rb +193 -0
  26. data/motion-prime/sections/_cell_section_mixin.rb +6 -6
  27. data/motion-prime/sections/_draw_section_mixin.rb +13 -5
  28. data/motion-prime/sections/base_section.rb +62 -36
  29. data/motion-prime/sections/form.rb +19 -35
  30. data/motion-prime/sections/form/base_field_section.rb +42 -34
  31. data/motion-prime/sections/form/static_field_section.rb +9 -0
  32. data/motion-prime/sections/table.rb +143 -201
  33. data/motion-prime/sections/table/table_delegate.rb +15 -15
  34. data/motion-prime/services/table_data_indexes.rb +12 -2
  35. data/motion-prime/styles/base.rb +1 -1
  36. data/motion-prime/styles/form.rb +6 -6
  37. data/motion-prime/version.rb +1 -1
  38. data/motion-prime/views/layout.rb +5 -2
  39. data/motion-prime/views/view_styler.rb +2 -0
  40. data/spec/models/association_collection_spec.rb +28 -6
  41. metadata +6 -2
@@ -20,25 +20,25 @@ module MotionPrime
20
20
  end
21
21
 
22
22
  def numberOfSectionsInTableView(table)
23
- table_section.number_of_sections(table)
23
+ table_section.number_of_groups(table)
24
24
  end
25
25
 
26
26
  def tableView(table, cellForRowAtIndexPath: index)
27
- curCallTime = Time.now.to_f
28
- curCallOffset = table.contentOffset.y
29
- if @prevCallTime
30
- timeDelta = curCallTime - @prevCallTime
31
- offsetDelta = curCallOffset - @prevCallOffset
32
- @deceleration_speed = offsetDelta/timeDelta
27
+ cur_call_time = Time.now.to_f
28
+ cur_call_offset = table.contentOffset.y
29
+ if @prev_call_time
30
+ time_delta = cur_call_time - @prev_call_time
31
+ offset_delta = cur_call_offset - @prev_call_offset
32
+ @deceleration_speed = offset_delta/time_delta
33
33
  end
34
- @prevCallTime = curCallTime
35
- @prevCallOffset = curCallOffset
34
+ @prev_call_time = cur_call_time
35
+ @prev_call_offset = cur_call_offset
36
36
 
37
37
  table_section.cell_for_index(table, index)
38
38
  end
39
39
 
40
- def tableView(table, numberOfRowsInSection: section)
41
- table_section.rows_for_section(section).try(:count).to_i
40
+ def tableView(table, numberOfRowsInSection: group)
41
+ table_section.cell_sections_for_group(group).try(:count).to_i
42
42
  end
43
43
 
44
44
  def tableView(table, heightForRowAtIndexPath: index)
@@ -49,12 +49,12 @@ module MotionPrime
49
49
  table_section.on_click(table, index)
50
50
  end
51
51
 
52
- def tableView(table, viewForHeaderInSection: section)
53
- table_section.view_for_header_in_section(table, section)
52
+ def tableView(table, viewForHeaderInSection: group)
53
+ table_section.header_cell_in_group(table, group)
54
54
  end
55
55
 
56
- def tableView(table, heightForHeaderInSection: section)
57
- table_section.height_for_header_in_section(table, section)
56
+ def tableView(table, heightForHeaderInSection: group)
57
+ table_section.height_for_header_in_group(table, group)
58
58
  end
59
59
 
60
60
  def scrollViewDidScroll(scroll)
@@ -14,6 +14,14 @@ class TableDataIndexes
14
14
  a.section > b.section || a.row > b.row ? 1 : -1
15
15
  end
16
16
 
17
+ def greater_than(a, b)
18
+ compare_indexes(a, b) > 0
19
+ end
20
+
21
+ def less_than(a, b)
22
+ compare_indexes(a, b) < 0
23
+ end
24
+
17
25
  def sum_index(a, rows, crop_to_edges = true)
18
26
  row = a.row + rows
19
27
  section = a.section
@@ -25,8 +33,10 @@ class TableDataIndexes
25
33
  section = a.section + direction
26
34
  edge_row = [[0, row].max, max_row].min
27
35
 
28
- if section < 0 || section >= sections_count
29
- return crop_to_edges ? NSIndexPath.indexPathForRow(edge_row, inSection: a.section) : false
36
+ max_section = sections_count - 1
37
+ if section < 0 || section > max_section
38
+ edge_section = [[section, 0].max, max_section].min
39
+ return crop_to_edges ? NSIndexPath.indexPathForRow(edge_row, inSection: edge_section) : false
30
40
  end
31
41
 
32
42
  start_row = edge_row.zero? ? count_in_section(section) - 1 : 0
@@ -11,7 +11,7 @@ MotionPrime::Styles.define :base do
11
11
  left: 0,
12
12
  width: 320,
13
13
  bottom: 0,
14
- separatorInset: 0
14
+ separator_inset: 0
15
15
 
16
16
  style :table_cell,
17
17
  background_color: :clear
@@ -1,7 +1,7 @@
1
1
  motion_require '../views/styles.rb'
2
2
  MotionPrime::Styles.define :base_form do
3
3
  style :header, container: {height: 25}
4
- style :header_label,
4
+ style :header_label, mixins: [:multiline],
5
5
  left: 0,
6
6
  bottom: 5,
7
7
  top: nil,
@@ -13,7 +13,7 @@ MotionPrime::Styles.define :base_form do
13
13
  top: nil,
14
14
  width: 320
15
15
 
16
- style :field,
16
+ style :field, :cell,
17
17
  selection_style: :none,
18
18
  background_color: :clear
19
19
 
@@ -95,10 +95,10 @@ MotionPrime::Styles.define :base_form do
95
95
  style :with_sections_field_switch,
96
96
  right: 20
97
97
 
98
- style :with_sections_field_text_field,
99
- :with_sections_field_text_view,
100
- :with_sections_field_password_field,
101
- :with_sections_field_label,
98
+ style :with_sections_field_text_field,
99
+ :with_sections_field_text_view,
100
+ :with_sections_field_password_field,
101
+ :with_sections_field_label,
102
102
  :with_sections_field_button,
103
103
  left: 20,
104
104
  right: 20
@@ -1,3 +1,3 @@
1
1
  module MotionPrime
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -5,8 +5,11 @@ module MotionPrime
5
5
  module Layout
6
6
  def add_view(klass, options = {}, &block)
7
7
  options = options.clone
8
+ render_target = options.delete(:render_target)
9
+ parent_view = options.delete(:parent_view) || render_target
10
+
8
11
  bounds = if view_stack.empty?
9
- options.delete(:parent_view).try(:bounds) || CGRectZero
12
+ parent_view.try(:bounds) || CGRectZero
10
13
  else
11
14
  view_stack.last.bounds
12
15
  end
@@ -15,7 +18,7 @@ module MotionPrime
15
18
  view = builder.view
16
19
  insert_index = options.delete(:at_index)
17
20
 
18
- if render_target = options.delete(:render_target)
21
+ if render_target
19
22
  options[:bounds] = render_target.bounds
20
23
  insert_index ? render_target.insertSubview(view, atIndex: insert_index) : render_target.addSubview(view)
21
24
  elsif view_stack.any?
@@ -140,6 +140,8 @@ module MotionPrime
140
140
  view.layer.insertSublayer(gradient, atIndex: 0)
141
141
  elsif key == 'selection_style' && view.is_a?(UITableViewCell) && value.is_a?(Symbol)
142
142
  view.setSelectionStyle value.uitablecellselectionstyle
143
+ elsif key == 'estimated_cell_height' && view.is_a?(UITableView)
144
+ view.setEstimatedRowHeight value
143
145
  elsif key == 'separator_inset' && (view.is_a?(UITableViewCell) || view.is_a?(UITableView))
144
146
  if value.to_s == 'none'
145
147
  view.separatorInset = UIEdgeInsetsMake(0, 320, 0, 0)
@@ -37,21 +37,43 @@ describe "Prime::AssociationCollection" do
37
37
  describe "#all" do
38
38
  before do
39
39
  @organization = Organization.new
40
- puts "count 1: #{@organization.projects.count}"
41
40
  project = Project.new(title: 'test 1')
42
41
  @organization.projects.add(project)
43
- puts "count 2: #{@organization.projects.count}"
44
42
  project = Project.new(title: 'test 2')
45
43
  @organization.projects.add(project)
46
- puts "count 3: #{@organization.projects.count}"
47
44
  end
48
45
 
49
- it "should return all records by default" do
46
+ it "should return all records" do
50
47
  @organization.projects.all.count.should == 2
51
48
  end
49
+ end
50
+
51
+ describe "#find" do
52
+ before do
53
+ @organization = Organization.new
54
+ project = Project.create(title: 'test 1')
55
+ @organization.projects.add(project)
56
+ project = Project.create(title: 'test 2')
57
+ @organization.projects.add(project)
58
+ @organization.save
59
+ end
60
+
61
+ it "should return saved records by first hash" do
62
+ @organization.projects.find(title: 'test 1').count.should == 1
63
+ end
64
+ end
65
+
66
+ describe "#filter" do
67
+ before do
68
+ @organization = Organization.new
69
+ project = Project.new(title: 'test 1')
70
+ @organization.projects.add(project)
71
+ project = Project.new(title: 'test 2')
72
+ @organization.projects.add(project)
73
+ end
52
74
 
53
- it "should return filter records by first hash" do
54
- @organization.projects.all(title: 'test 1').count.should == 1
75
+ it "should return saved records by first hash" do
76
+ @organization.projects.filter(title: 'test 1').count.should == 1
55
77
  end
56
78
  end
57
79
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-prime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Haziev
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-09 00:00:00.000000000 Z
12
+ date: 2014-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -281,6 +281,7 @@ files:
281
281
  - motion-prime/models/_association_mixin.rb
282
282
  - motion-prime/models/_base_mixin.rb
283
283
  - motion-prime/models/_dirty_mixin.rb
284
+ - motion-prime/models/_filter_mixin.rb
284
285
  - motion-prime/models/_finder_mixin.rb
285
286
  - motion-prime/models/_nano_bag_mixin.rb
286
287
  - motion-prime/models/_sync_mixin.rb
@@ -301,6 +302,8 @@ files:
301
302
  - motion-prime/screens/extensions/_navigation_bar_mixin.rb
302
303
  - motion-prime/screens/screen.rb
303
304
  - motion-prime/sections/__section_with_container_mixin.rb
305
+ - motion-prime/sections/_async_form_mixin.rb
306
+ - motion-prime/sections/_async_table_mixin.rb
304
307
  - motion-prime/sections/_cell_section_mixin.rb
305
308
  - motion-prime/sections/_delegate_mixin.rb
306
309
  - motion-prime/sections/_draw_section_mixin.rb
@@ -312,6 +315,7 @@ files:
312
315
  - motion-prime/sections/form/form_delegate.rb
313
316
  - motion-prime/sections/form/password_field_section.rb
314
317
  - motion-prime/sections/form/select_field_section.rb
318
+ - motion-prime/sections/form/static_field_section.rb
315
319
  - motion-prime/sections/form/string_field_section.rb
316
320
  - motion-prime/sections/form/submit_field_section.rb
317
321
  - motion-prime/sections/form/switch_field_section.rb