OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / models / panel_picture.js.coffee
1 class Pettanr.PanelPicture extends Peta.Element\r
2   \r
3   @singular: () ->\r
4     'PanelPicture'\r
5   \r
6   @plural: () ->\r
7     'PanelPictures'\r
8   \r
9   defaults: {\r
10     id: null\r
11   } \r
12   \r
13   @pick_item_name: () ->\r
14     'resource_picture'\r
15   \r
16   @traceable_item_names: () ->\r
17     ['ground_picture', 'picture']\r
18   \r
19   pick: (picked_item) ->\r
20     {\r
21       picture_id: picked_item.get('picture_id'),\r
22       width: picked_item.get('width'),\r
23       height: picked_item.get('height')\r
24     }\r
25   \r
26   picture: () ->\r
27     new Pettanr.Cache.Retriever(Pettanr.Picture, @get('picture_id'))\r
28   \r
29   panel: () ->\r
30     new Pettanr.Cache.Retriever(Pettanr.Panel, @get('panel_id'))\r
31   \r
32   @has_picture: () ->\r
33     true\r
34   \r
35   flip: () ->\r
36     v = if @get('height') > 0\r
37       ''\r
38     else\r
39       'v'\r
40     h = if @get('width') > 0\r
41       ''\r
42     else\r
43       'h'\r
44     res = v + h\r
45     res = res # format of /1.png?subdir=v\r
46     # res += '/' unless res.empty? # format of /v/1.png\r
47     res\r
48   \r
49   filename: (picture) ->\r
50     q = if _.isEmpty(@flip())\r
51       ''\r
52     else\r
53       '?subdir=' + @flip()\r
54     picture.filename() + q\r
55   \r
56   r_url: (picture) ->\r
57     '/pictures/' + @filename(picture)\r
58   \r
59   tmb_opt_img_tag: (picture) ->\r
60     new Pettanr.Image.SymbolPicture({\r
61       attr: {\r
62         src: picture.r_url(), \r
63         alt: @escape('caption')\r
64       },\r
65       picture: picture\r
66     })\r
67   \r
68   symbol_option: () ->\r
69     retriever = @picture()\r
70     @listenTo(retriever, 'retrieve', @retrieve_symbol)\r
71     retriever.retrieve()\r
72   \r
73   retrieve_symbol: (item) -> \r
74     @trigger('ready:symbol', item.tmb_opt_img_tag())\r
75   \r
76   element_face: () ->\r
77     new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
78   \r
79   initialize: (attr, options) ->\r
80     super(attr, options)\r
81   \r
82 class Pettanr.PanelPicture.TraceFromPicture\r
83   \r
84   constructor: (options) ->\r
85     _.extend(this, Backbone.Events)\r
86   \r
87   trace: (picture) ->\r
88     @picture(picture)\r
89   \r
90   picture: (picture) ->\r
91     resource_picture_picture_list = picture.has_one('resource_picture_picture')\r
92     resource_picture_picture_list.open(() =>\r
93       resource_picture_picture = resource_picture_picture_list.items()[0]\r
94       retriever = new Pettanr.Cache.Retriever(Pettanr.ResourcePicture, resource_picture_picture.get('resource_picture_id'))\r
95       @listenTo(retriever, 'retrieve', @resource_picture)\r
96       retriever.retrieve()\r
97     )\r
98   \r
99   resource_picture: (resource_picture) ->\r
100     @trigger('trace', resource_picture)\r
101   \r
102 class Pettanr.PanelPicture.TraceFromGroundPicture extends Pettanr.PanelPicture.TraceFromPicture\r
103   \r
104   trace: (ground_picture) ->\r
105     @ground_picture(ground_picture)\r
106   \r
107   ground_picture: (ground_picture) ->\r
108     retriever = new Pettanr.Cache.Retriever(Pettanr.Picture, ground_picture.get('picture_id'))\r
109     @listenTo(retriever, 'retrieve', @picture)\r
110     retriever.retrieve()\r
111   \r
112   picture: (picture) ->\r
113     tracer = new Pettanr.PanelPicture.TraceFromPicture()\r
114     @listenTo(tracer, 'trace', @success)\r
115     tracer.trace(picture)\r
116   \r
117   success: (resource_picture) ->\r
118     @trigger('trace', resource_picture)\r
119   \r