c80_map 0.1.0.2 → 0.1.0.10

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -1
  3. data/app/assets/javascripts/buttons/admin_buttons/button_area_link.js +88 -0
  4. data/app/assets/javascripts/buttons/admin_buttons/button_back_to_map.js +2 -4
  5. data/app/assets/javascripts/buttons/admin_buttons/button_cancel_remove.js +23 -0
  6. data/app/assets/javascripts/buttons/admin_buttons/button_edit.js +16 -0
  7. data/app/assets/javascripts/buttons/admin_buttons/button_remove.js +23 -0
  8. data/app/assets/javascripts/buttons/admin_buttons/button_save.js +32 -4
  9. data/app/assets/javascripts/c80_map.js.coffee +4 -1
  10. data/app/assets/javascripts/map_objects/area.js +20 -9
  11. data/app/assets/javascripts/map_objects/building.js +2 -3
  12. data/app/assets/javascripts/src/main.js +74 -10
  13. data/app/assets/javascripts/src/state_controller.js +97 -23
  14. data/app/assets/javascripts/src/utils/map_utils.js +23 -0
  15. data/app/assets/javascripts/src/utils/opacity_buttons_utils.js +15 -0
  16. data/app/assets/javascripts/src/{utils.js → utils/utils.js} +13 -0
  17. data/app/assets/javascripts/svg_elements/area_label.js +25 -0
  18. data/app/assets/javascripts/svg_elements/polygon.js +3 -1
  19. data/app/assets/stylesheets/map.scss +148 -66
  20. data/app/assets/stylesheets/view/modal_window.scss +13 -0
  21. data/app/controllers/c80_map/map_ajax_controller.rb +5 -1
  22. data/app/models/c80_map/area.rb +1 -0
  23. data/app/models/c80_map/area_representator.rb +75 -0
  24. data/app/models/c80_map/map_json.rb +28 -14
  25. data/app/views/c80_map/_map_row_index.html.erb +1 -0
  26. data/app/views/c80_map/shared/_modal_window.html.erb +28 -0
  27. data/db/migrate/{20160620040202_create_c80_map_areas.rb → 20160620040225_create_c80_map_areas.rb} +4 -1
  28. data/lib/c80_map/version.rb +1 -1
  29. metadata +14 -5
  30. /data/db/migrate/{20160620040206_create_c80_map_buildings.rb → 20160620040217_create_c80_map_buildings.rb} +0 -0
@@ -0,0 +1,13 @@
1
+ div#modal_window {
2
+
3
+ .modal-body {
4
+ font-size: 12px;
5
+ }
6
+
7
+ div.dropdown-menu.open {
8
+ border: none;
9
+ shadow:none;
10
+ background-color: transparent;
11
+ }
12
+
13
+ }
@@ -2,7 +2,7 @@ module C80Map
2
2
  class MapAjaxController < ApplicationController
3
3
 
4
4
  def save_map_data
5
- Rails.logger.debug "<MapAjaxController.save_map_data> params = #{params}"
5
+ # Rails.logger.debug "<MapAjaxController.save_map_data> params = #{params}"
6
6
 
7
7
  #{ "buildings"=>{"0"=>{"coords"=>["2496.5894495412845",...]}} }
8
8
  #{ "areas"=>{"0"=>{"coords"=>["2496.5894495412845",...]}} }
@@ -20,6 +20,7 @@ module C80Map
20
20
  updated_locations_json: nil
21
21
  }
22
22
 
23
+ # сначала создадим здания
23
24
  if params[:buildings].present?
24
25
  params[:buildings].each_key do |key|
25
26
  new_building_options = params[:buildings][key]
@@ -36,6 +37,7 @@ module C80Map
36
37
  end
37
38
  end
38
39
 
40
+ # затем создадим области
39
41
  if params[:areas].present?
40
42
  params[:areas].each_key do |key|
41
43
  new_area_options = params[:areas][key]
@@ -55,6 +57,8 @@ module C80Map
55
57
  end
56
58
  end
57
59
 
60
+ result[:updated_locations_json] = MapJson.fetch_json
61
+
58
62
  puts "<MapAjaxController.save_map_data> result = #{result.to_json}"
59
63
 
60
64
  respond_to do |format|
@@ -1,6 +1,7 @@
1
1
  module C80Map
2
2
  class Area < ActiveRecord::Base
3
3
  belongs_to :building
4
+ belongs_to :area_representator, :polymorphic => true
4
5
  validates :coords, uniqueness: true
5
6
  after_save :update_json
6
7
 
