]> git.mxchange.org Git - friendica-addons.git/blob - dav/common/wdcal/js/main.js
Merge remote branch 'friendica/master'
[friendica-addons.git] / dav / common / wdcal / js / main.js
1 $(function () {
2         "use strict";
3
4         $.fn.animexxCalendar = function (option) {
5                 //(wdcal_view, std_theme, data_feed_url, readonly, height_diff) {
6
7                 var url_cal_add = "?";
8                 $(this).find(".calselect input[type=checkbox]").each(function() {
9                         if ($(this).prop("checked")) url_cal_add += "cal[]=" + $(this).val() + "&";
10                 });
11
12                 var def = {
13                         calendars:[],
14                         calendars_show:[],
15                         view:"week",
16                         theme:0,
17                         onWeekOrMonthToDay:wtd,
18                         onBeforeRequestData:cal_beforerequest,
19                         onAfterRequestData:cal_afterrequest,
20                         onRequestDataError:cal_onerror,
21                         autoload:true,
22                         data_feed_url:"",
23                         url:option.data_feed_url + url_cal_add + "method=list",
24                         quickAddUrl:option.data_feed_url + url_cal_add + "method=add",
25                         quickUpdateUrl:option.data_feed_url + url_cal_add + "method=update",
26                         quickDeleteUrl:option.data_feed_url + url_cal_add + "method=remove"
27                 };
28
29                 option = $.extend(def, option);
30
31                 var $animexxcal = $(this),
32                         $gridcontainer = $animexxcal.find(".gridcontainer"),
33                         $dv = $animexxcal.find(".calhead"),
34                         $caltoolbar = $animexxcal.find(".ctoolbar"),
35                         $txtdatetimeshow = $animexxcal.find(".txtdatetimeshow"),
36                         $loadingpanel = $animexxcal.find(".loadingpanel"),
37                         $loaderrpanel = $animexxcal.find(".loaderror");
38
39                 var _MH = document.documentElement.clientHeight;
40                 var dvH = $dv.height() + 2;
41
42                 option.height = _MH - dvH - option.height_diff;
43                 if (option.height < 300) option.height = 300;
44                 option.eventItems = [];
45
46                 $animexxcal.find(".hdtxtshow").datepicker({
47                         changeMonth: true,
48                         changeYear: true,
49                         onSelect: function(dateText, inst) {
50                                 var r = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);
51                                 var p = $gridcontainer.gotoDate(r).BcalGetOp();
52                                 if (p && p.datestrshow) {
53                                         $animexxcal.find(".txtdatetimeshow").text(p.datestrshow);
54                                 }
55                         }
56                 });
57                 $animexxcal.find(".txtdatetimeshow").css("cursor", "pointer").bind("click", function() {
58                         $animexxcal.find(".hdtxtshow").datepicker("show");
59                 });
60
61                 var p = $gridcontainer.bcalendar(option).BcalGetOp();
62                 if (p && p.datestrshow) {
63                         $txtdatetimeshow.text(p.datestrshow);
64                 }
65
66                 $caltoolbar.noSelect();
67
68                 function cal_beforerequest(type) {
69                         var t = "Lade Daten...";
70                         switch (type) {
71                                 case 1:
72                                         t = "Lade Daten...";
73                                         break;
74                                 case 2:
75                                 case 3:
76                                 case 4:
77                                         t = "Wird bearbeitete ...";
78                                         break;
79                         }
80                         $loaderrpanel.hide();
81                         $loadingpanel.html(t).show();
82                 }
83
84                 function cal_afterrequest(type) {
85                         var p = $gridcontainer.BcalGetOp();
86                         if (p && p.datestrshow) {
87                                 $txtdatetimeshow.text(p.datestrshow);
88                         }
89
90                         switch (type) {
91                                 case 1:
92                                         $loadingpanel.hide();
93                                         break;
94                                 case 2:
95                                 case 3:
96                                 case 4:
97                                         $loadingpanel.html("Erfolg!");
98                                         $gridcontainer.reload();
99                                         window.setTimeout(function () {
100                                                 $loadingpanel.hide();
101                                         }, 2000);
102                                         break;
103                         }
104
105                 }
106
107                 function cal_onerror(type, data) {
108                         $loaderrpanel.show();
109                 }
110
111                 function wtd(p) {
112                         if (p && p.datestrshow) {
113                                 $txtdatetimeshow.text(p.datestrshow);
114                         }
115                         $caltoolbar.find("div.fcurrent").removeClass("fcurrent");
116                         $animexxcal.find(".showdaybtn").addClass("fcurrent");
117                 }
118
119                 //to show day view
120                 $animexxcal.find(".showdaybtn").on("click", function (e) {
121                         //document.location.href="#day";
122                         $caltoolbar.find("div.fcurrent").removeClass("fcurrent");
123                         $(this).addClass("fcurrent");
124                         var p = $gridcontainer.switchView("day").BcalGetOp();
125                         if (p && p.datestrshow) {
126                                 $txtdatetimeshow.text(p.datestrshow);
127                         }
128                         e.preventDefault();
129                 });
130                 //to show week view
131                 $animexxcal.find(".showweekbtn").on("click", function (e) {
132                         //document.location.href="#week";
133                         $caltoolbar.find("div.fcurrent").removeClass("fcurrent");
134                         $(this).addClass("fcurrent");
135                         var p = $gridcontainer.switchView("week").BcalGetOp();
136                         if (p && p.datestrshow) {
137                                 $txtdatetimeshow.text(p.datestrshow);
138                         }
139                         e.preventDefault();
140                 });
141                 //to show month view
142                 $animexxcal.find(".showmonthbtn").on("click", function (e) {
143                         //document.location.href="#month";
144                         $caltoolbar.find("div.fcurrent").removeClass("fcurrent");
145                         $(this).addClass("fcurrent");
146                         var p = $gridcontainer.switchView("month").BcalGetOp();
147                         if (p && p.datestrshow) {
148                                 $txtdatetimeshow.text(p.datestrshow);
149                         }
150                         e.preventDefault();
151                 });
152
153                 $animexxcal.find(".showreflashbtn").on("click", function (e) {
154                         $gridcontainer.reload();
155                         e.preventDefault();
156                 });
157
158                 //go to today
159                 $animexxcal.find(".showtodaybtn").on("click", function (e) {
160                         var p = $gridcontainer.gotoDate().BcalGetOp();
161                         if (p && p.datestrshow) {
162                                 $txtdatetimeshow.text(p.datestrshow);
163                         }
164                         e.preventDefault();
165
166                 });
167                 //previous date range
168                 $animexxcal.find(".sfprevbtn").on("click", function (e) {
169                         var p = $gridcontainer.previousRange().BcalGetOp();
170                         if (p && p.datestrshow) {
171                                 $txtdatetimeshow.text(p.datestrshow);
172                         }
173                         e.preventDefault();
174                 });
175                 //next date range
176                 $animexxcal.find(".sfnextbtn").on("click", function (e) {
177                         var p = $gridcontainer.nextRange().BcalGetOp();
178                         if (p && p.datestrshow) {
179                                 $txtdatetimeshow.text(p.datestrshow);
180                         }
181                         e.preventDefault();
182                 });
183
184                 $animexxcal.find(".calselect input[type=checkbox]").on("click change", function() {
185                         var url_cal_add = option.data_feed_url + "?";
186                         $animexxcal.find(".calselect input[type=checkbox]").each(function() {
187                                 if ($(this).prop("checked")) url_cal_add += "cal[]=" + $(this).val() + "&";
188                         });
189 /*
190  url:option.data_feed_url + url_cal_add + "method=list",
191  quickAddUrl:option.data_feed_url + url_cal_add + "method=add",
192  quickUpdateUrl:option.data_feed_url + url_cal_add + "method=update",
193  quickDeleteUrl:option.data_feed_url + url_cal_add + "method=remove"
194
195  */
196                         var url = url_cal_add + "method=list";
197                         var p = $gridcontainer.BcalGetOp();
198                         if (p.url != url) {
199                                 $gridcontainer.BcalSetOp({
200                                         "url": url_cal_add + "method=list",
201                                         "quickAddUrl": url_cal_add + "method=add",
202                                         "quickUpdateUrl": url_cal_add + "method=update",
203                                         "quickDeleteUrl": url_cal_add + "method=remove"
204                                 });
205                                 $gridcontainer.reload();
206                         }
207                 });
208         }
209
210 });