PluginProbe
ShiftController Employee Shift Scheduling / 4.9.95
ShiftController Employee Shift Scheduling v4.9.95
4.9.97 4.9.96 4.9.95 4.9.74 4.9.75 4.9.76 4.9.77 4.9.78 4.9.84 4.9.85 4.9.87 4.9.91 4.9.92 trunk 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.2.4 All 38 releases
shiftcontroller / sh4 / schedule / assets / js / calendar.js

calendar.js in ShiftController Employee Shift Scheduling 4.9.95, at sh4/schedule/assets/js/calendar.js

198 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2 var self = this;
3
4 var $calendar;
5 var $details;
6 var $detailsContent;
7 var $detailsCloser;
8
9 document.addEventListener('DOMContentLoaded', function()
10 {
11 $calendar = jQuery('#sh4-shifts-calendar');
12 $details = jQuery('#sh4-shifts-details');
13 $detailsContent = jQuery('#sh4-shifts-details-content');
14 $detailsCloser = jQuery('#sh4-shifts-details-closer');
15
16 var $toFlash = $calendar.find('.hc-flash');
17 $toFlash.each( function(){
18 var $el = jQuery(this);
19 jQuery('html, body').animate({
20 scrollTop: $el.offset().top - 40,
21 });
22 for( var ii = 1; ii <= 3; ii++ ){
23 $el.fadeOut(200).fadeIn(200);
24 }
25 });
26
27 $calendar.on( 'click', '.sh4-shift-widget a.sh4-widget-loader', function(e)
28 {
29 $this = jQuery(this);
30
31 var $waiter = $this.first();
32 hc2_set_loader( $waiter );
33
34 var href = hc2MakeAjaxHref( $this.attr('href') );
35
36 jQuery.ajax({
37 type: 'GET',
38 url: href,
39 // data: $form.serialize(),
40 success: function(data, textStatus){
41 hc2_unset_loader( $waiter );
42
43 $calendar.hide();
44 $detailsContent.html( data );
45 $detailsContent.trigger('loaded');
46 $details.show();
47
48 jQuery('html, body').animate({
49 scrollTop: $details.offset().top - 40,
50 });
51 }
52 })
53 .fail( function(jqXHR, textStatus, errorThrown){
54 hc2_unset_loader( $waiter );
55 alert( 'Ajax Error' );
56 console.log( 'Ajax Get: ' + href );
57 console.log( 'Ajax Error: ' + errorThrown + "\n" + "status: " + textStatus + "\n" + "response: " + jqXHR.responseText );
58 // location.reload();
59 })
60 ;
61 return false;
62 });
63
64 // links within ajax loaded content
65 $detailsContent.on( 'click', 'a:not(.hcj2-ajax-loader)', function(e)
66 {
67 $this = jQuery(this);
68 var href = $this.attr('href');
69 if( '#' == href ){
70 return false;
71 }
72
73 // kind of trick, if it doesn't contain our 'hca=' part then skip
74 if( ! href.includes('hca=') ){
75 return true;
76 }
77
78 var $waiter = $details;
79 hc2_set_loader( $waiter );
80
81 href = hc2MakeAjaxHref( href );
82
83 jQuery.ajax({
84 type: 'GET',
85 url: href,
86 // data: $form.serialize(),
87 success: function(data, textStatus){
88 hc2_unset_loader( $waiter );
89 $detailsContent.html( data );
90 $detailsContent.trigger('loaded');
91 }
92 })
93 .fail( function(jqXHR, textStatus, errorThrown){
94 hc2_unset_loader( $waiter );
95 alert( 'Ajax Error' );
96 console.log( 'Ajax Error: ' + errorThrown + "\n" + "status: " + textStatus + "\n" + "response: " + jqXHR.responseText );
97 // location.reload();
98 })
99 ;
100 return false;
101 });
102
103 // post forms
104 $detailsContent.on( 'click', 'input[type=submit],button[type=submit]', function(e)
105 {
106 var $btn = jQuery(this);
107 var formAction = $btn.attr('formaction');
108
109 if( (typeof formAction === "undefined") || (formAction === '') ){
110 // do nothing
111 }
112 else {
113 // e.preventDefault();
114 var $form = $btn.closest('form');
115 $form.attr('action', formAction);
116 }
117 });
118
119 $detailsContent.on( 'submit', 'form', function(e)
120 {
121 /* stop form from submitting normally */
122 e.preventDefault();
123
124 var $thisForm = jQuery(this);
125
126 var $waiter = $details;
127 hc2_set_loader( $waiter );
128 var href = $thisForm.attr('action');
129 // var formData = $thisForm.serialize();
130 var formData = new FormData( $thisForm[0] );
131
132 jQuery.ajax({
133 type: 'POST',
134 url: href,
135 data: formData,
136 processData: false,
137 contentType: false,
138 success: function(data, textStatus){
139 var calendarHref = $calendar.data('src');
140 calendarHref = hc2MakeAjaxHref( calendarHref );
141
142 if( calendarHref ){
143 jQuery.ajax({
144 type: 'GET',
145 url: calendarHref,
146 // data: $form.serialize(),
147 success: function(data, textStatus){
148 hc2_unset_loader( $waiter );
149 $calendar.html( data );
150 $calendar.trigger('loaded');
151 $details.hide();
152 $calendar.show();
153 }
154 })
155 .fail( function(jqXHR, textStatus, errorThrown){
156 hc2_unset_loader( $waiter );
157 alert( 'Ajax Error' );
158 console.log( 'Ajax Error: ' + errorThrown + "\n" + "status: " + textStatus + "\n" + "response: " + jqXHR.responseText );
159 // location.reload();
160 })
161 ;
162 }
163 else {
164 hc2_unset_loader( $waiter );
165 location.reload();
166 }
167 }
168 })
169 .fail( function(jqXHR, textStatus, errorThrown){
170 hc2_unset_loader( $waiter );
171 alert( 'Ajax Error' );
172 console.log( 'Ajax Error: ' + errorThrown + "\n" + "post to: " + href + "\n" + "status: " + textStatus + "\n" + "response: " + jqXHR.responseText );
173 // location.reload();
174 })
175 ;
176 return false;
177 });
178
179 $detailsContent.on('loaded', function(e)
180 {
181 var $timeRangeInputs = jQuery(this).find( '.hcj-timerange-input' );
182 $timeRangeInputs.each( function(index){
183 var thisInput = new hcapp.html.timeRangeInput( jQuery(this) );
184 thisInput.init();
185 thisInput.render();
186 });
187 });
188
189 $detailsCloser.on('click', function(e)
190 {
191 $details.hide();
192 $calendar.show();
193 return false;
194 });
195 });
196
197 }());
198