toastr.options = {
"closeButton": false,
"debug": false,
"newestOnTop": false,
"progressBar": false,
"positionClass": "toast-top-right",
"preventDuplicates": false,
"onclick": null,
"showDuration": "300",
"hideDuration": "1000",
"timeOut": "1500",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
}
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$.fn.toast = function (message, showForSeconds) {
var me = this;
$(me).html(message);
var x = $(me).show(200);
if (showForSeconds) {
x.delay(showForSeconds).fadeOut(0);
}
}
var doPost = function (url, data, callback) {
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function (x) {
callback(x);
}
});
}
var redirTo = function (link) {
reloadPage(link);
}
var getFormData = function (form) {
return $(form).serializeObject();
}
var simpleSubmit = function (url, form, callback) {
var data = getFormData(form);
// leave this in case
// data.data = JSON.stringify(data);
console.log("DATA TO: " + url, data);
doPost(url, data, function (response) {
console.log("RESPONSE FROM: " + url);
console.log(JSON.stringify(response));
if (callback) {
callback(response);
} else {
if (response.success) {
location.reload();
} else {
toastr.error(response.message);
}
}
});
}
var simpleDataSubmit = function (url, data, callback) {
doPost(url, data, function (response) {
if (callback) {
callback(response);
} else {
if (response.success) {
location.reload();
} else {
toastr.error(response.message);
}
}
});
}
var reloadPage = function (url, successMsg) {
var url = url || window.location.href;
$.get(window.location.href, function (data, status) {
if (status == 'success') {
var bodyHtml = /
([\s\S]*)<\/body>/.exec(data)[1];
$('body').html(bodyHtml);
$('body').removeClass('modal-open');
$('body').removeAttr('style')
if (successMsg && successMsg.length > 0) {
toastr.info(successMsg);
}
}
})
}
var redirTo = function (url, successMsg) {
reloadPage(url);
}
var refresh = function (successMsg) {
reloadPage(null, successMsg);
}
var removeLocalStorageKeys = function (form) {
var lsKey = $(form).attr('ls-key');
var lsKeys = lsKey ? lsKey.split(',') : [];
for (var i = 0; i < lsKeys.length; i++) {
console.log("Removing " + lsKeys[i]);
window.localStorage.removeItem(lsKeys[i]);
}
}
var setupMoes = function () {
$('div[moe]').each(function () {
var moe = this;
var start = $(moe).find('a[start]');
var cancel = $(moe).find('[cancel]');
var submit = $(moe).find('[submit]');
var form = $(moe).find('[form]');
form = form ? form[0] : null;
form = form ? form : $(moe).find('form');
var url = $(form).attr('url');
var successMsg = $(form).attr('success-msg');
var redir = $(form).attr('redir');
var info = $(moe).find('[info]');
info = info ? info[0] : null;
var isStartShowing = $(start).css('display') != 'none';
var isFormShowing = $(form).css('display') != 'none';
var isInfoShowing = info ? $(info).css('display') != 'none' : null;
var toggleStart = function (e) {
e.preventDefault();
if ($(start).attr('show') != undefined) {
return;
}
$(start).toggle();
};
var toggleForm = function (e) {
e.preventDefault();
if ($(form).attr('show') != undefined) {
return;
}
if (isFormShowing) {
$(form).hide();
} else {
$(form).css('display', 'block');
}
isFormShowing = !isFormShowing;
// $(form).toggle(50);removeLocalStorageKeys(form)
};
var toggleInfo = function (e) {
e.preventDefault();
if (!info) {
return;
}
if ($(info).attr('show') != undefined) {
return;
}
if (isInfoShowing) {
$(info).hide();
} else {
$(info).css('display', 'block');
}
isInfoShowing = !isInfoShowing;
// $(info).toggle(50);
};
var toggleFormAndInfo = function (e) {
e.preventDefault();
toggleStart(e);
toggleForm(e);
toggleInfo(e);
}
$(start).click(toggleFormAndInfo);
$(cancel).click(toggleFormAndInfo);
//clear localStrage for the form after cancel
var cancelMoe = function (e) {
var frm = $(this).closest('form');
removeLocalStorageKeys(frm);
}
$(moe).off('click', '[cancel]', cancelMoe);
$(moe).on('click', '[cancel]', cancelMoe)
$(form).find('[show-if-field]').each(function () {
var me = this;
var showIfField = $(me).attr('show-if-field');
var showIfValue = $(me).attr('show-if-value');
var showIfFieldEl = $(form).find('[name=' + showIfField + ']');
var adjust = function () {
var value = $(showIfFieldEl).val();
if (value == showIfValue) {
$(me).show();
} else {
$(me).hide();
}
}
$(showIfFieldEl).change(adjust);
adjust();
});
$(moe).off('click', '[submit]');
var submitHtml = $(submit).html();
$(moe).on('click', '[submit]', function (e) {
e.preventDefault();
$(submit).html(' ' + submitHtml);
$(submit).prop('disabled', true);
simpleSubmit(url, form, function (response) {
console.log("RESPONSE", response, "REDIR", redir);
if (response.success) {
removeLocalStorageKeys(form);
if (redir) {
redirTo(redir + response.data);
} else {
refresh(successMsg);
}
} else {
$(submit).html(submitHtml);
$(submit).prop('disabled', false);
toastr.error(response.message);
}
});
});
});
};
$(document).ready(function () {
setupMoes();
});
$(document).on('setupMoes', function () {
setTimeout(function () {
setupMoes();
}, 1000)
})
$(document).ready(function () {
$('[dateRanger]').each(function () {
var dr = $(this);
var rangeTypeSelect = dr.find('select')[0];
var date1Input = dr.find('[date1]')[0];
var date2Input = dr.find('[date2]')[0];
var d1Val = '';
var d2Val = '';
var d1 = function (enable) {
if (enable) {
var hasVal = $(date1Input).val();
if (!hasVal) {
$(date1Input).val(d1Val);
}
$(date1Input).show();
} else {
d1Val = $(date1Input).val();
$(date1Input).val('');
$(date1Input).hide();
}
};
var d2 = function (enable) {
if (enable) {
var hasVal = $(date2Input).val();
if (!hasVal) {
$(date2Input).val(d2Val);
}
$(date2Input).show();
} else {
d2Val = $(date2Input).val();
$(date2Input).val('');
$(date2Input).hide();
}
};
var adjustFields = function () {
var rangeType = $(rangeTypeSelect).val();
if (rangeType == 'all') {
d1();
d2();
} else if (rangeType == 'on-or-before') {
d1(true);
d2();
} else if (rangeType == 'on-or-after') {
d1(true);
d2();
} else if (rangeType == 'between') {
d1(true);
d2(true);
} else if (rangeType == 'on') {
d1(true);
d2();
} else if (rangeType == 'not-on') {
d1(true);
d2();
} else if (rangeType == 'not-in-between') {
d1(true);
d2(true);
}
};
adjustFields();
$(rangeTypeSelect).change(function () {
adjustFields();
});
});
$('[numRanger]').each(function () {
var nr = $(this);
var rangeTypeSelect = nr.find('select')[0];
var num1Input = nr.find('[num1]')[0];
var num2Input = nr.find('[num2]')[0];
var n1 = function (enable) {
if (enable) {
$(num1Input).show();
} else {
$(num1Input).hide();
}
};
var n2 = function (enable) {
if (enable) {
$(num2Input).show();
} else {
$(num2Input).hide();
}
};
var adjustFields = function () {
var rangeType = $(rangeTypeSelect).val();
if (rangeType == 'all') {
n1();
n2();
} else if (rangeType == 'less-than') {
n1(true);
n2();
} else if (rangeType == 'greater-than') {
n1(true);
n2();
} else if (rangeType == 'equal-to') {
n1(true);
n2();
} else if (rangeType == 'between') {
n1(true);
n2(true);
} else if (rangeType == 'not-equal-to') {
n1(true);
n2();
} else if (rangeType == 'not-in-between') {
n1(true);
n2(true);
}
};
adjustFields('all');
$(rangeTypeSelect).change(function () {
adjustFields();
});
});
});
//============MOE_MODAL======================================
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$.fn.toast = function (message, showForSeconds) {
var me = this;
$(me).html(message);
var x = $(me).show(200);
if (showForSeconds) {
x.delay(showForSeconds).fadeOut(0);
}
}
var doPost = function (url, data, callback) {
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function (x) {
callback(x);
}
});
}
var redirTo = function (link) {
window.location.href = link;
}
var getFormData = function (form) {
return $(form).serializeObject();
}
var simpleSubmit = function (url, form, callback) {
var data = getFormData(form);
// leave this in case
// data.data = JSON.stringify(data);
console.log("DATA TO: " + url, data);
doPost(url, data, function (response) {
console.log("RESPONSE FROM: " + url);
console.log(JSON.stringify(response));
if (callback) {
callback(response);
} else {
if (response.success) {
location.reload();
} else {
toastr.error(response.message);
}
}
});
}
var simpleDataSubmit = function (url, data, callback) {
doPost(url, data, function (response) {
console.log(url, data, response);
if (callback) {
callback(response);
} else {
if (response.success) {
location.reload();
} else {
toastr.error(response.message);
}
}
});
}
var redirTo = function (url) {
window.location.href = url;
}
var removeLocalStorageKeys = function (form) {
var lsKey = $(form).attr('ls-key');
var lsKeys = lsKey ? lsKey.split(',') : [];
for (var i = 0; i < lsKeys.length; i++) {
console.log("Removing " + lsKeys[i]);
window.localStorage.removeItem(lsKeys[i]);
}
}
$(document).ready(function () {
$('[moe-toggle]').each(function () {
var me = this;
var start = $(me).find('[toggle-start]');
var toggle = $(me).find('[toggle]');
$(start).on('click', function (e) {
$(toggle).toggle();
});
});
});
$(document).ready(function () {
initMoeModal();
});
function initMoeModal(_outer) {
$((_outer ? _outer + ' ' : '') + '[moe-modal]').each(function () {
var me = this;
var start = $(me).find('[start]');
var form = $(me).find('form');
var modal = $(me).find('.modal');
var submit = $(form).find('[submit]');
var cancel = $(form).find('[cancel]');
var url = $(form).attr('url');
var successMsg = $(form).attr('success-msg');
var redir = $(form).attr('redir');
var showModal = function () {
$(modal).modal({
show: true,
keyboard: false,
backdrop: 'static'
});
isModalOn = true;
}
var hideModal = function () {
$(modal).modal('hide');
isModalOn = false;
}
$(start).on('click', function (e) {
e.preventDefault();
showModal();
});
$(cancel).on('click', function (e) {
e.preventDefault();
hideModal();
// if in notes-panel, close panel
if($(this).closest('.notes-panel-body').length) {
window.top.notesPanel.cancel();
}
});
$(document).on('keyup', function (e) {
if (e.keyCode == 27) { // ESC
hideModal();
}
});
$(form).attr('action', url);
$(form).attr('method', 'POST');
$(form).attr('enctype', 'form-data/multipart');
var submitHtml = $(submit).html();
$(form).ajaxForm({
beforeSubmit: function () {
$(submit).html(' ' + submitHtml);
$(submit).prop('disabled', true);
},
success: function (response) {
console.log(response);
if (response.success) {
if($(submit).closest('.notes-panel-body').length) {
window.top.clearInterval(window.top.notesPanel.saveTimer[$(form).find('[name="persistenceKey"]').val()]);
localStorage.removeItem('notesPanel_' + $(form).find('[name="persistenceKey"]').val());
localStorage.removeItem('notesPanel_expanded_' + $(form).find('[name="clientID"]').val());
window.top.location.reload();
return false;
}
//lsKeys are comma separated
removeLocalStorageKeys(form)
if (redir) {
redirTo(redir + response.data);
} else {
refresh(successMsg);
}
} else {
$(submit).html(submitHtml);
$(submit).prop('disabled', false);
alert(response.message);
}
},
error:function(){
$(submit).html(submitHtml);
$(submit).prop('disabled', false);
alert("HTTP Error: see console log for details");
}
});
});
}
$(document).ready(function () {
$('[ajaxForm]').ajaxForm(function (response, status, xhr, form) {
console.log("Response ", response);
if (!response.success) {
toastr.error(response.message);
return;
}
removeLocalStorageKeys(form)
reloadPage();
});
});
var initInlineMoe = function () {
var showForm = function (el) {
$(el).closest('[inline-moe]').find('[info]').hide();
$(el).closest('[inline-moe]').find('form').show();
}
var hideForm = function (el) {
$(el).closest('[inline-moe]').find('[info]').show();
$(el).closest('[inline-moe]').find('form').hide();
$(el).closest('[inline-moe]').find('form .error').remove();
}
var reloadElement = function (reloadUrl, targetElem) {
console.log("Reloading elem ", $(targetElem), " from " + reloadUrl);
$(targetElem).load(reloadUrl, function () {
initInlineMoe();
});
}
$('body').off('click', '[inline-moe] [start]')
$('body').on('click', '[inline-moe] [start]', function (e) {
e.preventDefault();
showForm(this);
})
$('body').off('click', '[inline-moe] [submit]');
$('body').on('click', '[inline-moe] [submit]', function (e) {
e.preventDefault();
//submit the form and replace reload-target-class with content from reload-url
var form = $(this).closest('form');
var submit = this;
var submitHtml = $(submit).html();
$(form).ajaxSubmit({
beforeSubmit: function () {
$(submit).html(' ' + submitHtml);
$(submit).prop('disabled', true);
},
success: function (response) {
if (response.success) {
var reloadTargetClass = $(form).closest('[inline-moe]').attr('reload-target-class');
var targetElement = $(form).closest('.' + reloadTargetClass);
var reloadUrl = $(form).closest('[inline-moe]').attr('reload-url');
reloadElement(reloadUrl, targetElement);
} else {
$(submit).html(submitHtml);
$(submit).prop('disabled', false);
$(form).prepend('' + "Error" + '');
}
},
error:function(){
$(submit).html(submitHtml);
$(submit).prop('disabled', false);
alert("HTTP Error: see console log for details");
}
});
})
$('body').off('click', '[inline-moe] [cancel]');
$('body').on('click', '[inline-moe] [cancel]', function (e) {
e.preventDefault();
hideForm(this);
})
}
$(document).ready(function () {
setTimeout(function () {
initInlineMoe();
}, 500)
})
$(document).ready(function () {
$(document).off('click', '#callLink')
$(document).on('click', '#callLink', function (evt) {
evt.preventDefault();
var url = $(this).attr('href');
var iid = $(this).attr('data-id');
var custPhone = $('#customPhoneNumber').val();
var data = {iid: iid};
if (custPhone) {
data['customPhoneNumber'] = custPhone;
}
$.post(url, data, function (respData) {
respData = JSON.parse(resp);
if (!respData.success) {
alert(respData.message);
}
});
});
});
(function () {
//make sure the dom gets updated on change for inputs
$('.page-fields-container').on('keyup', 'input', function () {
$(this).attr("value", $(this).val());
});
//update
$("#update").on('click', function () {
var btn = $(this);
//set text area value
$('.page-fields-container textarea').each(function () {
$(this).text($(this).val());
});
$('.page-fields-container input[type=radio]').each(function () {
if ($(this).prop("checked")) {
$(this).attr('checked', true);
}
});
$('.page-fields-container input[type=checkbox]').each(function () {
if ($(this).prop("checked")) {
$(this).attr('checked', true);
}
});
$('.page-fields-container input[type=checkbox]').each(function () {
if ($(this).prop("checked")) {
$(this).attr('checked', true);
}
});
$('.page-fields-container select option:selected').each(function () {
$(this).attr('selected', true);
});
var fieldData = {};
//simple for now to get only input fields
$(btn).closest('.page-container').find('.page-fields-container').find('input').each(function (i, el) {
fieldData[$(el).attr('name')] = $(el).val();
});
$(btn).closest('.page-container').find('.page-fields-container').find('select').each(function (i, el) {
fieldData[$(el).attr('name')] = $(el).val();
});
var clientID = $(this).closest(".page-container").attr('client-id');
var pageID = $(this).closest(".page-container").attr('page-id');
var programID = $(this).closest(".page-container").attr('program-id');
var markup = $(btn).closest('.page-container').find('.page-fields-container').html();
var submitUrl = "";
if (pageID) {
submitUrl = "/api/page/submit";
} else {
submitUrl = "/api/page/addDirect";
}
$.post(submitUrl, {
clientID: clientID,
pageID: pageID,
programID: programID,
submittedMarkupContent: markup,
submittedJson: JSON.stringify(fieldData)
}, function (result) {
console.log("Result", result);
reloadPage(window.location.pathname);
if (result.success) {
alert("Form submitted successfully");
} else {
alert(result.message);
}
});
});
$("#refresh").on(
'click',
function () {
var btn = $(this);
var pageID = $(this).closest(".page-container")
.attr('page-id');
$.post("/api/page/refresh", {
pageID: pageID
}, function (result) {
console.log("Result", result);
if (result.success) {
var resultMarkup = result.message;
$(btn).closest('.page-container').find('.page-fields-container').html(resultMarkup);
} else {
alert(result.message);
}
});
});
})();