(function ($) {
$(function () {
// http://davidwalsh.name/javascript-debounce-function
function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
if (!immediate)
func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow)
func.apply(context, args);
};
};
/*____________________________________________________________________________________*/
class People{
constructor(selector, data){
this.selector = selector;
this.data = data;
this.template = '#people_template';
// this.sample_people = {
// login: '01515b52-6936-46b2-a000-9ad4cd7a5b50',
// firstname: "first",
// lastname: "last",
// phone: '041122221',
// email: 'abc@gmail.com',
// pay: 0,
// hour: 12,
// OT: 3,
// petrol: 50,
// rating: 1,
// };
this.load_data(this.data);
}
load_data(data){
var template = $(this.template).html();
var html = Mustache.render(template, data);
$(this.selector).html(html);
//save it
$(this.selector).data(data);
//draw rating star
this.set_ratings(this.data.rating);
this.set_unconfirmed_job(this.data.unconfirmedjob);
}
set_ratings(num){
for (var i=1; i<= 5; i++){
if (i <=num){
$(this.selector + " div[name='rating'] span:nth-child(" +i+ ")").addClass('checked');
}else{
$(this.selector + " div[name='rating'] span:nth-child(" +i+ ")").removeClass('checked');
}
}
this.data.rating = num;
}
set_unconfirmed_job(num){
if( num == 0 )
$(this.selector + " span[name='badge']").hide();
else
$(this.selector + " span[name='badge']").show();
this.data.unconfirmedjob = num;
}
}//end of class People
function bts_people_html(data){
var template = $('#people_template').html();
var head = '
';
r = head + '
' ;
return r;
}
function sample_staff(){
for (var i=1; i<100; i++){
var sample_people = {
login: '01515b52-6936-46b2-a000-9ad4cd7a5b50' +i,
firstname: "first"+i,
lastname: "last",
mobile: '041122221' +i,
email: 'abc@gmail.com' + i,
wages: 0,
hour: i,
OT: 3,
petrol: 50 +i,
rating: Math.floor(Math.random() * Math.floor(5)),
unconfirmedjob: Math.floor(Math.random() * Math.floor(30)),
};
var html = bts_people_html(sample_people);
jQuery('div.stafflist').append(html);
new People("#p" + sample_people.login, sample_people);
}
}
function list_staff() {
$('div.stafflist div.peopleitem').remove();
$.post(bts().ajax_url, { // POST request
_ajax_nonce: bts().nonce, // nonce
action: "list_staff", // action
}, function(response, status, xhr){
if (response.status =='success'){
response.users.forEach(function(u){
var html = bts_people_html(u);
jQuery('div.stafflist').append(html);
new People("#p" + u.login, u);
});
}else{
alert('error getting staff list');
}
});
}
function list_clients() {
$('div.clientlist div.peopleitem').remove(); //clear it
$.post(bts().ajax_url, { // POST request
_ajax_nonce: bts().nonce, // nonce
action: "list_client", // action
}, function(response, status, xhr){
if (response.status =='success'){
response.users.forEach(function(u){
var html = bts_people_html(u);
jQuery('div.clientlist').append(html);
new People("#p" + u.login, u);
});
}else{
alert('error getting Client list');
}
});
}
function xero(t){
if (t)
$('div.xero i').show();
else
$('div.xero i').hide();
}
function wifi(t){
if (t)
$('div.wifi i').show();
else
$('div.wifi i').hide();
}
function init_user_search(){
$('div.b_search input').keyup(debounce(function(){
console.log('key pressed');
}, 500));
}
function init_ts(){
list_staff();
list_clients();
xero(false);
wifi(false);
init_user_search();
}
init_ts();
/*________________________________________________________________________*/
});
})(jQuery);