Skip to content

Instantly share code, notes, and snippets.

@gtaing1
Created July 31, 2018 20:44
Show Gist options
  • Save gtaing1/2bec91347eff47e0a156433bd1ff408d to your computer and use it in GitHub Desktop.
Save gtaing1/2bec91347eff47e0a156433bd1ff408d to your computer and use it in GitHub Desktop.
if (typeof (CFADashboard) == 'undefined') {
var CFADashboard = {};
}
CFADashboard.AdminOnlineVideoControl = (function () {
var _config;
return {
init: function (config) {
_config = config;
this.reload();
this.enableMulti();
this.openPage();
this.Settings();
this.marketFilter();
this.initMulti();
this.CampaignFilterViz();
this.popOver();
},
reload: function () {
CFADashboard.AdminOnlineVideoControl.LogUserActivity();
setTimeout(function () {
if (document.URL.indexOf("#") == -1) {
// Set the URL to whatever it was plus "#".
url = document.URL + "#";
location = "#";
//Reload the page
window.location.reload(true);
console.log("refreshed");
}
}, 1000);
},
LogUserActivity: function () {
var uEmail = Email;
var uRole = Role;
var uPage = Page;
var uDate = Date;
var uName = Name;
if (!document.URL.includes('#')) {
var data = {};
data = JSON.stringify({
date: uDate,
email: uEmail,
username: uName,
role: uRole,
pageVisited: uPage
});
$.ajax({
type: 'POST',
url: _config.LogUserActivity,
dataType: 'json',
contentType: 'application/json',
data: data,
success: function (response) {
console.log("user activity has been captured.")
},
error: function (xhr, status, error) {
console.log(error);
}
});
}
else {
console.log("User's activity has already been captured");
}
},
Settings: function () {
// if (document.URL.indexOf("#") == -1) { //Check if the current URL contains '#'
// url = document.URL + "#"; // use "#". Add hash to URL
// location = "#";
// location.reload(true); //Reload the page
// }
// $('select option:contains("National")').prop('selected', true)
//adding active class on navbar main
$('ul.nav.navbar-nav').find('a[href="' + location.pathname + '"]')
.closest('li').addClass('active');
//adding active class on btn-group,
$(".btn-group > .btn").click(function () {
$(this).addClass("active").siblings().removeClass("active");
});
//activating multiselect feature within global filter
//connecting daterangepicker to Tableau Date Range function.
var dp = $('#daterange').daterangepicker({
"startDate": "02/06/2017",
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
},
function (start, end, label) {
start = moment(start).format('MM/DD/YYYY');
end = moment(end).format('MM/DD/YYYY');
CFADashboard.AdminOnlineVideoControl.vizDateRange(start, end) //calling tableau method.
}
);
$('.demo i').click(function () {
$(this).parent().find('input').click();
});
},
smoothScroll: function () {
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function (event) {
// On-page links
if (
location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
&&
location.hostname == this.hostname
) {
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length) {
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate({
scrollTop: target.offset().top - 200
}, 500, function () {
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) { // Checking if the target was focused
return false;
} else {
$target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
};
});
}
}
});
},
enableMulti: function () {
$('#campaign-select').multiselect({
buttonWidth: '200px',
includeSelectAllOption: true,
});
$('#market-select').multiselect(
{
includeSelectAllOption: true,
filterBehavior: 'value',
enableFiltering: true,
buttonWidth: '200px',
onSelectAll: function () {
CFADashboard.AdminOnlineVideoControl.initMulti();
},
onDeselectAll: function () {
CFADashboard.AdminOnlineVideoControl.initMulti();
},
onChange: function () {
CFADashboard.AdminOnlineVideoControl.initMulti();
var markets = $('#market-select option:selected');
CFADashboard.AdminOnlineVideoControl.vizFilter1(markets);
}
});
//$('#social-market-select').multiselect('select', "National")
},
popOver: function () {
$('#pop-over').popover({
trigger: "hover",
title: 'What is a “Multiple” campaign?',
placement: 'right',
container: 'body',
content: '“Multiple” refers to campaigns that are supporting multiple initiatives (e.g. Breakfast and Smokehouse). Campaigns are bought in this way to allow for efficiencies during execution and more agile delivery. The data represented is not the aggregation of individual initiatives and should be read as a separate campaign.'
}).popover('hide');
},
CampaignFilterViz: function () {
var selected = [];
$('#campaign-select').change(function () {
selected = $("#campaign-select").val();
CFADashboard.AdminOnlineVideoControl.vizFilter2(selected);
});
},
openPage: function () {
$('#market-select')
.multiselect('selectAll', false)
.multiselect('updateButtonText');
//CFADashboard.AdminOnlineVideoControl.initMulti();
},
initMulti: function (checked, option) {
var markets = $('#market-select option:selected');
var selected = [];
var json = "'" + JSON.stringify(selected) + "'";
$(markets).each(function (index, markets) {
selected.push($(this).val())
});
$.ajax({
type: "POST",
dataType: "json",
url: _config.GetCampaignsByMarket,
data: JSON.stringify({
marketValue: selected
}),
contentType: 'application/json',
success: function (data) {
var items = ''; //the original example which makes constant call to dom when the other one makes call only twice
$('.select-ajax').empty();
$.each(data, function (key, val) {
$('.select-ajax').append('<option selected value="' + val.CampaignInitiative + '">' + val.CampaignInitiative + '</option>');
items += "<option value='" + val.CampaignInitiative + "'>" + val.CampaignInitiative + "</option>";
});
//var options = data.map(function (o) {
// return '<option selected value="' + o.CampaignInitiative + '">' + o.CampaignInitiative + '</option>'; // faster as it only accesses the DOM twice, compared to the original's 2+N array items.'
//}).join('');
$('.select-ajax').multiselect('rebuild');
},
error: function (xhr, status, error) {
}
})
},
marketFilter: function () {
$('#market-select').change(function () {
var Accessids = [];
var markets = ('#market-select option:selected');
var selected = [];
var json = "'" + JSON.stringify(selected) + "'";
$(markets).each(function (i, obj) {
selected.push($(this).val())
});
console.log('h', selected);
CFADashboard.AdminOnlineVideoControl.vizFilter1(selected);
});
},
//MDM Tableau Market Filter Function
vizFilter1: function (filterValue) {
sheet = viz1.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("MDM Campaign Market - Funding Category Code", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz0.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("MDM Campaign Market - Funding Category Code", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz2.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("MDM Campaign Market - Funding Category Code", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz3.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("MDM Campaign Market - Funding Category Code", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz4.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("MDM Campaign Market - Funding Category Code", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
}, //MDM Tableau Market Filter Ends Here
//MDM Tableau Campaign Filter Starts Here
vizFilter2: function (filterValue) {
sheet = viz1.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("Campaign Initiative", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz0.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("Campaign Initiative", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz2.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("Campaign Initiative", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz3.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("Campaign Initiative", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
sheet = viz4.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyFilterAsync("Campaign Initiative", filterValue, tableauSoftware.SelectionUpdateType.REPLACE)
}
},
vizDateRange: function (minDate, maxDate) {
sheet = viz0.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyRangeFilterAsync("WEEK(DCM Date)", {
min: new Date(minDate),
max: new Date(maxDate)
});
}
sheet = viz1.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyRangeFilterAsync("WEEK(DCM Date)", {
min: new Date(minDate),
max: new Date(maxDate)
});
}
sheet = viz2.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyRangeFilterAsync("WEEK(DCM Date)", {
min: new Date(minDate),
max: new Date(maxDate)
});
}
sheet = viz3.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyRangeFilterAsync("WEEK(DCM Date)", {
min: new Date(minDate),
max: new Date(maxDate)
});
}
sheet = viz4.getWorkbook().getActiveSheet();
worksheetsArray = sheet.getWorksheets();
for (var i = 0; i < worksheetsArray.length; i++) {
worksheetsArray[i].applyRangeFilterAsync("WEEK(DCM Date)", {
min: new Date(minDate),
max: new Date(maxDate)
});
}
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment