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

temp

parent 4179ebc7
......@@ -15,19 +15,13 @@ class Card extends Spine.Model
"http://my-card.in/images/cards/ygocore/#{@id}.jpg"
image_thumbnail_url: ->
"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) =>
alert 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
@load: (cards, langs)->
@refresh(for lang in langs
for card in cards
if card._id == lang._id
$.extend(lang, card)
break
card_type = []
i=0
while lang.type
......@@ -35,7 +29,6 @@ class Card extends Spine.Model
card_type.push @card_types[i]
lang.type >>= 1
i++
{
id: card._id
alias: card.alias
......@@ -49,24 +42,46 @@ class Card extends Spine.Model
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
@configure 'CardUsage', 'card_id', 'count', 'side'
@configure 'CardUsage', 'count', 'side'
@belongsTo 'card', Card
@belongsTo 'deck', Deck
class Deck extends Spine.Controller
deck_name: ""
events:
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
class Deck extends Spine.Model
@configure 'Deck', 'name'
@hasMany 'card_usages', CardUsage
key: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-="
constructor: ->
super
CardUsage.bind("refresh change", @render)
@key: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-="
encode: ->
result = ''
for card_usage in @main.concat @extra, @side
......@@ -74,25 +89,59 @@ class Deck extends Spine.Controller
for i in [4..0]
result += @key.charAt((c >> i * 6) & 0x3F)
result
decode: (str)->
card_usages = for i in [0...str.length] by 5
@decode: (str, name)->
card_usages = []
result = new Deck(name: name)
result.save()
for i in [0...str.length] by 5
decoded = 0
for char in str.substr(i, 5)
decoded = (decoded << 6) + @key.indexOf(char)
card_id = decoded & 0x07FFFFFF
side = decoded >> 29
count = decoded >> 27 & 0x3
{card_id: card_id, side: side, count: count}
@refresh card_usages
refresh: (card_usages, set_history = true)->
cards_need_load = (card_usage.card_id for card_usage in card_usages when !Card.exists(card_usage.card_id))
if cards_need_load.length
Card.query {_id: { $in: cards_need_load}}, =>
CardUsage.refresh card_usages, clear: true
@set_history() if set_history
else
CardUsage.refresh card_usages, clear: true
@set_history() if set_history
card_id = decoded & 0x07FFFFFF
card_usages.push {id: "#{result.cid}_#{side}_#{card_id}", card_id: card_id, side: side, count: count}
result.card_usages card_usages
result
class CardsController extends Spine.Controller
events:
'mouseover .card_search_result': 'show',
'click .card_search_result': 'add',
'contextmenu .card_search_result': 'minus'
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: =>
@main = []
@side = []
......@@ -103,7 +152,8 @@ class Deck extends Spine.Controller
category_count = {}
for category in Card.categories
category_count[category] = 0
CardUsage.each (card_usage)=>
#alert @deck().card_usages()
for card_usage in @deck().card_usages().all()
card = card_usage.card()
if card_usage.side
@side.push card_usage
......@@ -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)
$('.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}
location: ->
"/decks/new?name=#{@deck_name}&cards=#{@encode()}"
location_ydk: ->
......@@ -181,7 +233,7 @@ class Deck extends Spine.Controller
set_history: ->
history.pushState(CardUsage.toJSON(), @deck_name, @location())
tab_control: ->
@tab_control: ->
$(".bottom_area div").click ->
$(this).addClass("bottom_button_active").removeClass("bottom_button")
$(this).siblings().addClass("bottom_button").removeClass("bottom_button_active")
......@@ -192,13 +244,15 @@ class Deck extends Spine.Controller
{btn: false}});
show: (e) ->
card = $(e.target).tmplItem().data.card()
@show_card(card)
show_card: (card)->
$('#card').removeClass(Card.card_types.join(' '))
active_page_index = $('.bottom_area div').index $(".bottom_button_active")
$('#card').html $("#card_template").tmpl(card)
$('#card').addClass(card.card_type.join(' '))
$('.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")
@tab_control()
DecksController.tab_control()
add: (e)->
card_usage = $(e.target).tmplItem().data
count = 0
......@@ -208,6 +262,15 @@ class Deck extends Spine.Controller
card_usage.count++
card_usage.save()
@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)->
e.preventDefault()
card_usage = $(e.target).tmplItem().data
......@@ -217,17 +280,50 @@ class Deck extends Spine.Controller
else
card_usage.destroy()
@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 ->
$('#name').html $.url().param('name')
$("#deck_share_dialog").dialog
modal: true
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_url").val 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 ->
success: (data)->
$("#deck_url").val data.id
$('#deck_url_shorten').attr "disabled", false
#upload
$('#deck_load').change ->
file = @files[0]
reader = new FileReader()
......@@ -278,22 +376,11 @@ $(document).ready ->
deck.set_history()
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)->
if ev.state
deck.refresh ev.state, false
Card.fetch()
$(".rename_ope").click ->
$(".text,.graphic").toggleClass("graphic text")
deck.render()
// Generated by CoffeeScript 1.4.0
(function() {
var Card, CardUsage, Deck, locale,
var Card, CardUsage, CardsController, CardsSearchController, Deck, DecksController, locale,
__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; },
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
......@@ -46,38 +46,9 @@
return "http://my-card.in/images/cards/ygocore/thumbnail/" + this.id + ".jpg";
};
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) {
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() {
Card.load = function(cards, langs) {
var card, card_type, i, lang;
return this.refresh((function() {
var _i, _j, _len, _len1, _results;
_results = [];
for (_i = 0, _len = langs.length; _i < _len; _i++) {
......@@ -126,11 +97,78 @@
});
}
return _results;
}).call(_this);
_this.refresh(cards);
return callback(cards);
}).call(this));
};
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;
......@@ -145,10 +183,12 @@
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('deck', Deck);
return CardUsage;
})(Spine.Model);
......@@ -157,21 +197,15 @@
__extends(Deck, _super);
Deck.prototype.deck_name = "";
function Deck() {
return Deck.__super__.constructor.apply(this, arguments);
}
Deck.prototype.events = {
'mouseover .card_usage': 'show',
'click .card_usage': 'add',
'contextmenu .card_usage': 'minus'
};
Deck.configure('Deck', 'name');
Deck.prototype.key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-=";
Deck.hasMany('card_usages', CardUsage);
function Deck() {
this.render = __bind(this.render, this);
Deck.__super__.constructor.apply(this, arguments);
CardUsage.bind("refresh change", this.render);
}
Deck.key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*-=";
Deck.prototype.encode = function() {
var c, card_usage, i, result, _i, _j, _len, _ref;
......@@ -187,11 +221,13 @@
return result;
};
Deck.prototype.decode = function(str) {
var card_id, card_usages, char, count, decoded, i, side;
card_usages = (function() {
var _i, _j, _len, _ref, _ref1, _results;
_results = [];
Deck.decode = function(str, name) {
var card_id, card_usages, char, count, decoded, i, result, side, _i, _j, _len, _ref, _ref1;
card_usages = [];
result = new Deck({
name: name
});
result.save();
for (i = _i = 0, _ref = str.length; _i < _ref; i = _i += 5) {
decoded = 0;
_ref1 = str.substr(i, 5);
......@@ -199,62 +235,106 @@
char = _ref1[_j];
decoded = (decoded << 6) + this.key.indexOf(char);
}
card_id = decoded & 0x07FFFFFF;
side = decoded >> 29;
count = decoded >> 27 & 0x3;
_results.push({
card_id = decoded & 0x07FFFFFF;
card_usages.push({
id: "" + result.cid + "_" + side + "_" + card_id,
card_id: card_id,
side: side,
count: count
});
}
return _results;
}).call(this);
return this.refresh(card_usages);
result.card_usages(card_usages);
return result;
};
Deck.prototype.refresh = function(card_usages, set_history) {
var card_usage, cards_need_load,
_this = this;
if (set_history == null) {
set_history = true;
return Deck;
})(Spine.Model);
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 = [];
for (_i = 0, _len = card_usages.length; _i < _len; _i++) {
card_usage = card_usages[_i];
if (!Card.exists(card_usage.card_id)) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
card_usage = _ref[_i];
_results.push(card_usage.card_id);
}
}
return _results;
})();
if (cards_need_load.length) {
return Card.query({
_id: {
$in: cards_need_load
}
}, function() {
CardUsage.refresh(card_usages, {
clear: true
});
if (set_history) {
return _this.set_history();
}
})(), function() {
return _this.render();
});
} else {
CardUsage.refresh(card_usages, {
clear: true
});
if (set_history) {
return this.set_history();
}
}
};
Deck.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,
DecksController.prototype.render = function() {
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.main = [];
this.side = [];
......@@ -268,35 +348,36 @@
category = _ref[_i];
category_count[category] = 0;
}
CardUsage.each(function(card_usage) {
var card, card_type;
_ref1 = this.deck().card_usages().all();
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_usage = _ref1[_j];
card = card_usage.card();
if (card_usage.side) {
_this.side.push(card_usage);
return side_count += card_usage.count;
this.side.push(card_usage);
side_count += card_usage.count;
} else if (((function() {
var _j, _len1, _ref1, _results;
_ref1 = card.card_type;
var _k, _len2, _ref2, _results;
_ref2 = card.card_type;
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_type = _ref1[_j];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_type = _ref2[_k];
if (__indexOf.call(Card.card_types_extra, card_type) >= 0) {
_results.push(card_type);
}
}
return _results;
})()).length) {
_this.extra.push(card_usage);
return extra_count += card_usage.count;
this.extra.push(card_usage);
extra_count += card_usage.count;
} else {
_this.main.push(card_usage);
this.main.push(card_usage);
main_count += card_usage.count;
return category_count[((function() {
var _j, _len1, _ref1, _results;
_ref1 = card.card_type;
category_count[((function() {
var _k, _len2, _ref2, _results;
_ref2 = card.card_type;
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
category = _ref1[_j];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
category = _ref2[_k];
if (__indexOf.call(Card.categories, category) >= 0) {
_results.push(category);
}
......@@ -304,7 +385,7 @@
return _results;
})()).pop()] += card_usage.count;
}
});
}
this.html($('#deck_template').tmpl({
main: this.main,
side: this.side,
......@@ -320,15 +401,15 @@
if ($.browser.chrome) {
$('#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() {
var _j, _len1, _ref1, _results;
_ref1 = this.main;
var _k, _len2, _ref2, _results;
_ref2 = this.main;
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_usage = _ref1[_j];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref2[_k];
_results.push(((function() {
var _k, _ref2, _results1;
var _l, _ref3, _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);
}
return _results1;
......@@ -336,15 +417,15 @@
}
return _results;
}).call(this), (function() {
var _j, _len1, _ref1, _results;
_ref1 = this.extra;
var _k, _len2, _ref2, _results;
_ref2 = this.extra;
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_usage = _ref1[_j];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref2[_k];
_results.push(((function() {
var _k, _ref2, _results1;
var _l, _ref3, _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);
}
return _results1;
......@@ -352,15 +433,15 @@
}
return _results;
}).call(this), ["!side"], (function() {
var _j, _len1, _ref1, _results;
_ref1 = this.side;
var _k, _len2, _ref2, _results;
_ref2 = this.side;
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
card_usage = _ref1[_j];
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
card_usage = _ref2[_k];
_results.push(((function() {
var _k, _ref2, _results1;
var _l, _ref3, _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);
}
return _results1;
......@@ -374,12 +455,12 @@
$(".deck_part").sortable({
connectWith: ".deck_part",
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 = [];
last_item = null;
_ref1 = $('.card_usage');
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
el = _ref1[_j];
_ref2 = $('.card_usage');
for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
el = _ref2[_k];
card_id = $(el).tmplItem().data.card_id;
side = $(el).parent().hasClass('side');
if (last_item) {
......@@ -446,27 +527,27 @@
}
};
Deck.prototype.location = function() {
DecksController.prototype.location = function() {
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());
};
Deck.prototype.url = function() {
DecksController.prototype.url = function() {
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();
};
Deck.prototype.set_history = function() {
DecksController.prototype.set_history = function() {
return history.pushState(CardUsage.toJSON(), this.deck_name, this.location());
};
Deck.prototype.tab_control = function() {
DecksController.tab_control = function() {
$(".bottom_area div").click(function() {
var $dangqian;
$(this).addClass("bottom_button_active").removeClass("bottom_button");
......@@ -483,19 +564,24 @@
});
};
Deck.prototype.show = function(e) {
var active_page_index, card;
DecksController.prototype.show = function(e) {
var 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(' '));
active_page_index = $('.bottom_area div').index($(".bottom_button_active"));
$('#card').html($("#card_template").tmpl(card));
$('#card').addClass(card.card_type.join(' '));
$('.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");
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;
card_usage = $(e.target).tmplItem().data;
count = 0;
......@@ -511,7 +597,27 @@
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;
e.preventDefault();
card_usage = $(e.target).tmplItem().data;
......@@ -524,22 +630,62 @@
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);
$(document).ready(function() {
var deck;
$('#name').html($.url().param('name'));
$("#deck_share_dialog").dialog({
modal: true,
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")
});
deck.deck_name = $.url().param('name');
deck.tab_control();
this.cards_search = new CardsSearchController({
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_url").val(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 @@
};
return reader.readAsText(file);
});
return $.i18n.properties({
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) {
window.addEventListener('popstate', function(ev) {
if (ev.state) {
return deck.refresh(ev.state, false);
}
});
});
Card.fetch();
return $(".rename_ope").click(function() {
$(".text,.graphic").toggleClass("graphic text");
return deck.render();
......
......@@ -443,7 +443,7 @@
<img id="deck_url_qrcode"/>
</fieldset>
<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 -->
</div>
<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