/* ===========================================================
* TeamResourcesBrowser.js v0.0.1
* ===========================================================
* Copyright 2015 Prevu
* ========================================================== */
(function ($) {
"use strict"; // jshint ;_;
/* TeamResourcesBrowser CLASS DEFINITION
* ====================== */
var TeamResourcesBrowser = function (element, options) {
this.init(element, options);
};
TeamResourcesBrowser.prototype = {
constructor: TeamResourcesBrowser,
init: function (element, options) {
var plugin = this;
this.options = options;
this.$container = $(element);
this.$dataset = {};
this.$dataset.data = options.data ? options.data : null;
this.$controls = {};
//this.renderInitial();
this.validateIncomingParams();
if (this.$dataset.data) {
this.renderTable();
}
if (this.options.initCallback && (typeof this.options.initCallback === 'function')) {
this.options.initCallback(this.$dataset);
}
},
validateIncomingParams: function () {
if (!this.options.teamId) {
throw "Team Id must be set";
}
if (this.options.allowCreateItem && (!this.options.createItemUrl || (this.options.createItemUrl.length < 1))) {
throw "Create new item mode was set to ON, but create item URL was not specified";
}
},
renderTable: function () {
var html;
if (this.options.allowCreateItem && this.options.createItemButtonPlaceholder && this.options.allowEditItem) {
var createItemHref = this.options.createItemUrl + "?teamId=" + this.options.teamId;
html = "";
$('#' + this.options.createItemButtonPlaceholder).html(html);
}
html = "";
if (!this.$dataset.data || this.$dataset.data.length < 1) {
html += ("No resources was found in the team");
$('#teamNonProjectTimeBtn').hide();
$('#teamNonProjectTimeBtn').data('isHidden', true);
}
else {
if (!$('#teamNonProjectTimeBtn').hasClass("collapsed")) {
$('#teamNonProjectTimeBtn').show();
$('#teamNonProjectTimeBtn').data('isHidden', false);
}
html += "
" +
"" +
"| Name | " +
"Expenditure Category | " +
" | " +
"
" +
"{0}" +
"" +
"
";
var tableBodyHtml = "";
var viewItemHrefTemplate = null;
var editItemHrefTemplate = null;
var deleteItemHrefTemplate = null;
var changeItemExpCatHrefTemplate = null;
if (this.options.viewItemUrl && (this.options.viewItemUrl.length > 0))
viewItemHrefTemplate = this.options.viewItemUrl + "?resourceId={0}&teamId=" + this.options.teamId;
if (this.options.allowEditItem &&
this.options.editItemUrl && (this.options.editItemUrl.length > 0) &&
this.options.editItemModalId && (this.options.editItemModalId.length > 0))
editItemHrefTemplate = this.options.editItemUrl + "?resourceId={0}";
if (this.options.deleteItemUrl && (this.options.deleteItemUrl.length > 0) && this.options.allowEditItem)
deleteItemHrefTemplate = this.options.deleteItemUrl + "?resourceId={0}&teamId=" + this.options.teamId;
if (this.options.allowChangeExpCat &&
this.options.changeExpCatItemUrl && (this.options.changeExpCatItemUrl.length > 0) &&
this.options.changeExpCatModalId && (this.options.changeExpCatModalId.length > 0))
changeItemExpCatHrefTemplate = this.options.changeExpCatItemUrl + "?resourceId={0}";
for (var index = 0; index < this.$dataset.data.length; index++) {
var currentResource = this.$dataset.data[index];
var currentItemHtml = "";
if (viewItemHrefTemplate) {
var viewItemHref = viewItemHrefTemplate.replace("{0}", currentResource.Id);
currentItemHtml += "| " + currentResource.Name + " | ";
}
else {
currentItemHtml += "" + currentResource.Name + " | ";
}
currentItemHtml +=
"" + currentResource.ExpenditureCategory + " | " +
"";
if (editItemHrefTemplate) {
var editItemHref = editItemHrefTemplate.replace("{0}", currentResource.Id);
currentItemHtml += "" +
"";
}
if (deleteItemHrefTemplate) {
var deleteItemHref = deleteItemHrefTemplate.replace("{0}", currentResource.Id);
currentItemHtml += "" +
"";
}
if (changeItemExpCatHrefTemplate) {
var expChangeForResourceAllowed =
(!currentResource.ResourceScenarioAllocationsInfo || !currentResource.ResourceScenarioAllocationsInfo.HasAllocations) &&
(!currentResource.ResourceActualsInfo || !currentResource.ResourceActualsInfo.HasAllocations) &&
(!currentResource.ResourceMixAllocationsInfo || !currentResource.ResourceMixAllocationsInfo.HasAllocations);
if (expChangeForResourceAllowed) {
var changeItemExpCatHref = changeItemExpCatHrefTemplate.replace("{0}", currentResource.Id);
currentItemHtml += "" +
"";
}
}
currentItemHtml += " |
";
tableBodyHtml += currentItemHtml;
}
}
html = html.replace("{0}", tableBodyHtml);
this.$container.html(html);
},
setData: function (data) {
if (data && data.resources) {
this.$dataset.data = data.resources;
}
else {
this.$dataset.data = null;
}
this.renderTable();
},
destroy: function () {
var e = $.Event('destroy');
this.$container.trigger(e);
if (e.isDefaultPrevented()) return;
this.$container.removeData('teamResourcesBrowser');
}
};
/* TEAM RESOURCES BROWSER PLUGIN DEFINITION
* ======================= */
$.fn.teamResourcesBrowser = function (option, args) {
return this.each(function () {
var $this = $(this),
data = $this.data('teamResourcesBrowser'),
options = $.extend({}, $.fn.teamResourcesBrowser.defaults, $this.data(), typeof option == 'object' && option);
if (!data) $this.data('teamResourcesBrowser', (data = new TeamResourcesBrowser(this, options)));
if (typeof option == 'string')
data[option].apply(data, [].concat(args));
});
};
$.fn.teamResourcesBrowser.defaults = {
teamId: null,
createItemButtonPlaceholder: null,
allowCreateItem: false,
allowEditItem: false,
allowDeleteItem: false,
allowChangeExpCat: false,
createItemUrl: null,
viewItemUrl: null,
editItemUrl: null,
deleteItemUrl: null,
data: null,
initCallback: null,
editItemModalId: null,
changeExpCatModalId: null
};
$.fn.teamResourcesBrowser.Constructor = TeamResourcesBrowser;
}(jQuery));
function onEditItemClick(element, editItemModalId) {
var buttonid = $(element).data("buttonid");
var resourceId = $(element).data("resourceid");
if (!CheckLock(buttonid, 'PeopleResource', resourceId)) {
console.error("CheckLock - false. PeopleResource: " + resourceId);
return false;
}
var editUrl = $(element).data("editurl");
$('#editPeopleResourceForm').load(editUrl, function () {
$.validator.unobtrusive.parse("#editPeopleResourceForm form");
$('#' + editItemModalId).on('show.bs.modal', function (e) {
if ($(e.target).attr('id') === editItemModalId) {
if (initPeopleResourceEditForm && (typeof initPeopleResourceEditForm === 'function')) {
initPeopleResourceEditForm();
}
}
});
$('#' + editItemModalId).modal('show');
});
}
function onAddItemClick(element, editItemModalId) {
var url = $(element).data("additemurl");
$('#editPeopleResourceForm').load(url, function () {
$.validator.unobtrusive.parse("#editPeopleResourceForm form");
$('#' + editItemModalId).on('show.bs.modal', function (e) {
if ($(e.target).attr('id') === editItemModalId) {
if (initPeopleResourceEditForm && (typeof initPeopleResourceEditForm === 'function')) {
initPeopleResourceEditForm();
}
}
});
$('#editPeopleResourceForm form').data("url", url);
$('#' + editItemModalId).modal('show');
});
}
function onChangeItemExpCatClick(element, changeExpCatModalId) {
var buttonid = $(element).data("buttonid");
var resourceId = $(element).data("resourceid");
if (!CheckLock(buttonid, 'PeopleResource', resourceId)) {
console.error("CheckLock - false. PeopleResource: " + resourceId);
return false;
}
var editUrl = $(element).data("editurl");
$('#peopleResourceChangeExpCatForm').load(editUrl, function () {
$.validator.unobtrusive.parse("#peopleResourceChangeExpCatForm form");
$('#' + changeExpCatModalId).on('show.bs.modal', function (e) {
if ($(e.target).attr('id') === changeExpCatModalId) {
if (initPeopleResourceChangeExpCatForm && (typeof initPeopleResourceChangeExpCatForm === 'function')) {
initPeopleResourceChangeExpCatForm();
}
}
});
$('#' + changeExpCatModalId).modal('show');
});
}