(function ($) { $(function () { /*_____________________________________________*/ var template = $('#bts_feedback_card').html(); for (var i=0;i<1;i++){ var data = {id: i}; var h = Mustache.render(template, data); $("#workspace").after(h); } $('input').click(function(){ var d = $(this).closest('div.rate').attr('data-job-id'); alert('job id =' + d + ' ' + $(this).attr('value')); }); function get_my_jobs(){ $.post(bts().ajax_url, { // POST request _ajax_nonce: bts().nonce, // nonce action: "list_job_by_client", // action start: get_start_date(), finish: get_finish_date(), }, function(response, status, xhr){ if (response.status == "success"){ //pre_process(response); load_client_jobs(response); }else{ display_error(response); } }); } //add extra info to response.jobs function pre_process(response) { var newjobs = []; $.each(response.jobs, function(idx, val){ val.hl_start_date = get_hl_start_date(val.start); val.hl_start = get_hh_mm(val.start); val.hl_finish = get_hh_mm(val.finish); val.checked_1 = get_checked(1, val.rating); val.checked_2 = get_checked(2, val.rating); val.checked_3 = get_checked(3, val.rating); val.checked_4 = get_checked(4, val.rating); val.checked_5 = get_checked(5, val.rating); if (val.rating >=1 && val.rating<=5){ val.rated= 'rated'; } val.start_day = get_weekday_name(val.start); val.finish_day = get_weekday_name(val.finish); newjobs.push(val); }); response.jobs = newjobs; } function get_hl_start_date(start) { var s = new Date(start); dd = s.getDate(); if (dd< 10) dd = "0" + dd; m = s.getMonth() + 1; return dd +"/" + m; } function get_hh_mm(date){ var s = new Date(date); var hh = s.getHours(); var mm = s.getMinutes(); if (hh<10) hh = "0" + hh; if (mm<10) mm = "0" + mm; return hh +":"+ mm ; } function get_checked(idx, rating) { if ( idx == rating) return "checked"; else return ""; } function load_client_jobs(response) { set_user_name_at_summary(response.client_name); var template = $('#bts_feedback_card').html(); var html = Mustache.render(template, response); $("#workspace").after(html); } function set_user_name_at_summary(name){ var title = ''; if ( typeof name != 'undefined' && name != "") title = name + "'s Schedule"; else title = "Service Schedule"; $('.bts_client_name span').html(title); } function display_error() { err_message_box("Network Error", "Your Jobs for this week cannot be loaded, please try again later. For urgent job arrangement please contact Helen directly."); } function get_weekday_name(dateString) { var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat']; var d = new Date(dateString); var dayName = days[d.getDay()]; return dayName; } function format_date(date){ var dd = date.getDate(); var mm = date.getMonth() + 1; //January is 0! var hh = date.getHours(); var ii = date.getMinutes(); var ss = date.getSeconds(); var yyyy = date.getFullYear(); if (dd < 10) { dd = '0' + dd; } if (mm < 10) { mm = '0' + mm; } if (hh< 10){ hh = '0' + hh; } if (ii < 10){ ii = '0' + ii; } if (ss <10 ){ ss = '0' + ss; } return yyyy + '-' + mm + '-' +dd + " " +hh +":" + ii + ":" + ss; } function format_date_only(date){ var dd = date.getDate(); var mm = date.getMonth() + 1; //January is 0! var yyyy = date.getFullYear(); if (dd < 10) { dd = '0' + dd; } if (mm < 10) { mm = '0' + mm; } return yyyy + '-' + mm + '-' +dd; } function get_this_week_start(){ var curr = new Date; // get current date var first = curr.getDate() - curr.getDay() + 1; //+1 we want Mon as first var last = first + 6; // last day is the first day + 6 // First day is the day of the month - the day of the week if(curr.getDay()==0)//sunday { last = curr.getDate(); first = last - 6; } var firstday = new Date(curr.setDate(first)); //Mon firstday.setHours(0,0,0); return format_date(firstday); } function get_this_week_end(){ var curr = new Date; // get current date // First day is the day of the month - the day of the week var first = curr.getDate() - curr.getDay() + 1; //+1 we want Mon as first var last = first + 6; // last day is the first day + 6 var lastday = new Date(curr.setDate(last)); //Sat lastday.setHours(23,59,59); return format_date(lastday); } function get_start_date() { var b=feedback_card; if (b.bts_job_start != '') return b.bts_job_start + " 00:00:00"; else return get_this_week_start(); } function get_finish_date() { var b=feedback_card; if (b.bts_job_finish != '') return b.bts_job_finish +" 23:59:59"; else return get_this_week_end(); } function info_message_box(title, message) { message_box('.job_ok_box', title, message); } function err_message_box(title, message) { message_box('.job_error_box', title, message); } function message_box(selector, title,message) { set_modal_title(selector, title); set_modal_message(selector, message); $(selector + '_trigger').trigger('click'); } function set_modal_title(selector, title) { var el = selector + ' .ult_modal-title '; $(el).html(title); } function set_modal_message(selector, msg) { var el = selector + ' .ult_modal-body '; $(el).html(msg); } function do_update_ack(id, rating) { $.post(bts().ajax_url, { // POST request _ajax_nonce: bts().nonce, // nonce action: "client_ack_job", // action job_id: id, rating: rating, }, function(response, status, xhr){ if (response.status == "success"){ display_job_ack(id, response.rating); }else{ console.warn("%o", response); clear_job_ack(id); } }); } function clear_job_ack(id) { display_job_ack(id, 0); //clear it } function display_job_ack(id, rating) { for (var i=1; i<=5; i++){ var selector = 'star' + i + '_' + id; $(selector).prop('checked',(rating == i)); } if (rating >=1 && rating <=5){ $('#container_' + id).addClass('rated'); }else{ $('#container_' + id).removeClass('rated'); } } $(document).on('click', '.card input[type="radio"]', function(){ var job_id = $(this).closest('div.rate').attr('data-job-id'); var rating = $(this).attr('value'); do_update_ack(job_id, rating); }); get_my_jobs(); /*_____________________________________________*/ }); })(jQuery);