@@ -0,0 +1,75 @@
1
+ module C80Map
2
+
3
+ module AreaRepresentator
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ # ERROR: Cannot define multiple 'included' blocks for a Concern
8
+ # included do
9
+ #
10
+ # end
11
+
12
+ def self.included(klass)
13
+ klass.extend ClassMethods
14
+ klass.send(:include, InstanceMethods)
15
+ end
16
+
17
+ module ClassMethods
18
+
19
+ def acts_as_map_area_representator
20
+ class_eval do
21
+
22
+ has_many :map_areas, :as => :area_representator, :class_name => 'C80Map::Area', :dependent => :destroy
23
+ after_save :update_json
24
+
25
+ def self.unlinked_areas
26
+ res = []
27
+ self.all.each do |area|
28
+ if area.map_areas.count == 0
29
+ res << area
30
+ end
31
+ end
32
+ res
33
+ end
34
+
35
+ def update_json
36
+ MapJson.update_json
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+
43
+ module InstanceMethods
44
+
45
+ def to_hash
46
+ res = {
47
+ id: id,
48
+ title: title,
49
+ props: {
50
+ square: square,
51
+ floor_height: floor_height,
52
+ gate_type: gate_type,
53
+ desc: desc,
54
+ # column_step: column_step,
55
+ # communications: communications,
56
+ price: price_string
57
+ }
58
+ }
59
+ res
60
+ end
61
+
62
+ # свободна ли площадь, привязанная к полигону на карте
63
+ def is_free?
64
+ res = true
65
+ if map_areas.count > 0
66
+ res = map_areas.first.is_free?
67
+ end
68
+ res
69
+ end
70
+ end
71
+
72
+ end
73
+ end
74
+
75
+ ActiveRecord::Base.send :include, C80Map::AreaRepresentator
@@ -2,6 +2,7 @@ module C80Map
2
2
 
3
3
  class MapJson < ActiveRecord::Base
4
4
 
5
+ # этот метод вызовается после update Area
5
6
  def self.update_json
6
7
  locations_path = Rails.root.join("public", "locations.json")
7
8
  locs = File.read(locations_path)
@@ -17,25 +18,32 @@ module C80Map
17
18
  # сначала соберём детей - Area
18
19
  childs = []
19
20
  b.areas.each do |area|
20
- Rails.logger.debug "<MapJson.update_json> area #{area}"
21
+ # Rails.logger.debug "<MapJson.update_json> area #{area}"
22
+
23
+ har = {}
24
+ if area.area_representator.present?
25
+ har = area.area_representator.to_hash
26
+ har["is_free"] = area.area_representator.is_free?
27
+ end
21
28
 
22
29
  ab = {
23
30
  id: area.id,
24
31
  object_type: 'area',
25
32
  coords: area.coords.split(','),
26
- area_hash: {
27
- id: 2,
28
- title: "Площадь #{area.id}.#{area.id}",
29
- is_free: true,
30
- props: {
31
- square: "124 кв.м.",
32
- floor_height: "6 кв. м",
33
- column_step: "2 м",
34
- gate_type: "распашные",
35
- communications: "Интернет, электричество, водоснабжение",
36
- price: "от 155 руб/кв.м в месяц"
37
- }
38
- }
33
+ area_hash: har
34
+ # area_hash: {
35
+ # id: 2,
36
+ # title: "Площадь #{area.id}.#{area.id}",
37
+ # is_free: true,
38
+ # props: {
39
+ # square: "124 кв.м.",
40
+ # floor_height: "6 кв. м",
41
+ # column_step: "2 м",
42
+ # gate_type: "распашные",
43
+ # communications: "Интернет, электричество, водоснабжение",
44
+ # price: "от 155 руб/кв.м в месяц"
45
+ # }
46
+ # }
39
47
  }
40
48
  childs << ab
41
49
  end
@@ -80,6 +88,12 @@ module C80Map
80
88
  end
81
89
  end
82
90
 
91
+ def self.fetch_json
92
+ locations_path = Rails.root.join("public", "locations.json")
93
+ locs = File.read(locations_path)
94
+ JSON.parse(locs)
95
+ end
96
+
83
97
  end
84
98
 
85
99
  end
@@ -19,6 +19,7 @@
19
19
 
20
20
  <div id="map_wrapper">
21
21
  <%= render "c80_map/shared/save_preloader" %>
22
+ <%= render "c80_map/shared/modal_window" %>
22
23
  <div class="mcontainer">
23
24
  <div class="mmap">
24
25
  <div class="layers"></div>
