var pageLoadedSecs = 0;
var meshCapacityChart;
var meshCapacityChartRawData;
var meshCapacityChartLatestData;
var meshCapacityChartXAxis;
var meshCapacityChartSeries;
var meshSupplementalBill = 0;
var meshSupplementalWorkingValue = 0;
var agreementActiveStatus = {};
var outcomesChart;
var outcomeChartRawData;
var outcomeChartLatestData;
var paginationTotalItems;
var paginationCurrentPage = 1;
var sessionTimeout;
function sessionTimeoutFunc() {
location.reload();
}
/* TODO: Hack job - find a way to configure this in settings */
const meshOverviewCategories = {
agreement_start: "Agreement Start Date",
agreement_end: "Agreement End Date",
agreement_hours_total: "Agreement Capacity",
agreement_carryover_available: "Available Carryover",
agreement_carryover_expires: "Carryover Expires",
agreement_hours_available: "Available Capacity",
agreement_overrun_available: "Available Overrun",
agreement_hours_used: "Capacity Used",
agreement_adjustments: "Applied Adjustments",
agreement_status: "agreement_status"
}
function isCalendlyEvent(e) {
return e.origin === "https://calendly.com" && e.data.event && e.data.event.indexOf("calendly.") === 0;
};
function toggleClientNav(e) {
document.getElementById("client-dropdown").classList.toggle("show");
if ( document.getElementById("contact-dropdown").classList.contains("show") ) {
document.getElementById("contact-dropdown").classList.remove("show");
}
e.classList.toggle("expanded");
}
function toggleContactNav(e) {
document.getElementById("contact-dropdown").classList.toggle("show");
if ( document.getElementById("client-dropdown").classList.contains("show") ) {
document.getElementById("client-dropdown").classList.remove("show");
}
e.classList.toggle("expanded");
}
// Close the dropdown if the user clicks outside of it
/*
$(document).ready(function() {
$('.dropbtn').on("mouseover", function(e) {
console.log('dropdown');
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
});
});
*/
window.onclick = function(event) {
if (!event.target.matches('.dropbtn') && !event.target.matches('.profile-image')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
var dropbtns = document.getElementsByClassName("dropbtn");
for (i = 0; i < dropbtns.length; i++) {
var openDropbtn = dropbtns[i];
if (openDropbtn.classList.contains('expanded')) {
openDropbtn.classList.remove('expanded');
}
}
}
}
$(document).ready(function() {
sessionTimeout = setTimeout(sessionTimeoutFunc, 1800000);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-NT21XVJP0W');
$(".mn-mod").on("mouseover", function() {
$(".mn-mod").addClass("mn-dimmed");
});
$(".mn-mod").on("mouseout", function() {
$(".mn-mod").removeClass("mn-dimmed");
});
$(".client-nav").on("click", function(e) {
e.preventDefault();
$("#lightbox_message").text("Hang on, switching client accounts");
$("#lightbox").attr("style", "display:flex");
const data = {
cs_link: this.id
};
$.ajax('/ajax/setActiveClient', {
data: JSON.stringify(data),
contentType: 'application/json',
type: 'POST'
}).done(function() {
location.reload();
});
});
if ( $("#client-dropdown .client-nav").length <= 5 ) {
$(".nav-scroll-down").addClass('hide');
$("#client-dropdown").attr("style", "overflow-y: hidden;");
}
$("#client-dropdown").on("scroll", function(e) {
if ( $("#client-dropdown .client-nav").length <= 5 ) {
return;
}
var nav = $(e.currentTarget);
var scrollTop = nav.scrollTop();
var scrollBottom = 255 + scrollTop;
$(".nav-scroll-up").attr('style', `top: ${scrollTop}`);
$(".nav-scroll-down").attr('style', `top: ${scrollBottom}`);
if ( scrollTop > 0 ) {
$(".nav-scroll-up").removeClass('hide');
} else {
$(".nav-scroll-up").addClass('hide');
}
if (nav[0].scrollHeight - nav.scrollTop() <= nav.outerHeight()) {
$(".nav-scroll-down").addClass('hide');
} else {
$(".nav-scroll-down").removeClass('hide');
}
});
$("#register_new_contact").on("click", function(e) {
$(".registerbuttons").addClass('hide');
const registerFirstName = $("#register_first_name").val();
const registerLastName = $("#register_last_name").val();
const registerCompanyName = $("#register_company_name").val();
const registerCity = $("#register_city_name").val();
const registerState = $("#register_state").val();
$("#register_first_name").attr('disabled', true);
$("#register_last_name").attr('disabled', true);
$("#register_company_name").attr('disabled', true);
$("#register_city_name").attr('disabled', true);
$("#register_state").attr('disabled', true);
const data = {
registerFirstName: registerFirstName,
registerLastName: registerLastName,
registerCompanyName: registerCompanyName,
registerCity: registerCity,
registerState: registerState
}
$(".register-error").addClass('hide');
$.ajax('/ajax/createNewContactCompany', {
data: JSON.stringify(data),
contentType: 'application/json',
type: 'POST'
}).done(function(data) {
clearTimeout(sessionTimeout);
sessionTimeout = setTimeout(sessionTimeoutFunc, 1800000);
if ( data.hasOwnProperty('error') ) {
$(".registerbuttons").removeClass('hide');
$(".register-error").removeClass('hide');
$(".register-error p").text(data.error);
$("#register_first_name").removeAttr('disabled');
$("#register_last_name").removeAttr('disabled');
$("#register_company_name").removeAttr('disabled');
$("#register_city_name").removeAttr('disabled');
$("#register_state").removeAttr('disabled');
return;
}
if ( data.hasOwnProperty('html') ) {
$("#register_wrapper").empty();
$("#register_wrapper").html(data.html);
// return;
}
});
});
$("#profile_update_save").on("click", function(e) {
e.preventDefault();
$("#lightbox_message").text("Saving changes");
$("#lightbox").attr("style", "display:flex");
setTimeout(function() {
$("#profile_form").trigger("submit");
}, "500");
});
$(".profile-photo-large").on("click", function(e) {
e.preventDefault();
$("#draganddrophandler").attr("style", "display: flex;");
$(".profile-image-upload").attr("style", "display: inline-block;");
$("#info_update_save_wrapper").attr("style", "display: block;");
});
$(".profile-switchable-input span").on("click", function(e) {
e.preventDefault();
const inputValue = $(this).text();
const inputName = $(this).parent().attr("id");
const textwidth = 60 + parseInt($(this).width());
$(this).parent().html(`
`);
$(`#focus_${inputName}`).select();
$(`#focus_${inputName}`).on("keyup", function(e) {
e.preventDefault();
const value = $(this).val();
if( $(`#sizer_node_${this.id}`).length ) {
const properTextValue = $(`#sizer_node_${this.id}`).text(value);
const properTextWidth = parseInt($(`#sizer_node_${this.id}`).width()) + 60;
$(this).attr("style", `width: ${properTextWidth}px`);
} else {
$(this).parent().append(`${value} `);
const properTextWidth = parseInt($(`#sizer_node_${this.id}`).width()) + 60;
$(this).attr("style", `width: ${properTextWidth}px`);
}
});
$("#info_update_save_wrapper").attr("style", "display: block;");
});
setTimeout(function() {
updateLightBoxAnimation();
}, "500");
$("input[name='profile-image']").on("change", function() {
$("#draganddrophandler").addClass("file-update-staged");
const reader = new FileReader();
const file = document.querySelector("input[type='file']").files[0];
/*
reader.addEventListener(
"load",
() => {
console.log('onload');
$("#draganddrophandler").attr("style", `background-image: url("${reader.result}");display:block;`);
},
false
);
*/
reader.onload = (function(fileinput) {
var image = new Image();
image.src = fileinput.target.result;
image.onload = function() {
const imageModifier = '';
$("#draganddrophandler").attr("style", `background-image: url("${this.src}");display:flex;`);
};
});
reader.readAsDataURL(file);
});
$('body').on("drop", "#draganddrophandler", function(e) {
e.preventDefault();
$("input[type='file']").prop("files", e.originalEvent.dataTransfer.files);
$("input[type='file']").trigger( "change");
});
$('body').on("dragover", "#draganddrophandler", function(e) {
e.preventDefault();
$(this).addClass("file-drag-hover");
});
$('body').on("dragleave", "#draganddrophandler", function(e) {
e.preventDefault();
$(this).removeClass("file-drag-hover");
});
window.addEventListener("dragover",function(e){
e = e || event;
e.preventDefault();
},false);
window.addEventListener("drop",function(e){
e = e || event;
e.preventDefault();
},false);
$(".btn-contact-sales").on("click", function(e) {
e.preventDefault();
var scheduleUserName = $(this).attr("mesh-user");
var scheduleUserEmail = $(this).attr("mesh-user-email");
var scheduleProduct = $(this).attr("mesh-agrtype");
$("#schedule_lightbox").attr("style", "display:flex");
Calendly.initInlineWidget({
url: "https://calendly.com/nth-sales/sales-discovery?hide_gdpr_banner=1&background_color=010204&text_color=f6f7f9&primary_color=fcc526",
parentElement: document.getElementById("calendly_wrapper"),
prefill: {
name: scheduleUserName,
email: scheduleUserEmail,
customAnswers: {
a1: scheduleProduct
}
}
});
$("#calendly_wrapper").append('
X
');
});
$("#register_contact_sales").on("click", function(e) {
e.preventDefault();
var scheduleUserName = $(this).attr("mesh-user");
var scheduleUserEmail = $(this).attr("mesh-user-email");
$("#schedule_lightbox").attr("style", "display:flex");
Calendly.initInlineWidget({
url: "https://calendly.com/nth-sales/sales-discovery?hide_gdpr_banner=1&background_color=010204&text_color=f6f7f9&primary_color=fcc526",
parentElement: document.getElementById("calendly_wrapper"),
prefill: {
name: scheduleUserName,
email: scheduleUserEmail,
customAnswers: {
a1: "I'd like to learn more about your client portal and mesh CARE+"
}
}
});
$("#calendly_wrapper").append('X
');
});
$(document).on("click", "#schedule_close", function(e) {
$("#schedule_lightbox").attr("style", "display: none;");
$("#calendly_wrapper").html('');
$("#calendly_wrapper").removeClass("calendly-show");
});
$(window).on("message", function(e) {
var oe = e.originalEvent;
if(isCalendlyEvent(oe)) {
if ( oe.data.event == "calendly.event_type_viewed" ) {
$("#calendly_wrapper").addClass("calendly-show");
$("iframe").attr("style", "display: block; min-width: 1000px; min-height: 700px;");
$(".loading-container").attr("style", "display: none");
$(".ticket-outcome-wrapper").addClass("hide");
$("#outcome_close").addClass("hide");
$("#outcome_back").removeClass("hide");
$(".outcome-loaded").animate({
height: '700px',
width: '1000px',
speed: 250
});
}
if ( oe.data.event == "calendly.event_scheduled" ) {
setTimeout(function() {
$("#schedule_close").trigger("click");
}, 5000 );
const ticketNumber = $("#mesh-ticket-details").attr('mesh-ticket');
if ( ticketNumber ) {
const data = {
ticket_number: ticketNumber,
event: oe.data.payload.event,
invitee: oe.data.payload.invitee
}
$.ajax('/ajax/setTicketScheduled', {
data: JSON.stringify(data),
contentType: 'application/json',
type: 'POST'
}).done(function(data) {
clearTimeout(sessionTimeout);
sessionTimeout = setTimeout(sessionTimeoutFunc, 1800000);
$("#ticket-status-label").text("Scheduled");
});
}
}
}
});
$(".api-meshage button.meshage-action").on("click", function(e) {
e.preventDefault();
var parentObject = $(this).parent();
var parentObjectId = parentObject.attr("id");
$(parentObject).addClass('meshage-processing');
/* $(parentObject).text(' '); */
setTimeout(function() {
$(parentObject).addClass('meshage-processing-awaiting-api');
}, 1000);
$(this).addClass('meshage-btn-processing');
$.ajax(`/ajax/dismissMeshage/${parentObjectId}`, {
data: JSON.stringify({}),
contentType: 'application/json',
type: 'POST'
}).done(function() {
clearTimeout(sessionTimeout);
sessionTimeout = setTimeout(sessionTimeoutFunc, 1800000);
setTimeout(function() {
parentObject.attr("style", "display: none;");
}, 250);
parentObject.addClass("meshage-dismissed");
});
});
$(".refresh_page").on("click", function(e) {
e.preventDefault();
location.reload();
});
$(".agreement-filter").on("change", function() {
processOutcomeAgreementData();
processMeshAgreementData();
});
$('.content-meshage').addClass('emphasize-update');
setTimeout(function() {
$('.content-meshage').removeClass('emphasize-update');
}, 250);
$('.meshage').addClass('emphasize-update');
setTimeout(function() {
$('.meshage').removeClass('emphasize-update');
}, 250);
$(".pagination").on("click", ".page-link", function(e) {
e.preventDefault();
var setPage = $(this).attr('data-set-page');
if ( setPage == 'divider' ) {
return;
}
paginationCurrentPage = parseInt(setPage);
buildModulePagination();
});
});
function updateLightBoxAnimation() {
pageLoadedSecs = pageLoadedSecs + 1;
const showdots = pageLoadedSecs % 4;
var displaydots = '';
$("#lightbox_animation").text(displaydots.padStart(showdots, '.'));
setTimeout(function() {
updateLightBoxAnimation();
}, "500");
}
function processOutcomeAgreementData() {
outcomeChartLatestData = {}
var total_outcomes = 0;
var inwork_outcomes = 0;
var onhold_outcomes = 0;
var delivered_outcomes = 0;
var unknown_outcomes = 0;
var unused_outcomes = 0;
var selectedAgreement = $("#selected_agreement").val();
var activeAgreementFilter = $("#active_agreements:checked").val();
var agreementStartFilter = $("#agreement_start").val()
var agreementEndFilter = $("#agreement_end").val()
for (var o=0; o < outcomeChartRawData.length; o++ ) {
// Filter based on the selectors
var start_date = Date.parse(outcomeChartRawData[o].startDate) / 1000;
var end_date = Date.parse(outcomeChartRawData[o].endDate) / 1000;
if ( start_date < agreementStartFilter && end_date >= agreementEndFilter ) {
continue;
}
if ( activeAgreementFilter == "active" && outcomeChartRawData[o].agreementStatus != "Active" ) {
continue;
}
if ( selectedAgreement == "*" || parseInt(selectedAgreement) == outcomeChartRawData[o].id ) {
total_outcomes += outcomeChartRawData[o].applicationLimit;
inwork_outcomes += outcomeChartRawData[o].inwork;
onhold_outcomes += outcomeChartRawData[o].todo;
delivered_outcomes += outcomeChartRawData[o].complete;
unknown_outcomes += outcomeChartRawData[o].unknown;
var capacityUsed = inwork_outcomes + onhold_outcomes + delivered_outcomes + unknown_outcomes;
var capacityRemain = total_outcomes - capacityUsed;
unused_outcomes += capacityRemain;
const dateOptions = {
day: 'numeric',
month: 'short',
year: 'numeric'
}
startDate = new Date(start_date * 1000);
endDate = new Date(end_date * 1000);
outcomeChartLatestData[outcomeChartRawData[o].id] = {
agreement_name: outcomeChartRawData[o].name,
agreement_start: startDate.toLocaleString('en-US', dateOptions),
agreement_end: endDate.toLocaleString('en-US', dateOptions),
agreement_hours_total: outcomeChartRawData[o].applicationLimit,
agreement_carryover_available: "",
agreement_carryover_expires: "",
agreement_hours_available: capacityRemain,
agreement_overrun_available: "",
agreement_hours_used: capacityUsed,
agreement_adjustments: "",
agreement_status: outcomeChartRawData[o].agreementStatus
}
}
}
inwork_outcomes = inwork_outcomes / total_outcomes;
onhold_outcomes = onhold_outcomes / total_outcomes;
delivered_outcomes = delivered_outcomes / total_outcomes;
unknown_outcomes = unknown_outcomes / total_outcomes;
unused_outcomes = unused_outcomes / total_outcomes;
outcomesChart = Highcharts.chart('outcomes_overview', {
accessibility: {
enabled: false
},
chart: {
type: 'pie'
},
credits: {
enabled: false
},
title: {
text: undefined
},
tooltip: {
valueSuffix: '%'
},
subtitle: {
text: undefined
},
plotOptions: {
series: {
borderColor: '#070E1C',
dataLabels: [
{
enabled: true,
distance: 20,
style: {
textOutline: 'transparent',
color: 'white',
fontSize: '14px'
}
},
{
enabled: true,
distance: -60,
format: '{point.percentage:.0f}%',
style: {
textOutline: 'transparent',
fontSize: '16px',
opacity: 0.7
},
filter: {
operator: '>',
property: 'percentage',
value: 10
}
}
],
color: '#F6F7F9'
},
pie: {
tooltip: {
pointFormat: '{point.percentage:.2f}%',
borderWidth: 0
}
}
},
series: [
{
name: 'Percentage',
data: [
{
name: 'In-Work',
y: inwork_outcomes,
color: '#0A548D',
borderColor: '#052A3D'
},
{
name: 'To do',
y: onhold_outcomes,
color: '#226AA2',
borderColor: '#113652'
},
{
name: 'Done',
sliced: true,
selected: true,
y: delivered_outcomes,
color: '#019559',
borderColor: '#01452A'
},
{
name: 'Unknown',
y: unknown_outcomes,
color: '#101217',
borderColor: '#20242E'
},
{
name: 'Unused',
y: unused_outcomes,
color: '#101217',
borderColor: '#20242E'
}
]
}
]
});
outcomesChart.series[0].data.forEach(function(e) {
if ( e.y == 0 ) {
e.setVisible(false);
}
});
if ( total_outcomes > 0 ) {
$(".outcomes-info").removeClass("hide");
} else {
$(".outcomes-info").addClass("hide");
}
}
function processMeshAgreementData() {
meshSupplementalBill = 0;
meshSupplementalWorkingValue = 0;
meshCapacityChartLatestData = {};
var xAxis = {
categories: [],
type: 'datetime',
dateTimeLabelFormats: {
day: '%d %b %Y' //ex- 01 Jan 2016
},
labels: {
formatter: function() {
jsTime = this.value * 1000;
return new Date(jsTime).toLocaleString('default', { day: 'numeric', month: 'short', timeZone: 'UTC', year: 'numeric' });
}
},
tickInterval: 7
};
var series = {};
var agrKey = '';
var sortAgrKey = '';
var isNewPeriod = false;
var selectedAgreement = $("#selected_agreement").val();
var activeAgreementFilter = $("#active_agreements:checked").val();
var agreementStartFilter = $("#agreement_start").val()
var agreementEndFilter = $("#agreement_end").val()
var dateOfActiveAgreement = 0;
meshCapacityChartRawData.forEach(function(agrDay) {
var jsTime = agrDay._time * 1000;
if ( agrDay.agreementStatus == "Active" && dateOfActiveAgreement == 0 ) {
dateOfActiveAgreement = jsTime;
}
agreementActiveStatus[agrDay.agreement_id] = agrDay.agreement_status;
if ( agrDay._time < agreementStartFilter || agrDay._time >= agreementEndFilter ) {
return;
}
var eventKey = `${agrDay.agreement_report_month}${agrDay.agreement_report_year}`;
if ( eventKey != agrKey ) {
agrKey = eventKey;
isNewPeriod = true;
} else {
isNewPeriod = false;
}
if ( selectedAgreement != "*" && agrDay.agreement_id != selectedAgreement ) {
return;
}
if ( activeAgreementFilter == "active" && agrDay.agreementStatus == "Expired" ) {
return;
}
if ( agrDay.agreementStatus == "Supplemental" && dateOfActiveAgreement == 0 && activeAgreementFilter == "active" ) {
return;
}
if ( !meshCapacityChartLatestData.hasOwnProperty(agrDay.agreement_id) ) {
meshCapacityChartLatestData[agrDay.agreement_id] = {};
}
const dateOptions = {
month: 'short',
day: 'numeric',
year: 'numeric'
}
meshCapacityChartLatestData[agrDay.agreement_id].agreement_name = agrDay.agreement_name;
meshCapacityChartLatestData[agrDay.agreement_id].agreement_start = new Date(agrDay.agreement_start * 1000).toLocaleString('en-US', dateOptions);
meshCapacityChartLatestData[agrDay.agreement_id].agreement_end = new Date(agrDay.agreement_end * 1000).toLocaleString('en-US', dateOptions);
meshCapacityChartLatestData[agrDay.agreement_id].agreement_hours_total = agrDay.agreement_hours_total;
meshCapacityChartLatestData[agrDay.agreement_id].agreement_carryover_available = agrDay.agreement_carryover_available;
var agreementCarryOverExpires;
if ( agrDay.agreement_carryover_expires == 0 ) {
agreementCarryOverExpires = '';
} else if ( agrDay.agreement_carryover_available == 0 ) {
agreementCarryOverExpires = '';
} else {
agreementCarryOverExpires = agrDay.agreement_carryover_expires.length > 0 ? new Date(agrDay.agreement_carryover_expires[0] * 1000).toLocaleString('en-US', dateOptions) : 0;
}
meshCapacityChartLatestData[agrDay.agreement_id].agreement_carryover_expires = agreementCarryOverExpires;
var agreementHoursAvailable;
if ( agrDay.agreement_id == 0 ) {
agreementHoursAvailable = 0;
} else {
agreementHoursAvailable = agrDay.agreement_hours_available;
}
meshCapacityChartLatestData[agrDay.agreement_id].agreement_hours_available = agreementHoursAvailable.toFixed(2);
meshCapacityChartLatestData[agrDay.agreement_id].agreement_overrun_available = agrDay.agreement_overrun_available;
var agreementHoursUsed;
if ( agrDay.agreement_id == 0 ) {
agreementHoursUsed = agrDay.agreement_hours_available * -1;
} else {
agreementHoursUsed = agrDay.agreement_hours_used;
}
if ( !meshCapacityChartLatestData[agrDay.agreement_id].agreement_hours_used ) {
meshCapacityChartLatestData[agrDay.agreement_id].agreement_hours_used = 0;
}
if ( !meshCapacityChartLatestData[agrDay.agreement_id].agreement_adjustments ) {
meshCapacityChartLatestData[agrDay.agreement_id].agreement_adjustments = 0;
}
meshCapacityChartLatestData[agrDay.agreement_id].agreement_hours_used += agreementHoursUsed;
meshCapacityChartLatestData[agrDay.agreement_id].agreement_adjustments += parseFloat(agrDay.agreement_adjustments);
meshCapacityChartLatestData[agrDay.agreement_id].agreement_status = agrDay.agreementStatus;
seriesPrototype = {
type: 'column',
name: '',
data: [],
colorIndex: 0
}
if (!xAxis.categories.includes(jsTime)) {
xAxis.categories.push(jsTime);
}
if (!series.hasOwnProperty(jsTime)) {
series[jsTime] = {
agreement_hours_supplemental: 0,
agreement_hours_used: 0,
agreement_carryover_available: 0,
agreement_hours_available: 0,
agreement_overrun_available: 0,
agreement_overrun_applied: 0,
agreement_hours_lost: 0
}
}
var agreement_hours_availble = ( agrDay.agreement_id == 0 ) ? 0 : agrDay.agreement_hours_available;
var supplemental_hours_used = ( agrDay.agreement_id == 0 ) ? agrDay.agreement_hours_supplemental : 0;
series[jsTime].agreement_id = agrDay.agreement_id;
series[jsTime].agreement_hours_supplemental += parseFloat(supplemental_hours_used) || 0;
series[jsTime].agreement_hours_used += parseFloat(agrDay.agreement_hours_used) || 0;
series[jsTime].agreement_carryover_available += parseFloat(agrDay.agreement_carryover_available) || 0;
series[jsTime].agreement_hours_available += parseFloat(agreement_hours_availble) || 0;
series[jsTime].agreement_overrun_available += parseFloat(agrDay.agreement_overrun_available) || 0;
series[jsTime].agreement_overrun_applied += parseFloat(agrDay.agreement_overrun_applied) || 0;
series[jsTime].agreement_hours_lost += parseFloat(agrDay.agreement_hours_lost) || 0;
series[jsTime].agreementKey = agrKey;
series[jsTime].agreement_status = agrDay.agreementStatus;
/*
if ( agrDay.agreement_adjustments > 0 ) {
var yesterdayTime = jsTime - 86400000;
if ( yesterdayTime in series && series[yesterdayTime].agreement_hours_lost > 0 ) {
series[yesterdayTime].agreement_hours_lost -= parseFloat(agrDay.agreement_adjustments);
}
}
*/
});
xAxis.categories.sort();
/* TODO: Total hack. */
var seriesPrototype = [
{
type: 'column',
name: 'Supplemental',
data: [],
colorIndex: 0
},
{
type: 'column',
name: 'Capacity Used',
data: [],
colorIndex: 1
},
{
type: 'column',
name: 'Carryover Available',
data: [],
colorIndex: 2
},
{
type: 'column',
name: 'Capacity Available',
data: [],
colorIndex: 3
},
{
type: 'column',
name: 'Overrun Available',
data: [],
colorIndex: 4
},
{
type: 'column',
name: 'Overrun Applied',
data: [],
colorIndex: 5
},
{
type: 'column',
name: 'Capacity Lost',
data: [],
colorIndex: 6
}
]
isNewPeriod = false
agrKey = ''
xAxis.categories.forEach(function(day, i) {
if (agrKey != series[day].agreementKey ) {
agrKey = series[day].agreementKey;
isNewPeriod = true;
} else {
isNewPeriod = false;
}
/*
var thisDate = new Date(day * 1000),
month = thisDate.getMonth();
thisDate.setDate(thisDate.getDate() + 1);
if ( thisDate.getMonth() === month ) {
return;
}
*/
/* seriesPrototype[0].data.push(series[day].agreement_hours_supplemental); */
if ( i > 0 ) {
if ( isNewPeriod ) {
seriesPrototype[1].data.push(series[day].agreement_hours_used || 0);
seriesPrototype[6].data.push((series[day].agreement_hours_lost * -1) + seriesPrototype[6].data[i-1]);
} else {
seriesPrototype[1].data.push(series[day].agreement_hours_used + seriesPrototype[1].data[i-1]);
seriesPrototype[6].data.push((series[day].agreement_hours_lost * -1) + seriesPrototype[6].data[i-1]);
}
} else {
seriesPrototype[1].data.push(parseInt(series[day].agreement_hours_used) || 0)
seriesPrototype[6].data.push(series[day].agreement_hours_lost * -1);
}
seriesPrototype[0].data.push(series[day].agreement_hours_supplemental);
seriesPrototype[2].data.push(series[day].agreement_carryover_available);
seriesPrototype[3].data.push(series[day].agreement_hours_available);
seriesPrototype[4].data.push(series[day].agreement_overrun_available);
seriesPrototype[5].data.push(series[day].agreement_overrun_applied);
if ( isNewPeriod ) {
meshSupplementalBill = meshSupplementalBill + meshSupplementalWorkingValue;
meshSupplementalWorkingValue = 0;
} else {
meshSupplementalWorkingValue = series[day].agreement_hours_supplemental;
}
});
$('#agreement_overview_cols').html(' ');
var tableRows = {}
var expiredClass;
for (const [key, value] of Object.entries(meshCapacityChartLatestData)) {
if ( key == 0 ) {
continue;
}
if ( value.agreement_status == 'Active' ) {
expiredClass = '';
} else {
expiredClass = ' class="overview-agreement-expired"';
}
$('#agreement_overview_cols').append(`${value.agreement_name} `);
var i = value.length;
for (const [prop, str] of Object.entries(value) ) {
if ( prop == "agreement_name" ) {
continue;
}
if ( !tableRows.hasOwnProperty(prop) ) {
tableRows[prop] = [meshOverviewCategories[prop]];
}
tableRows[prop].push(str);
}
}
for (const [key, value] of Object.entries(outcomeChartLatestData)) {
if ( key == 0 ) {
continue;
}
if ( value.agreement_status == 'Active' ) {
expiredClass = '';
} else {
expiredClass = ' class="overview-agreement-expired"';
}
$('#agreement_overview_cols').append(`${value.agreement_name} `);
var i = value.length;
for (const [prop, str] of Object.entries(value) ) {
if ( prop == "agreement_name" ) {
continue;
}
if ( !tableRows.hasOwnProperty(prop) ) {
tableRows[prop] = [meshOverviewCategories[prop]];
}
tableRows[prop].push(str);
}
}
var tableOut = '';
for (const [row, values] of Object.entries(tableRows) ) {
if ( row == 'agreement_status' ) {
continue;
}
tableOut = `${tableOut}`;
if ( values !== undefined) {
for (var i = 0; i < values.length; i++) {
if ( tableRows['agreement_status'][i] == 'Active' ) {
expiredClass = '';
} else {
expiredClass = ' class="overview-agreement-expired"';
}
if ( i === 0 ) {
expiredClass = '';
}
tableOut = `${tableOut}${values[i]} `;
}
}
tableOut = `${tableOut} `;
}
if (Object.keys(tableRows).length > 0 ) {
$(".agreement-info").removeClass("hide");
} else {
$(".agreement-info").addClass("hide");
}
$(".agreement-overview tbody").html(tableOut);
var tableWidth = $(".agreement-overview").width();
var tableLeft = 0;
if ( tableWidth > 800 ) {
tableLeft = Math.round((800 - tableWidth) / 2);
}
$(".agreement-overview").attr('style', `left: ${tableLeft}px;`);
var aggregator = $("#chart_aggregator").val();
var filterCategories = [];
var ttDateFormatter;
if ( aggregator === "mon" ) {
xAxis.labels = {
formatter: function() {
jsTime = this.value;
return new Date(jsTime).toLocaleString('default', { month: 'short', timeZone: 'UTC', year: 'numeric' });
}
}
ttDateFormatter = '%B %Y';
xAxis.tickInterval = 1;
xAxis.categories.forEach(function(e, i) {
var thisDate = new Date(e),
month = thisDate.getMonth();
thisDate.setDate(thisDate.getDate() + 1);
if (i == 0 ) {
filterCategories.push(0);
} else if ( thisDate.getMonth() === month ) {
filterCategories.push(0);
} else {
filterCategories.push(1);
}
});
} else {
ttDateFormatter = '%B %d, %Y';
xAxis.labels = {
formatter: function() {
jsTime = this.value;
return new Date(jsTime).toLocaleString('default', { day: 'numeric', month: 'short', timeZone: 'UTC', year: 'numeric' });
}
}
if ( aggregator == "w" ) {
xAxis.tickInterval = 1;
xAxis.categories.forEach(function(e) {
var thisDate = new Date(e);
if ( thisDate.getDay() === 6 ) {
filterCategories.push(1);
} else {
filterCategories.push(0);
}
});
} else {
xAxis.tickInterval = 1;
xAxis.categories.forEach(function(e) {
filterCategories.push(1);
});
}
}
if ( aggregator === "mon" ) {
filterCategories.shift();
filterCategories.push(1);
}
var renderCategories = [];
var renderSeries0 = [];
var renderSeries1 = [];
var renderSeries2 = [];
var renderSeries3 = [];
var renderSeries4 = [];
var renderSeries5 = [];
var renderSeries6 = [];
filterCategories.forEach(function(e, i) {
if ( e === 1 ) {
renderCategories.push(xAxis.categories[i]);
renderSeries0.push(seriesPrototype[0].data[i]);
renderSeries1.push(seriesPrototype[1].data[i]);
renderSeries2.push(seriesPrototype[2].data[i]);
renderSeries3.push(seriesPrototype[3].data[i]);
renderSeries4.push(seriesPrototype[4].data[i]);
renderSeries5.push(seriesPrototype[5].data[i]);
renderSeries6.push(seriesPrototype[6].data[i]);
}
});
xAxis.categories = renderCategories;
seriesPrototype[0].data = renderSeries0;
seriesPrototype[1].data = renderSeries1;
seriesPrototype[2].data = renderSeries2;
seriesPrototype[3].data = renderSeries3;
seriesPrototype[4].data = renderSeries4;
seriesPrototype[5].data = renderSeries5;
seriesPrototype[6].data = renderSeries6;
meshCapacityChart = Highcharts.chart('account_overview', {
accessibility: {
enabled: false
},
chart: {
backgroundColor: '#801217',
borderColor: '#801217',
styledMode: true,
type: 'column'
},
credits: {
enabled: false
},
plotOptions: {
column: {
borderRadius: 0,
tooltip: {
headerFormat: '{point.key} ',
pointFormat: '{series.name}: {point.y:.2f}',
xDateFormat: ttDateFormatter
}
},
series: {
groupPadding: 0,
pointPadding: 0,
stacking: "overlap"
}
},
title: {
text: undefined
},
xAxis: xAxis,
yAxis: {
title: undefined
},
series: seriesPrototype
});
let USDollar = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 0,
minimumFractionDigits: 0
});
if ( meshSupplementalBill == 0 ) {
var meshShowSupplemental = '$0';
} else {
var meshShowSupplemental = USDollar.format(Math.round(meshSupplementalBill * 315));
}
$('.supplemental-value').text(meshShowSupplemental);
$('.supplemental-value').addClass('emphasize-update');
if ( xAxis.categories.length == 0 ) {
$(".mesh-info").addClass("hide");
} else {
$(".mesh-info").removeClass("hide");
}
setTimeout(function() {
$('.supplemental-value').removeClass('emphasize-update');
}, 250);
$('.agreement-hour-chart-update').addClass('agreement-hour-chart-update');
setTimeout(function() {
$('.agreement-hour-chart-update').removeClass('agreement-hour-chart-update');
}, 250);
}
function buildModulePagination() {
$(".pagination").empty();
if ( paginationTotalItems % 10 == 0 ) {
pages = parseInt(paginationTotalItems/10);
} else {
pages = parseInt(paginationTotalItems/10) + 1;
}
$(".pagination-row").addClass('pagination-hide');
if ( pages == 1 ) {
// Account for showing closed items may result in split page visibility.
$(".pagination-row").removeClass('pagination-hide');
$(".pagination-nav").addClass("hide");
return;
} else {
$(`.pagination-row[data-page='${paginationCurrentPage}']`).removeClass('pagination-hide');
}
if ( paginationCurrentPage == 0 ) {
paginationCurrentPage = 1;
}
if ( paginationCurrentPage > pages ) {
paginationCurrentPage = pages;
}
var paginationFirstPage = 1;
var paginationMaxPage = pages;
var truncateLeft = false;
var truncateRight = false;
if ( pages <= 7 ) {
paginationFirstPage = 1; // Really just need to rule this out.
} else if ( paginationCurrentPage < 5 ) {
paginationFirstPage = 2;
paginationMaxPage = 5;
if ( pages > 7 ) {
truncateLeft = false;
truncateRight = true;
}
} else if ( paginationCurrentPage > pages - 5 ) {
paginationFirstPage = pages - 5;
paginationMaxPage = pages - 1;
if ( pages > 7 ) {
truncateLeft = true;
truncateRight = false;
}
} else {
paginationFirstPage = paginationCurrentPage - 2;
paginationMaxPage = paginationCurrentPage + 2;
if ( pages > 7 ) {
truncateLeft = true;
truncateRight = true;
}
}
if ( paginationCurrentPage == 1 ) {
$(".pagination").append('1 ');
} else {
$(".pagination").append('1 ');
}
if ( truncateLeft ) {
$(".pagination").append('… ');
}
for( var i=2; i < pages; i++ ) {
if ( i < paginationFirstPage || i > paginationMaxPage ) {
continue;
}
if ( i == paginationCurrentPage ) {
$(".pagination").append(`${i} `);
} else {
$(".pagination").append(`${i} `);
}
}
if ( truncateRight ) {
$(".pagination").append('… ');
}
if ( paginationCurrentPage == pages ) {
$(".pagination").append(`${pages} `);
} else {
$(".pagination").append(`${pages} `);
}
}