c80_map_floors 0.1.0.1
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 +7 -0
- data/.gitignore +11 -0
- data/.travis.yml +3 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +67 -0
- data/Rakefile +1 -0
- data/app/admin/c80_map_floors/floors.rb +57 -0
- data/app/admin/c80_map_floors/map_buildings.rb +49 -0
- data/app/admin/c80_map_floors/settings.rb +32 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_area_link.js +91 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_building_link.js +91 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_cancel_create.js +21 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_cancel_remove.js +23 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_complete_create.js +22 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_edit.js +96 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_new.js +46 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_remove.js +23 -0
- data/app/assets/javascripts/buttons/admin_buttons/button_save.js +111 -0
- data/app/assets/javascripts/buttons/button_back_to_map.js +84 -0
- data/app/assets/javascripts/buttons/zoom_buttons.js +78 -0
- data/app/assets/javascripts/c80_map_floors.js.coffee +23 -0
- data/app/assets/javascripts/events/app_event.js +15 -0
- data/app/assets/javascripts/map_objects/area.js +251 -0
- data/app/assets/javascripts/map_objects/building.js +294 -0
- data/app/assets/javascripts/map_objects/dot.js +14 -0
- data/app/assets/javascripts/map_objects/floor.js +10 -0
- data/app/assets/javascripts/src/main.js +1421 -0
- data/app/assets/javascripts/src/state_controller.js +322 -0
- data/app/assets/javascripts/src/utils/map_utils.js +23 -0
- data/app/assets/javascripts/src/utils/opacity_buttons_utils.js +15 -0
- data/app/assets/javascripts/src/utils/utils.js +140 -0
- data/app/assets/javascripts/svg_elements/area_label.js +25 -0
- data/app/assets/javascripts/svg_elements/building_label.js +65 -0
- data/app/assets/javascripts/svg_elements/helper.js +36 -0
- data/app/assets/javascripts/svg_elements/polygon.js +194 -0
- data/app/assets/javascripts/view/save_preloader.js +30 -0
- data/app/assets/stylesheets/c80_map_floors.scss +4 -0
- data/app/assets/stylesheets/map.scss +1464 -0
- data/app/assets/stylesheets/view/buttons/area_order_button.scss +16 -0
- data/app/assets/stylesheets/view/buttons/back_to_map_button.scss +28 -0
- data/app/assets/stylesheets/view/elems/building_info.scss +54 -0
- data/app/assets/stylesheets/view/elems/free_areas_label.scss +116 -0
- data/app/assets/stylesheets/view/elems/map_objects/map_object_image_bg.scss +10 -0
- data/app/assets/stylesheets/view/modal_window.scss +13 -0
- data/app/assets/stylesheets/view/save_preloader.scss +206 -0
- data/app/controllers/c80_map_floors/ajax_controller.rb +65 -0
- data/app/controllers/c80_map_floors/application_controller.rb +6 -0
- data/app/controllers/c80_map_floors/map_ajax_controller.rb +70 -0
- data/app/helpers/c80_map_floors/application_helper.rb +28 -0
- data/app/models/c80_map_floors/area.rb +20 -0
- data/app/models/c80_map_floors/area_representator.rb +75 -0
- data/app/models/c80_map_floors/base_map_object.rb +41 -0
- data/app/models/c80_map_floors/building_representator.rb +72 -0
- data/app/models/c80_map_floors/floor.rb +37 -0
- data/app/models/c80_map_floors/map_building.rb +45 -0
- data/app/models/c80_map_floors/map_json.rb +35 -0
- data/app/models/c80_map_floors/setting.rb +32 -0
- data/app/uploaders/c80_map_floors/building_image_uploader.rb +31 -0
- data/app/uploaders/c80_map_floors/floor_image_uploader.rb +33 -0
- data/app/uploaders/c80_map_floors/map_image_uploader.rb +31 -0
- data/app/views/c80_map_floors/_map_row_index.html.erb +40 -0
- data/app/views/c80_map_floors/ajax/fetch_unlinked_areas.js.erb +7 -0
- data/app/views/c80_map_floors/ajax/fetch_unlinked_buildings.js.erb +7 -0
- data/app/views/c80_map_floors/ajax/map_edit_buttons.js.erb +36 -0
- data/app/views/c80_map_floors/ajax/shared/_map_creating.html.erb +6 -0
- data/app/views/c80_map_floors/ajax/shared/_map_editing.html.erb +4 -0
- data/app/views/c80_map_floors/ajax/shared/_map_removing.html.erb +5 -0
- data/app/views/c80_map_floors/ajax/shared/_select_list_unlinked_areas.html.erb +6 -0
- data/app/views/c80_map_floors/ajax/shared/_select_list_unlinked_buildings.html.erb +10 -0
- data/app/views/c80_map_floors/shared/_modal_window.html.erb +28 -0
- data/app/views/c80_map_floors/shared/_save_preloader.html.erb +3 -0
- data/app/views/c80_map_floors/shared/map_row/_area_order_button.html.erb +7 -0
- data/app/views/c80_map_floors/shared/map_row/_building_info.html.erb +17 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/c80_map_floors.gemspec +28 -0
- data/config/routes.rb +4 -0
- data/db/migrate/20161015190000_create_c80_map_floors_settings.rb +8 -0
- data/db/migrate/20161015190001_create_c80_map_floors_map_buildings.rb +10 -0
- data/db/migrate/20161015190002_create_c80_map_floors_areas.rb +12 -0
- data/db/migrate/20161015190003_add_building_representator_to_c80_map_floors_buildings.rb +6 -0
- data/db/migrate/20161015190004_create_c80_map_floors_floors.rb +16 -0
- data/db/migrate/20161019111010_add_title_to_c80_map_floors_buildings.rb +5 -0
- data/db/migrate/20161020184040_add_coords_img_to_c80_map_floors_buildings.rb +5 -0
- data/db/seeds/c80_map_floors_01_fill_map_settings.rb +6 -0
- data/db/seeds/c80_map_floors_02_create_test_area.rb +7 -0
- data/lib/c80_map_floors.rb +8 -0
- data/lib/c80_map_floors/engine.rb +23 -0
- data/lib/c80_map_floors/version.rb +3 -0
- metadata +218 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module C80MapFloors
|
|
2
|
+
|
|
3
|
+
class MapJson < ActiveRecord::Base
|
|
4
|
+
|
|
5
|
+
def self.update_json
|
|
6
|
+
|
|
7
|
+
# открываем файл на чтение
|
|
8
|
+
locations_path = Rails.root.join("public", "locations.json")
|
|
9
|
+
locs = File.read(locations_path)
|
|
10
|
+
locs_hash = JSON.parse(locs)
|
|
11
|
+
|
|
12
|
+
# поместим в него детей - здания со всеми детьми и внуками
|
|
13
|
+
buildings = []
|
|
14
|
+
C80MapFloors::MapBuilding.all.each do |building|
|
|
15
|
+
buildings << building.as_json
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
locs_hash["buildings"] = buildings
|
|
19
|
+
|
|
20
|
+
# запишем в файл
|
|
21
|
+
File.open(locations_path, 'w') do |f|
|
|
22
|
+
f.write(locs_hash.to_json)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.fetch_json
|
|
28
|
+
locations_path = Rails.root.join("public", "locations.json")
|
|
29
|
+
locs = File.read(locations_path)
|
|
30
|
+
JSON.parse(locs)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module C80MapFloors
|
|
2
|
+
class Setting < ActiveRecord::Base
|
|
3
|
+
mount_uploader :map_image, C80MapFloors::MapImageUploader
|
|
4
|
+
after_save :update_json
|
|
5
|
+
|
|
6
|
+
def map_img
|
|
7
|
+
MiniMagick::Image.open(map_image.path)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def update_json
|
|
13
|
+
|
|
14
|
+
if self.map_image.present?
|
|
15
|
+
locations_path = Rails.root.join("public", "locations.json")
|
|
16
|
+
locs = File.read(locations_path)
|
|
17
|
+
puts "<update_json> #{ Rails.root.join("public", "locations.json") }"
|
|
18
|
+
|
|
19
|
+
locs_hash = JSON.parse(locs)
|
|
20
|
+
locs_hash["mapwidth"] = map_img["width"].to_s
|
|
21
|
+
locs_hash["mapheight"] = map_img["height"].to_s
|
|
22
|
+
locs_hash["img"] = map_image.url.to_s
|
|
23
|
+
|
|
24
|
+
File.open(locations_path, 'w') do |f|
|
|
25
|
+
f.write(locs_hash.to_json)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module C80MapFloors
|
|
2
|
+
|
|
3
|
+
class BuildingImageUploader < CarrierWave::Uploader::Base
|
|
4
|
+
|
|
5
|
+
include CarrierWave::MiniMagick
|
|
6
|
+
|
|
7
|
+
storage :file
|
|
8
|
+
|
|
9
|
+
version :thumb do
|
|
10
|
+
process :resize_to_fit => [500,500]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def store_dir
|
|
14
|
+
"uploads/map/buildings"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def filename
|
|
18
|
+
if original_filename
|
|
19
|
+
"img_#{secure_token(4)}.#{file.extension}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
protected
|
|
24
|
+
def secure_token(length=16)
|
|
25
|
+
var = :"@#{mounted_as}_secure_token"
|
|
26
|
+
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module C80MapFloors
|
|
2
|
+
|
|
3
|
+
# TODO:: FloorImageUploader класс должен использоваться только для загрузки img_bg [потому что 78aasq]
|
|
4
|
+
|
|
5
|
+
class FloorImageUploader < CarrierWave::Uploader::Base
|
|
6
|
+
|
|
7
|
+
include CarrierWave::MiniMagick
|
|
8
|
+
|
|
9
|
+
storage :file
|
|
10
|
+
|
|
11
|
+
version :thumb do
|
|
12
|
+
process :resize_to_fit => [500,500]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def store_dir
|
|
16
|
+
"uploads/map/floors"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def filename
|
|
20
|
+
if original_filename
|
|
21
|
+
"floor_#{secure_token(4)}.#{file.extension}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
def secure_token(length=16)
|
|
27
|
+
var = :"@#{mounted_as}_secure_token"
|
|
28
|
+
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module C80MapFloors
|
|
2
|
+
|
|
3
|
+
class MapImageUploader < CarrierWave::Uploader::Base
|
|
4
|
+
|
|
5
|
+
include CarrierWave::MiniMagick
|
|
6
|
+
|
|
7
|
+
storage :file
|
|
8
|
+
|
|
9
|
+
version :thumb do
|
|
10
|
+
process :resize_to_fit => [500,500]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def store_dir
|
|
14
|
+
"uploads/map/"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def filename
|
|
18
|
+
if original_filename
|
|
19
|
+
"map_#{secure_token(4)}.#{file.extension}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
protected
|
|
24
|
+
def secure_token(length=16)
|
|
25
|
+
var = :"@#{mounted_as}_secure_token"
|
|
26
|
+
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
var LOCS_HASH = <%= locs_hash.to_json.html_safe %>;
|
|
3
|
+
var MAP_WIDTH = <%= mapwidth %>;
|
|
4
|
+
var MAP_HEIGHT = <%= mapheight %>;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<!--<div class="container" id="container_left_side">
|
|
8
|
+
<div id="left_side">
|
|
9
|
+
<div class="clearfix"><span id="pbrown">ПЛОЩАДИ от</span></div>
|
|
10
|
+
<span id="pnavy"><%# @spro.header_price %></span>
|
|
11
|
+
<span id="pdark">руб/кв.м.</span>
|
|
12
|
+
</div>
|
|
13
|
+
<div id="right_side">
|
|
14
|
+
<p id="ptele"><%# @spro.address_telephone_1 %></p>
|
|
15
|
+
<p id="paddress"><%# @spro.address_locality %>
|
|
16
|
+
<%# @spro.address_street %></p>
|
|
17
|
+
</div>
|
|
18
|
+
</div>-->
|
|
19
|
+
|
|
20
|
+
<div id="map_wrapper">
|
|
21
|
+
<%= render "c80_map_floors/shared/save_preloader" %>
|
|
22
|
+
<%= render "c80_map_floors/shared/modal_window" %>
|
|
23
|
+
<div class="mcontainer">
|
|
24
|
+
<div class="mmap">
|
|
25
|
+
<div class="layers"></div>
|
|
26
|
+
<div id="masked" style="-webkit-clip-path:polygon(0 0, 0 1px)"></div>
|
|
27
|
+
<svg id='svg' xmlns="http://www.w3.org/2000/svg" version="1.2" viewbox='0 0 <%= mapwidth %> <%=mapheight%>' baseProfile="tiny" preserveAspectRatio="xMaxYMax"></svg>
|
|
28
|
+
<div class="overlay_layers"></div>
|
|
29
|
+
<svg id='svg_overlay' xmlns="http://www.w3.org/2000/svg" version="1.2" viewbox='0 0 <%= mapwidth %> <%=mapheight%>' baseProfile="tiny" preserveAspectRatio="xMaxYMax"></svg>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="container" id="ui">
|
|
32
|
+
<%= render "c80_map_floors/shared/map_row/building_info" %>
|
|
33
|
+
<%# render "layouts/shared/map_row/area_order_button" %>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="container" id="container_buttons">
|
|
36
|
+
<div class="mzoom_buttons"></div>
|
|
37
|
+
<div class="status_bar"></div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<%# особым пользователям разрешает редактировать %>
|
|
2
|
+
<% if current_admin_user.present? %>
|
|
3
|
+
//console.log("<js.erb>");
|
|
4
|
+
|
|
5
|
+
var $btn_layer = $("<%= params[:div_css_selector] %>");
|
|
6
|
+
var $html = $('<a href="#" class="mapplic-edit-button"></a>');
|
|
7
|
+
$btn_layer.append($html);
|
|
8
|
+
|
|
9
|
+
$html = $('<a href="#" class="mapplic-remove-button mapplic-disabled" data-placement="right" data-toggle="tooltip" title="Удалить полигон"></a>');
|
|
10
|
+
$btn_layer.prepend($html);
|
|
11
|
+
|
|
12
|
+
$html = $('<a href="#" class="mapplic-new-button mapplic-disabled" data-placement="right" data-toggle="tooltip" title="Добавить полигон"></a>');
|
|
13
|
+
$btn_layer.prepend($html);
|
|
14
|
+
|
|
15
|
+
$html = $('<a href="#" class="mapplic-building-link-button" data-placement="right" data-toggle="tooltip" title="Назначить Здание"></a>');
|
|
16
|
+
$btn_layer.prepend($html);
|
|
17
|
+
|
|
18
|
+
$html = $('<a href="#" class="mapplic-save-button mapplic-disabled" data-placement="right" data-toggle="tooltip" title="Сохранить изменения"></a>');
|
|
19
|
+
$btn_layer.prepend($html);
|
|
20
|
+
|
|
21
|
+
$html = $('<a href="#" class="mapplic-area-link-button" data-placement="right" data-toggle="tooltip" title="Назначить Площадь"></a>');
|
|
22
|
+
$btn_layer.prepend($html);
|
|
23
|
+
|
|
24
|
+
var $status_layer = $('.status_bar');
|
|
25
|
+
$html = $("<%= j render 'c80_map_floors/ajax/shared/map_creating' %>");
|
|
26
|
+
$status_layer.append($html);
|
|
27
|
+
|
|
28
|
+
$html = $("<%= j render 'c80_map_floors/ajax/shared/map_editing' %>");
|
|
29
|
+
$status_layer.append($html);
|
|
30
|
+
|
|
31
|
+
$html = $("<%= j render 'c80_map_floors/ajax/shared/map_removing' %>");
|
|
32
|
+
$status_layer.append($html);
|
|
33
|
+
|
|
34
|
+
IS_ADMIN = true;
|
|
35
|
+
|
|
36
|
+
<% end %>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<%# статус-блок, который виден, когда находимся в режиме рисования полигона %>
|
|
2
|
+
<div id="map_creating" class="status_block">
|
|
3
|
+
<span class="message">Рисование полигона в процессе</span>
|
|
4
|
+
<a href="#" title="Отменить" id="cancelCreating">Отменить (Esc)</a>
|
|
5
|
+
<a href="#" title="Добавить вершину" id="completeCreating">Завершить (Enter)</a>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<%# статус-блок, который виден, когда находимся в режиме удаления полигонов %>
|
|
2
|
+
<div id="map_removing" class="status_block">
|
|
3
|
+
<span class="message">Кликните по полигону, который надо удалить</span>
|
|
4
|
+
<a href="#" title="Отменить" id="cancelRemoving">Завершить</a>
|
|
5
|
+
</div>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<select id="unlinked_areas" class="selectpicker" data-style="btn-default">
|
|
2
|
+
<% areas.each do |area|%>
|
|
3
|
+
<option value="<%= area.id%>"><%= area.title %></option>
|
|
4
|
+
<% end %>
|
|
5
|
+
</select>
|
|
6
|
+
<button type="button" id='submit_area_link' class="btn btn-primary">Сохранить</button>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<select id="unlinked_buildings" class="selectpicker" data-style="btn-default">
|
|
2
|
+
<% buildings.each do |building| %>
|
|
3
|
+
<% tt = building.title %>
|
|
4
|
+
<% if building.map_buildings.count > 0 %>
|
|
5
|
+
<% tt += ' (полигон назначен)' %>
|
|
6
|
+
<% end %>
|
|
7
|
+
<option value="<%= building.id%>"><%= tt %></option>
|
|
8
|
+
<% end %>
|
|
9
|
+
</select>
|
|
10
|
+
<button type="button" id='submit_building_link' class="btn btn-primary">Сохранить</button>
|
|
@@ -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">×</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>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="building_info">
|
|
2
|
+
<h2></h2>
|
|
3
|
+
<ul> <%# idишники элементов списка - имена полей таблицы Rent::Building %>
|
|
4
|
+
<li id="square">Общая площадь: <span></span> м кв.</li>
|
|
5
|
+
<li id="free_square">Свободная площадь: <span></span> м кв.</li>
|
|
6
|
+
<li id="floor_height">Высота потолка: <span></span></li>
|
|
7
|
+
<li id="column_step">Шаг колонн: <span></span></li>
|
|
8
|
+
<li id="gate_type">Тип ворот: <span></span></li>
|
|
9
|
+
<li id="communications">Коммуникации: <span></span></li>
|
|
10
|
+
</ul>
|
|
11
|
+
<h5 id="price"><span></span></h5>
|
|
12
|
+
<%= link_to "Оставить заявку",
|
|
13
|
+
"#",
|
|
14
|
+
:class => 'ebutton c80_order_invoking_btn',
|
|
15
|
+
:data => { :comment_text => "этот будет заменён ajax Ответом, заполняющим инфо о площади", :subj_id => 'Это число будет подставлено ajax Ответом' },
|
|
16
|
+
:id => 'area_order_button' %>
|
|
17
|
+
</div>
|
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "c80_map_floors"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'c80_map_floors/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "c80_map_floors"
|
|
8
|
+
spec.version = C80MapFloors::VERSION
|
|
9
|
+
spec.authors = ["C80609A"]
|
|
10
|
+
spec.email = ["c080609a@gmail.com"]
|
|
11
|
+
|
|
12
|
+
spec.summary = 'Map'
|
|
13
|
+
spec.description = 'Map + map editor'
|
|
14
|
+
spec.homepage = 'http://www.vorsa-park.ru'
|
|
15
|
+
spec.license = "MIT"
|
|
16
|
+
|
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
18
|
+
spec.bindir = "exe"
|
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
20
|
+
spec.require_paths = ["lib"]
|
|
21
|
+
|
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.9"
|
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
24
|
+
spec.add_dependency 'activesupport', ['>= 3.0.0']
|
|
25
|
+
spec.add_dependency 'bootstrap-sass', '~> 3.3.4'
|
|
26
|
+
spec.add_dependency 'bootstrap-select-rails'
|
|
27
|
+
spec.add_dependency 'historyjs-rails'
|
|
28
|
+
end
|
data/config/routes.rb
ADDED