TestApplications/Web/js/utils.js (508 lines of code) (raw):
var pages = ['/index.htm', '/page1.htm', '/page3.htm', '/page4.htm', '/page5.htm', '/page6.htm', '/page7.htm', '/page8.htm', '/page2.htm']
var data = {};
var sliderCheck = {};
$(document).ready(function () {
checkLogin();
initPaging();
reformTitle('salad');
$('html').click(function () {
closeSearch();
$('.salad ul').hide();
});
$('.epam-logo').click(function () {
location.href = pages[0].substring(1, pages[0].length);
});
$('.metals input').val($('.metals select').val());
$(':radio').bind('click', function (event) {
var descr = (this.name == 'custom_radio_odd') ? 'Summary (Odd)' : '';
descr = (this.name == 'custom_radio_even') ? 'Summary (Even)' : descr;
logEvent(this, descr);
});
if ($('.uui-table.dynamic').length > 0) {
var table = $('.uui-table.dynamic').DataTable();
$('.uui-table.dynamic').on('length.dt', function (e, settings, len) {
logDataTable('length, new value=' + len)
});
$('.uui-table.dynamic').on('draw.dt', function (e) {
logDataTable('draw')
});
$('.uui-table.dynamic').on('search.dt', function (e, b) {
logDataTable('search, search value=' + table.search())
});
$('.uui-table.dynamic').on('page.dt', function (e) {
var info = table.page.info();
logDataTable('page, ' + 'Showing page: ' + (info.page + 1) + ' of ' + info.pages)
});
$('.uui-table.dynamic').on('order.dt', function (e) {
var order = table.order();
logDataTable('order,' + ' Column ' + order[0][0] + ' sorted by ' + order[0][1])
});
var logDataTable = function (event) {
if (event) {
var item = '<li>' + getTimeString() + ' Datatable Events: ' + event + ' ' + '</li>';
$('.logs').prepend(item);
}
}
}
$(document).on('click', '.seeMore', function () {
logEvent(this);
});
$(document).on('click', ':checkbox', function () {
logEvent(this);
});
$(':button').bind('click', function () {
var text = (this.innerText) ? this.innerText.toLowerCase() : this.textContent.toLowerCase();
if (!text)text = $(this).val().toLowerCase();
if (text === 'calculate') {
logEvent(this);
calculateValue();
return false;
} else if (text === 'submit') {
logEvent(this);
data = {};
submitForm();
return false;
} else if (text === 'enter') {
login();
return false;
} else if (text === 'logout') {
logout();
return false;
} else if (text === 'default button') {
logEvent(this);
return false;
} else if (text === 'button') {
logEvent(this);
return false;
} else if (text === 'reestablish') {
reestablish();
logEvent(this);
return false;
} else if (text === 'apply') {
deleteColumn();
logEvent(this);
return false;
}
});
deleteColumn();
function deleteColumn() {
var valuesForShow = $('#columns select').val();
if (!window.Columns) {
var columnsHeader = $('.table-delete>thead>tr>th');
var columns = [];
$('.table-delete-body tr').each(function (i, obj) {
columns.push($(this).find('td'));
});
var columnsFooter = $('.table-delete>tfoot>tr>th');
window.Columns = {
columnsHeader: columnsHeader,
columns: columns,
columnsFooter: columnsFooter
}
} else {
appendAll()
}
var valuesForRemove = ['Column 1', 'Column 2', 'Column 3'];
if (valuesForShow && valuesForShow.length > 0) {
$.each(valuesForShow, function (i, obj) {
var index = valuesForRemove.indexOf(obj);
if (index > -1) {
valuesForRemove.splice(index, 1);
}
});
}
var arrayForRemove = [];
$.each(valuesForRemove, function (i, obj) {
var optId = 0;
if (obj == 'Column 1') optId = 1;
if (obj == 'Column 2') optId = 2;
if (obj == 'Column 3') optId = 3;
$('.table-delete>thead>tr>th').each(function (index, obj) {
if (index == optId) {
arrayForRemove.push($(obj));
}
});
$('.table-delete-body>tbody>tr').each(function (i, obj) {
arrayForRemove.push($($(this).find('td')[optId]));
});
$('.table-delete>tfoot>tr>th').each(function (index, obj) {
if (index == optId) {
arrayForRemove.push($(obj));
}
});
});
$.each(arrayForRemove, function (i, remove) {
remove.remove();
});
}
function appendAll() {
//$('.table-delete>thead>tr>th').remove();
$.each(window.Columns.columnsHeader, function (i, th) {
$('.table-delete>thead>tr').append(th);
});
$.each(window.Columns.columnsFooter, function (i, th) {
$('.table-delete>tfoot>tr').append(th);
});
$.each(window.Columns.columns, function (i, tr) {
// $($($('.table-delete-body tr')[i]).find('td')).remove();
$($('.table-delete-body tr')[i]).append(tr);
});
}
function reestablish() {
$('#columns select').selectpicker('selectAll');
appendAll();
}
$('td.title-col span').on('click', function () {
$('.table-delete-body tr').removeClass('active');
$(this).closest('tr').addClass('active');
logEvent($(this).closest('tr')[0]);
});
$('.table-click tr').on('click', function (event) {
$('.table-click tr').removeClass('active');
$(this).addClass('active');
logEvent(this);
});
$('.table-td-click tr td').on('click', function (event) {
$('.table-td-click td').removeClass('active');
$(this).addClass('active');
logEvent(this);
});
$('#Name').bind('change', function () {
logEvent(this);
});
$('#LastName').bind('change', function () {
logEvent(this);
});
$('#Description').bind('change', function () {
logEvent(this);
});
$('.colors select').bind('change', function () {
logEvent(this, 'Colors');
});
$('#columns select').bind('change', function () {
logEvent(this, 'Columns');
});
$('.metals select').bind('change', function () {
$('.metals input').val($('.metals select').val());
logEvent(this, 'Metals');
});
$('.metals input').bind('change', function () {
logEvent(this, 'Metals');
});
$('#datepicker input').bind('change', function () {
logEvent(this, 'Period');
});
$('#timepicker').bind('change', function () {
logEvent(this, 'Time');
});
if ($('.range-from input').length === 2) {
$($('.range-from input')[0]).bind('change', function () {
logEvent(this, 'Range 1(From)');
});
$($('.range-from input')[1]).bind('change', function () {
logEvent(this, 'Range 1(To)');
});
}
$('.search > .icon-search').bind('click', function () {
if ($('.search-active').hasClass('hidden')) {
openSearch();
}
});
$('.search').bind('click', function (event) {
event.stopPropagation();
if ($(event.target).hasClass('active') && $('.search input').val()) {
location.href = pages[2].substring(1, pages[2].length);
}
});
$('.uui-profile-menu a').bind('click', function () {
$('.login-txt').addClass('hidden');
});
$('.salad').bind('click', function (event) {
event.stopPropagation();
reformTitle('salad');
$('.salad ul').show();
});
if ($('.uui-slider.range').length > 0) {
var pos = [20, 100];
$('.uui-slider.range').slider({
range: true,
min: 0,
max: 100,
values: pos,
slide: function (event, ui) {
$($('.uui-slider.range a span')[0]).text(ui.values[0]);
$($('.uui-slider.range a span')[1]).text(ui.values[1]);
}
}
);
$('.uui-slider.range a').each(function (index) {
$(this).append('<span>' + pos[index] + '</span>');
});
$($('.uui-slider.range a')[0]).bind('mousedown', function () {
sliderCheck['elem'] = this;
sliderCheck['descr'] = 'Range 2(From)';
});
$($('.uui-slider.range a')[1]).bind('mousedown', function () {
sliderCheck['elem'] = this;
sliderCheck['descr'] = 'Range 2(To)';
});
$('html').bind('mouseup', function () {
if (Object.keys(sliderCheck).length > 0) {
logEvent(sliderCheck['elem'], sliderCheck['descr']);
sliderCheck = {};
}
});
}
$('.fileinput a').bind('click', function () {
$('input[type=file]').click();
return false;
});
$('input[type=file]').bind('change', function () {
$('.filename').removeClass('hidden');
$('.filename span').text($('input[type=file]')[0].files[0].name)
logEvent(this, 'FileUpload');
});
});
function openSearch() {
$('.search-active').removeClass('hidden');
$('.search > .icon-search').addClass('hidden');
$('.search-field input').focus();
}
function closeSearch() {
$('.search-active').addClass('hidden');
$('.search > .icon-search').removeClass('hidden');
}
function login() {
if ($('input#Login').val() == 'epam' && $('input#Password').val() == '1234') {
$.cookie('authUser', 'true');
$('.login-txt').addClass('hidden');
checkLogin();
} else {
$('.login-txt').removeClass('hidden');
}
}
function logout() {
$.cookie('authUser', null)
checkLogin();
}
function checkLogin() {
if ($.cookie('authUser') && $.cookie('authUser') != 'null') {
$('.dropdown-menu-login form').addClass('hidden');
$('.dropdown-menu-login .logout').removeClass('hidden');
$('.profile-photo span').removeClass('hidden');
} else {
if (location.pathname.indexOf(pages[0]) < 0)
location.href = pages[0].substring(1, pages[0].length);
$('.dropdown-menu-login form').removeClass('hidden');
$('.dropdown-menu-login .logout').addClass('hidden');
$('.profile-photo span').addClass('hidden');
}
$('#Login').val('');
$('#Password').val('');
}
function passwordFocus() {
$('#Password').focus();
}
function reformTitle(cname) {
if ($('.' + cname + ' button').length > 0) {
var title = '';
$('.' + cname + ' :checkbox:checked').each(function () {
if (this.labels) {
title += this.labels[0].innerText;
} else {
title += this.nextElementSibling.innerHTML;
}
title += ', ';
});
if (title.length > 0) title = title.substring(0, title.length - 2)
title = '<span class="caret"></span>' + title;
$('.' + cname + ' button').html(title);
}
}
function initPaging() {
var testLocArr = location.pathname.split('/');
var testLoc = '';
if (testLocArr.length > 0)
testLoc = '/' + testLocArr[testLocArr.length - 1];
else testLoc = location.pathname;
var num = pages.indexOf(testLoc);
var linum = (num < 2) ? num : num + 1;
$('.sidebar-menu li').removeClass('active');
$($('.sidebar-menu li')[linum]).addClass('active');
if (linum == 3 || linum == 4 || linum == 5 || linum == 6 || linum == 7 || linum == 8) {
$($('.sidebar-menu li')[2]).addClass('active');
$('.sidebar-menu li .sub').show();
}
if ($('.uui-pagination')) {
if (num == 1) {
$('.prev').addClass('disable');
$('.first').addClass('disable');
} else if (num == pages.length - 1) {
$('.next').addClass('disable');
$('.last').addClass('disable');
}
for (var i = 1; i < pages.length; i++) {
var str = (i == num) ? ' class="active"' : '';
$('<li' + str + '><a href="' + pages[i].substring(1, pages[i].length) + '">' + i + '</a></li>').insertBefore('.uui-pagination .last');
}
if (num != pages.length - 1) $('.next:not(.disable) a').attr('href', pages[num + 1].substring(1, pages[num + 1].length));
if (num > 1) $('.prev:not(.disable) a').attr('href', pages[num - 1].substring(1, pages[num - 1].length));
$('.first:not(.disable) a').attr('href', pages[1].substring(1, pages[1].length));
$('.last:not(.disable) a').attr('href', pages[pages.length - 1].substring(1, pages[pages.length - 1].length));
}
}
function calculateValue() {
if ($('input[name=custom_radio_odd]:checked').length > 0 && $('input[name=custom_radio_even]:checked').length > 0) {
var sum = 0
if ($('input[name=custom_radio_odd]:checked')[0].labels)
sum = parseInt($('input[name=custom_radio_odd]:checked')[0].labels[0].innerText) + parseInt($('input[name=custom_radio_even]:checked')[0].labels[0].innerText);
else
sum = parseInt($('input[name=custom_radio_odd]:checked')[0].nextElementSibling.innerHTML) + parseInt($('input[name=custom_radio_even]:checked')[0].nextElementSibling.innerHTML);
if ($('.summ-res').length === 0) {
$('.results').append('<li class="summ-res"></li>');
}
$('.summ-res').text('Summary: ' + sum);
}
}
function submitForm() {
var data = [];
/*Name*/
data.push({'key': 'name', 'value': $('#Name').val(), 'description': 'Name'});
/*LastName*/
data.push({'key': 'lname', 'value': $('#LastName').val(), 'description': 'Last Name'});
/*Description*/
data.push({'key': 'descr', 'value': $('#Description').val(), 'description': 'Description'});
/*Summary*/
calculateValue();
/*Elements*/
var el = '';
$('.elements :checkbox:checked').each(function () {
if (this.labels)
el += this.labels[0].innerText;
else
el += this.nextElementSibling.innerHTML;
el += ', ';
});
if (el.length > 0) {
el = el.substring(0, el.length - 2);
data.push({'key': 'elem', 'value': el, 'description': 'Elements'});
}
/*Colors*/
data.push({'key': 'col', 'value': $('.colors select').val(), 'description': 'Color'});
/*Metals*/
data.push({'key': 'met', 'value': $('.metals input').val(), 'description': 'Metal'});
/*Salad*/
if ($('.salad button').length > 0) {
data.push({
'key': 'sal',
'value': ($('.salad button').text()) ? $('.salad button').text() : ' ',
'description': 'Vegetables'
});
}
/*Period*/
data.push({'key': 'date', 'value': $('#datepicker input').val(), 'description': 'Period'});
/*Time*/
data.push({'key': 'time', 'value': $('input#timepicker').val(), 'description': 'Time'});
/*Range 1*/
if ($('.range-from input').length === 2 && $('.range-from input')[0].value && $('.range-from input')[1].value) {
data.push({
'key': 'range',
'value': 'from ' + $('.range-from input')[0].value + ' to ' + $('.range-from input')[1].value,
'description': 'Range 1'
});
}
/*Range 2*/
if ($('.uui-slider.range').length > 0) {
data.push({
'key': 'slider',
'value': 'from ' + $('.uui-slider.range a span')[0].innerHTML + ' to ' + $('.uui-slider.range a span')[1].innerHTML,
'description': 'Range 2'
});
}
/*FileUpload*/
if ($('input[type=file]').length > 0 && $('input[type=file]')[0].files.length > 0) {
data.push({
'key': 'upload',
'value': 'File "' + $('input[type=file]')[0].files[0].name + '"',
'description': 'File Upload'
});
}
/*Submit*/
submitHelper(data);
}
function submitHelper(data) {
$.each(data, function (index, item) {
if (item.value) {
if ($('.' + item.key + '-res').length === 0) $('.results').append('<li class="' + item.key + '-res"></li>');
var res = item.description + ': ' + $('<div/>').text(item.value).html();
$('.' + item.key + '-res').text(res);
}
});
}
function logEvent(elem) {
logEvent(elem, '');
}
function logEvent(elem, descr) {
var value;
var name;
switch (elem.type) {
case 'radio':
if (elem.labels)
value = ' value changed to ' + elem.labels[0].innerText;
else
value = ' value changed to ' + elem.nextElementSibling.innerHTML;
break;
case 'checkbox':
if (elem.labels)
name = elem.labels[0].innerText;
else
name = elem.nextElementSibling.innerHTML;
value = ' condition changed to ' + elem.checked;
break;
case 'button':
if (elem.textContent.toLowerCase() === 'calculate' || elem.textContent.toLowerCase() === 'submit') {
value = elem.textContent.toLowerCase() + 'button clicked';
} else {
value = 'button clicked';
}
break;
case 'text':
value = ' value changed to ' + $('<div/>').text(elem.value).html();
break;
case 'file':
value = ' file "' + elem.files[0].name + '" has been uploaded';
break;
case 'textarea':
value = ' value changed to ' + $('<div/>').text(elem.value).html();
break;
case 'select-one':
value = ' value changed to ' + elem.value;
break;
case 'select-multiple':
var val = $(elem).val();
value = ' value changed to ' + ((val != null && val.length > 0) ? val.join(', ') : '');
break;
default:
if (elem.tagName.toUpperCase() == 'TR') {
if ($(elem).hasClass('active')) {
value = (elem.rowIndex + 1) + ' row has been selected'
} else {
value = (elem.rowIndex + 1) + ' row has been unselected'
}
}
if (elem.tagName.toUpperCase() == 'TD') {
if ($(elem).hasClass('active')) {
value = 'value=' + (elem.innerText) + '; cell has been selected'
}
}
else if (elem.tagName.toUpperCase() == 'BUTTON') {
value = 'button clicked';
} else if (elem.tagName.toUpperCase() == 'A') {
value = elem.innerText + ' link clicked';
}
else if ($(elem).hasClass('ui-slider-handle')) {
value = ' value changed to ' + elem.text;
} else {
value = '';
}
break;
}
if (!name) {
name = (descr) ? descr : ((elem.name) ? elem.name : ((elem.id) ? elem.id : elem.type));
}
if (value) {
var item = '<li>' + getTimeString() + ' ' + (name || '') + ':' + value + '</li>';
$('.logs').prepend(item);
}
}
function getTimeString() {
var time = new Date();
var hrs = time.getHours();
var min = time.getMinutes();
var sec = time.getSeconds();
return ((hrs > 9) ? hrs : '0' + hrs) + ':' + ((min > 9) ? min : '0' + min) + ':' + ((sec > 9) ? sec : '0' + sec);
}