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('
Content Loading...
'); $("#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}
  • `); } }