OSDN Git Service

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