cone.calendar 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. cone/calendar/__init__.py +20 -0
  2. cone/calendar/browser/__init__.py +88 -0
  3. cone/calendar/browser/calendar.pt +16 -0
  4. cone/calendar/browser/calendar.py +370 -0
  5. cone/calendar/browser/static/calendar/cone.calendar.css +23 -0
  6. cone/calendar/browser/static/calendar/cone.calendar.js +241 -0
  7. cone/calendar/browser/static/calendar/cone.calendar.min.js +1 -0
  8. cone/calendar/browser/static/fullcalendar/fullcalendar.css +1404 -0
  9. cone/calendar/browser/static/fullcalendar/fullcalendar.js +14206 -0
  10. cone/calendar/browser/static/fullcalendar/fullcalendar.min.css +5 -0
  11. cone/calendar/browser/static/fullcalendar/fullcalendar.min.js +10 -0
  12. cone/calendar/browser/static/fullcalendar/fullcalendar.print.css +208 -0
  13. cone/calendar/browser/static/fullcalendar/fullcalendar.print.min.css +5 -0
  14. cone/calendar/browser/static/fullcalendar/gcal.js +180 -0
  15. cone/calendar/browser/static/fullcalendar/gcal.min.js +6 -0
  16. cone/calendar/browser/static/fullcalendar/locale/af.js +1 -0
  17. cone/calendar/browser/static/fullcalendar/locale/ar-dz.js +1 -0
  18. cone/calendar/browser/static/fullcalendar/locale/ar-ly.js +1 -0
  19. cone/calendar/browser/static/fullcalendar/locale/ar-ma.js +1 -0
  20. cone/calendar/browser/static/fullcalendar/locale/ar-sa.js +1 -0
  21. cone/calendar/browser/static/fullcalendar/locale/ar-tn.js +1 -0
  22. cone/calendar/browser/static/fullcalendar/locale/ar.js +1 -0
  23. cone/calendar/browser/static/fullcalendar/locale/bg.js +1 -0
  24. cone/calendar/browser/static/fullcalendar/locale/ca.js +1 -0
  25. cone/calendar/browser/static/fullcalendar/locale/cs.js +1 -0
  26. cone/calendar/browser/static/fullcalendar/locale/da.js +1 -0
  27. cone/calendar/browser/static/fullcalendar/locale/de-at.js +1 -0
  28. cone/calendar/browser/static/fullcalendar/locale/de.js +1 -0
  29. cone/calendar/browser/static/fullcalendar/locale/el.js +1 -0
  30. cone/calendar/browser/static/fullcalendar/locale/en-au.js +1 -0
  31. cone/calendar/browser/static/fullcalendar/locale/en-ca.js +1 -0
  32. cone/calendar/browser/static/fullcalendar/locale/en-gb.js +1 -0
  33. cone/calendar/browser/static/fullcalendar/locale/en-ie.js +1 -0
  34. cone/calendar/browser/static/fullcalendar/locale/en-nz.js +1 -0
  35. cone/calendar/browser/static/fullcalendar/locale/es-do.js +1 -0
  36. cone/calendar/browser/static/fullcalendar/locale/es.js +1 -0
  37. cone/calendar/browser/static/fullcalendar/locale/eu.js +1 -0
  38. cone/calendar/browser/static/fullcalendar/locale/fa.js +1 -0
  39. cone/calendar/browser/static/fullcalendar/locale/fi.js +1 -0
  40. cone/calendar/browser/static/fullcalendar/locale/fr-ca.js +1 -0
  41. cone/calendar/browser/static/fullcalendar/locale/fr-ch.js +1 -0
  42. cone/calendar/browser/static/fullcalendar/locale/fr.js +1 -0
  43. cone/calendar/browser/static/fullcalendar/locale/gl.js +1 -0
  44. cone/calendar/browser/static/fullcalendar/locale/he.js +1 -0
  45. cone/calendar/browser/static/fullcalendar/locale/hi.js +1 -0
  46. cone/calendar/browser/static/fullcalendar/locale/hr.js +1 -0
  47. cone/calendar/browser/static/fullcalendar/locale/hu.js +1 -0
  48. cone/calendar/browser/static/fullcalendar/locale/id.js +1 -0
  49. cone/calendar/browser/static/fullcalendar/locale/is.js +1 -0
  50. cone/calendar/browser/static/fullcalendar/locale/it.js +1 -0
  51. cone/calendar/browser/static/fullcalendar/locale/ja.js +1 -0
  52. cone/calendar/browser/static/fullcalendar/locale/kk.js +1 -0
  53. cone/calendar/browser/static/fullcalendar/locale/ko.js +1 -0
  54. cone/calendar/browser/static/fullcalendar/locale/lb.js +1 -0
  55. cone/calendar/browser/static/fullcalendar/locale/lt.js +1 -0
  56. cone/calendar/browser/static/fullcalendar/locale/lv.js +1 -0
  57. cone/calendar/browser/static/fullcalendar/locale/mk.js +1 -0
  58. cone/calendar/browser/static/fullcalendar/locale/ms-my.js +1 -0
  59. cone/calendar/browser/static/fullcalendar/locale/ms.js +1 -0
  60. cone/calendar/browser/static/fullcalendar/locale/nb.js +1 -0
  61. cone/calendar/browser/static/fullcalendar/locale/nl-be.js +1 -0
  62. cone/calendar/browser/static/fullcalendar/locale/nl.js +1 -0
  63. cone/calendar/browser/static/fullcalendar/locale/nn.js +1 -0
  64. cone/calendar/browser/static/fullcalendar/locale/pl.js +1 -0
  65. cone/calendar/browser/static/fullcalendar/locale/pt-br.js +1 -0
  66. cone/calendar/browser/static/fullcalendar/locale/pt.js +1 -0
  67. cone/calendar/browser/static/fullcalendar/locale/ro.js +1 -0
  68. cone/calendar/browser/static/fullcalendar/locale/ru.js +1 -0
  69. cone/calendar/browser/static/fullcalendar/locale/sk.js +1 -0
  70. cone/calendar/browser/static/fullcalendar/locale/sl.js +1 -0
  71. cone/calendar/browser/static/fullcalendar/locale/sr-cyrl.js +1 -0
  72. cone/calendar/browser/static/fullcalendar/locale/sr.js +1 -0
  73. cone/calendar/browser/static/fullcalendar/locale/sv.js +1 -0
  74. cone/calendar/browser/static/fullcalendar/locale/th.js +1 -0
  75. cone/calendar/browser/static/fullcalendar/locale/tr.js +1 -0
  76. cone/calendar/browser/static/fullcalendar/locale/uk.js +1 -0
  77. cone/calendar/browser/static/fullcalendar/locale/vi.js +1 -0
  78. cone/calendar/browser/static/fullcalendar/locale/zh-cn.js +1 -0
  79. cone/calendar/browser/static/fullcalendar/locale/zh-tw.js +1 -0
  80. cone/calendar/browser/static/fullcalendar/locale-all.js +5 -0
  81. cone/calendar/browser/static/moment/locale/af.js +73 -0
  82. cone/calendar/browser/static/moment/locale/ar-dz.js +59 -0
  83. cone/calendar/browser/static/moment/locale/ar-ly.js +126 -0
  84. cone/calendar/browser/static/moment/locale/ar-ma.js +60 -0
  85. cone/calendar/browser/static/moment/locale/ar-sa.js +105 -0
  86. cone/calendar/browser/static/moment/locale/ar-tn.js +59 -0
  87. cone/calendar/browser/static/moment/locale/ar.js +142 -0
  88. cone/calendar/browser/static/moment/locale/az.js +105 -0
  89. cone/calendar/browser/static/moment/locale/be.js +134 -0
  90. cone/calendar/browser/static/moment/locale/bg.js +90 -0
  91. cone/calendar/browser/static/moment/locale/bn.js +119 -0
  92. cone/calendar/browser/static/moment/locale/bo.js +119 -0
  93. cone/calendar/browser/static/moment/locale/br.js +108 -0
  94. cone/calendar/browser/static/moment/locale/bs.js +143 -0
  95. cone/calendar/browser/static/moment/locale/ca.js +81 -0
  96. cone/calendar/browser/static/moment/locale/cs.js +172 -0
  97. cone/calendar/browser/static/moment/locale/cv.js +63 -0
  98. cone/calendar/browser/static/moment/locale/cy.js +81 -0
  99. cone/calendar/browser/static/moment/locale/da.js +60 -0
  100. cone/calendar/browser/static/moment/locale/de-at.js +79 -0
  101. cone/calendar/browser/static/moment/locale/de.js +78 -0
  102. cone/calendar/browser/static/moment/locale/dv.js +100 -0
  103. cone/calendar/browser/static/moment/locale/el.js +98 -0
  104. cone/calendar/browser/static/moment/locale/en-au.js +67 -0
  105. cone/calendar/browser/static/moment/locale/en-ca.js +63 -0
  106. cone/calendar/browser/static/moment/locale/en-gb.js +67 -0
  107. cone/calendar/browser/static/moment/locale/en-ie.js +67 -0
  108. cone/calendar/browser/static/moment/locale/en-nz.js +67 -0
  109. cone/calendar/browser/static/moment/locale/eo.js +73 -0
  110. cone/calendar/browser/static/moment/locale/es-do.js +80 -0
  111. cone/calendar/browser/static/moment/locale/es.js +81 -0
  112. cone/calendar/browser/static/moment/locale/et.js +80 -0
  113. cone/calendar/browser/static/moment/locale/eu.js +66 -0
  114. cone/calendar/browser/static/moment/locale/fa.js +107 -0
  115. cone/calendar/browser/static/moment/locale/fi.js +107 -0
  116. cone/calendar/browser/static/moment/locale/fo.js +60 -0
  117. cone/calendar/browser/static/moment/locale/fr-ca.js +60 -0
  118. cone/calendar/browser/static/moment/locale/fr-ch.js +64 -0
  119. cone/calendar/browser/static/moment/locale/fr.js +64 -0
  120. cone/calendar/browser/static/moment/locale/fy.js +73 -0
  121. cone/calendar/browser/static/moment/locale/gd.js +76 -0
  122. cone/calendar/browser/static/moment/locale/gl.js +77 -0
  123. cone/calendar/browser/static/moment/locale/he.js +99 -0
  124. cone/calendar/browser/static/moment/locale/hi.js +124 -0
  125. cone/calendar/browser/static/moment/locale/hr.js +145 -0
  126. cone/calendar/browser/static/moment/locale/hu.js +109 -0
  127. cone/calendar/browser/static/moment/locale/hy-am.js +95 -0
  128. cone/calendar/browser/static/moment/locale/id.js +83 -0
  129. cone/calendar/browser/static/moment/locale/is.js +127 -0
  130. cone/calendar/browser/static/moment/locale/it.js +70 -0
  131. cone/calendar/browser/static/moment/locale/ja.js +76 -0
  132. cone/calendar/browser/static/moment/locale/jv.js +83 -0
  133. cone/calendar/browser/static/moment/locale/ka.js +89 -0
  134. cone/calendar/browser/static/moment/locale/kk.js +87 -0
  135. cone/calendar/browser/static/moment/locale/km.js +58 -0
  136. cone/calendar/browser/static/moment/locale/ko.js +65 -0
  137. cone/calendar/browser/static/moment/locale/ky.js +88 -0
  138. cone/calendar/browser/static/moment/locale/lb.js +137 -0
  139. cone/calendar/browser/static/moment/locale/lo.js +70 -0
  140. cone/calendar/browser/static/moment/locale/lt.js +117 -0
  141. cone/calendar/browser/static/moment/locale/lv.js +97 -0
  142. cone/calendar/browser/static/moment/locale/me.js +111 -0
  143. cone/calendar/browser/static/moment/locale/mi.js +64 -0
  144. cone/calendar/browser/static/moment/locale/mk.js +90 -0
  145. cone/calendar/browser/static/moment/locale/ml.js +81 -0
  146. cone/calendar/browser/static/moment/locale/mr.js +159 -0
  147. cone/calendar/browser/static/moment/locale/ms-my.js +83 -0
  148. cone/calendar/browser/static/moment/locale/ms.js +82 -0
  149. cone/calendar/browser/static/moment/locale/my.js +96 -0
  150. cone/calendar/browser/static/moment/locale/nb.js +63 -0
  151. cone/calendar/browser/static/moment/locale/ne.js +123 -0
  152. cone/calendar/browser/static/moment/locale/nl-be.js +86 -0
  153. cone/calendar/browser/static/moment/locale/nl.js +86 -0
  154. cone/calendar/browser/static/moment/locale/nn.js +60 -0
  155. cone/calendar/browser/static/moment/locale/pa-in.js +124 -0
  156. cone/calendar/browser/static/moment/locale/pl.js +105 -0
  157. cone/calendar/browser/static/moment/locale/pt-br.js +61 -0
  158. cone/calendar/browser/static/moment/locale/pt.js +65 -0
  159. cone/calendar/browser/static/moment/locale/ro.js +75 -0
  160. cone/calendar/browser/static/moment/locale/ru.js +183 -0
  161. cone/calendar/browser/static/moment/locale/se.js +61 -0
  162. cone/calendar/browser/static/moment/locale/si.js +71 -0
  163. cone/calendar/browser/static/moment/locale/sk.js +150 -0
  164. cone/calendar/browser/static/moment/locale/sl.js +162 -0
  165. cone/calendar/browser/static/moment/locale/sq.js +70 -0
  166. cone/calendar/browser/static/moment/locale/sr-cyrl.js +110 -0
  167. cone/calendar/browser/static/moment/locale/sr.js +110 -0
  168. cone/calendar/browser/static/moment/locale/ss.js +89 -0
  169. cone/calendar/browser/static/moment/locale/sv.js +69 -0
  170. cone/calendar/browser/static/moment/locale/sw.js +59 -0
  171. cone/calendar/browser/static/moment/locale/ta.js +130 -0
  172. cone/calendar/browser/static/moment/locale/te.js +89 -0
  173. cone/calendar/browser/static/moment/locale/tet.js +68 -0
  174. cone/calendar/browser/static/moment/locale/th.js +67 -0
  175. cone/calendar/browser/static/moment/locale/tl-ph.js +62 -0
  176. cone/calendar/browser/static/moment/locale/tlh.js +120 -0
  177. cone/calendar/browser/static/moment/locale/tr.js +90 -0
  178. cone/calendar/browser/static/moment/locale/tzl.js +91 -0
  179. cone/calendar/browser/static/moment/locale/tzm-latn.js +58 -0
  180. cone/calendar/browser/static/moment/locale/tzm.js +58 -0
  181. cone/calendar/browser/static/moment/locale/uk.js +146 -0
  182. cone/calendar/browser/static/moment/locale/uz.js +58 -0
  183. cone/calendar/browser/static/moment/locale/vi.js +79 -0
  184. cone/calendar/browser/static/moment/locale/x-pseudo.js +68 -0
  185. cone/calendar/browser/static/moment/locale/yo.js +60 -0
  186. cone/calendar/browser/static/moment/locale/zh-cn.js +127 -0
  187. cone/calendar/browser/static/moment/locale/zh-hk.js +105 -0
  188. cone/calendar/browser/static/moment/locale/zh-tw.js +104 -0
  189. cone/calendar/browser/static/moment/locales.js +8624 -0
  190. cone/calendar/browser/static/moment/locales.min.js +663 -0
  191. cone/calendar/browser/static/moment/moment-with-locales.js +12910 -0
  192. cone/calendar/browser/static/moment/moment-with-locales.min.js +1216 -0
  193. cone/calendar/browser/static/moment/moment.min.js +551 -0
  194. cone/calendar/interfaces.py +14 -0
  195. cone/calendar/locale/cone.calendar.pot +0 -0
  196. cone/calendar/locale/de/LC_MESSAGES/cone.calendar.po +0 -0
  197. cone/calendar/locale/en/LC_MESSAGES/cone.calendar.po +0 -0
  198. cone/calendar/tests/test_calendar.py +340 -0
  199. cone_calendar-1.1.0.dist-info/METADATA +252 -0
  200. cone_calendar-1.1.0.dist-info/RECORD +202 -0
  201. cone_calendar-1.1.0.dist-info/WHEEL +4 -0
  202. cone_calendar-1.1.0.dist-info/licenses/LICENSE.rst +27 -0
