Commit ae7d3f8c authored by 神楽坂玲奈's avatar 神楽坂玲奈

drop upload

parent 558eaf07
...@@ -54,7 +54,7 @@ class Card extends Spine.Model ...@@ -54,7 +54,7 @@ class Card extends Spine.Model
catch e catch e
cards_id.push lang._id cards_id.push lang._id
if cards_id.length if cards_id.length
$.getJSON "#{@url}?q=#{JSON.stringify({_id:{ $in: cards_id}})}", (cards) => $.getJSON "#{@url}?q=#{JSON.stringify({_id: { $in: cards_id}})}", (cards) =>
@load cards, langs @load cards, langs
for card in cards for card in cards
result.push Card.find card._id result.push Card.find card._id
...@@ -62,12 +62,15 @@ class Card extends Spine.Model ...@@ -62,12 +62,15 @@ class Card extends Spine.Model
else else
callback(result) callback(result)
@fetch_by_id: (cards_id, callback)-> @fetch_by_id: (cards_id, callback, before, after)->
cards_id = (card_id for card_id in cards_id when !Card.exists(card_id)) cards_id = (card_id for card_id in cards_id when !Card.exists(card_id))
if cards_id.length if cards_id.length
$.when($.getJSON("#{@url}?q=#{JSON.stringify({_id: {$in: cards_id}})}"), $.getJSON("#{@locale_url}?q=#{JSON.stringify({_id:{ $in: cards_id}})}")).done (cards, langs)=> before() if before
$.when($.getJSON("#{@url}?q=#{JSON.stringify({_id:
{$in: cards_id}})}"), $.getJSON("#{@locale_url}?q=#{JSON.stringify({_id: { $in: cards_id}})}")).done (cards, langs)=>
@load(cards[0], langs[0]) @load(cards[0], langs[0])
callback() callback()
after() if after
else else
callback() callback()
...@@ -157,7 +160,7 @@ class Deck extends Spine.Model ...@@ -157,7 +160,7 @@ class Deck extends Spine.Model
for line in lines for line in lines
if !line or line.charAt(0) == '#' if !line or line.charAt(0) == '#'
continue continue
else if line.substr(0,5) == '!side' else if line.substr(0, 5) == '!side'
card_usages.push {card_id: last_id, side: side, count: count} if last_id card_usages.push {card_id: last_id, side: side, count: count} if last_id
side = true side = true
last_id = null last_id = null
...@@ -218,10 +221,12 @@ class DecksController extends Spine.Controller ...@@ -218,10 +221,12 @@ class DecksController extends Spine.Controller
@_deck @_deck
refresh: => refresh: =>
Card.fetch_by_id (card_usage.card_id for card_usage in @deck().card_usages().all()), => Card.fetch_by_id((card_usage.card_id for card_usage in @deck().card_usages().all()), =>
@deck().sort() @deck().sort()
@render() @render()
, =>
@html $('#loading_template').tmpl()
)
render: => render: =>
@html $('#deck_template').tmpl({main: @deck().main(), side: @deck().side(), extra: @deck().extra(), main_count: @deck().main_count(), side_count: @deck().side_count(), extra_count: @deck().extra_count(), category_count: @deck().category_count()}) @html $('#deck_template').tmpl({main: @deck().main(), side: @deck().side(), extra: @deck().extra(), main_count: @deck().main_count(), side_count: @deck().side_count(), extra_count: @deck().extra_count(), category_count: @deck().category_count()})
@set_history() @set_history()
...@@ -257,21 +262,18 @@ class DecksController extends Spine.Controller ...@@ -257,21 +262,18 @@ class DecksController extends Spine.Controller
deck_width = $('.deck_part').width() deck_width = $('.deck_part').width()
card_width = $('.card_usage').width() card_width = $('.card_usage').width()
main_margin = Math.floor((deck_width - card_width * Math.max(Math.ceil(@deck().main_count() / 4),10)) / (Math.max(Math.ceil(@deck().main_count() / 4),10)-1) / 2) main_margin = Math.floor((deck_width - card_width * Math.max(Math.ceil(@deck().main_count() / 4), 10)) / (Math.max(Math.ceil(@deck().main_count() / 4), 10) - 1) / 2)
$('.deck_part.main').css {'margin-left': -main_margin, 'margin-right': -main_margin} $('.deck_part.main').css {'margin-left': -main_margin, 'margin-right': -main_margin}
$('.deck_part.main .card_usage').css {'margin-left': main_margin, 'margin-right': main_margin} $('.deck_part.main .card_usage').css {'margin-left': main_margin, 'margin-right': main_margin}
side_margin = Math.floor((deck_width - card_width * Math.max(@deck().side_count(),10)) / (Math.max(@deck().side_count(),10)-1) / 2) side_margin = Math.floor((deck_width - card_width * Math.max(@deck().side_count(), 10)) / (Math.max(@deck().side_count(), 10) - 1) / 2)
$('.deck_part.side').css {'margin-left': -side_margin, 'padding-right': -side_margin} $('.deck_part.side').css {'margin-left': -side_margin, 'padding-right': -side_margin}
$('.deck_part.side .card_usage').css {'margin-left': side_margin, 'margin-right': side_margin} $('.deck_part.side .card_usage').css {'margin-left': side_margin, 'margin-right': side_margin}
extra_margin = Math.floor((deck_width - card_width * Math.max(@deck().extra_count(),10)) / (Math.max(@deck().extra_count(),10)-1) / 2) extra_margin = Math.floor((deck_width - card_width * Math.max(@deck().extra_count(), 10)) / (Math.max(@deck().extra_count(), 10) - 1) / 2)
$('.deck_part.extra').css {'margin-left': -extra_margin, 'padding-right': -extra_margin} $('.deck_part.extra').css {'margin-left': -extra_margin, 'padding-right': -extra_margin}
$('.deck_part.extra .card_usage').css {'margin-left': extra_margin, 'margin-right': extra_margin} $('.deck_part.extra .card_usage').css {'margin-left': extra_margin, 'margin-right': extra_margin}
upload: (files)-> upload: (files)->
file = files[0] file = files[0]
reader = new FileReader() reader = new FileReader()
...@@ -309,11 +311,15 @@ class DecksController extends Spine.Controller ...@@ -309,11 +311,15 @@ class DecksController extends Spine.Controller
$(".bottom_area div").click -> $(".bottom_area div").click ->
$(this).addClass("bottom_button_active").removeClass("bottom_button") $(this).addClass("bottom_button_active").removeClass("bottom_button")
$(this).siblings().addClass("bottom_button").removeClass("bottom_button_active") $(this).siblings().addClass("bottom_button").removeClass("bottom_button_active")
$dangqian = $(".card_frame .frame_element").eq($(".bottom_area div").index(this)); $dangqian = $(".card_frame .frame_element").eq($(".bottom_area div").index(this))
$dangqian.addClass("card_frame_focus"); ;
$dangqian.siblings().removeClass("card_frame_focus"); $dangqian.addClass("card_frame_focus")
;
$dangqian.siblings().removeClass("card_frame_focus")
;
$('.card_frame .frame_element').jscroll({W: "12px", Btn: $('.card_frame .frame_element').jscroll({W: "12px", Btn:
{btn: false}}); {btn: false}})
;
show: (e) -> show: (e) ->
card = $(e.target).tmplItem().data.card() card = $(e.target).tmplItem().data.card()
@show_card(card) @show_card(card)
...@@ -365,12 +371,12 @@ $(document).ready -> ...@@ -365,12 +371,12 @@ $(document).ready ->
#share #share
$('#deck_share').click -> $('#deck_share').click ->
$("#deck_url").val deck.url() $("#deck_url").val decks.deck().url()
$("#deck_url_qrcode").attr 'src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(decks.deck().url()) $("#deck_url_qrcode").attr 'src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(decks.deck().url())
$("#deck_share_dialog").dialog('open') $("#deck_share_dialog").dialog('open')
$('#deck_url_shorten').click -> $('#deck_url_shorten').click ->
$('#deck_url_shorten').attr "disabled",true $('#deck_url_shorten').attr "disabled", true
$.ajax $.ajax
url: 'https://www.googleapis.com/urlshortener/v1/url' url: 'https://www.googleapis.com/urlshortener/v1/url'
type: 'POST' type: 'POST'
...@@ -389,7 +395,12 @@ $(document).ready -> ...@@ -389,7 +395,12 @@ $(document).ready ->
if ev.state if ev.state
deck.refresh ev.state, false deck.refresh ev.state, false
$('.main_div').bind 'drop', (ev)-> $('.main_div').bind 'dragover', (ev)->
$("#drop_upload_dialog").dialog('open')
false
$("#drop_upload_dialog").bind 'drop', (ev)->
$("#drop_upload_dialog").dialog('close')
decks.upload event.dataTransfer.files decks.upload event.dataTransfer.files
false false
...@@ -400,4 +411,12 @@ $(document).ready -> ...@@ -400,4 +411,12 @@ $(document).ready ->
$("#deck_share_dialog").dialog $("#deck_share_dialog").dialog
modal: true modal: true
autoOpen: false autoOpen: false
$("#drop_upload_dialog").dialog
dialogClass: 'drop_upload'
draggable: false
resizable: false
modal: true
autoOpen: false
addthis.init() addthis.init()
\ No newline at end of file
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
}); });
}; };
Card.fetch_by_id = function(cards_id, callback) { Card.fetch_by_id = function(cards_id, callback, before, after) {
var card_id, var card_id,
_this = this; _this = this;
cards_id = (function() { cards_id = (function() {
...@@ -154,6 +154,9 @@ ...@@ -154,6 +154,9 @@
return _results; return _results;
})(); })();
if (cards_id.length) { if (cards_id.length) {
if (before) {
before();
}
return $.when($.getJSON("" + this.url + "?q=" + (JSON.stringify({ return $.when($.getJSON("" + this.url + "?q=" + (JSON.stringify({
_id: { _id: {
$in: cards_id $in: cards_id
...@@ -164,7 +167,10 @@ ...@@ -164,7 +167,10 @@
} }
})))).done(function(cards, langs) { })))).done(function(cards, langs) {
_this.load(cards[0], langs[0]); _this.load(cards[0], langs[0]);
return callback(); callback();
if (after) {
return after();
}
}); });
} else { } else {
return callback(); return callback();
...@@ -512,6 +518,8 @@ ...@@ -512,6 +518,8 @@
}).call(this), function() { }).call(this), function() {
_this.deck().sort(); _this.deck().sort();
return _this.render(); return _this.render();
}, function() {
return _this.html($('#loading_template').tmpl());
}); });
}; };
...@@ -785,7 +793,7 @@ ...@@ -785,7 +793,7 @@
return false; return false;
}); });
$('#deck_share').click(function() { $('#deck_share').click(function() {
$("#deck_url").val(deck.url()); $("#deck_url").val(decks.deck().url());
$("#deck_url_qrcode").attr('src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(decks.deck().url())); $("#deck_url_qrcode").attr('src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(decks.deck().url()));
return $("#deck_share_dialog").dialog('open'); return $("#deck_share_dialog").dialog('open');
}); });
...@@ -812,7 +820,12 @@ ...@@ -812,7 +820,12 @@
return deck.refresh(ev.state, false); return deck.refresh(ev.state, false);
} }
}); });
$('.main_div').bind('drop', function(ev) { $('.main_div').bind('dragover', function(ev) {
$("#drop_upload_dialog").dialog('open');
return false;
});
$("#drop_upload_dialog").bind('drop', function(ev) {
$("#drop_upload_dialog").dialog('close');
decks.upload(event.dataTransfer.files); decks.upload(event.dataTransfer.files);
return false; return false;
}); });
...@@ -826,6 +839,13 @@ ...@@ -826,6 +839,13 @@
modal: true, modal: true,
autoOpen: false autoOpen: false
}); });
$("#drop_upload_dialog").dialog({
dialogClass: 'drop_upload',
draggable: false,
resizable: false,
modal: true,
autoOpen: false
});
return addthis.init(); return addthis.init();
}); });
......
...@@ -241,3 +241,5 @@ body{margin:0;padding:0;background:#eee;} ...@@ -241,3 +241,5 @@ body{margin:0;padding:0;background:#eee;}
#deck_load{opacity:0;cursor:pointer;} #deck_load{opacity:0;cursor:pointer;}
.ui-sortable{padding:5px 0 5px 10px;} .ui-sortable{padding:5px 0 5px 10px;}
.drop_upload .ui-dialog-titlebar{ display:none; }
...@@ -110,7 +110,9 @@ ...@@ -110,7 +110,9 @@
</div> </div>
</fieldset> </fieldset>
</script> </script>
<script id="loading_template" type="text/x-jquery-tmpl">
<img class="load_img" src="/assets/images/decks/loading.gif" alt="" title=""/>
</script>
<script id="search_card_template" type="text/x-jquery-tmpl"> <script id="search_card_template" type="text/x-jquery-tmpl">
{{tmpl({test: 'test'}) '#search_card_' + ($('.operate_area').hasClass('text') ? 'text' : 'graphic') + '_template'}} {{tmpl({test: 'test'}) '#search_card_' + ($('.operate_area').hasClass('text') ? 'text' : 'graphic') + '_template'}}
</script> </script>
...@@ -420,7 +422,7 @@ ...@@ -420,7 +422,7 @@
</div> </div>
</div> </div>
</div> </div>
<div id="deck_share_dialog" title="share"> <div id="deck_share_dialog" title="share" style="display: none">
<fieldset> <fieldset>
<legend>URL</legend> <legend>URL</legend>
<input id="deck_url" readonly="readonly"/><br/> <input id="deck_url" readonly="readonly"/><br/>
...@@ -446,6 +448,10 @@ ...@@ -446,6 +448,10 @@
src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-504b398d148616ce&async=1"></script> src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-504b398d148616ce&async=1"></script>
<!-- AddThis Button END --> <!-- AddThis Button END -->
</div> </div>
<div id="drop_upload_dialog">
上传
</div>
<script src="/vendor/javascripts/jquery-1.8.2.min.js"></script> <script src="/vendor/javascripts/jquery-1.8.2.min.js"></script>
<script src="/vendor/javascripts/jQuery-URL-Parser.js"></script> <script src="/vendor/javascripts/jQuery-URL-Parser.js"></script>
<script src="/vendor/javascripts/jquery.tmpl.min.js"></script> <script src="/vendor/javascripts/jquery.tmpl.min.js"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment