Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Moecube Store
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Moecube Store
Commits
4b0eb0c4
Commit
4b0eb0c4
authored
Dec 13, 2012
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
temp
parent
4179ebc7
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
636 additions
and
417 deletions
+636
-417
assets/javascripts/decks.coffee
assets/javascripts/decks.coffee
+212
-125
assets/javascripts/decks.js
assets/javascripts/decks.js
+423
-291
decks/new/index.html
decks/new/index.html
+1
-1
No files found.
assets/javascripts/decks.coffee
View file @
4b0eb0c4
...
...
@@ -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'
,
'c
ard_id'
,
'c
ount'
,
'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
()
assets/javascripts/decks.js
View file @
4b0eb0c4
// 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
'
,
'
c
ard_id
'
,
'
c
ount
'
,
'
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
,
Deck
sController
.
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
;
_ref
1
=
card
.
card_type
;
var
_
k
,
_len2
,
_ref2
,
_results
;
_ref
2
=
card
.
card_type
;
_results
=
[];
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
card_type
=
_ref
1
[
_j
];
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
card_type
=
_ref
2
[
_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
;
_ref
1
=
card
.
card_type
;
category_count
[((
function
()
{
var
_
k
,
_len2
,
_ref2
,
_results
;
_ref
2
=
card
.
card_type
;
_results
=
[];
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
category
=
_ref
1
[
_j
];
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
category
=
_ref
2
[
_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
;
_ref
1
=
this
.
main
;
var
_
k
,
_len2
,
_ref2
,
_results
;
_ref
2
=
this
.
main
;
_results
=
[];
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
card_usage
=
_ref
1
[
_j
];
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
card_usage
=
_ref
2
[
_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
;
_ref
1
=
this
.
extra
;
var
_
k
,
_len2
,
_ref2
,
_results
;
_ref
2
=
this
.
extra
;
_results
=
[];
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
card_usage
=
_ref
1
[
_j
];
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
card_usage
=
_ref
2
[
_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
;
_ref
1
=
this
.
side
;
var
_
k
,
_len2
,
_ref2
,
_results
;
_ref
2
=
this
.
side
;
_results
=
[];
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
card_usage
=
_ref
1
[
_j
];
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
card_usage
=
_ref
2
[
_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
;
_ref
1
=
$
(
'
.card_usage
'
);
for
(
_
j
=
0
,
_len1
=
_ref1
.
length
;
_j
<
_len1
;
_j
++
)
{
el
=
_ref
1
[
_j
];
_ref
2
=
$
(
'
.card_usage
'
);
for
(
_
k
=
0
,
_len2
=
_ref2
.
length
;
_k
<
_len2
;
_k
++
)
{
el
=
_ref
2
[
_k
];
card_id
=
$
(
el
).
tmplItem
().
data
.
card_id
;
side
=
$
(
el
).
parent
().
hasClass
(
'
side
'
);
if
(
last_item
)
{
...
...
@@ -446,27 +527,27 @@
}
};
Deck
.
prototype
.
location
=
function
()
{
Deck
sController
.
prototype
.
location
=
function
()
{
return
"
/decks/new?name=
"
+
this
.
deck_name
+
"
&cards=
"
+
(
this
.
encode
());
};
Deck
.
prototype
.
location_ydk
=
function
()
{
Deck
sController
.
prototype
.
location_ydk
=
function
()
{
return
"
/decks/new.ydk?name=
"
+
this
.
deck_name
+
"
&cards=
"
+
(
this
.
encode
());
};
Deck
.
prototype
.
url
=
function
()
{
Deck
sController
.
prototype
.
url
=
function
()
{
return
"
http://my-card.in
"
+
this
.
location
();
};
Deck
.
prototype
.
url_ydk
=
function
()
{
Deck
sController
.
prototype
.
url_ydk
=
function
()
{
return
"
http://my-card.in
"
+
this
.
location_ydk
();
};
Deck
.
prototype
.
set_history
=
function
()
{
Deck
sController
.
prototype
.
set_history
=
function
()
{
return
history
.
pushState
(
CardUsage
.
toJSON
(),
this
.
deck_name
,
this
.
location
());
};
Deck
.
prototype
.
tab_control
=
function
()
{
Deck
sController
.
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
;
Deck
sController
.
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
)
{
Deck
sController
.
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
();
...
...
decks/new/index.html
View file @
4b0eb0c4
...
...
@@ -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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment