var $ = jQuery;
$(document).ready(function() {
// assign data attribute to select2 for placeholder
$(".select2-placeholder").each(function() {
var placeholder = $(this).data('placeholder'); // this will get the placeholder from the control
$(this).select2({
placeholder: placeholder
});
});
$('body').on('click', '.dev-edit-job', function() {
$('#dev-job-name').val($(this).data('name'));
$('#dev-job-description').val($(this).data('description'));
$('#dev-job-type').val($(this).data('type'));
$('#dev-job-id').val($(this).data('id'));
$('#others').val($(this).data('type'));
$('#dev-other-job-title').val($(this).data('otherJobTitle'));
$('#job-confidential').attr('checked', ($(this).data('confidential') === true) ? 'checked' : null);
$('#job-is-marketable').attr('checked', ($(this).data('marketable') === true) ? 'checked' : null);
let $job_skills_select2 = $('#dev-job-skills');
$job_skills_select2.select2({
language: $job_skills_select2.data('locale'),
tokenSeparators: [','],
minimumInputLength: 2,
ajax: {
url: $job_skills_select2.data('url'),
dataType: 'json',
delay: 250,
data: function (params) {
return {
search_term: params.term // search term
};
},
processResults: function (response) {
return {
results: response
};
},
cache: true
}
});
$('#edit-title-help').hide();
$('#edit-description-help').hide();
$('#edit-type-help').hide();
});
// Disable edit job submit button while selecting from skills drop-down results
$('#dev-job-skills').on('select2:opening', function () {
$('#edit_job_submit_button').prop( 'disabled', true );
});
// Enable edit job submit button while selecting from skills drop-down results
$('#dev-job-skills').on('select2:select select2:close', function () {
$('#edit_job_submit_button').prop( 'disabled', false );
});
$( document ).on('shown.bs.modal', "#edit-job-form", function(){
$('#dev-job-skills').trigger('change.select2');
$('#L-job-major').trigger('change.select2');
});
$( document ).on('hidden.bs.modal', '#apply-job-form', function(){
$('#apply-for-job').attr('disabled', 'disabled');
$('#cv').val('').trigger('change');
$('#upload-cv').find('label').text($('#default-label').text());
$('#upload-error').hide();
$('#upload-cv').removeClass('show');
});
$( document ).on('click', '#use-cv-div', function(){
$('#apply-for-job').attr('disabled', 'disabled');
$('#cv').val('').trigger('change');
$('#upload-cv').find('label').text($('#default-label').text());
$('#upload-error').hide();
$('#upload-cv').removeClass('show');
});
$('#delete-job').submit(function(e) {
e.preventDefault();
showLoader();
const message = $(this).attr('data-message');
$.ajax({
type: 'POST',
url: $(this).prop('action'),
data: $(this).serialize(),
dataType: 'json'
}).done(res => {
window.location = res.data.redirect_uri;
}).fail(_ => {
// Flash messages would handle error messages
if (_.status === 403) {
hideLoader();
$("#delete-job-form").modal('hide');
$(".container.employer-dashboard").prepend(`
${message}
`);
} else {
window.location.reload();
}
});
});
$("#hide-job-action").submit(function(e) {
e.preventDefault();
showLoader();
$.ajax({
type: 'POST',
url: $(this).prop('action'),
data: $(this).find('input').serialize(), // Select only this form fields
dataType: 'json',
error: editSubmissionError
}).then(function (_) {
window.location.reload();
}).fail(function (_) {
// Flash messages would display the error message
window.location.reload();
});
});
$("#cancel-delete-job").click(function(event) {
$("#delete-job-form").modal('hide');
});
$("#cancel-hide-job").click(function(event) {
$("#hide-job-form").modal('hide');
});
$('.help').hide();
jQuery('#edit-job').submit(function(e) {
$('.help').hide();
e.preventDefault();
const message = $(this).attr('data-message');
showLoader();
$.ajax({
type: 'POST',
url: $(this).prop('action'),
data: $(this).serialize(),
dataType: 'json'
}).done(function (res) {
window.location = res.message;
}).fail(function (e) {
hideLoader();
if (e.responseJSON && e.responseJSON.errors && 422 === e.status) {
let errors = e.responseJSON.errors;
for (let key in e.responseJSON.errors) {
let $help = $('#edit-' + key + '-help');
$help.text(errors[key]);
$help.show();
}
} else if (e.status === 403) {
hideLoader();
$("#edit-job-form").modal('hide');
$(".container.employer-dashboard").prepend(`${message}
`);
} else {
$('#edit-job-form').modal('toggle');
}
});
});
$(".cancel_create_job").click(function(event) {
let $new_job = $('#new_job');
if ($new_job.length) {
$new_job[0].reset();
}
$('#job_skills').val(null).trigger('change');
$('.help').hide();
});
$('#new-job-form').on('hidden.bs.modal', function (e) {
$('#job_skills').val(null).trigger('change');
$('#new-job')[0].reset();
$('.help').hide();
});
$('#edit-job-form').on('hidden.bs.modal', function (e) {
$('.help').hide();
});
$('#new-job-form, #edit-job-form').on('hidden.bs.modal', function (e) {
$('.input-error').removeClass('input-error');
});
$("#showjobs").click(function(event) {
jQuery.ajax({
type: "POST",
url: ajax_object.ajax_url,
data: project_id = "project_id=" + $(this).data("project_id") + '&action=loadAll-jobs',
success: function(response) {
response = JSON.parse(response);
$('#showjobs').hide();
$('#replace_jobs').replaceWith(response.html);
},
});
});
$('.help').hide();
jQuery('#new-job').submit(function(e) {
$('.help').hide();
e.preventDefault();
showLoader();
$.ajax({
type: 'POST',
url: $(this).prop('action'),
data: $(this).serialize(),
dataType: 'json',
success: function () {
location.reload()
}
}).fail(function (e) {
hideLoader();
if (e.responseJSON && e.responseJSON.errors && 422 === e.status) {
let errors = e.responseJSON.errors;
for (let key in e.responseJSON.errors) {
let $help = $('#' + key + '-help');
if (key == 'city_key') {
$('#L-job-major').addClass('was-validated');
}
$help.text(errors[key]);
$help.show();
}
} else if (403 === e.status) {
let message = e.responseJSON.errors.message;
$(".container.employer-dashboard")
.prepend(`${message}
`);
$('#new-job-form').modal('hide');
} else {
$('#edit-job-form').modal('toggle');
}
});
});
jQuery('#apply-form').submit(function(e) { // handle Apply job submit form
e.preventDefault();
showLoader();
$.ajax({
method: 'POST',
url: $(this).attr('action'),
dataType: 'json',
data: new FormData(this),
contentType: false,
cache: false,
processData:false
})
.then(_ => {
$('#apply-job-form').modal('hide');
window.location.reload();
})
.fail(error => {
hideLoader();
if (error.responseJSON) {
if (error.responseJSON.message !== '' && error.responseJSON.status === 422) {
// Map validation error messages to their fields
let errorContainer = $('#upload-error');
errorContainer.text(error.responseJSON.message);
errorContainer.show();
} else {
// Reload to display the flash message if any
$('#apply-job-form').modal('hide');
window.location.reload();
}
}
});
});
$("#cancel-apply-job").click(function(event) {
$("#apply-job-form").modal('hide');
});
$('.L-delete-contract-btn').click(function(e) {
e.preventDefault();
let message = $(this).data('message');
let that = this;
confirmModal(message, function () {
$(that).parents('.L-delete-contract-form').submit();
});
});
$('body').on('click', '.contract-renew-button', function(e) {
e.preventDefault();
let message = $(this).data('message');
const applicationId = $(this).data('application-id');
confirmModal(message, function () {
$('#contract-renew-' + applicationId).submit();
});
});
$('.loadmore-pending-jobs-teleworker-button').click(function() {
var button_selector = ".loadmore-pending-jobs-teleworker-button";
var action = $(button_selector).data('action');
var count = $(button_selector).data('count');
var records_per_page = $(button_selector).data('records-per-page');
return load_more_func(action, count, records_per_page, '.pending-jobs-teleworker-container', button_selector);
}());
$(".loadmore-rejected-jobs-teleworker-button").click(function() {
var button_selector = ".loadmore-pending-jobs-teleworker-button";
var action = $(button_selector).data('action');
var count = $(button_selector).data('count');
var records_per_page = $(button_selector).data('records-per-page');
return load_more_func(action, count, records_per_page, '.rejected-jobs-teleworker-container', button_selector);
}());
$(".loadmore-pending-on-others-jobs-teleworker-button").click(function() {
var button_selector = ".loadmore-pending-on-others-jobs-teleworker-button";
var action = $(button_selector).data('action');
var count = $(button_selector).data('count');
var records_per_page = $(button_selector).data('records-per-page');
return load_more_func(action, count, records_per_page, '.pending-on-others-jobs-teleworker-container', button_selector);
}());
$('.L-cv-missing').on('click', function(e) {
e.preventDefault();
$('#warning-modal').modal('show');
});
$(document).ready(function() {
$('.L-inactive-user').on('click', function(e) {
e.preventDefault();
$('#L-inactive-user-warning-modal').modal('show');
});
});
});
function submissionSuccess(res) {
hideLoader()
location.reload();
}
function newSubmissionError(err) {
hideLoader()
var errors = err.responseJSON.data;
for (var key in errors) {
if (errors.hasOwnProperty(key)) {
let titleSmall = $('#' + key + '-help');
titleSmall.show();
titleSmall.text(errors[key]);
}
}
}
function editSubmissionError(err) {
hideLoader();
var errors = err.responseJSON.data;
for (var key in errors) {
$('#edit-' + key + '-help').html(errors[key]).show();
}
}
function load_job_query(form) {
return arrayToObject($(form).serializeArray());
}
function arrayToObject(arr) {
obj = {}
for (var i in arr) {
name = arr[i]['name'];
if (!obj.hasOwnProperty(name)) {
obj[name] = arr[i]['value'];
} else {
if (!Array.isArray(obj[name])) {
obj[name] = [obj[name]];
}
obj[name].push(arr[i]['value']);
}
}
return obj;
}
function initialize_view() {
$('.single-job').remove();
}
function request_teleworker_job_contract_deletion(data, success_fn, error_fn) {
showLoader()
$.ajax({
url: ajax_object.ajax_url,
data: data,
method: 'POST',
success: success_fn,
error: error_fn,
dataType: 'json',
contentType: false,
processData: false,
});
}
function handle_company_send_offer_success(res) {
hideLoader()
location.reload();
}
function dataToFormData(data) {
var form_data = new FormData();
for (var i in data) {
form_data.append(data[i]['name'], data[i]['value']);
}
return form_data;
}
function apply_job_success_function(response) {
if (response.indexOf("projectAddedSuccessfully") > -1) {
$("#apply-job-form").modal('hide');
window.location.reload();
}
}