@@ -0,0 +1,241 @@
1
+ var cone_calendar = (function (exports, $) {
2
+ 'use strict';
3
+
4
+ class EventSource {
5
+ constructor(calendar, opts) {
6
+ this._calendar = calendar;
7
+ this._events_view = opts.events;
8
+ delete opts.events;
9
+ Object.assign(this, opts);
10
+ this.events = this.events.bind(this);
11
+ }
12
+ events(start, end, timezone, callback) {
13
+ let calendar = this._calendar,
14
+ url = calendar.target + '/' + this._events_view;
15
+ let params = {
16
+ start: start.unix(),
17
+ end: end.unix()
18
+ };
19
+ calendar.json_request(url, params, callback, null);
20
+ }
21
+ }
22
+ class Calendar {
23
+ static initialize(context) {
24
+ let elem = $('#calendar', context);
25
+ if (!elem.length) {
26
+ return;
27
+ }
28
+ new Calendar(elem);
29
+ }
30
+ constructor(elem) {
31
+ this.elem = elem;
32
+ this.target = elem.data('calendar_target');
33
+ this.actions = elem.data('calendar_actions');
34
+ let sources = elem.data('calendar_sources'),
35
+ event_sources = [];
36
+ for (let i in sources) {
37
+ event_sources.push(new EventSource(this, sources[i]));
38
+ }
39
+ let options = elem.data('calendar_options');
40
+ $.extend(options, {
41
+ eventSources: event_sources,
42
+ eventClick: this.event_clicked.bind(this),
43
+ dayClick: this.day_clicked.bind(this),
44
+ eventDrop: this.event_drop.bind(this),
45
+ eventResize: this.event_resize.bind(this)
46
+ });
47
+ elem.bind('reload', function() {
48
+ elem.fullCalendar('refetchEvents');
49
+ });
50
+ elem.fullCalendar(options);
51
+ }
52
+ json_request(url, params, callback, errback) {
53
+ bdajax.request({
54
+ url: url,
55
+ type: 'json',
56
+ params: params,
57
+ success: function(data) {
58
+ if (data.error) {
59
+ errback && errback();
60
+ bdajax.error(data.message);
61
+ } else {
62
+ callback(data.data);
63
+ }
64
+ },
65
+ error: function() {
66
+ errback && errback();
67
+ bdajax.error('Failed to request JSON data');
68
+ }
69
+ });
70
+ }
71
+ create_context_menu(actions, x, y) {
72
+ let body = $('body', document);
73
+ let wrapper = $('<div />')
74
+ .attr('class', 'calendar-contextmenu-wrapper')
75
+ .css('height', body.height() + 'px');
76
+ body.append(wrapper);
77
+ wrapper.on('click contextmenu', function(e) {
78
+ e.preventDefault();
79
+ wrapper.remove();
80
+ });
81
+ let menu = $('<ul />')
82
+ .attr('class', 'calendar-contextmenu dropdown-menu')
83
+ .css('left', x + 'px')
84
+ .css('top', y + 'px')
85
+ .css('display', 'block');
86
+ wrapper.append(menu);
87
+ for (let i in actions) {
88
+ this.add_menu_item(wrapper, menu, actions[i]);
89
+ }
90
+ }
91
+ add_menu_item(wrapper, menu, action) {
92
+ let menu_item = $('<li><span />' + action.title + '</li>');
93
+ if (action.icon) {
94
+ $('span', menu_item).attr('class', action.icon);
95
+ }
96
+ menu.append(menu_item);
97
+ menu_item.on('click', function(e) {
98
+ e.stopPropagation();
99
+ wrapper.remove();
100
+ this.handle_action(action);
101
+ }.bind(this));
102
+ }
103
+ prepare_target(target, params) {
104
+ if (!target.url) {
105
+ target = bdajax.parsetarget(target);
106
+ }
107
+ $.extend(target.params, params);
108
+ return target;
109
+ }
110
+ handle_action(action) {
111
+ if (!action.target) {
112
+ return;
113
+ }
114
+ if (action.confirm) {
115
+ bdajax.dialog({
116
+ message: action.confirm
117
+ }, function(options) {
118
+ this.perform_action(action);
119
+ }.bind(this));
120
+ } else {
121
+ this.perform_action(action);
122
+ }
123
+ }
124
+ perform_action(action) {
125
+ let target = action.target;
126
+ if (action.action) {
127
+ bdajax.action({
128
+ name: action.action.name,
129
+ selector: action.action.selector,
130
+ mode: action.action.mode,
131
+ url: target.url,
132
+ params: target.params
133
+ });
134
+ }
135
+ if (action.event) {
136
+ let event = action.event;
137
+ bdajax.trigger(
138
+ event.name,
139
+ event.selector,
140
+ target
141
+ );
142
+ }
143
+ if (action.overlay) {
144
+ let overlay = action.overlay;
145
+ bdajax.overlay({
146
+ action: overlay.action,
147
+ target: target,
148
+ selector: overlay.selector,
149
+ content_selector: overlay.content_selector,
150
+ css: overlay.css
151
+ });
152
+ }
153
+ }
154
+ handle_actions(actions, target, params, x, y) {
155
+ if (!actions || !actions.length) {
156
+ return;
157
+ }
158
+ actions = JSON.parse(JSON.stringify(actions));
159
+ for (let i in actions) {
160
+ let action = actions[i];
161
+ action.target = this.prepare_target(
162
+ action.target || target,
163
+ params
164
+ );
165
+ }
166
+ if (actions.length == 1) {
167
+ let action = actions[0];
168
+ this.handle_action(action);
169
+ return;
170
+ }
171
+ this.create_context_menu(actions, x, y);
172
+ }
173
+ event_clicked(cal_evt, js_evt, view) {
174
+ let params = {
175
+ view: view.name
176
+ };
177
+ this.handle_actions(
178
+ cal_evt.actions,
179
+ cal_evt.target,
180
+ params,
181
+ js_evt.pageX,
182
+ js_evt.pageY
183
+ );
184
+ }
185
+ day_clicked(date, js_evt, view) {
186
+ let params = {
187
+ date: date.unix(),
188
+ all_day: !date.hasTime(),
189
+ view: view.name
190
+ };
191
+ this.handle_actions(
192
+ this.actions,
193
+ this.target,
194
+ params,
195
+ js_evt.pageX,
196
+ js_evt.pageY
197
+ );
198
+ }
199
+ update_event(cal_evt, delta, revert_func, view, callback) {
200
+ let target = this.prepare_target(cal_evt.target, {
201
+ id: cal_evt.id,
202
+ start: cal_evt.start.unix(),
203
+ end: cal_evt.end.unix(),
204
+ delta: delta.asSeconds()
205
+ });
206
+ let url = target.url + '/' + view;
207
+ this.json_request(url, target.params, callback, revert_func);
208
+ }
209
+ event_drop(cal_evt, delta, revert_func) {
210
+ if (!cal_evt.editable && !cal_evt.startEditable) {
211
+ return;
212
+ }
213
+ let view = 'calendar_event_drop';
214
+ let cb = function(data) {
215
+ console.log(data);
216
+ };
217
+ this.update_event(cal_evt, delta, revert_func, view, cb);
218
+ }
219
+ event_resize(cal_evt, delta, revert_func) {
220
+ if (!cal_evt.editable && !cal_evt.durationEditable) {
221
+ return;
222
+ }
223
+ let view = 'calendar_event_resize';
224
+ let cb = function(data) {
225
+ console.log(data);
226
+ };
227
+ this.update_event(cal_evt, delta, revert_func, view, cb);
228
+ }
229
+ }
230
+
231
+ $(function() {
232
+ bdajax.register(Calendar.initialize, true);
233
+ });
234
+
235
+ exports.Calendar = Calendar;
236
+
237
+ Object.defineProperty(exports, '__esModule', { value: true });
238
+
239
+ return exports;
240
+
241
+ })({}, jQuery);
@@ -0,0 +1 @@
1
+ var cone_calendar=function(e,t){"use strict";class a{constructor(e,t){this._calendar=e,this._events_view=t.events,delete t.events,Object.assign(this,t),this.events=this.events.bind(this)}events(e,t,a,n){let i=this._calendar,r=i.target+"/"+this._events_view,s={start:e.unix(),end:t.unix()};i.json_request(r,s,n,null)}}class n{static initialize(e){let a=t("#calendar",e);a.length&&new n(a)}constructor(e){this.elem=e,this.target=e.data("calendar_target"),this.actions=e.data("calendar_actions");let n=e.data("calendar_sources"),i=[];for(let e in n)i.push(new a(this,n[e]));let r=e.data("calendar_options");t.extend(r,{eventSources:i,eventClick:this.event_clicked.bind(this),dayClick:this.day_clicked.bind(this),eventDrop:this.event_drop.bind(this),eventResize:this.event_resize.bind(this)}),e.bind("reload",function(){e.fullCalendar("refetchEvents")}),e.fullCalendar(r)}json_request(e,t,a,n){bdajax.request({url:e,type:"json",params:t,success:function(e){e.error?(n&&n(),bdajax.error(e.message)):a(e.data)},error:function(){n&&n(),bdajax.error("Failed to request JSON data")}})}create_context_menu(e,a,n){let i=t("body",document),r=t("<div />").attr("class","calendar-contextmenu-wrapper").css("height",i.height()+"px");i.append(r),r.on("click contextmenu",function(e){e.preventDefault(),r.remove()});let s=t("<ul />").attr("class","calendar-contextmenu dropdown-menu").css("left",a+"px").css("top",n+"px").css("display","block");r.append(s);for(let t in e)this.add_menu_item(r,s,e[t])}add_menu_item(e,a,n){let i=t("<li><span />"+n.title+"</li>");n.icon&&t("span",i).attr("class",n.icon),a.append(i),i.on("click",function(t){t.stopPropagation(),e.remove(),this.handle_action(n)}.bind(this))}prepare_target(e,a){return e.url||(e=bdajax.parsetarget(e)),t.extend(e.params,a),e}handle_action(e){e.target&&(e.confirm?bdajax.dialog({message:e.confirm},function(t){this.perform_action(e)}.bind(this)):this.perform_action(e))}perform_action(e){let t=e.target;if(e.action&&bdajax.action({name:e.action.name,selector:e.action.selector,mode:e.action.mode,url:t.url,params:t.params}),e.event){let a=e.event;bdajax.trigger(a.name,a.selector,t)}if(e.overlay){let a=e.overlay;bdajax.overlay({action:a.action,target:t,selector:a.selector,content_selector:a.content_selector,css:a.css})}}handle_actions(e,t,a,n,i){if(e&&e.length){e=JSON.parse(JSON.stringify(e));for(let n in e){let i=e[n];i.target=this.prepare_target(i.target||t,a)}if(1==e.length){let t=e[0];return void this.handle_action(t)}this.create_context_menu(e,n,i)}}event_clicked(e,t,a){let n={view:a.name};this.handle_actions(e.actions,e.target,n,t.pageX,t.pageY)}day_clicked(e,t,a){let n={date:e.unix(),all_day:!e.hasTime(),view:a.name};this.handle_actions(this.actions,this.target,n,t.pageX,t.pageY)}update_event(e,t,a,n,i){let r=this.prepare_target(e.target,{id:e.id,start:e.start.unix(),end:e.end.unix(),delta:t.asSeconds()}),s=r.url+"/"+n;this.json_request(s,r.params,i,a)}event_drop(e,t,a){if(!e.editable&&!e.startEditable)return;this.update_event(e,t,a,"calendar_event_drop",function(e){console.log(e)})}event_resize(e,t,a){if(!e.editable&&!e.durationEditable)return;this.update_event(e,t,a,"calendar_event_resize",function(e){console.log(e)})}}return t(function(){bdajax.register(n.initialize,!0)}),e.Calendar=n,Object.defineProperty(e,"__esModule",{value:!0}),e}({},jQuery);