Compare commits
4 commits
develop
...
feature/js
Author | SHA1 | Date | |
---|---|---|---|
|
e22c3f33e9 | ||
|
1a4a2df6c6 | ||
|
3d5ed63534 | ||
|
f463140931 |
8 changed files with 130 additions and 12 deletions
|
@ -28,6 +28,8 @@ Metamaps.JIT = {
|
|||
|
||||
$(".takeScreenshot").click(Metamaps.Map.exportImage);
|
||||
|
||||
$('.downloadMap').click(Metamaps.Map.downloadIt);
|
||||
|
||||
self.topicDescImage = new Image();
|
||||
self.topicDescImage.src = '/assets/topic_description_signifier.png';
|
||||
|
||||
|
|
|
@ -1,5 +1,36 @@
|
|||
var labelType, useGradients, nativeTextSupport, animate;
|
||||
|
||||
window.downloadFile = function(sUrl, filename) {
|
||||
|
||||
//If in Chrome or Safari - download via virtual link click
|
||||
if (window.downloadFile.isChrome || window.downloadFile.isSafari) {
|
||||
//Creating new link node.
|
||||
var link = document.createElement('a');
|
||||
link.href = sUrl;
|
||||
|
||||
if (link.download !== undefined){
|
||||
//Set HTML5 download attribute. This will prevent file from opening if supported.
|
||||
link.download = filename;
|
||||
}
|
||||
|
||||
//Dispatching click event.
|
||||
if (document.createEvent) {
|
||||
var e = document.createEvent('MouseEvents');
|
||||
e.initEvent('click' ,true ,true);
|
||||
link.dispatchEvent(e);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Force file download (whether supported by server).
|
||||
var query = '?download';
|
||||
|
||||
window.open(sUrl + query);
|
||||
}
|
||||
|
||||
window.downloadFile.isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
|
||||
window.downloadFile.isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;
|
||||
|
||||
(function () {
|
||||
var ua = navigator.userAgent,
|
||||
iStuff = ua.match(/iPhone/i) || ua.match(/iPad/i),
|
||||
|
@ -4607,6 +4638,26 @@ Metamaps.Map = {
|
|||
console.log('failed to save map screenshot');
|
||||
}
|
||||
});
|
||||
},
|
||||
downloadIt: function() {
|
||||
var map = Metamaps.Active.Map;
|
||||
var mapName = map.get("name").split(" ").join([separator = '-']);
|
||||
|
||||
var today = new Date();
|
||||
var dd = today.getDate();
|
||||
var mm = today.getMonth()+1; //January is 0!
|
||||
var yyyy = today.getFullYear();
|
||||
if(dd<10) {
|
||||
dd='0'+dd
|
||||
}
|
||||
if(mm<10) {
|
||||
mm='0'+mm
|
||||
}
|
||||
today = mm+'/'+dd+'/'+yyyy;
|
||||
|
||||
var href = "/maps/" + map.id + "/contains.json";
|
||||
var filename = "metamap-" + map.id + "-" + mapName + "-" + today + ".json"; // Set the file name.
|
||||
window.downloadFile(href, filename);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -915,6 +915,15 @@
|
|||
z-index: 4;
|
||||
}
|
||||
|
||||
.downloadMap {
|
||||
margin-bottom:5px;
|
||||
border-radius: 2px;
|
||||
color: #D5D5D5;
|
||||
text-align: center;
|
||||
padding-top: 6px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.takeScreenshot {
|
||||
margin-bottom: 5px;
|
||||
border-radius: 2px;
|
||||
|
@ -938,7 +947,7 @@
|
|||
background-position: -32px 0;
|
||||
}
|
||||
|
||||
.zoomExtents:hover .tooltips, .zoomIn:hover .tooltips, .zoomOut:hover .tooltips, .takeScreenshot:hover .tooltips, .sidebarCollaborateIcon:hover .tooltipsUnder,
|
||||
.downloadMap:hover .tooltips, .zoomExtents:hover .tooltips, .zoomIn:hover .tooltips, .zoomOut:hover .tooltips, .takeScreenshot:hover .tooltips, .sidebarCollaborateIcon:hover .tooltipsUnder,
|
||||
.sidebarFilterIcon:hover .tooltipsUnder, .sidebarForkIcon:hover .tooltipsUnder, .addMap:hover .tooltipsUnder, .authenticated .sidebarAccountIcon:hover .tooltipsUnder,
|
||||
.mapInfoIcon:hover .tooltipsAbove, .openCheatsheet:hover .tooltipsAbove {
|
||||
display: block;
|
||||
|
@ -1033,7 +1042,7 @@
|
|||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.zoomExtents div::after, .zoomIn div::after, .zoomOut div::after, .takeScreenshot div:after {
|
||||
.downloadMap div::after, .zoomExtents div::after, .zoomIn div::after, .zoomOut div::after, .takeScreenshot div:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 57%;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class MapsController < ApplicationController
|
||||
include MapsHelper
|
||||
|
||||
before_filter :require_user, only: [:create, :update, :screenshot, :destroy]
|
||||
|
||||
|
@ -123,6 +124,21 @@ class MapsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
# GET maps/:id/ld
|
||||
def ld
|
||||
|
||||
@current = current_user
|
||||
@map = Map.find(params[:id]).authorize_to_show(@current)
|
||||
|
||||
if not @map
|
||||
redirect_to root_url, notice: "Access denied. That map is private." and return
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render json: linkeddata(@map) }
|
||||
end
|
||||
end
|
||||
|
||||
# POST maps
|
||||
def create
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class MetacodesController < ApplicationController
|
||||
|
||||
before_filter :require_admin, except: [:index]
|
||||
before_filter :require_admin, except: [:index, :show]
|
||||
|
||||
# GET /metacodes
|
||||
# GET /metacodes.json
|
||||
|
@ -23,14 +23,14 @@ class MetacodesController < ApplicationController
|
|||
### SHOW IS CURRENTLY DISABLED
|
||||
# GET /metacodes/1
|
||||
# GET /metacodes/1.json
|
||||
# def show
|
||||
# @metacode = Metacode.find(params[:id])
|
||||
#
|
||||
# respond_to do |format|
|
||||
# format.html # show.html.erb
|
||||
# format.json { render json: @metacode }
|
||||
# end
|
||||
# end
|
||||
def show
|
||||
@metacode = Metacode.find(params[:id])
|
||||
|
||||
respond_to do |format|
|
||||
#format.html # show.html.erb
|
||||
format.json { render json: @metacode }
|
||||
end
|
||||
end
|
||||
|
||||
# GET /metacodes/new
|
||||
# GET /metacodes/new.json
|
||||
|
|
|
@ -33,4 +33,39 @@ module MapsHelper
|
|||
return temp
|
||||
end
|
||||
|
||||
def linkeddata(map)
|
||||
|
||||
@alltopics = map.topics.delete_if {|t| t.permission == "private" && (!authenticated? || (authenticated? && @current.id != t.user_id)) }
|
||||
|
||||
js = Hash.new()
|
||||
|
||||
js['@context'] = { "@vocab" => "http://schema.org/", "mm" => "http://ns.metamaps.cc/", "mmc" => "http://metamaps.cc/metacodes/" }
|
||||
js['@id'] = "http://metamaps.cc/maps/" + map.id.to_s
|
||||
js['@type'] = [ "CreativeWork", "mm:Metamap" ]
|
||||
js['name'] = map.name
|
||||
js['description'] = map.desc
|
||||
|
||||
graph = []
|
||||
|
||||
@alltopics.each do |t|
|
||||
topic = Hash.new()
|
||||
topic['@id'] = 'http://metamaps.cc/topics/' + t.id.to_s
|
||||
topic['@type'] = [
|
||||
'mmc:' + t.metacode_id.to_s
|
||||
]
|
||||
topic['name'] = t.name
|
||||
|
||||
t.synapses2.each do |s|
|
||||
topic['http://metamaps.cc/synapses/' + s.id.to_s] = [ 'http://metamaps.cc/topics/' + s.node1_id.to_s ]
|
||||
end
|
||||
|
||||
graph.push(topic)
|
||||
end
|
||||
|
||||
js['@graph'] = graph
|
||||
|
||||
return js
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div class="mapControls mapElement">
|
||||
<div href="/test/" class="downloadMap mapControl"><div class="tooltips">Download Map JSON</div>DL</div>
|
||||
<div class="takeScreenshot mapControl"><div class="tooltips">Capture Screenshot</div></div>
|
||||
<div class="zoomExtents mapControl"><div class="tooltips">Center View</div></div>
|
||||
<div class="zoomIn mapControl"><div class="tooltips">Zoom In</div></div>
|
||||
|
|
|
@ -11,7 +11,7 @@ Metamaps::Application.routes.draw do
|
|||
|
||||
resources :mappings, except: [:index, :new, :edit]
|
||||
resources :metacode_sets, :except => [:show]
|
||||
resources :metacodes, :except => [:show, :destroy]
|
||||
resources :metacodes, :except => [:destroy]
|
||||
resources :synapses, except: [:index, :new, :edit]
|
||||
resources :topics, except: [:index, :new, :edit] do
|
||||
get :autocomplete_topic, :on => :collection
|
||||
|
@ -26,6 +26,10 @@ Metamaps::Application.routes.draw do
|
|||
match 'explore/mapper/:id', to: 'maps#index', via: :get, as: :usermaps
|
||||
resources :maps, except: [:new, :edit]
|
||||
match 'maps/:id/contains', to: 'maps#contains', via: :get, as: :contains
|
||||
|
||||
# for linked data structure
|
||||
match 'maps/:id/ld', to: 'maps#ld', via: :get, as: :ld
|
||||
|
||||
match 'maps/:id/upload_screenshot', to: 'maps#screenshot', via: :post, as: :screenshot
|
||||
|
||||
devise_for :users, controllers: { registrations: 'users/registrations', passwords: 'users/passwords', sessions: 'devise/sessions' }, :skip => [:sessions]
|
||||
|
|
Loading…
Add table
Reference in a new issue