@@ -0,0 +1,28 @@
1
+ <%= link_to 'Показать modal window',
2
+ '#modal_window',
3
+ :data => {
4
+ :toggle => 'modal'
5
+ },
6
+ :class => 'hidden2 show_modal_window',
7
+ :title => 'Показать modal window'
8
+ %>
9
+
10
+ <div class="modal fade" id="modal_window" tabindex="-1" role="dialog" aria-labelledby="modalShowWindow" aria-hidden="true">
11
+ <div class="modal-dialog">
12
+ <div class="modal-content">
13
+
14
+ <div class="modal-header">
15
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
16
+ <h4 class="modal-title" id="myModalLabel">%modal-title%</h4>
17
+ </div>
18
+
19
+ <div class="modal-body">
20
+ %modal-body%
21
+ </div>
22
+
23
+ <div class="modal-footer">
24
+ <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
@@ -1,8 +1,11 @@
1
1
  class CreateC80MapAreas < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :c80_map_areas, :options => 'COLLATE=utf8_unicode_ci' do |t|
4
- t.string :coords
4
+ t.text :tag
5
+ t.text :coords
5
6
  t.references :building, index: true
7
+ t.string :area_representator_type, :default => 'Rent::Area'
8
+ t.references :area_representator, index: true
6
9
  t.timestamps
7
10
  end
8
11
  end
@@ -1,3 +1,3 @@
1
1
  module C80Map
2
- VERSION = "0.1.0.2"
2
+ VERSION = "0.1.0.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: c80_map
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.2
4
+ version: 0.1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-21 00:00:00.000000000 Z
11
+ date: 2016-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,11 +68,14 @@ files:
68
68
  - Rakefile
69
69
  - app/admin/c80_map/buildings.rb
70
70
  - app/admin/c80_map/settings.rb
71
+ - app/assets/javascripts/buttons/admin_buttons/button_area_link.js
71
72
  - app/assets/javascripts/buttons/admin_buttons/button_back_to_map.js
72
73
  - app/assets/javascripts/buttons/admin_buttons/button_cancel_create.js
74
+ - app/assets/javascripts/buttons/admin_buttons/button_cancel_remove.js
73
75
  - app/assets/javascripts/buttons/admin_buttons/button_complete_create.js
74
76
  - app/assets/javascripts/buttons/admin_buttons/button_edit.js
75
77
  - app/assets/javascripts/buttons/admin_buttons/button_new.js
78
+ - app/assets/javascripts/buttons/admin_buttons/button_remove.js
76
79
  - app/assets/javascripts/buttons/admin_buttons/button_save.js
77
80
  - app/assets/javascripts/buttons/zoom_buttons.js
78
81
  - app/assets/javascripts/c80_map.js.coffee
@@ -82,17 +85,22 @@ files:
82
85
  - app/assets/javascripts/map_objects/dot.js
83
86
  - app/assets/javascripts/src/main.js
84
87
  - app/assets/javascripts/src/state_controller.js
85
- - app/assets/javascripts/src/utils.js
88
+ - app/assets/javascripts/src/utils/map_utils.js
89
+ - app/assets/javascripts/src/utils/opacity_buttons_utils.js
90
+ - app/assets/javascripts/src/utils/utils.js
91
+ - app/assets/javascripts/svg_elements/area_label.js
86
92
  - app/assets/javascripts/svg_elements/helper.js
87
93
  - app/assets/javascripts/svg_elements/polygon.js
88
94
  - app/assets/javascripts/view/save_preloader.js
89
95
  - app/assets/stylesheets/c80_map.scss
90
96
  - app/assets/stylesheets/map.scss
97
+ - app/assets/stylesheets/view/modal_window.scss
91
98
  - app/assets/stylesheets/view/save_preloader.scss
92
99
  - app/controllers/c80_map/application_controller.rb
93
100
  - app/controllers/c80_map/map_ajax_controller.rb
94
101
  - app/helpers/c80_map/application_helper.rb
95
102
  - app/models/c80_map/area.rb
103
+ - app/models/c80_map/area_representator.rb
96
104
  - app/models/c80_map/building.rb
97
105
  - app/models/c80_map/map_json.rb
98
106
  - app/models/c80_map/setting.rb
@@ -100,14 +108,15 @@ files:
100
108
  - app/uploaders/c80_map/map_image_uploader.rb
101
109
  - app/views/c80_map/_map_row.html.erb
102
110
  - app/views/c80_map/_map_row_index.html.erb
111
+ - app/views/c80_map/shared/_modal_window.html.erb
103
112
  - app/views/c80_map/shared/_save_preloader.html.erb
104
113
  - bin/console
105
114
  - bin/setup
106
115
  - c80_map.gemspec
107
116
  - config/routes.rb
108
117
  - db/migrate/20160617130000_create_c80_map_settings.rb
109
- - db/migrate/20160620040202_create_c80_map_areas.rb
110
- - db/migrate/20160620040206_create_c80_map_buildings.rb
118
+ - db/migrate/20160620040217_create_c80_map_buildings.rb
119
+ - db/migrate/20160620040225_create_c80_map_areas.rb
111
120
  - db/seeds/801_fill_map_settings.rb
112
121
  - lib/c80_map.rb
113
122
  - lib/c80_map/engine.rb