Commit 4b0eb0c4 authored by 神楽坂玲奈's avatar 神楽坂玲奈

temp

parent 4179ebc7
...@@ -15,19 +15,13 @@ class Card extends Spine.Model ...@@ -15,19 +15,13 @@ class Card extends Spine.Model
"http://my-card.in/images/cards/ygocore/#{@id}.jpg" "http://my-card.in/images/cards/ygocore/#{@id}.jpg"
image_thumbnail_url: -> image_thumbnail_url: ->
"http://my-card.in/images/cards/ygocore/thumbnail/#{@id}.jpg" "http://my-card.in/images/cards/ygocore/thumbnail/#{@id}.jpg"
@fetch_by_name: (name, callback)->
$.getJSON "#{@locale_url}?q=#{JSON.stringify {name: {$regex: name.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), $options: 'i'}}}", (langs) => @load: (cards, langs)->
alert langs @refresh(for lang in langs
@query: (q, callback)->
$.getJSON "#{@url}?q=#{JSON.stringify(q)}", (cards) =>
cards_id = (card._id for card in cards)
$.getJSON "#{@locale_url}?q=#{JSON.stringify({_id:{ $in: cards_id}})}", (langs) =>
cards = (for lang in langs
for card in cards for card in cards
if card._id == lang._id if card._id == lang._id
$.extend(lang, card) $.extend(lang, card)
break break
card_type = [] card_type = []
i=0 i=0
while lang.type while lang.type
...@@ -35,7 +29,6 @@ class Card extends Spine.Model ...@@ -35,7 +29,6 @@ class Card extends Spine.Model
card_type.push @card_types[i] card_type.push @card_types[i]
lang.type >>= 1 lang.type >>= 1
i++ i++
{ {
id: card._id id: card._id
alias: card.alias alias: card.alias
...@@ -49,24 +42,46 @@ class Card extends Spine.Model ...@@ -49,24 +42,46 @@ class Card extends Spine.Model
description: lang.desc description: lang.desc
} }
) )
@refresh cards
callback(cards)
@fetch_by_name: (name, callback)->
$.getJSON "#{@locale_url}&q=#{JSON.stringify {name: {$regex: name.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), $options: 'i'}}}", (langs) =>
result = []
cards_id = []
for lang in langs
try
result.push Card.find lang._id
catch e
cards_id.push lang._id
if cards_id.length
$.getJSON "#{@url}&q=#{JSON.stringify({_id:{ $in: cards_id}})}", (cards) =>
@load cards, langs
for card in cards
result.push Card.find card._id
callback(result)
else
callback(result)
@fetch_by_id: (cards_id, callback)->
cards_id = (card_id for card_id in cards_id when !Card.exists(card_id))
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)=>
@load(cards[0], langs[0])
callback()
else
callback()
class CardUsage extends Spine.Model class CardUsage extends Spine.Model
@configure 'CardUsage', 'card_id', 'count', 'side' @configure 'CardUsage', 'count', 'side'
@belongsTo 'card', Card @belongsTo 'card', Card
@belongsTo 'deck', Deck
class Deck extends Spine.Controller class Deck extends Spine.Model
deck_name: "" @configure 'Deck', 'name'
events: @hasMany 'card_usages', CardUsage
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
key: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-=" @key: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-="
constructor: ->
super
CardUsage.bind("refresh change", @render)
encode: -> encode: ->
result = '' result = ''
for card_usage in @main.concat @extra, @side for card_usage in @main.concat @extra, @side
...@@ -74,25 +89,59 @@ class Deck extends Spine.Controller ...@@ -74,25 +89,59 @@ class Deck extends Spine.Controller
for i in [4..0] for i in [4..0]
result += @key.charAt((c >> i * 6) & 0x3F) result += @key.charAt((c >> i * 6) & 0x3F)
result result
decode: (str)-> @decode: (str, name)->
card_usages = for i in [0...str.length] by 5 card_usages = []
result = new Deck(name: name)
result.save()
for i in [0...str.length] by 5
decoded = 0 decoded = 0
for char in str.substr(i, 5) for char in str.substr(i, 5)
decoded = (decoded << 6) + @key.indexOf(char) decoded = (decoded << 6) + @key.indexOf(char)
card_id = decoded & 0x07FFFFFF
side = decoded >> 29 side = decoded >> 29
count = decoded >> 27 & 0x3 count = decoded >> 27 & 0x3
{card_id: card_id, side: side, count: count} card_id = decoded & 0x07FFFFFF
@refresh card_usages card_usages.push {id: "#{result.cid}_#{side}_#{card_id}", card_id: card_id, side: side, count: count}
refresh: (card_usages, set_history = true)-> result.card_usages card_usages
cards_need_load = (card_usage.card_id for card_usage in card_usages when !Card.exists(card_usage.card_id)) result
if cards_need_load.length
Card.query {_id: { $in: cards_need_load}}, => class CardsController extends Spine.Controller
CardUsage.refresh card_usages, clear: true events:
@set_history() if set_history 'mouseover .card_search_result': 'show',
else 'click .card_search_result': 'add',
CardUsage.refresh card_usages, clear: true 'contextmenu .card_search_result': 'minus'
@set_history() if set_history add: (e)->
Deck.current.add_card($(this).tmplItem().data)
minus: (e)->
Deck.current.minus_card($(this).tmplItem().data)
show: (e)->
Deck.current.show_card($(this).tmplItem().data)
search: (name)->
Card.fetch_by_name name, (cards)=>
@html $('#cards_search_result_template').tmpl cards
class DecksController extends Spine.Controller
events:
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
deck: (deck) ->
if deck
@_deck = deck
@_deck.bind('change', @refresh)
@refresh(deck)
@_deck
#constructor: ->
# super
# CardUsage.bind("refresh change", @refresh)
refresh: (deck)=>
Card.fetch_by_id (card_usage.card_id for card_usage in deck.card_usages().all()), =>
@render()
render: => render: =>
@main = [] @main = []
@side = [] @side = []
...@@ -103,7 +152,8 @@ class Deck extends Spine.Controller ...@@ -103,7 +152,8 @@ class Deck extends Spine.Controller
category_count = {} category_count = {}
for category in Card.categories for category in Card.categories
category_count[category] = 0 category_count[category] = 0
CardUsage.each (card_usage)=> #alert @deck().card_usages()
for card_usage in @deck().card_usages().all()
card = card_usage.card() card = card_usage.card()
if card_usage.side if card_usage.side
@side.push card_usage @side.push card_usage
...@@ -170,6 +220,8 @@ class Deck extends Spine.Controller ...@@ -170,6 +220,8 @@ class Deck extends Spine.Controller
extra_margin = Math.floor((deck_width - card_width * Math.max(extra_count,10)) / (Math.max(extra_count,10)-1) / 2) extra_margin = Math.floor((deck_width - card_width * Math.max(extra_count,10)) / (Math.max(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}
location: -> location: ->
"/decks/new?name=#{@deck_name}&cards=#{@encode()}" "/decks/new?name=#{@deck_name}&cards=#{@encode()}"
location_ydk: -> location_ydk: ->
...@@ -181,7 +233,7 @@ class Deck extends Spine.Controller ...@@ -181,7 +233,7 @@ class Deck extends Spine.Controller
set_history: -> set_history: ->
history.pushState(CardUsage.toJSON(), @deck_name, @location()) history.pushState(CardUsage.toJSON(), @deck_name, @location())
tab_control: -> @tab_control: ->
$(".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")
...@@ -192,13 +244,15 @@ class Deck extends Spine.Controller ...@@ -192,13 +244,15 @@ class Deck extends Spine.Controller
{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)->
$('#card').removeClass(Card.card_types.join(' ')) $('#card').removeClass(Card.card_types.join(' '))
active_page_index = $('.bottom_area div').index $(".bottom_button_active") active_page_index = $('.bottom_area div').index $(".bottom_button_active")
$('#card').html $("#card_template").tmpl(card) $('#card').html $("#card_template").tmpl(card)
$('#card').addClass(card.card_type.join(' ')) $('#card').addClass(card.card_type.join(' '))
$('.card_frame .frame_element').eq(active_page_index).addClass('card_frame_focus') $('.card_frame .frame_element').eq(active_page_index).addClass('card_frame_focus')
$('.bottom_area div').eq(active_page_index).addClass('bottom_button_active').removeClass("bottom_button") $('.bottom_area div').eq(active_page_index).addClass('bottom_button_active').removeClass("bottom_button")
@tab_control() DecksController.tab_control()
add: (e)-> add: (e)->
card_usage = $(e.target).tmplItem().data card_usage = $(e.target).tmplItem().data
count = 0 count = 0
...@@ -208,6 +262,15 @@ class Deck extends Spine.Controller ...@@ -208,6 +262,15 @@ class Deck extends Spine.Controller
card_usage.count++ card_usage.count++
card_usage.save() card_usage.save()
@set_history() @set_history()
add_card: (card)->
card_usage = CardUsage.findByAttribute('card_id', card.id) || new CardUsage(card_id: card.id, main: true, count: 0)
count = 0
for c in CardUsage.findAllByAttribute('card_id', card_usage.card_id) #TODO: alias
count += c.count
if count < 3 #TODO: lflist
card_usage.count++
card_usage.save()
@set_history()
minus: (e)-> minus: (e)->
e.preventDefault() e.preventDefault()
card_usage = $(e.target).tmplItem().data card_usage = $(e.target).tmplItem().data
...@@ -217,17 +280,50 @@ class Deck extends Spine.Controller ...@@ -217,17 +280,50 @@ class Deck extends Spine.Controller
else else
card_usage.destroy() card_usage.destroy()
@set_history() @set_history()
minus_card: (card)->
e.preventDefault()
card_usage = CardUsage.findByAttribute('card_id', card.id)
return unless card_usage
card_usage.count--
if card_usage.count
card_usage.save()
else
card_usage.destroy()
@set_history()
class CardsSearchController extends Spine.Controller
$(document).ready -> $(document).ready ->
$('#name').html $.url().param('name') $('#name').html $.url().param('name')
$("#deck_share_dialog").dialog $("#deck_share_dialog").dialog
modal: true modal: true
autoOpen: false autoOpen: false
addthis.init()
deck = new Deck(el: $("#deck"))
deck.deck_name = $.url().param('name')
deck.tab_control()
$.i18n.properties
name: 'card'
path: '/locales/'
mode: 'map'
cache: true
callback: ->
@decks = new DecksController(el: $("#deck"))
#@decks.tab_control()
@cards_search = new CardsSearchController(el: $("#cards_search"))
@decks.deck Deck.decode $.url().param('cards'), $.url().param('name')
#search
$('#search').submit ->
cards_search.search $('.search_input').val()
return false
#share
$('#deck_share').click -> $('#deck_share').click ->
$("#deck_url").val deck.url() $("#deck_url").val deck.url()
$("#deck_url_qrcode").attr 'src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(deck.url()) $("#deck_url_qrcode").attr 'src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(deck.url())
...@@ -242,6 +338,8 @@ $(document).ready -> ...@@ -242,6 +338,8 @@ $(document).ready ->
success: (data)-> success: (data)->
$("#deck_url").val data.id $("#deck_url").val data.id
$('#deck_url_shorten').attr "disabled", false $('#deck_url_shorten').attr "disabled", false
#upload
$('#deck_load').change -> $('#deck_load').change ->
file = @files[0] file = @files[0]
reader = new FileReader() reader = new FileReader()
...@@ -278,22 +376,11 @@ $(document).ready -> ...@@ -278,22 +376,11 @@ $(document).ready ->
deck.set_history() deck.set_history()
reader.readAsText(file) reader.readAsText(file)
$.i18n.properties
name: 'card'
path: '/locales/'
mode: 'map'
cache: true
callback: ->
Card.fetch ->
$('#search').submit ->
Card.fetch_by_name $('.search_input').val()
return false
deck.decode $.url().param('cards')
window.addEventListener 'popstate', (ev)-> window.addEventListener 'popstate', (ev)->
if ev.state if ev.state
deck.refresh ev.state, false deck.refresh ev.state, false
Card.fetch()
$(".rename_ope").click -> $(".rename_ope").click ->
$(".text,.graphic").toggleClass("graphic text") $(".text,.graphic").toggleClass("graphic text")
deck.render() deck.render()
// Generated by CoffeeScript 1.4.0 // Generated by CoffeeScript 1.4.0
(function() { (function() {
var Card, CardUsage, Deck, locale, var Card, CardUsage, CardsController, CardsSearchController, Deck, DecksController, locale,
__hasProp = {}.hasOwnProperty, __hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
...@@ -46,38 +46,9 @@ ...@@ -46,38 +46,9 @@
return "http://my-card.in/images/cards/ygocore/thumbnail/" + this.id + ".jpg"; return "http://my-card.in/images/cards/ygocore/thumbnail/" + this.id + ".jpg";
}; };
Card.fetch_by_name = function(name, callback) { Card.load = function(cards, langs) {
var _this = this; var card, card_type, i, lang;
return $.getJSON("" + this.locale_url + "?q=" + (JSON.stringify({ return this.refresh((function() {
name: {
$regex: name.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'),
$options: 'i'
}
})), function(langs) {
return alert(langs);
});
};
Card.query = function(q, callback) {
var _this = this;
return $.getJSON("" + this.url + "?q=" + (JSON.stringify(q)), function(cards) {
var card, cards_id;
cards_id = (function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = cards.length; _i < _len; _i++) {
card = cards[_i];
_results.push(card._id);
}
return _results;
})();
return $.getJSON("" + _this.locale_url + "?q=" + (JSON.stringify({
_id: {
$in: cards_id
}
})), function(langs) {
var card_type, i, lang;
cards = (function() {
var _i, _j, _len, _len1, _results; var _i, _j, _len, _len1, _results;
_results = []; _results = [];
for (_i = 0, _len = langs.length; _i < _len; _i++) { for (_i = 0, _len = langs.length; _i < _len; _i++) {
...@@ -126,11 +97,78 @@ ...@@ -126,11 +97,78 @@
}); });
} }
return _results; return _results;
}).call(_this); }).call(this));
_this.refresh(cards); };
return callback(cards);
Card.fetch_by_name = function(name, callback) {
var _this = this;
return $.getJSON("" + this.locale_url + "&q=" + (JSON.stringify({
name: {
$regex: name.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'),
$options: 'i'
}
})), function(langs) {
var cards_id, lang, result, _i, _len;
result = [];
cards_id = [];
for (_i = 0, _len = langs.length; _i < _len; _i++) {
lang = langs[_i];
try {
result.push(Card.find(lang._id));
} catch (e) {
cards_id.push(lang._id);
}
}
if (cards_id.length) {
return $.getJSON("" + _this.url + "&q=" + (JSON.stringify({
_id: {
$in: cards_id
}
})), function(cards) {
var card, _j, _len1;
_this.load(cards, langs);
for (_j = 0, _len1 = cards.length; _j < _len1; _j++) {
card = cards[_j];
result.push(Card.find(card._id));
}
return callback(result);
});
} else {
return callback(result);
}
}); });
};
Card.fetch_by_id = function(cards_id, callback) {
var card_id,
_this = this;
cards_id = (function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = cards_id.length; _i < _len; _i++) {
card_id = cards_id[_i];
if (!Card.exists(card_id)) {
_results.push(card_id);
}
}
return _results;
})();
if (cards_id.length) {
return $.when($.getJSON("" + this.url + "&q=" + (JSON.stringify({
_id: {
$in: cards_id
}
}))), $.getJSON("" + this.locale_url + "&q=" + (JSON.stringify({
_id: {
$in: cards_id
}
})))).done(function(cards, langs) {
_this.load(cards[0], langs[0]);
return callback();
}); });
} else {
return callback();
}
}; };
return Card; return Card;
...@@ -145,10 +183,12 @@ ...@@ -145,10 +183,12 @@
return CardUsage.__super__.constructor.apply(this, arguments); return CardUsage.__super__.constructor.apply(this, arguments);
} }
CardUsage.configure('CardUsage', 'card_id', 'count', 'side'); CardUsage.configure('CardUsage', 'count', 'side');
CardUsage.belongsTo('card', Card); CardUsage.belongsTo('card', Card);
CardUsage.belongsTo('deck', Deck);
return CardUsage; return CardUsage;
})(Spine.Model); })(Spine.Model);
...@@ -157,21 +197,15 @@ ...@@ -157,21 +197,15 @@
__extends(Deck, _super); __extends(Deck, _super);
Deck.prototype.deck_name = ""; function Deck() {
return Deck.__super__.constructor.apply(this, arguments);
}
Deck.prototype.events = { Deck.configure('Deck', 'name');
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
};
Deck.prototype.key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-="; Deck.hasMany('card_usages', CardUsage);
function Deck() { Deck.key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-=";
this.render = __bind(this.render, this);
Deck.__super__.constructor.apply(this, arguments);
CardUsage.bind("refresh change", this.render);
}
Deck.prototype.encode = function() { Deck.prototype.encode = function() {
var c, card_usage, i, result, _i, _j, _len, _ref; var c, card_usage, i, result, _i, _j, _len, _ref;
...@@ -187,11 +221,13 @@ ...@@ -187,11 +221,13 @@
return result; return result;
}; };
Deck.prototype.decode = function(str) { Deck.decode = function(str, name) {
var card_id, card_usages, char, count, decoded, i, side; var card_id, card_usages, char, count, decoded, i, result, side, _i, _j, _len, _ref, _ref1;
card_usages = (function() { card_usages = [];
var _i, _j, _len, _ref, _ref1, _results; result = new Deck({
_results = []; name: name
});
result.save();
for (i = _i = 0, _ref = str.length; _i < _ref; i = _i += 5) { for (i = _i = 0, _ref = str.length; _i < _ref; i = _i += 5) {
decoded = 0; decoded = 0;
_ref1 = str.substr(i, 5); _ref1 = str.substr(i, 5);
...@@ -199,62 +235,106 @@ ...@@ -199,62 +235,106 @@
char = _ref1[_j]; char = _ref1[_j];
decoded = (decoded << 6) + this.key.indexOf(char); decoded = (decoded << 6) + this.key.indexOf(char);
} }
card_id = decoded & 0x07FFFFFF;
side = decoded >> 29; side = decoded >> 29;
count = decoded >> 27 & 0x3; count = decoded >> 27 & 0x3;
_results.push({ card_id = decoded & 0x07FFFFFF;
card_usages.push({
id: "" + result.cid + "_" + side + "_" + card_id,
card_id: card_id, card_id: card_id,
side: side, side: side,
count: count count: count
}); });
} }
return _results; result.card_usages(card_usages);
}).call(this); return result;
return this.refresh(card_usages);
}; };
Deck.prototype.refresh = function(card_usages, set_history) { return Deck;
var card_usage, cards_need_load,
_this = this; })(Spine.Model);
if (set_history == null) {
set_history = true; CardsController = (function(_super) {
__extends(CardsController, _super);
function CardsController() {
return CardsController.__super__.constructor.apply(this, arguments);
} }
cards_need_load = (function() {
var _i, _len, _results; CardsController.prototype.events = {
'mouseover .card_search_result': 'show',
'click .card_search_result': 'add',
'contextmenu .card_search_result': 'minus'
};
CardsController.prototype.add = function(e) {
return Deck.current.add_card($(this).tmplItem().data);
};
CardsController.prototype.minus = function(e) {
return Deck.current.minus_card($(this).tmplItem().data);
};
CardsController.prototype.show = function(e) {
return Deck.current.show_card($(this).tmplItem().data);
};
CardsController.prototype.search = function(name) {
var _this = this;
return Card.fetch_by_name(name, function(cards) {
return _this.html($('#cards_search_result_template').tmpl(cards));
});
};
return CardsController;
})(Spine.Controller);
DecksController = (function(_super) {
__extends(DecksController, _super);
function DecksController() {
this.render = __bind(this.render, this);
this.refresh = __bind(this.refresh, this);
return DecksController.__super__.constructor.apply(this, arguments);
}
DecksController.prototype.events = {
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
};
DecksController.prototype.deck = function(deck) {
if (deck) {
this._deck = deck;
this._deck.bind('change', this.refresh);
this.refresh(deck);
}
return this._deck;
};
DecksController.prototype.refresh = function(deck) {
var card_usage,
_this = this;
return Card.fetch_by_id((function() {
var _i, _len, _ref, _results;
_ref = deck.card_usages().all();
_results = []; _results = [];
for (_i = 0, _len = card_usages.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
card_usage = card_usages[_i]; card_usage = _ref[_i];
if (!Card.exists(card_usage.card_id)) {
_results.push(card_usage.card_id); _results.push(card_usage.card_id);
} }
}
return _results; return _results;
})(); })(), function() {
if (cards_need_load.length) { return _this.render();
return Card.query({
_id: {
$in: cards_need_load
}
}, function() {
CardUsage.refresh(card_usages, {
clear: true
});
if (set_history) {
return _this.set_history();
}
}); });
} else {
CardUsage.refresh(card_usages, {
clear: true
});
if (set_history) {
return this.set_history();
}
}
}; };
Deck.prototype.render = function() { DecksController.prototype.render = function() {
var card_usage, card_width, category, category_count, deck_width, extra_count, extra_margin, i, main_count, main_margin, side_count, side_margin, _i, _len, _ref, var card, card_type, card_usage, card_width, category, category_count, deck_width, extra_count, extra_margin, i, main_count, main_margin, side_count, side_margin, _i, _j, _len, _len1, _ref, _ref1,
_this = this; _this = this;
this.main = []; this.main = [];
this.side = []; this.side = [];
...@@ -268,35 +348,36 @@ ...@@ -268,35 +348,36 @@
category = _ref[_i]; category = _ref[_i];
category_count[category] = 0; category_count[category] = 0;
} }
CardUsage.each(function(card_usage) { _ref1 = this.deck().card_usages().all();
var card, card_type; for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_usage = _ref1[_j];
card = card_usage.card(); card = card_usage.card();
if (card_usage.side) { if (card_usage.side) {
_this.side.push(card_usage); this.side.push(card_usage);
return side_count += card_usage.count; side_count += card_usage.count;
} else if (((function() { } else if (((function() {
var _j, _len1, _ref1, _results; var _k, _len2, _ref2, _results;
_ref1 = card.card_type; _ref2 = card.card_type;
_results = []; _results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_type = _ref1[_j]; card_type = _ref2[_k];
if (__indexOf.call(Card.card_types_extra, card_type) >= 0) { if (__indexOf.call(Card.card_types_extra, card_type) >= 0) {
_results.push(card_type); _results.push(card_type);
} }
} }
return _results; return _results;
})()).length) { })()).length) {
_this.extra.push(card_usage); this.extra.push(card_usage);
return extra_count += card_usage.count; extra_count += card_usage.count;
} else { } else {
_this.main.push(card_usage); this.main.push(card_usage);
main_count += card_usage.count; main_count += card_usage.count;
return category_count[((function() { category_count[((function() {
var _j, _len1, _ref1, _results; var _k, _len2, _ref2, _results;
_ref1 = card.card_type; _ref2 = card.card_type;
_results = []; _results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
category = _ref1[_j]; category = _ref2[_k];
if (__indexOf.call(Card.categories, category) >= 0) { if (__indexOf.call(Card.categories, category) >= 0) {
_results.push(category); _results.push(category);
} }
...@@ -304,7 +385,7 @@ ...@@ -304,7 +385,7 @@
return _results; return _results;
})()).pop()] += card_usage.count; })()).pop()] += card_usage.count;
} }
}); }
this.html($('#deck_template').tmpl({ this.html($('#deck_template').tmpl({
main: this.main, main: this.main,
side: this.side, side: this.side,
...@@ -320,15 +401,15 @@ ...@@ -320,15 +401,15 @@
if ($.browser.chrome) { if ($.browser.chrome) {
$('#deck_url_ydk').attr('download', this.deck_name + '.ydk'); $('#deck_url_ydk').attr('download', this.deck_name + '.ydk');
$('#deck_url_ydk').attr('href', 'data:application/x-ygopro-deck,' + encodeURI(["#generated by mycard/web"].concat((function() { $('#deck_url_ydk').attr('href', 'data:application/x-ygopro-deck,' + encodeURI(["#generated by mycard/web"].concat((function() {
var _j, _len1, _ref1, _results; var _k, _len2, _ref2, _results;
_ref1 = this.main; _ref2 = this.main;
_results = []; _results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref1[_j]; card_usage = _ref2[_k];
_results.push(((function() { _results.push(((function() {
var _k, _ref2, _results1; var _l, _ref3, _results1;
_results1 = []; _results1 = [];
for (i = _k = 0, _ref2 = card_usage.count; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) { for (i = _l = 0, _ref3 = card_usage.count; 0 <= _ref3 ? _l < _ref3 : _l > _ref3; i = 0 <= _ref3 ? ++_l : --_l) {
_results1.push(card_usage.card_id); _results1.push(card_usage.card_id);
} }
return _results1; return _results1;
...@@ -336,15 +417,15 @@ ...@@ -336,15 +417,15 @@
} }
return _results; return _results;
}).call(this), (function() { }).call(this), (function() {
var _j, _len1, _ref1, _results; var _k, _len2, _ref2, _results;
_ref1 = this.extra; _ref2 = this.extra;
_results = []; _results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref1[_j]; card_usage = _ref2[_k];
_results.push(((function() { _results.push(((function() {
var _k, _ref2, _results1; var _l, _ref3, _results1;
_results1 = []; _results1 = [];
for (i = _k = 0, _ref2 = card_usage.count; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) { for (i = _l = 0, _ref3 = card_usage.count; 0 <= _ref3 ? _l < _ref3 : _l > _ref3; i = 0 <= _ref3 ? ++_l : --_l) {
_results1.push(card_usage.card_id); _results1.push(card_usage.card_id);
} }
return _results1; return _results1;
...@@ -352,15 +433,15 @@ ...@@ -352,15 +433,15 @@
} }
return _results; return _results;
}).call(this), ["!side"], (function() { }).call(this), ["!side"], (function() {
var _j, _len1, _ref1, _results; var _k, _len2, _ref2, _results;
_ref1 = this.side; _ref2 = this.side;
_results = []; _results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref1[_j]; card_usage = _ref2[_k];
_results.push(((function() { _results.push(((function() {
var _k, _ref2, _results1; var _l, _ref3, _results1;
_results1 = []; _results1 = [];
for (i = _k = 0, _ref2 = card_usage.count; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) { for (i = _l = 0, _ref3 = card_usage.count; 0 <= _ref3 ? _l < _ref3 : _l > _ref3; i = 0 <= _ref3 ? ++_l : --_l) {
_results1.push(card_usage.card_id); _results1.push(card_usage.card_id);
} }
return _results1; return _results1;
...@@ -374,12 +455,12 @@ ...@@ -374,12 +455,12 @@
$(".deck_part").sortable({ $(".deck_part").sortable({
connectWith: ".deck_part", connectWith: ".deck_part",
stop: function() { stop: function() {
var card_id, card_usages, el, last_item, side, _j, _len1, _ref1; var card_id, card_usages, el, last_item, side, _k, _len2, _ref2;
card_usages = []; card_usages = [];
last_item = null; last_item = null;
_ref1 = $('.card_usage'); _ref2 = $('.card_usage');
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
el = _ref1[_j]; el = _ref2[_k];
card_id = $(el).tmplItem().data.card_id; card_id = $(el).tmplItem().data.card_id;
side = $(el).parent().hasClass('side'); side = $(el).parent().hasClass('side');
if (last_item) { if (last_item) {
...@@ -446,27 +527,27 @@ ...@@ -446,27 +527,27 @@
} }
}; };
Deck.prototype.location = function() { DecksController.prototype.location = function() {
return "/decks/new?name=" + this.deck_name + "&cards=" + (this.encode()); return "/decks/new?name=" + this.deck_name + "&cards=" + (this.encode());
}; };
Deck.prototype.location_ydk = function() { DecksController.prototype.location_ydk = function() {
return "/decks/new.ydk?name=" + this.deck_name + "&cards=" + (this.encode()); return "/decks/new.ydk?name=" + this.deck_name + "&cards=" + (this.encode());
}; };
Deck.prototype.url = function() { DecksController.prototype.url = function() {
return "http://my-card.in" + this.location(); return "http://my-card.in" + this.location();
}; };
Deck.prototype.url_ydk = function() { DecksController.prototype.url_ydk = function() {
return "http://my-card.in" + this.location_ydk(); return "http://my-card.in" + this.location_ydk();
}; };
Deck.prototype.set_history = function() { DecksController.prototype.set_history = function() {
return history.pushState(CardUsage.toJSON(), this.deck_name, this.location()); return history.pushState(CardUsage.toJSON(), this.deck_name, this.location());
}; };
Deck.prototype.tab_control = function() { DecksController.tab_control = function() {
$(".bottom_area div").click(function() { $(".bottom_area div").click(function() {
var $dangqian; var $dangqian;
$(this).addClass("bottom_button_active").removeClass("bottom_button"); $(this).addClass("bottom_button_active").removeClass("bottom_button");
...@@ -483,19 +564,24 @@ ...@@ -483,19 +564,24 @@
}); });
}; };
Deck.prototype.show = function(e) { DecksController.prototype.show = function(e) {
var active_page_index, card; var card;
card = $(e.target).tmplItem().data.card(); card = $(e.target).tmplItem().data.card();
return this.show_card(card);
};
DecksController.prototype.show_card = function(card) {
var active_page_index;
$('#card').removeClass(Card.card_types.join(' ')); $('#card').removeClass(Card.card_types.join(' '));
active_page_index = $('.bottom_area div').index($(".bottom_button_active")); active_page_index = $('.bottom_area div').index($(".bottom_button_active"));
$('#card').html($("#card_template").tmpl(card)); $('#card').html($("#card_template").tmpl(card));
$('#card').addClass(card.card_type.join(' ')); $('#card').addClass(card.card_type.join(' '));
$('.card_frame .frame_element').eq(active_page_index).addClass('card_frame_focus'); $('.card_frame .frame_element').eq(active_page_index).addClass('card_frame_focus');
$('.bottom_area div').eq(active_page_index).addClass('bottom_button_active').removeClass("bottom_button"); $('.bottom_area div').eq(active_page_index).addClass('bottom_button_active').removeClass("bottom_button");
return this.tab_control(); return DecksController.tab_control();
}; };
Deck.prototype.add = function(e) { DecksController.prototype.add = function(e) {
var c, card_usage, count, _i, _len, _ref; var c, card_usage, count, _i, _len, _ref;
card_usage = $(e.target).tmplItem().data; card_usage = $(e.target).tmplItem().data;
count = 0; count = 0;
...@@ -511,7 +597,27 @@ ...@@ -511,7 +597,27 @@
return this.set_history(); return this.set_history();
}; };
Deck.prototype.minus = function(e) { DecksController.prototype.add_card = function(card) {
var c, card_usage, count, _i, _len, _ref;
card_usage = CardUsage.findByAttribute('card_id', card.id) || new CardUsage({
card_id: card.id,
main: true,
count: 0
});
count = 0;
_ref = CardUsage.findAllByAttribute('card_id', card_usage.card_id);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
c = _ref[_i];
count += c.count;
}
if (count < 3) {
card_usage.count++;
card_usage.save();
}
return this.set_history();
};
DecksController.prototype.minus = function(e) {
var card_usage; var card_usage;
e.preventDefault(); e.preventDefault();
card_usage = $(e.target).tmplItem().data; card_usage = $(e.target).tmplItem().data;
...@@ -524,22 +630,62 @@ ...@@ -524,22 +630,62 @@
return this.set_history(); return this.set_history();
}; };
return Deck; DecksController.prototype.minus_card = function(card) {
var card_usage;
e.preventDefault();
card_usage = CardUsage.findByAttribute('card_id', card.id);
if (!card_usage) {
return;
}
card_usage.count--;
if (card_usage.count) {
card_usage.save();
} else {
card_usage.destroy();
}
return this.set_history();
};
return DecksController;
})(Spine.Controller);
CardsSearchController = (function(_super) {
__extends(CardsSearchController, _super);
function CardsSearchController() {
return CardsSearchController.__super__.constructor.apply(this, arguments);
}
return CardsSearchController;
})(Spine.Controller); })(Spine.Controller);
$(document).ready(function() { $(document).ready(function() {
var deck;
$('#name').html($.url().param('name')); $('#name').html($.url().param('name'));
$("#deck_share_dialog").dialog({ $("#deck_share_dialog").dialog({
modal: true, modal: true,
autoOpen: false autoOpen: false
}); });
deck = new Deck({ addthis.init();
return $.i18n.properties({
name: 'card',
path: '/locales/',
mode: 'map',
cache: true,
callback: function() {
this.decks = new DecksController({
el: $("#deck") el: $("#deck")
}); });
deck.deck_name = $.url().param('name'); this.cards_search = new CardsSearchController({
deck.tab_control(); el: $("#cards_search")
});
this.decks.deck(Deck.decode($.url().param('cards'), $.url().param('name')));
$('#search').submit(function() {
cards_search.search($('.search_input').val());
return false;
});
$('#deck_share').click(function() { $('#deck_share').click(function() {
$("#deck_url").val(deck.url()); $("#deck_url").val(deck.url());
$("#deck_url_qrcode").attr('src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(deck.url())); $("#deck_url_qrcode").attr('src', 'https://chart.googleapis.com/chart?chs=200x200&cht=qr&chld=|0&chl=' + encodeURIComponent(deck.url()));
...@@ -624,25 +770,11 @@ ...@@ -624,25 +770,11 @@
}; };
return reader.readAsText(file); return reader.readAsText(file);
}); });
return $.i18n.properties({ window.addEventListener('popstate', function(ev) {
name: 'card',
path: '/locales/',
mode: 'map',
cache: true,
callback: function() {
Card.fetch(function() {
$('#search').submit(function() {
Card.fetch_by_name($('.search_input').val());
return false;
});
deck.decode($.url().param('cards'));
return window.addEventListener('popstate', function(ev) {
if (ev.state) { if (ev.state) {
return deck.refresh(ev.state, false); return deck.refresh(ev.state, false);
} }
}); });
});
Card.fetch();
return $(".rename_ope").click(function() { return $(".rename_ope").click(function() {
$(".text,.graphic").toggleClass("graphic text"); $(".text,.graphic").toggleClass("graphic text");
return deck.render(); return deck.render();
......
...@@ -443,7 +443,7 @@ ...@@ -443,7 +443,7 @@
<img id="deck_url_qrcode"/> <img id="deck_url_qrcode"/>
</fieldset> </fieldset>
<script type="text/javascript" <script type="text/javascript"
src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-504b398d148616ce"></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>
<script src="/vendor/javascripts/jquery-1.8.2.min.js"></script> <script src="/vendor/javascripts/jquery-1.8.2.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