var dashBoard;
var userPermission;
var plot1;
$(document).ready(function () {
var dialog, form,
name = $("#name"),
allFields = $([]).add(name),
tips = $(".validateTips");
function updateTips(t) {
tips.text(t).addClass("ui-state-highlight");
}
function checkLength(o, min, max) {
if (o.val().length < min) {
o.focus();
updateTips(lblEnterName);
return false;
} else if (o.val().length > max) {
o.focus();
updateTips(lblNameMustHaveLessThan + max + lblCharacters);
return false;
} else {
return true;
}
}
function checkParticipantAvailability(o, value) {
var result = true;
var participantName = value.trim();
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].name.toLowerCase() == participantName.toLowerCase()) {
o.focus();
updateTips(lblParticipantExist);
result = false;
}
}
if (participantName != "" && participantName.indexOf(',') === -1 && participantName.indexOf('|') === -1) {
} else {
updateTips(lblParticipantShouldNotContain);
result = false;
}
return result;
}
function addNewParticipant() {
var valid = true;
allFields.removeClass("ui-state-error");
valid = checkLength(name, 1, 12);
if (valid) {
valid = checkParticipantAvailability(name, name.val());
}
if (valid) {
dashBoard.addParticipant(name.val(), "1");
dialog.dialog("close");
}
return valid;
}
dialog = $("#dialog-form").dialog({
autoOpen: false,
height: 170,
width: 70,
modal: true,
buttons: {
"Add": addNewParticipant,
Cancel: function () {
dialog.dialog("close");
}
},
close: function () {
form[0].reset();
allFields.removeClass("ui-state-error");
}
});
form = dialog.find("form").on("submit", function (event) {
event.preventDefault();
addNewParticipant();
});
$("#create-participant").click(function () {
dialog.dialog("open");
});
if ($("#expenseData").val() == "") {
$("#expense_table_title_id").html("");
$("#div_participant").html("
" + lblExpenseNotFound + "
");
$("#create-participant").hide();
return;
}
var loadTabs = new LoadTabs();
loadTabs.startLoading($.parseJSON($("#expenseData").val()));
// alert("hello");
//''alert($("#expenseData").val());
// $("#dvLoading").show();
//var expenseObj = new Expense();
//expenseObj.unique_url = $("#unique_url").val();
// loadData(expenseObj,"#loadForm");
// var loadTabs = new LoadTabs();
// loadTabs.startLoading();
});
function LoadTabs() {
this.startLoading = function startLoading(data) {
this.generateExpenseList(data);
}
this.calculateBalance = function calculateBalance() {
}
this.loadParticipants = function loadParticipants() {
}
this.loadSettings = function loadSettings() {
}
this.generateExpenseList = function generateExpenseList(expenseInfoObj) {
dashBoard = new DashBoard();
userPermission = new UserPermission();
//var participantIndex = 0;
//var groupExpenseIndex = 0
$.each(expenseInfoObj, function (key, val) {
// alert(key);
if (key == "Expense") {
var expenseObj = new Expense();
expenseObj.id = val.id;
expenseObj.unique_url = val.unique_url;
expenseObj.title = val.title;
expenseObj.currency = val.currency;
expenseObj.description = val.description;
expenseObj.create_date = val.create_date;
expenseObj.version = val.version;
dashBoard.expense = expenseObj;
$("#expenseTitleDiv").html(expenseObj.title);
$("#expenseDescDiv").html(expenseObj.description);
$("#ExpenseVersion").val(expenseObj.version);
// $(document.body).append(object.id);
/* $.each(val, function (i, object) {
expObj.id =
$(document.body).append(i+"="+object);
});
*/
} else if (key === "Participant") {
$.each(val, function (i, object) {
var participantObj = new Participant();
participantObj.id = object.participant_id;
participantObj.name = object.name;
participantObj.isCreator = object.is_creator;
participantObj.create_date = object.create_date;
participantObj.totalPaid = 0;
participantObj.totalSpent = 0;
participantObj.balance = 0;
//set login participant Id and name
/* if(participantObj.isCreator == "1"){
dashBoard.loginParticipantId = participantObj.id;
dashBoard.loginParticipantName = participantObj.name;
}*/
dashBoard.participants[participantObj.id] = participantObj;
// $(document.body).append(i+"="+object);
});
/* $.each(val, function (i, object) {
$(document.body).append(i+"="+object);
});*/
//participantObj.push(val);
} else if (key === "GroupExpense") {
$.each(val, function (i, object) {
// alert("hello");
// alert(object.expense_date_new);
var groupExpense = new GroupExpense();
// groupExpense.index = dashBoard.globalExpenseIndex;
groupExpense.id = object.id;
groupExpense.paidBy = object.paid_by_participant_id;
groupExpense.expenseName = object.what;
groupExpense.create_date = object.create_date;
groupExpense.amount = object.amount;
groupExpense.participantAmountStr = object.participant_amount;
groupExpense.expenseDate = object.expense_date_new;
groupExpense.number_of_notes = object.number_of_notes;
groupExpense.number_of_modificaiton = object.number_of_modificaiton;
groupExpense.isDetails = object.isDetails;
groupExpense.type = object.type;
groupExpense.extras = object.extras;
groupExpense.advance = object.advance;
groupExpense.images = object.images;
groupExpense.expense_type = object.expense_type;
//alert(groupExpense.extras);
dashBoard.groupExpenses[groupExpense.id] = groupExpense;
dashBoard.globalExpenseIndex++;
// alert(dashBoard.groupExpenses[object.id]);
// $(document.body).append(i+"="+object);
});
}
else if (key === "Permissions") {
// alert("hello Permission");
$.each(val, function (i, object) {
var permission = new Permission({
id : object.user_id,
name : object.name,
email : object.email,
permission : object.role,
expense_id : dashBoard.expense.id,
permission_name: object.role!= owner ? permission_list[object.role] : 'Owner'
}
);
userPermission.permissions[permission.id] = permission;
});
}
else if (key === "restricted_mode") {
userPermission.restrict_mode = val;
}
});
dashBoard.displayCovePage();
/* for (var index in dashBoard.groupExpenses) {
alet( dashBoard.groupExpenses[index].id);
break;
}*/
//dashBoard.showExpenseList();
dashBoard.setCurrentDate();
}
}
function DashBoard() {
this.restrict_mode;
this.expense;
this.participants = [];
this.groupExpenses = [];
this.permissions = [];
this.filteredGroupExpenses = [];
this.gridData = [];
this.participantAmtHtmlFormat = "";
this.loginParticipantId = "";
this.loginParticipantName = "";
this.paidByHtml = "";
this.currentInputAmount = "0";
this.currentEditGroupExpense;
this.currentDate;
this.isAddMode = true;
//this.isParticipantAddMode = true;
this.globalExpenseIndex = 0;
this.displayCovePage = function displayCovePage() {
var justCreated = $("#justCreated").val();
var createdBy = "";
if (justCreated == "yes") {
var createdById = "";
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].isCreator == "1") {
createdBy = dashBoard.participants[index].name;
createdById = dashBoard.participants[index].id;
break;
}
}
dashBoard.loginParticipant(createdById);
$("#expenseCreatedByDiv").html(lblCreatedBy + createdBy + lblOn + dashBoard.getFormatedDbDate(dashBoard.expense.create_date));
$("#tabs").tabs({ active: 2 });
dashBoard.resetParticipantBalance();
dashBoard.displayParticipantList();
dashBoard.setParticipantGridExtension();
} else {
//hide loading
$("#dvLoading").hide();
//show list of participant
dashBoard.addParticipantToList();
}
}
this.addParticipantToList = function addParticipantToList() {
var participantListHtml = '
';
var noOfParticipant = 0;
for (var index in dashBoard.participants) {
noOfParticipant++;
}
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].isCreator == "1") {
createdBy = dashBoard.participants[index].name;
}
if (noOfParticipant < 6) {
participantListHtml = participantListHtml + '
";
$("#expenseCreatedByDiv").html("Created By " + createdBy + " on " + dashBoard.getFormatedDbDate(dashBoard.expense.create_date));
$("#div_participant").html(participantListHtml);
}
this.loginParticipant = function loginParticipant(participantId) {
dashBoard.loginParticipantId = participantId;
dashBoard.loginParticipantName = session_profile_id ? session_profile_id : dashBoard.participants[participantId].name;
$("#expenseLoginAsDiv").html(lblLoggedInAs + "" + dashBoard.loginParticipantName + "[Quit]");
dashBoard.showExpenseList();
//show print options
$("#printOptionId").show();
$("#participantBox").hide();
$("#tabs").show();
// $("#basic_Info").html("login as "+ dashBoard.loginParticipantName+ " Print");
dashBoard.setPaidBy(dashBoard.loginParticipantId);
// setCookie(participantId);
}
this.logout = function logout() {
$("#expenseLoginAsDiv").html("");
$("#participantBox").show();
$("#tabs").hide();
}
/*
this.getParticipantNameById = function getParticipantNameById(id){
return dashBoard.participants[id].name;
}
*/
this.getNumberOfParticipants = function getNumberOfParticipants() {
var totalParticipant = 0;
for (var index in dashBoard.participants) {
totalParticipant++;
}
return totalParticipant;
}
this.generateLogList = function generateLogList(logData, source) {
var logList = [];
if (logData != "") {
logList = $.parseJSON(logData);
}
var data = [];
$.each(logList, function (key, val) {
$.each(val, function (model, object) {
if (model == "Log") {
var action = 'Deleted';
var new_desc = 'N/A';
var changed_by = object.changed_by;
if(object.new_desc.toLowerCase() !== 'deleted'){
var action = 'Edited';
var new_desc = object.new_desc;
}
if(changed_by == null || changed_by === ''){
changed_by = 'Unknown';
}
data.push([object.id, object.create_date, changed_by, object.previous_desc, new_desc,action]);
}
});
});
var maxRowNum = data.length;
if (maxRowNum < 101) {
maxRowNum = 100;
}
if (source == 2 && data.length == 0) {
data.push(["Record Not Found"]);
$("#log_grid").jqGrid({
datatype: "local",
height: 190,
colNames: [' '],
colModel: [
{
name: ' ',
index: ' ',
sortable: false,
width: 650,
align: 'center',
}
],
gridview: true,
viewrecords: true,
caption: 'Expense Log'
}
);
var names = [' '];
var mydata = [];
for (var i = 0; i < data.length; i++) {
mydata[i] = {};
for (var j = 0; j < data[i].length; j++) {
mydata[i][names[j]] = data[i][j];
}
}
for (var i = 0; i < mydata.length; i++) {
$("#log_grid").jqGrid('addRowData', data[i][0] + 1, mydata[i]);
}
} else {
$("#log_grid").jqGrid({
datatype: "local",
height: 230,
colNames: ['SI', lblChangedOn, lblChangedBy, lblPreviousExpense, lblNewExpense, lblOperation],
colModel: [
{
name: 'SI',
index: 'SI',
width: 0,
sorttype: "int",
hidden: true
},
{
name: 'Changed On',
index: 'Changed On',
width: 110,
align: 'center',
editable: true
},
{
name: 'Changed By',
index: 'Changed By',
width: 80,
align: 'center',
editable: true
},
{
name: 'Previous Expense',
index: 'Previous Expense',
width: 242,
align: 'center',
cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal !important;"' }
},
{
name: 'New Expense',
index: 'New Expense',
width: 242,
align: 'center',
cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal !important;"' }
},
{
name: 'Operation',
index: 'Operation',
width: 80,
align: 'center',
editable: true
}
],
rowNum: maxRowNum,
rowList: [10, 20, 50, maxRowNum],
pager: '#log_pager',
gridview: true,
rownumbers: true,
autoencode: true,
ignoreCase: true,
// sortname: 'invdate',
viewrecords: true,
sortorder: 'desc',
caption: 'Expense Log'
}
);
$("#log_grid").jqGrid('navGrid', '#log_pager', {
add: false,
edit: false,
del: false,
search: true, searchtitle: 'Find Log'
}
);
var names = ['SI', lblChangedOn, lblChangedBy, lblPreviousExpense, lblNewExpense, lblOperation];
var mydata = [];
for (var i = 0; i < data.length; i++) {
mydata[i] = {};
for (var j = 0; j < data[i].length; j++) {
mydata[i][names[j]] = data[i][j];
}
}
for (var i = 0; i < mydata.length; i++) {
$("#log_grid").jqGrid('addRowData', data[i][0] + 1, mydata[i]);
}
}
//jQuery("#log_grid").setGridParam({rowNum:maxRowNum}).trigger("reloadGrid");
}
this.showExpenseList = function showExpenseList() {
// alert(this.groupExpenses.length)
dashBoard.gridData = [];
dashBoard.isAddMode = true;
//var data = [];
//$.each(this.groupExpenses, function( key, value ) {
//var filteredGroupExpenseObj = dashBoard.getFilteredExpenseObj(key,value);
//dashBoard.filteredGroupExpenses[key] = filteredGroupExpenseObj;
for (var index in dashBoard.groupExpenses) {
dashBoard.gridData.push(dashBoard.getDataByExpense(dashBoard.groupExpenses[index]));
}
// alert(value);
// data.push([value.id, dashBoard.getParticipantNameById(value.paidBy), dashBoard.getFormatedAmount(value.amount), value.expenseName, dashBoard.getFormatedDate(value.expenseDate),dashBoard.getInvolveString(value.involves),dashBoard.getForYouString(value.involves)]);
//data[]
//});
//alert(dashBoard.gridData[0]);
dashBoard.setParticipantAmtHtmlFormat();
dashBoard.reloadGrid();
/*data.sort(function(a, b) {
if(a.value < b.value) return 1;
if(a.value > b.value) return -1;
return 0;
});*/
// alert(data);
//var data = [["48803", "DSK1", "", "02200220", "OPEN","OPEN","OPEN","OPEN","OPEN","OPEN"], ["48804", "DSK1", "", "02200220", "OPEN","OPEN","OPEN",]];
//(data1);
}
this.getDataByExpense = function getDataByExpense(groupExpenseObj) {
var key = groupExpenseObj.id;
dashBoard.filteredGroupExpenses[key] = dashBoard.getFilteredExpenseObj(groupExpenseObj);
return [dashBoard.filteredGroupExpenses[key].id, dashBoard.filteredGroupExpenses[key].paidBy, dashBoard.showFormatedAmount(dashBoard.filteredGroupExpenses[key].amount), dashBoard.filteredGroupExpenses[key].expenseName, dashBoard.filteredGroupExpenses[key].expenseDate, dashBoard.filteredGroupExpenses[key].involves, dashBoard.showFormatedAmount(dashBoard.filteredGroupExpenses[key].forYou)];
}
this.getFilteredExpenseObj = function getFilteredExpenseObj(groupExpenseObj) {
var filteredGroupExpenseObj = new FilteredGroupExpense();
filteredGroupExpenseObj.id = groupExpenseObj.id;
filteredGroupExpenseObj.paidBy = dashBoard.participants[groupExpenseObj.paidBy].name;
filteredGroupExpenseObj.amount = dashBoard.getFormatedAmount(groupExpenseObj.amount);
filteredGroupExpenseObj.expenseName = groupExpenseObj.expenseName;
filteredGroupExpenseObj.expenseDate = groupExpenseObj.expenseDate;//dashBoard.getFormatedDate(groupExpenseObj.expenseDate);
filteredGroupExpenseObj.involves = dashBoard.getInvolveString(groupExpenseObj.participantAmountStr);
filteredGroupExpenseObj.forYou = dashBoard.getForYouString(groupExpenseObj.participantAmountStr);
filteredGroupExpenseObj.noOfNotes = groupExpenseObj.noOfNotes;
filteredGroupExpenseObj.noOfModification = groupExpenseObj.noOfModification;
return filteredGroupExpenseObj;
}
this.getFilteredExpenseObjPrint = function getFilteredExpenseObjPrint(groupExpenseObj) {
var filteredGroupExpenseObj = new FilteredGroupExpense();
filteredGroupExpenseObj.id = groupExpenseObj.id;
filteredGroupExpenseObj.paidBy = dashBoard.participants[groupExpenseObj.paidBy].name;
filteredGroupExpenseObj.amount = dashBoard.showFormatedAmount(groupExpenseObj.amount);
filteredGroupExpenseObj.expenseName = groupExpenseObj.expenseName;
filteredGroupExpenseObj.expenseDate = groupExpenseObj.expenseDate;//dashBoard.getFormatedDate(groupExpenseObj.expenseDate);
filteredGroupExpenseObj.involves = dashBoard.getInvolveString(groupExpenseObj.participantAmountStr);
filteredGroupExpenseObj.forYou = dashBoard.getForYouStringPrint(groupExpenseObj.participantAmountStr);
filteredGroupExpenseObj.noOfNotes = groupExpenseObj.noOfNotes;
filteredGroupExpenseObj.noOfModification = groupExpenseObj.noOfModification;
return filteredGroupExpenseObj;
}
this.reloadGrid = function reloadGrid() {
var initDateEdit = function (elem) {
setTimeout(function () {
$(elem).datepicker({
dateFormat: 'dd-M-yy',
autoSize: true,
showOn: 'button', // it dosn't work in searching dialog
changeYear: true,
changeMonth: true,
showButtonPanel: true,
showWeek: true
});
//$(elem).focus();
}, 100);
};
// alert(dashBoard.groupExpenses.length);
var maxRowNum = dashBoard.globalExpenseIndex;
// alert(maxRowNum);
if (maxRowNum < 101) {
maxRowNum = 100;
}
$("#grid").jqGrid({
data: dashBoard.addRowsToGrid(dashBoard.gridData),
datatype: "local",
height: 232,
title: false,
colNames: ['SI', lblWhoPaid, lblHowMuch + '(' + dashBoard.expense.currency + ')?', lblWhatReason, lblWhen, lblInvoles, lblForYou + '(' + dashBoard.expense.currency + ')?'],
colModel: [
{
name: 'SI',
index: 'SI',
width: 0,
sorttype: "int",
hidden: true,
key: true
},
{
name: 'PaidBy',
index: 'PaidBy',
width: 90,
align: 'center',
formoptions: { rowpos: 2 },
editable: true,
edittype: 'select',
editoptions: { value: '1:X', defaultValue: 'X' }
},
{
name: 'Amount',
index: 'Amount',
align: 'center',
sorttype: "int",
width: 120,
formoptions: { elmsuffix: '(' + dashBoard.expense.currency + ')', rowpos: 4 },
editable: true,
editrules: { required: true },
editoptions: {
maxlength: 18, dataInit: function (el) {
$(el).keyup(function () {
//alert(el.value);
el.value = el.value.replace(/[^0-9\.]/g, '');
if (el.value.replace(/[^.]/g, "").length == 2) {
el.value = el.value.substring(0, el.value.length - 1);
}
if (el.value == "") {
dashBoard.currentInputAmount = 0;
} else {
dashBoard.currentInputAmount = el.value;
}
dashBoard.changeExpenseAmount();
});
}
}
},
{
name: 'Reason',
index: 'Reason',
align: 'center',
width: 190,
formoptions: { rowpos: 1 },
editable: true,
editrules: { required: true },
editoptions: { maxlength: 25 }
//sorttype: "float"
},
{
name: 'Date',
index: 'Date',
width: 80,
align: 'center',
sortable: true,
sorttype: 'date',
datefmt: 'd-M-Y',
formoptions: { rowpos: 3 },
editable: true,
editrules: { required: true },
editoptions: { dataInit: initDateEdit }
},
{
name: 'Involve',
index: 'Involve',
align: 'center',
width: 150,
//sorttype: "float",
cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal !important;"' }
},
{
name: 'For you?',
index: 'For you?',
align: 'center',
width: 100,
sorttype: "float"
}
],
rowNum: maxRowNum,
rowList: [10, 20, 50, maxRowNum],
pager: '#expense_pager',
gridview: true,
rownumbers: true,
autoencode: true,
ignoreCase: true,
// sortname: 'invdate',
viewrecords: true,
sortorder: 'desc',
caption: lblExpenseList
// ondblClickRow: function(rowid,iRow,iCol,e){alert('double clicked');}
}
);
//jQuery("#grid").setGridParam({rowNum:10}).trigger("reloadGrid");
//dashBoard.addRowsToGrid(dashBoard.gridData);
// $(".ui-jqgrid-titlebar").hide();
$("#grid").jqGrid('setGridParam', {
onSelectRow: function (rowid, iRow, iCol, e) {
if (!iCol) {
//alert(rowid);
dashBoard.removeParticipantAmtRows();
dashBoard.isAddMode = false;
dashBoard.loadForEdit();
//jQuery(this).jqGrid('editGridRow', rowid);
}
}
}
);
$("#grid").jqGrid('setGridParam', {
ondblClickRow: function (rowid, iRow, iCol, e) {
if (!isPermitted) {
return false;
}
dashBoard.isAddMode = false;
jQuery(this).jqGrid('editGridRow', rowid);
}
});
//$("#grid").jqGrid('setGridParam', { onRightClickRow: function(rowid,iRow,iCol,e){alert('Right Click!');}});
$("#grid").jqGrid('navGrid', '#expense_pager', {
add: isPermitted, addtitle: lblAddExpense,
edit: isPermitted, edittitle: lblEditExpense,
del: isPermitted, deltitle: lblDeleteExpense,
search: true, searchtitle: lblFindExpenses
},
{ // Edit
recreateForm: true,
beforeInitData: function () {
dashBoard.isAddMode = false;
// alert("in edit");
// inEdit = true;
}
},
{ // Add
recreateForm: true,
beforeInitData: function () {
dashBoard.isAddMode = true;
// inEdit = false;
}
}
);
dashBoard.setExpenseGridExtension();
//$('html, body').animate({scrollBottom: $("#gbox_grid").offset().bottom}, 2000);
jQuery("#grid").setGridParam({ rowNum: maxRowNum }).trigger("reloadGrid");
// alert($('#grid')[0].scrollHeight);
$('.ui-jqgrid-bdiv').scrollTop($('#grid')[0].scrollHeight);
}
this.setExpenseGridExtension = function setExpenseGridExtension() {
$.extend($.jgrid.edit, {
addCaption: lblAddExpense,
editCaption: lblEditExpense,
bSubmit: lblSave,
bCancel: lblCancel,
width: 300,
recreateForm: true,
beforeShowForm: function () {
/*
var parentDiv = dlgDiv.parent(); // div#gbox_list
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
// TODO: change parentWidth and parentHeight in case of the grid
// is larger as the browser window
dlgDiv[0].style.top = Math.round((parentHeight-dlgHeight)/2) + "px";
dlgDiv[0].style.left = Math.round((parentWidth-dlgWidth)/2) + "px";
alert("hello");*/
var dlgDiv = $("#editmodgrid");
dlgDiv[0].style.top = "30px";
//
if (dashBoard.isAddMode == true) {
$('#tr_Amount>td.DataTD>input').insertAfter(' ');
$(dashBoard.participantAmtHtmlFormat).insertAfter("#tr_Amount");
$('' + lblSaveContinue + '')
.click(function () {
dashBoard.validateExpenseAddForm(0);
})
.addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left")
.prependTo("#Act_Buttons>td.EditButton");
$('#PaidBy').find('option').remove().end().append(dashBoard.paidByHtml);
dashBoard.refreshParticipantsExpenseProperties(1);
dashBoard.setAllCheckImpact();
dashBoard.hideShowParticipantDetails(false);
$("#Date").val(dashBoard.currentDate);
} else {
dashBoard.loadForEdit();
}
},
beforeSubmit: function (response, postData) {
dashBoard.validateExpenseAddForm(1);
}
});
$.extend($.jgrid.del, {
caption: lblDeleteExpense,
msg: lblWantDeleteExpense,
beforeShowForm: function (){
$.jgrid.viewModal("#delmodgrid");
},
beforeSubmit: function (response, postData) {
dashBoard.deleteExpense();
}
});
}
this.removeParticipantAmtRows = function removeParticipantAmtRows() {
$('#tr_IsDetails').remove();
$('#tr_selectAll').remove();
for (var index in dashBoard.participants) {
$('#tr_Participant' + dashBoard.participants[index].id).remove();
$('#tr_ParticipantDetails' + dashBoard.participants[index].id).remove();
}
}
this.loadForEdit = function loadForEdit() {
$('#tr_Amount>td.DataTD>input').insertAfter(' ');
$(dashBoard.participantAmtHtmlFormat).insertAfter("#tr_Amount");
// alert("in LoadForEdit");
var rowId = $("#grid").jqGrid('getGridParam', 'selrow');
//alert(dashBoard.groupExpenses.length);
var rowData = jQuery("#grid").getRowData(rowId);
//alert(dashBoard.groupExpenses[rowData['SI']].id);
dashBoard.showEditUI(dashBoard.groupExpenses[rowData['SI']]);
$('#PaidBy').find('option').remove().end().append(dashBoard.paidByHtml);
}
this.changeSingleInvolve = function changeSingleInvolve(participantId) {
if ($("#chkParticipant" + participantId).is(':checked')) {
dashBoard.participants[participantId].currentInputExpensePart = 1;
} else {
$("#chkParticipant" + participantId).prop('checked', false);
$("#selectAll").prop('checked', false);
dashBoard.participants[participantId].currentInputExpensePart = 0;
dashBoard.participants[participantId].isFreeze = 0;
}
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showFreezeAmount();
dashBoard.setShadowOnPartTextBox();
dashBoard.scanCheckAllCheckbox();
dashBoard.scanParticipantCheckBoxs();
}
this.changeDetailsPart = function changeDetailsPart(participantId) {
var originalValue = $("#participantTextPart" + participantId).val();
var filteredValue = $("#participantTextPart" + participantId).val().replace(/[^0-9]/g, '');
//alert("hello");
if (filteredValue != "" && parseInt(filteredValue) != dashBoard.participants[participantId].currentInputExpensePart) {
// alert("1");
dashBoard.participants[participantId].currentInputExpensePart = parseInt(filteredValue);
dashBoard.participants[participantId].isFreeze = 0;
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
} else if (originalValue != "") {
// alert("2");
if (filteredValue == "0") {
dashBoard.participants[participantId].isFreeze = 0;
dashBoard.participants[participantId].currentInputExpensePart = 0;
}
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
} else if (originalValue == "") {
if (dashBoard.participants[participantId].isFreeze == 0) {
//dashBoard.participants[participantId].isFreeze = 0
dashBoard.participants[participantId].currentInputExpensePart = 0;
}
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
}
}
this.changeDetailsFreeze = function changeDetailsFreeze(participantId) {
//alert("hello")
var originalValue = $("#participantTextFreeze" + participantId).val();
var filteredValue = $("#participantTextFreeze" + participantId).val().replace(/[^0-9\.]/g, '');
if (filteredValue.replace(/[^.]/g, "").length == 2) {
filteredValue = filteredValue.substring(0, filteredValue.length - 1);
}
if (filteredValue != "" && dashBoard.showFormatedAmount(parseFloat(filteredValue)) != dashBoard.showFormatedAmount(parseFloat(dashBoard.participants[participantId].currentInputExpenseFreezeAmt))) {
//alert("1");
//validate if all the freeze amount exceed the input amount, set the current freeze amount = input-(all other freeze amount)
//filteredValue =
//dashBoard.setFreezeOnUI(participantId,filteredValue);
dashBoard.participants[participantId].currentInputExpensePart = 0;
dashBoard.participants[participantId].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(parseFloat(filteredValue));
if (parseFloat(filteredValue) == parseFloat(0)) {
dashBoard.participants[participantId].isFreeze = 0;
} else {
dashBoard.participants[participantId].isFreeze = 1;
}
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
} else if (originalValue != "") {
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
} else if (originalValue == "") {
//alert("3");
dashBoard.participants[participantId].currentInputExpensePart = 0;
dashBoard.participants[participantId].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(0);
dashBoard.participants[participantId].isFreeze = 0;
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
}
}
this.changeExpenseAmount = function changeExpenseAmount() {
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showFreezeAmount();
dashBoard.showPartAndFreezeAmtInDetails();
dashBoard.scanParticipantCheckBoxs();
dashBoard.setShadowOnPartTextBox();
}
this.setShadowOnPartTextBox = function setShadowOnPartTextBox() {
//alert(participantId);
//alert(dashBoard.participants[participantId].isFreeze);
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].isFreeze == 1) {
$("#participantTextPart" + dashBoard.participants[index].id).prop("value", '');
$("#participantTextPart" + dashBoard.participants[index].id).css('background-color', '#DEDEDE');
} else {
$("#participantTextPart" + dashBoard.participants[index].id).css('background-color', '#FFFFF');
/*if($("#participantTextPart"+participantId).hasProp("background-color")){
$("#participantTextPart"+participantId).removeProp("background-color");
}*/
}
}
}
/*this.setFreezeOnUI = function setFreezeOnUI(participantId,newValue){
if(parseFloat(dashBoard.participants[participantId].currentInputExpenseFreezeAmt) != parseFloat(newValue)){
$("#participantTextPart"+participantId).prop("value", '');
$("#participantTextPart"+participantId).css('background-color' , '#DEDEDE');
}
}*/
this.scanParticipantCheckBoxs = function scanParticipantCheckBoxs() {
var isAllCheck = true;
var numberOfInvolves = 0;
var totalParticipant = 0;
for (var index in dashBoard.participants) {
totalParticipant++;
if (parseFloat(dashBoard.participants[index].currentInputExpenseFreezeAmt) > 0
|| $("#chkParticipant" + dashBoard.participants[index].id).is(':checked')) {
numberOfInvolves++;
$("#chkParticipant" + dashBoard.participants[index].id).prop('checked', true);
} else {
isAllCheck = false;
$("#chkParticipant" + dashBoard.participants[index].id).prop('checked', false);
}
}
//dashBoard.participants.length
if (numberOfInvolves == totalParticipant) {
isAllCheck = true;
}
if (isAllCheck == false) {
$("#selectAll").prop('checked', false);
} else {
$("#selectAll").prop('checked', true);
}
}
this.scanCheckAllCheckbox = function scanCheckAllCheckbox() {
var numberOfInvolves = 0;
var noOfParticipant = 0;
for (var index in dashBoard.participants) {
if (parseFloat(dashBoard.participants[index].currentInputExpenseFreezeAmt) > 0) {
numberOfInvolves++;
}
noOfParticipant++;
}
if (numberOfInvolves == noOfParticipant) {
$("#selectAll").prop('checked', true);
} else {
$("#selectAll").prop('checked', false);
}
}
this.setAllCheckImpact = function setAllCheckImpact() {
var commonValue = dashBoard.getFormatedAmount(0);
var isCheckAll = false;
if ($("#selectAll").is(':checked')) {
isCheckAll = true;
//commonValue = dashBoard.getFormatedAmount(dashBoard.currentInputAmount/dashBoard.getNumberOfParticipants());
}
for (var index in dashBoard.participants) {
if (isCheckAll == true) {
$("#chkParticipant" + dashBoard.participants[index].id).prop('checked', true);
if (dashBoard.participants[index].currentInputExpensePart >= 0) {
dashBoard.participants[index].currentInputExpensePart = 1;
}
} else {
$("#chkParticipant" + dashBoard.participants[index].id).prop('checked', false);
dashBoard.participants[index].currentInputExpensePart = 0;
dashBoard.participants[index].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(0);
}
//$("#pamount_"+dashBoard.participants[index].id).html(commonValue+" "+dashBoard.expense.currency);
}
dashBoard.calculateFinalFreezeExpenseAmount();
dashBoard.showFreezeAmount();
dashBoard.setShadowOnPartTextBox();
}
this.refreshParticipantsExpenseProperties = function refreshParticipantsExpenseProperties(defaultPart) {
dashBoard.currentInputAmount = 0;
for (var index in dashBoard.participants) {
dashBoard.participants[index].currentInputExpensePart = defaultPart;
dashBoard.participants[index].isFreeze = 0;
dashBoard.participants[index].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(0);
}
}
this.showFreezeAmount = function showFreezeAmount() {
for (var index in dashBoard.participants) {
$("#pamount_" + dashBoard.participants[index].id).html(dashBoard.showFormatedAmount(dashBoard.participants[index].currentInputExpenseFreezeAmt) + " " + dashBoard.expense.currency);
}
}
this.calculateFinalFreezeExpenseAmount = function calculateFinalFreezeExpenseAmount() {
//get total parts of current participants
var totalParts = 0;
var totalFreezeAmt = dashBoard.getFormatedAmount(0);
for (var index in dashBoard.participants) {
//alert(dashBoard.participants[index].currentInputExpensePart);
if (parseFloat(dashBoard.participants[index].currentInputExpenseFreezeAmt) == parseFloat(0)) {
dashBoard.participants[index].isFreeze = 0;
}
if (dashBoard.participants[index].isFreeze == 0) {
totalParts += parseInt(dashBoard.participants[index].currentInputExpensePart);
} else {
totalFreezeAmt = dashBoard.getFormatedAmount(parseFloat(totalFreezeAmt) + parseFloat(dashBoard.participants[index].currentInputExpenseFreezeAmt));
}
}
if ((dashBoard.getFormatedAmount(dashBoard.currentInputAmount) > dashBoard.getFormatedAmount(0))
&& (parseFloat(totalFreezeAmt) > parseFloat(dashBoard.currentInputAmount))) {
//if totalFreeze amount exceed expense input reset all the parts and freeze amount equal
//totalFreezeAmt = dashBoard.getFormatedAmount(0);
//dashBoard.resetAllPartAndFreezeAmt();
//totalParts = dashBoard.getNumberOfParticipants();
} else if (dashBoard.getFormatedAmount(dashBoard.currentInputAmount) > 0 && parseFloat(totalFreezeAmt) == parseFloat(dashBoard.currentInputAmount)) {
//if totalFreeze amount is equal to expense input amount,no need to keep part for where isFreeze=0
dashBoard.resetUnfreezeAmt();
totalParts = 0;
}
//set final freeze amount
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].isFreeze == 0 && totalParts > 0) {
dashBoard.participants[index].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(((parseFloat(dashBoard.currentInputAmount) - parseFloat(totalFreezeAmt)) / totalParts) * dashBoard.participants[index].currentInputExpensePart);
//Freeze amount can not be negative
if (parseFloat(dashBoard.participants[index].currentInputExpenseFreezeAmt) < 0) {
dashBoard.participants[index].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(0);
}
} else if (dashBoard.participants[index].isFreeze == 0) {
dashBoard.participants[index].currentInputExpenseFreezeAmt = dashBoard.getFormatedAmount(0);
}
}
}
this.resetAllPartAndFreezeAmt = function resetAllPartAndFreezeAmt() {
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].isFreeze == 0) {
dashBoard.participants[index].currentInputExpensePart = 1;
dashBoard.participants[index].isFreeze = 0;
}
}
}
this.resetUnfreezeAmt = function resetUnfreezeAmt() {
/*for (var index in dashBoard.participants) {
if(dashBoard.participants[index].isFreeze == 0){
//dashBoard.participants[index].currentInputExpensePart = 0;
}
}*/
}
this.updateBalance = function updateBalance() {
//balance
}
this.setParticipantAmtHtmlFormat = function setParticipantAmtHtmlFormat() {
dashBoard.paidByHtml = "";
var result = '
Split Advance
';
result += '
';
//
result += '
All
';
for (var index in dashBoard.participants) {
result += '
' + dashBoard.participants[index].name + '
';
}
result = result + '
';
/*var result = '
Breakdown
';
result += '
Check All
';
for (var index in dashBoard.participants) {
result += '
'+ dashBoard.participants[index].name+'
';
}
*/
dashBoard.setPaidBy(dashBoard.loginParticipantId);
result += '
';
for (var index in dashBoard.participants) {
result += '
' + dashBoard.participants[index].name + '
' + dashBoard.expense.currency + '
';
}
result = result + '
';
dashBoard.participantAmtHtmlFormat = result;
}
this.setPaidBy = function setPaidBy(selectedParticipantId) {
dashBoard.paidByHtml = "";
for (var index in dashBoard.participants) {
//alert(dashBoard.participants[index].id);
//alert(selectedParticipantId);
if (dashBoard.participants[index].id == selectedParticipantId) {
dashBoard.paidByHtml += '';
} else {
dashBoard.paidByHtml += '';
}
}
}
this.setParticipantAmountInfoByAmtStr = function setParticipantAmountInfoByAmtStr(amtStr) {
var amtStrArray = amtStr.split(",");
var totalInvolves = 0;
var noOfParticipant = 0;
for (var index in dashBoard.participants) {
noOfParticipant++;
}
for (var i = 0; i < amtStrArray.length; i++) {
var values = amtStrArray[i].split("|");
if (values[1] == "") {
dashBoard.participants[values[0]].isFreeze = 1;
dashBoard.participants[values[0]].currentInputExpensePart = 0;
} else {
dashBoard.participants[values[0]].isFreeze = 0;
dashBoard.participants[values[0]].currentInputExpensePart = values[1];
}
dashBoard.participants[values[0]].currentInputExpenseFreezeAmt = values[2];
if (parseFloat(dashBoard.participants[values[0]].currentInputExpenseFreezeAmt) > parseFloat(0)) {
totalInvolves++;
$("#chkParticipant" + values[0]).prop('checked', true);
}
}
//check or uncheck checkBox
if (totalInvolves != noOfParticipant) {
$("#selectAll").prop('checked', false);
}
}
this.showEditUI = function showEditUI(expenseObj) {
dashBoard.currentEditGroupExpense = expenseObj;
//set paid by
dashBoard.setPaidBy(expenseObj.paidBy);
//assign parts and freeze amounts to all participants
if (expenseObj.isDetails == 1) {
dashBoard.refreshParticipantsExpenseProperties(0);
} else {
dashBoard.refreshParticipantsExpenseProperties(0);
}
dashBoard.setParticipantAmountInfoByAmtStr(expenseObj.participantAmountStr);
dashBoard.currentInputAmount = expenseObj.amount;
//hide show details section
// alert(expenseObj.isDetails);
if (expenseObj.isDetails == 1) {
dashBoard.hideShowParticipantDetails(true);
$("#Details").prop('checked', true);
dashBoard.setDetailsCheckImpact();
} else {
dashBoard.hideShowParticipantDetails(false)
dashBoard.setDetailsCheckImpact();
}
// console.log(expenseObj);
if (expenseObj.extras != "" && expenseObj.extras != null) {
expenseExtras = expenseObj.extras;
var splitextras = expenseExtras.split("|");
// console.log(splitextras[0]);
if (splitextras[0] == 1) {
$("#Reason").attr("data-extras", "1");
} else if (splitextras[0] == 2) {
$("#advance").attr("checked", "checked");
}
}
if (expenseObj.advance == 1) {
$("#advance").attr("checked", "checked");
}
/* this.isFreeze;
this.currentInputExpensePart;
this.currentInputExpenseFreezeAmt; */
//alert(expenseObj.paidBy);
//alert(expenseObj.paidBy);
//dashBoard.calculateFinalFreezeExpenseAmount();
//dashBoard.showFreezeAmount();
//dashBoard.setShadowOnPartTextBox();
//alert(dashBoard.paidByHtml);
/*for (var index in dashBoard.participants) {
$("#chkParticipant"+dashBoard.participants[index].id).check(true);
}*/
}
this.setDetailsCheckImpact = function setDetailsCheckImpact() {
if ($("#Details").is(':checked')) {
dashBoard.hideShowParticipantDetails(true);
} else {
dashBoard.hideShowParticipantDetails(false);
}
dashBoard.setShadowOnPartTextBox();
}
this.showPartAndFreezeAmtInDetails = function showPartAndFreezeAmtInDetails() {
for (var index in dashBoard.participants) {
//set part and freezeAmt from participants
$("#participantTextPart" + dashBoard.participants[index].id).val(dashBoard.participants[index].currentInputExpensePart);
$("#participantTextFreeze" + dashBoard.participants[index].id).val(dashBoard.showFormatedAmount(dashBoard.participants[index].currentInputExpenseFreezeAmt));
}
}
this.hideShowParticipantDetails = function hideShowParticipantDetails(isDetails) {
if (isDetails == true) {
//hide simple
$("#tr_selectAll").hide();
for (var index in dashBoard.participants) {
$("#tr_Participant" + dashBoard.participants[index].id).hide();
$("#tr_ParticipantDetails" + dashBoard.participants[index].id).show();
}
dashBoard.showPartAndFreezeAmtInDetails();
} else {
$("#tr_selectAll").show();
for (var index in dashBoard.participants) {
$("#tr_Participant" + dashBoard.participants[index].id).show();
$("#tr_ParticipantDetails" + dashBoard.participants[index].id).hide();
}
dashBoard.showFreezeAmount();
}
}
// Utilities functions
this.getCurrency = function getCurrency() {
return dashBoard.expense.currency;
}
this.getFormatedAmount = function getFormatedAmount(amount) {
return parseFloat(amount).toFixed(15);
}
this.getFormatedAmountDB = function getFormatedAmountDB(amount) {
return parseFloat(amount).toFixed(4);
}
this.showFormatedAmount = function showFormatedAmount(amount) {
return parseFloat(amount).toFixed(2);
}
this.getFormatedDate = function getFormatedDate(date) {
var dateObj = new Date((new Date(date * 1000)).toUTCString());
//return date.getdays()+"/"+date.getMonths()+"/"+date.getYears(); var a = new Date(UNIX_timestamp*1000);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var year = dateObj.getFullYear();
var month = months[dateObj.getMonth()];
var date = String(dateObj.getDate());
var time;
if (date.length == 1) {
time = '0' + date + '-' + month + '-' + year;
} else {
time = date + '-' + month + '-' + year;
}
return time;
}
this.getFormatedDbDate = function getFormatedDbDate(date) {
var time;
if (date != "" && date != null) {
var dateObj = date.split(" ");
var dateInfo = dateObj[0].split("-");
//return date.getdays()+"/"+date.getMonths()+"/"+date.getYears(); var a = new Date(UNIX_timestamp*1000);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var year = dateInfo[0];
var month = months[parseInt(dateInfo[1]) - 1];
var date = String(dateInfo[2]);
if (date.length == 1) {
time = '0' + date + '-' + month + '-' + year;
} else {
time = date + '-' + month + '-' + year;
}
}
return time;
}
this.setCurrentDate = function setCurrentDate() {
var dateObj = new Date();
//return date.getdays()+"/"+date.getMonths()+"/"+date.getYears(); var a = new Date(UNIX_timestamp*1000);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var year = dateObj.getFullYear();
var month = months[dateObj.getMonth()];
var date = String(dateObj.getDate());
if (date.length == 1) {
date = "0" + date;
}
dashBoard.currentDate = date + '-' + month + '-' + year;
}
this.getInvolveString = function getInvolveString(participantAmountStr) {
var involveStrAll = "";
var involveStrExcept = "";
var involveParticipantList = [];
//calculate involveStr
var participantInvolveList = participantAmountStr.split(",");
for (var i = 0; i < participantInvolveList.length; i++) {
var participantAndAmountArray = participantInvolveList[i].split("|");
involveParticipantList[i] = participantAndAmountArray[0];
if (i == 0) {
involveStrAll = dashBoard.participants[participantAndAmountArray[0]].name;
} else {
involveStrAll += "," + dashBoard.participants[participantAndAmountArray[0]].name;
}
}
//calculate involveStrExcept
if (dashBoard.getNumberOfParticipants() == involveParticipantList.length) {
involveStrExcept = "all";
} else {
for (var index in dashBoard.participants) {
if (dashBoard.inArrayElement(involveParticipantList, dashBoard.participants[index].id) == false) {
if (involveStrExcept == "") {
involveStrExcept += "all except " + dashBoard.participants[index].name;
} else {
involveStrExcept += "," + dashBoard.participants[index].name;
}
}
}
}
if (involveStrAll.length > involveStrExcept.length) {
return involveStrExcept;
} else {
return involveStrAll;
}
}
this.inArrayElement = function inArrayElement(array, value) {
var result = false;
for (var i = 0; i < array.length; i++) {
if (array[i] === value) {
result = true;
break;
}
}
return result;
}
this.getForYouString = function getForYouString(participantAmountStr) {
var forYou = "";
var participantInvolveList = participantAmountStr.split(",");
for (var i = 0; i < participantInvolveList.length; i++) {
var participantAndAmountArray = participantInvolveList[i].split("|");
if (participantAndAmountArray[0] == dashBoard.loginParticipantId) {
forYou = dashBoard.getFormatedAmount(participantAndAmountArray[2]);
}
}
if (forYou == "") {
forYou = dashBoard.getFormatedAmount(0);
}
return forYou;
}
this.getForYouStringPrint = function getForYouStringPrint(participantAmountStr) {
var forYou = "";
var participantInvolveList = participantAmountStr.split(",");
for (var i = 0; i < participantInvolveList.length; i++) {
var participantAndAmountArray = participantInvolveList[i].split("|");
if (participantAndAmountArray[0] == dashBoard.loginParticipantId) {
forYou = dashBoard.showFormatedAmount(participantAndAmountArray[2]);
}
}
if (forYou == "") {
forYou = dashBoard.showFormatedAmount(0);
}
return forYou;
}
this.validateExpenseAddForm = function validateExpenseAddForm(source) {
var errorMessage = "";
//validate Balance Expense
var extrasVal = $('#Reason').data('extras');
if ($('#Reason').val() == 'Balance Expense' || parseInt(extrasVal) == 1) {
errorMessage = lblSettledExpenseNotEditable
}
//validate expense name
if (!$('#Reason').val().trim()) {
errorMessage = lblPleaseEnterNameOfExpense
} else if ($('#Reason').val().trim().length > 25) {
errorMessage = lblExpenseNameLessThanChar
}
//validate amount field
if (errorMessage == "") {
if (!$('#Amount').val().trim()) {
errorMessage = lblValidAmount
} else if (parseFloat($('#Amount').val()) <= parseFloat(0)) {
errorMessage = lblValidAmount
}
}
//validate freeze amount
if (errorMessage == "") {
var totalFreezeAmt = dashBoard.getFormatedAmount(0);
for (var index in dashBoard.participants) {
totalFreezeAmt = parseFloat(totalFreezeAmt) + parseFloat(dashBoard.getFormatedAmount(dashBoard.participants[index].currentInputExpenseFreezeAmt));
}
if (dashBoard.showFormatedAmount(totalFreezeAmt) != dashBoard.showFormatedAmount($('#Amount').val().trim())) {
errorMessage = lblDistributedAmountSame
}
}
//validate date
if (errorMessage == "") {
if ($('#Date').val().trim() != "") {
var dateArray = $('#Date').val().trim().split("-");
if (dateArray.length != 3) {
errorMessage = lblDateNotValid;
} else {
errorMessage = isValidDate(dateArray);
}
}
}
//set or clear error message
if (errorMessage != "") {
dashBoard.showErrorMessage(errorMessage);
} else {
dashBoard.clearErrorMessage();
addExpense();
if (source == 1) {
$(".ui-icon-closethick").trigger('click');
} else {
dashBoard.clearAddForm();
}
}
}
this.showErrorMessage = function showErrorMessage(msg) {
$("#FormError").show();
$(".ui-state-error").html(msg);
}
this.clearErrorMessage = function clearErrorMessage() {
$("#FormError").hide();
$(".ui-state-error").html("");
}
this.clearAddForm = function clearAddForm() {
$('#Reason').val("");
$('#Amount').val("");
$("#Details").prop('checked', false);
$("#selectAll").prop('checked', true);
dashBoard.refreshParticipantsExpenseProperties(1);
dashBoard.setAllCheckImpact();
dashBoard.hideShowParticipantDetails(false);
$('#Reason').focus();
}
this.addRowsToGrid = function addRowsToGrid(data, addRow = 0) {
var names = ['SI', 'PaidBy', 'Amount', 'Reason', 'Date', 'Involve', 'For you?'];
var mydata = [];
for (var i = 0; i < data.length; i++) {
mydata[i] = {};
for (var j = 0; j < data[i].length; j++) {
mydata[i][names[j]] = data[i][j];
}
}
if (dashBoard.isAddMode == true) {
if (addRow) {
for (var i = 0; i < mydata.length; i++) {
//alert(i + 1);
//alert(mydata[i]);
$("#grid").jqGrid('addRowData', data[i][0], mydata[i]);
}
} else {
return mydata;
}
} else {
$("#grid").jqGrid('setRowData', data[0][0], mydata[0]);
dashBoard.isAddMode = true;
}
}
this.getExpenseUniqueId = function getExpenseUniqueId() {
var maxExpId = 0;
var extractedIndex = 0;
var expenseIdArray;
//for(var i=0;i (rowNum * lastPage)) {
lastPage++;
}
$(grid_id).setGridParam({ page: lastPage });
$(grid_id).trigger("reloadGrid");
}
}
this.setPageAfterDelete = function setPageAfterDelete(grid_id) {
var currentPage = $(grid_id).getGridParam('page');
var rowCount = $(grid_id).getGridParam('reccount');
var rowNum = $(grid_id).getGridParam('rowNum');
if (rowCount == 0 && currentPage > 1) {
currentPage = currentPage - 1;
$(grid_id).setGridParam({ page: currentPage });
}
$(grid_id).trigger("reloadGrid");
}
this.getGeneratedLog = function getGeneratedLog(expenseObj) {
var logStr = "";
logStr += "[Title:" + expenseObj.expenseName + "],";
logStr += "[PaidBy:" + dashBoard.participants[expenseObj.paidBy].name + "],";
logStr += "[Date:" + expenseObj.expenseDate + "],";
logStr += "[Amount:" + dashBoard.showFormatedAmount(expenseObj.amount) + ' ' + dashBoard.expense.currency + "],";
logStr += "[Involves:";
var participantAmtStrArray = expenseObj.participantAmountStr.split(",");
for (var index in participantAmtStrArray) {
var dataArray = participantAmtStrArray[index].split("|");
if (index == 0) {
logStr += dashBoard.participants[dataArray[0]].name + "=" + dashBoard.showFormatedAmount(dataArray[2]);
} else {
logStr += "," + dashBoard.participants[dataArray[0]].name + "=" + dashBoard.showFormatedAmount(dataArray[2]);
}
}
logStr += "]";
return logStr;
}
this.getInputFormData = function getInputFormData(groupExpenseObj) {
var amountStr = "";
var isDetails = false;
var advance = 0;
if (document.getElementById("advance").checked == true) {
advance = 1;
}
groupExpenseObj.advance = advance;
groupExpenseObj.paidBy = $('#PaidBy').val();
groupExpenseObj.expenseName = $('#Reason').val();
groupExpenseObj.amount = $('#Amount').val();
groupExpenseObj.expenseDate = $('#Date').val();// getTimeStampByInputDate($('#Date').val());
//return groupExpenseObj;
for (var index in dashBoard.participants) {
if ($("#chkParticipant" + dashBoard.participants[index].id).is(':checked')) {
if (amountStr == "") {
if (dashBoard.participants[index].isFreeze == 1) {
dashBoard.participants[index].currentInputExpensePart = "";
}
amountStr += dashBoard.participants[index].id + "|" + dashBoard.participants[index].currentInputExpensePart + "|" + dashBoard.getFormatedAmountDB(dashBoard.participants[index].currentInputExpenseFreezeAmt);
} else {
if (dashBoard.participants[index].isFreeze == 1) {
dashBoard.participants[index].currentInputExpensePart = "";
}
amountStr += "," + dashBoard.participants[index].id + "|" + dashBoard.participants[index].currentInputExpensePart + "|" + dashBoard.getFormatedAmountDB(dashBoard.participants[index].currentInputExpenseFreezeAmt);
}
}
if ((dashBoard.participants[index].isFreeze == 1) || dashBoard.participants[index].currentInputExpensePart > 1) {
isDetails = true;
}
}
if (isDetails) {
groupExpenseObj.isDetails = 1;
} else {
groupExpenseObj.isDetails = 0;
}
groupExpenseObj.participantAmountStr = amountStr;
return groupExpenseObj;
}
this.deleteExpense = function deleteExpense() {
var rowId = $("#grid").jqGrid('getGridParam', 'selrow');
var i;
/*alert(rowId);
for(var index in dashBoard.groupExpenses){
alert(dashBoard.groupExpenses[index].id);
break;
}
*/
$('#grid').jqGrid('delRowData', rowId);
var deletedExpObj = dashBoard.groupExpenses[rowId];
//alert(deletedExpObj.expenseName);
delete dashBoard.groupExpenses[rowId];
//alert(deletedExpObj.id);
deletedExpObj.isAdd = "3";
//set log info
deletedExpObj.previousDesc = dashBoard.getGeneratedLog(deletedExpObj);
deletedExpObj.newDesc = "Deleted";
deletedExpObj.previousPaidBy = dashBoard.participants[deletedExpObj.paidBy].name;
/*for(i=rowId-1;i 0) {
positiveParticipantBalance[index] = dashBoard.participants[index].balance;
} else if (parseFloat(dashBoard.participants[index].balance) < 0) {
negativeParticipantBalance[index] = dashBoard.participants[index].balance;
}
}
//sort postivie and negative
//scan and shift positive and negative
//sort positive and negative again
//calculate who needs to pay whom
//if pos and neg values are same, then direct exchange payment
for (var posIndex in positiveParticipantBalance) {
if (dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) > dashBoard.showFormatedAmount(parseFloat(0))) {
for (var negIndex in negativeParticipantBalance) {
if (dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) == dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1))
&& dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) > dashBoard.showFormatedAmount(parseFloat(0))) {
if (balanceString == "") {
balanceString = balanceString + negIndex + "|" + posIndex + "|" + dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1));
} else {
balanceString = balanceString + "," + negIndex + "|" + posIndex + "|" + dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1));
}
//update array amount
positiveParticipantBalance[posIndex] = 0;
negativeParticipantBalance[negIndex] = 0;
}
}
}
}
//distribute amount among pos values
var maxPartIndex = dashBoard.getMaxMinParticipantId(positiveParticipantBalance, 1);
var minPartIndex = dashBoard.getMaxMinParticipantId(negativeParticipantBalance, 2);
while (maxPartIndex != "" && minPartIndex != "") {
var maxVal = parseFloat(positiveParticipantBalance[maxPartIndex]);
if (minPartIndex != "") {
var decrementalVal = parseFloat(negativeParticipantBalance[minPartIndex]) * (-1);
if (parseFloat(decrementalVal) > parseFloat(maxVal)) {
decrementalVal = dashBoard.getFormatedAmountDB(maxVal);
}
//update array
positiveParticipantBalance[maxPartIndex] = dashBoard.getFormatedAmountDB(parseFloat(positiveParticipantBalance[maxPartIndex]) - parseFloat(decrementalVal));
negativeParticipantBalance[minPartIndex] = dashBoard.getFormatedAmountDB(parseFloat(negativeParticipantBalance[minPartIndex]) + parseFloat(decrementalVal));
if (balanceString == "") {
balanceString = balanceString + minPartIndex + "|" + maxPartIndex + "|" + decrementalVal;
} else {
balanceString = balanceString + "," + minPartIndex + "|" + maxPartIndex + "|" + decrementalVal;
}
}
//check equal
for (var posIndex in positiveParticipantBalance) {
if (dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) > dashBoard.showFormatedAmount(parseFloat(0))) {
for (var negIndex in negativeParticipantBalance) {
if (dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) == dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1))
&& dashBoard.showFormatedAmount(parseFloat(positiveParticipantBalance[posIndex])) > dashBoard.showFormatedAmount(parseFloat(0))) {
if (balanceString == "") {
balanceString = balanceString + negIndex + "|" + posIndex + "|" + dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1));
} else {
balanceString = balanceString + "," + negIndex + "|" + posIndex + "|" + dashBoard.showFormatedAmount(parseFloat(negativeParticipantBalance[negIndex]) * (-1));
}
//update array amount
positiveParticipantBalance[posIndex] = 0;
negativeParticipantBalance[negIndex] = 0;
}
}
}
}
maxPartIndex = dashBoard.getMaxMinParticipantId(positiveParticipantBalance, 1);
minPartIndex = dashBoard.getMaxMinParticipantId(negativeParticipantBalance, 2);
}
//alert(balanceString);
return balanceString;
}
this.getMaxMinParticipantId = function getMaxMinParticipantId(balanceList, ind) {
var result = 0;
var participantIndex = '';
for (var index in balanceList) {
//alert(dashBoard.showFormatedAmount(parseFloat(balanceList[index])));
if (ind == 1) {
if (dashBoard.showFormatedAmount(parseFloat(balanceList[index])) > parseFloat(result)) {
participantIndex = index;
result = parseFloat(balanceList[index]);
}
} else {
if (dashBoard.showFormatedAmount(parseFloat(balanceList[index])) < parseFloat(result)) {
participantIndex = index;
result = parseFloat(balanceList[index]);
}
}
}
return participantIndex;
}
this.createGraphImage = function createGraphImage() {
$("#balance_chart_image").html("");
var imgData = $('#balance_chart').jqplotToImageStr({});
var imgElem = $('').attr('src', imgData).attr('id', "graph_image_id").attr('alt', "balance.png");
// $("#balance_chart_image").html(imgElem);
dashBoard.downloadImage("graph_image_id");
// $('#balance_chart_image').append(imgElem);
}
this.downloadImage = function downloadImage(imageURL) {
/* var oImage = document.getElementById(imageURL);
var canvas = document.createElement("canvas");
document.body.appendChild(canvas);
if (typeof canvas.getContext == "undefined" || !canvas.getContext) {
alert("browser does not support this action, sorry");
return false;
}*/
try {
var img = document.getElementById(imageURL);
// window.location.href = img.src.replace('image/png', 'image/octet-stream');
window.open(img.src.replace('image/png', 'image/png'), "_blank");
/* var context = canvas.getContext("2d");
var width = oImage.width;
var height = oImage.height;
canvas.width = width;
canvas.height = height;
canvas.style.width = width + "px";
canvas.style.height = height + "px";
context.drawImage(oImage, 0, 0, width, height);
var rawImageData = canvas.toDataURL("image/png;base64");
rawImageData = rawImageData.replace("image/png", "image/octet-stream");
document.location.href = rawImageData;
// document.location.setAttribute("download", "YourFileName.jpeg");
document.body.removeChild(canvas);*/
}
catch (err) {
// document.body.removeChild(canvas);
alert(lblCantDownload);
}
return true;
}
this.drawGraph = function drawGraph() {
if (plot1) {
plot1.destroy();
}
var balanceString = dashBoard.updateParticipantBalance();
var data = [];
var barLabel = [];
var ticks = [];
var noOfParticipant = 0;
for (var index in dashBoard.participants) {
data.push(parseFloat(dashBoard.showFormatedAmount(dashBoard.participants[index].balance)));
barLabel.push(dashBoard.showFormatedAmount(parseFloat(dashBoard.participants[index].balance)));
ticks.push(dashBoard.participants[index].name);
noOfParticipant++;
}
$("#balance_chart").css("width", (noOfParticipant * 100) + "px");
var options = {
seriesDefaults: {
renderer: $.jqplot.BarRenderer,
rendererOptions: { fillToZero: true }
},
series: [
{
color: '#008000',
showMarker: true,
pointLabels: {
show: true,
labels: barLabel
}
}
],
negativeSeriesColors: ["#FF0000"],
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: ticks
},
yaxis: {
pad: 1.18,
tickOptions: { formatString: '%d ' + dashBoard.expense.currency }
}
},
title: {
text: lblBalanceOf + '"' + dashBoard.expense.title + '"'
},
};
plot1 = $.jqplot('balance_chart', [data], options);
dashBoard.showBalanceDetails(balanceString);
// dashBoard.createGraphImage();
}
this.showBalanceDetails = function showBalanceDetails(balanceString) {
var balancePaymentHtml = "";
if (balanceString != "") {
var balanceStringArr = balanceString.split(",");
for (var index in balanceStringArr) {
var balanceStringval = balanceStringArr[index].split("|");
var name1 = dashBoard.participants[balanceStringval[0]].name;
var name2 = dashBoard.participants[balanceStringval[1]].name;
var balance = dashBoard.showFormatedAmount(parseFloat(balanceStringval[2]));
if (isPermitted) {
balancePaymentHtml = eval(lblBalanceLink) + ' Mark Settle';
} else {
balancePaymentHtml = eval(lblBalanceLink) + ' Mark Settle';
}
//balancePaymentHtml = `${balancePaymentHtml}
${dashBoard.participants[balanceStringval[0]].name} should pay to${dashBoard.participants[balanceStringval[1]].name}${dashBoard.showFormatedAmount(parseFloat(balanceStringval[2]))} ${dashBoard.expense.currency}`+' Mark Settle
';
}
}
$("#balance_payment_div").html(balancePaymentHtml);
}
this.insertBalanceEntry = function insertBalanceEntry(payerId, paytoId, amount) {
if (!confirm("Do you like to mark it as settled?")) {
return false;
}
dashBoard.isAddMode = true;
groupExpenseObj = new GroupExpense();
//groupExpenseObj.index = dashBoard.globalExpenseIndex++;
groupExpenseObj.id = dashBoard.getExpenseUniqueId();
groupExpenseObj.expenseId = dashBoard.expense.id;
groupExpenseObj.isAdd = "1";
groupExpenseObj.type = 2; //1=normal expense,2=balance expense
groupExpenseObj.paidBy = payerId;
groupExpenseObj.expenseName = "Balance Expense";
groupExpenseObj.amount = amount;
groupExpenseObj.expenseDate = dashBoard.currentDate;
groupExpenseObj.isDetails = 0;
groupExpenseObj.participantAmountStr = paytoId + '|' + '1' + '|' + amount;
groupExpenseObj.extras = "1";
groupExpenseObj.advance = 0;
if ($("#Advance").checked) {
groupExpenseObj.advance = 1;
groupExpenseObj.extras = "2";
}
groupExpenseObj.isreimburse = 0;
dashBoard.processExpenseData(groupExpenseObj);
dashBoard.drawGraph();
}
///////////////////////////////////////////////////////////////// Participant section ////////////////////////////////////////////
this.validParticipantInputForm = function validParticipantInputForm(name, skipPartId) {
var errorMessage = "";
//validate participant name
if (!name.trim()) {
errorMessage = lblEnterParticipantName;
} else if (name.trim().length > nameLength) {
errorMessage = nameErrorMessage;
}
if (errorMessage == "") {
//check the participant name already exist or not
for (var index in dashBoard.participants) {
if (skipPartId != dashBoard.participants[index].id) {
if (dashBoard.participants[index].name.toLowerCase() == name.trim().toLowerCase()) {
errorMessage = lblParticipantAlreadyExist;
break;
}
}
}
}
if (errorMessage == "") {
//check the participant name already exist or not
if (name.trim().indexOf(',') === -1 && name.trim().indexOf('|') === -1) {
} else {
errorMessage = lblParticipantShouldNotContain;
}
}
return errorMessage;
}
this.processAfterValidation = function processAfterValidation(errorMessage) {
if (errorMessage != "") {
dashBoard.showErrorMessage(errorMessage);
} else {
dashBoard.clearErrorMessage();
dashBoard.addParticipant($('#Name').val().trim(), "2");
$(".ui-icon-closethick").trigger('click');
}
}
this.addParticipant = function addParticipant(participantName, source) {
//generate auto ID for new participant
var participantObj = new Participant();
participantObj.id = dashBoard.getParticipantId();
participantObj.name = participantName;
participantObj.isCreator = 0;
participantObj.create_date = Math.round(+new Date() / 1000);
participantObj.balance = 0;
participantObj.isFreeze = 0;
participantObj.expense_id = dashBoard.expense.id;
participantObj.isAdd = 1;
participantObj.isDeletable = 1;
//participants.push(participantObj);
//insert into grid
if (source == "1") {
dashBoard.processParticipantDataByPopup(participantObj);
} else {
dashBoard.processParticipantData(participantObj);
}
}
this.getParticipantId = function getParticipantId() {
//dashBoard.loginParticipantId
var SI = 1;
var maxId = 0;
var participantIdStrArry;
for (var index in dashBoard.participants) {
if (dashBoard.participants[index].id == dashBoard.loginParticipantId) {
break;
}
SI++;
}
//var participantLoginStrArr = dashBoard.loginParticipantId.split("_");
for (var index in dashBoard.participants) {
participantIdStrArry = dashBoard.participants[index].id.split("_");
if (SI == participantIdStrArry[0]) {
if (parseInt(participantIdStrArry[1]) > parseInt(maxId)) {
maxId = parseInt(participantIdStrArry[1]);
}
}
}
maxId++;
return SI + "_" + maxId;
}
this.processParticipantData = function processParticipantData(participantObj) {
dashBoard.participants[participantObj.id] = participantObj;
if (typeof participantObj.totalSpent == "undefined") {
participantObj.totalSpent = 0;
}
if (typeof participantObj.totalPaid == "undefined") {
participantObj.totalPaid = 0;
}
var data = [];
//alert(dashBoard.getDataByExpense(groupExpenseObj.index,groupExpenseObj));
//alert([participantObj.id, participantObj.name,dashBoard.showFormatedAmount(participantObj.balance)+" "+dashBoard.expense.currency,""]);
data.push([participantObj.id, participantObj.name, dashBoard.showFormatedAmount(participantObj.totalSpent) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(participantObj.totalPaid) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(participantObj.balance) + " " + dashBoard.expense.currency, ""]);
//alert(participantObj.name);
//dashBoard.setParticipantAmtHtmlFormat();
//go to the last page after adding record
$('#grid').jqGrid('GridUnload');
dashBoard.showExpenseList();
dashBoard.addRowsToParticipantGrid(data, true);
dashBoard.setParticipantGridExtension();
// $('#participant_grid').jqGrid('GridUnload');
//dashBoard.displayParticipantList();
dashBoard.setPageAfterAdd('#participant_grid');
sendDataToServer(participantObj, "#participantForm");
}
this.processParticipantDataByPopup = function processParticipantDataByPopup(participantObj) {
dashBoard.participants[participantObj.id] = participantObj;
dashBoard.addParticipantToList();
sendDataToServer(participantObj, "#participantForm");
}
this.updateParticipant = function updateParticipant(participantId, oldName, newName) {
//alert(oldName);
//alert(newName);
var participantObj = new Participant();
participantObj.id = participantId;
//participantObj.oldName = oldName;
participantObj.name = newName;
participantObj.expense_id = dashBoard.expense.id;
participantObj.isAdd = 2;
//update participant array;
var existingPartcipantObj = dashBoard.participants[participantId];
existingPartcipantObj.name = newName;
dashBoard.participants[participantId] = existingPartcipantObj;
//update grid
var data = [];
// alert([existingPartcipantObj.id, existingPartcipantObj.name,dashBoard.showFormatedAmount(existingPartcipantObj.balance)+" "+dashBoard.expense.currency,""]);
data.push([existingPartcipantObj.id, existingPartcipantObj.name, dashBoard.showFormatedAmount(existingPartcipantObj.totalSpent) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(existingPartcipantObj.totalPaid) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(existingPartcipantObj.balance) + " " + dashBoard.expense.currency, ""]);
// alert("helo2");
dashBoard.addRowsToParticipantGrid(data, false);
//dashBoard.setParticipantAmtHtmlFormat();
//alert("helo3");
//jQuery("#participant_grid").trigger("reloadGrid");
$('#grid').jqGrid('GridUnload');
dashBoard.showExpenseList();
//alert("helo4");
$("#participant_grid").trigger("reloadGrid");
dashBoard.setParticipantGridExtension();
// alert("helo5");
//dashBoard.setPageAfterAdd('#participant_grid');
//alert("helo5");
//$('#participant_grid').jqGrid('GridUnload');
//dashBoard.displayParticipantList();
//alert(participantObj.id);
sendDataToServer(participantObj, "#participantForm");
}
this.deleteParticipant = function deleteParticipant(index) {
//alert("hello");
var rowId = $("#participant_grid").jqGrid('getGridParam', 'selrow');
// alert(rowId);
var i;
var rowData = jQuery("#participant_grid").getRowData(rowId);
//prepare delete object
var participantObj = new Participant();
participantObj.id = rowData['SI'];
participantObj.name = rowData['Name'];
participantObj.expense_id = dashBoard.expense.id;
participantObj.isAdd = 3;
//alert(rowData['SI']);
//delete record from list
//dashBoard.participants[participantObj.id]
//alert(rowId);
$('#participant_grid').jqGrid('delRowData', rowId);
delete dashBoard.participants[participantObj.id];
//alert(dashBoard.participants[ participantObj.id]);
//dashBoard.setParticipantAmtHtmlFormat();
$('#grid').jqGrid('GridUnload');
dashBoard.showExpenseList();
// $('#participant_grid').jqGrid('GridUnload');
//dashBoard.displayParticipantList();
dashBoard.setParticipantGridExtension();
dashBoard.setPageAfterDelete('#participant_grid');
//alert(participantObj.id);
//alert(participantObj.name);
sendDataToServer(participantObj, "#participantForm");
$(".ui-icon-closethick").trigger('click');
}
this.displayParticipantList = function displayParticipantList() {
var partNameBeforeEdit = "";
var maxRowNum = 0;
for (var index in dashBoard.participants) {
maxRowNum++;
}
if (maxRowNum < 51) {
maxRowNum = 50;
}
$("#participant_grid").jqGrid({
datatype: "local",
height: 232,
colNames: ['SI', lblName, lblTotalCharge, lblTotalPaid, lblBalance, ''],
colModel: [
{
name: 'SI',
index: 'SI',
width: 0,
sorttype: "int",
hidden: true
},
{
name: 'Name',
index: 'Name',
width: 180,
align: 'center',
editable: true
},
{
name: 'Total Charge',
index: 'Total Charge',
width: 160,
align: 'center',
sorttype: "int"
},
{
name: 'Total Paid',
index: 'Total Paid',
width: 160,
align: 'center',
sorttype: "int"
},
{
name: 'Balance',
index: 'Balance',
width: 170,
align: 'center',
},
{
name: 'Action',
index: 'Action',
width: 90,
align: 'center',
//formatter: 'actions',
formatter: function (cellvalue, options, rowObject) {
return dashBoard.inlineNavAction(cellvalue, options, rowObject, (options.rowId != 'new_row'));
},
formatoptions: {
keys: true,
onSuccess: function () {
var rowId = $("#participant_grid").jqGrid('getGridParam', 'selrow');
// alert(rowId);
var rowData = jQuery("#participant_grid").getRowData(rowId);
//alert(rowData['SI']);
var inputVal = $("#" + rowData['SI'] + "_Name").val().trim();
//alert(dashBoard.participants[rowData['SI']].name);
//alert(inputVal);
if (dashBoard.participants[rowData['SI']].name != inputVal) {
var errorMsg = dashBoard.validParticipantInputForm(inputVal, rowData['SI']);
if (errorMsg == "") {
dashBoard.updateParticipant(rowData['SI'], dashBoard.participants[rowData['SI']].name, inputVal);
//alert("saved!");
//jQuery.fn.fmatter.rowactions.call(this,'save');
} else {
// $("#error_dialog" ).html(errorMsg);
// $("#error_dialog").message("show");
alert(errorMsg);
/*$("#error_dialog" ).html(errorMsg);
$("#error_dialog" ).dialog();*/
$("#" + rowData['SI'] + "_Name").focus();
jQuery.fn.fmatter.rowactions.call(this, 'edit');
}
}
}
}
}
],
rowNum: maxRowNum,
rowList: [6, 10, 20, maxRowNum],
pager: '#participant_pager',
gridview: true,
rownumbers: true,
autoencode: true,
ignoreCase: true,
// sortname: 'invdate',
viewrecords: true,
sortorder: 'desc',
caption: lblParticipantList,
loadComplete: function () {
dashBoard.setParticipantGridExtension();
}
}
);
//$(".ui-jqgrid-titlebar").hide();
$("#participant_grid").jqGrid('navGrid', '#participant_pager', {
add: isPermitted, addtitle: lblAddParticipant,
edit: isPermitted, edittitle: lblEditParticipant,
del: isPermitted, deltitle: lblDeleteParticipant,
search: true, searchtitle: lblFindParticipant
},
{ // Edit
recreateForm: true,
beforeInitData: function () {
// isParticipantAddMode = false;
///alert("edit");
}
},
{ // Add
recreateForm: true,
beforeInitData: function () {
// isParticipantAddMode = true;
//alert("add");
}
}
);
$("#participant_grid").jqGrid('setGridParam', {
ondblClickRow: function (rowid, iRow, iCol, e) {
if (!isPermitted) {
return false;
}
//dashBoard.isAddMode = false;
//jQuery(this).jqGrid('editGridRow', rowid);
//var object = $("jEditButton_"+rowid);
//alert(object);
// jQuery(this).jqGrid('editGridRow', rowid);
jQuery.fn.fmatter.rowactions.call(document.getElementById("jEditButton_" + rowid), 'edit');
//alert("hello");
//alert(rowid);
}
});
var data = [];
$("#participant_grid").jqGrid("clearGridData", true).trigger("reloadGrid");
for (var index in dashBoard.participants) {
data.push([dashBoard.participants[index].id, dashBoard.participants[index].name, dashBoard.showFormatedAmount(dashBoard.participants[index].totalSpent) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(dashBoard.participants[index].totalPaid) + " " + dashBoard.expense.currency, dashBoard.showFormatedAmount(dashBoard.participants[index].balance) + " " + dashBoard.expense.currency, ""]);
}
dashBoard.addRowsToParticipantGrid(data, true);
}
this.inlineNavAction = function inlineNavAction(cellvalue, options, rowObject, isSavedRow) {
var rowid = options.rowId;
//alert("row Id"+rowid);
var ocl = "id='jEditButton_" + rowid + "' onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
var str = "