var INDIVIDUAL_SUBSCRIBE = "INDIVIDUAL_SUBSCRIBE";
var INDIVIDUAL_UNSUBSCRIBE = "INDIVIDUAL_UNSUBSCRIBE";
var GLOBAL_SUBSCRIBE = "GLOBAL_SUBSCRIBE";
var GLOBAL_UNSUBSCRIBE = "GLOBAL_UNSUBSCRIBE";
dojo.require("dijit.layout.ContentPane");
_F_config.enableLog = false;
_THIS_.addEventListener("fragment.load", "_THIS_init");
_THIS_.addEventListener("fragment.retrieve.after", "_THIS_retrieveAfter");
//create the subscriptions object. This is an associative object
//index = event type, value = true|false
var _THIS_subscriptionObj = new Object();
function _THIS_init() {
_THIS_setSubscriptions();
//decide whether to check the parent notification box or not.
var notification = $('_THIS_notification');
notification.checked=hts_checkStateChanges($('_THIS_taskOptions_advanced'),'_THIS_');
_THIS_setNotificationEnableState();
}
function _THIS_retrieveAfter(evt) {
if (evt.target.id == "_THIS_") {
//get the selected task, JSONify it and raise the event
_THIS_raiseTaskInfo();
}
var taskId = _THIS_.transientState['taskid'];
if (taskId && taskId != '') {
//This is to hide the waiting div and show the correct div (task details where comment tab is visible)
_THIS_.raiseEvent('cognos.hts.showTaskViewer');
}
var noteTaskId = _THIS_.transientState['notificationtaskid'];
if (noteTaskId && noteTaskId != '') {
//This is to hide the waiting div and show the correct div (task details where comment tab is visible)
THIS_.raiseEvent('cognos.hts.showNotificationTaskViewer');
}
_THIS_setNotificationEnableState();
}
function _THIS_setNotificationEnableState() {
//disable the UI if the task status is complete, failed or exited
var status = '';
var _THIS_utils = new hts_utils(_THIS_);
//_THIS_utils.setUIState($('_THIS_taskOptions_advanced'),status);
//tha above commented out line works for IE but not firefox - I suspect firefox is correct, so
//disable the check boxes individually (can improve - e.g. send wrapper to a function that digs out checkboxes)
_THIS_utils.setUIState($('_THIS_sub_startDeadline'),status);
_THIS_utils.setUIState($('_THIS_sub_completionDeadline'),status);
_THIS_utils.setUIState($('_THIS_notification'),status);
_THIS_utils.setUIState($('_THIS_sub_stateChange_started'),status);
_THIS_utils.setUIState($('_THIS_sub_stateChange_ownerChanged'),status);
_THIS_utils.setUIState($('_THIS_sub_stateChange_comments'),status);
_THIS_utils.setUIState($('_THIS_sub_stateChange_completed'),status);
_THIS_utils.setUIState($('_THIS_sub_stateChange_cancelled'),status);
}
function _THIS_setSubscriptions() {
//create the default subscription object
_THIS_subscriptionObj.events = new Object();
_THIS_subscriptionObj.events['START_DEADLINE']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['COMPLETE_DEADLINE']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['STATE_CHANGE_STARTED']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['STATE_CHANGE_OWNER_CHANGED']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['STATE_CHANGE_COMPLETED']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['COMMENTS']=INDIVIDUAL_SUBSCRIBE;
_THIS_subscriptionObj.events['STATE_CHANGE_CANCELLED']=INDIVIDUAL_SUBSCRIBE;
var eventx, statex;
//get the task unsubscriptions and set into the subscriptions object
//unsubscribe any that we have to, based on the users preferences
eventx = '';
statex = '';
_THIS_subscriptionObj.events[eventx]=statex;
//loop through the subscriptions and set the correct value into each checkbox
for (eventx in _THIS_subscriptionObj.events) {
var cb = _THIS_getCheckboxByValue(eventx);
if (cb) {
var state = _THIS_subscriptionObj.events[eventx];
var checked = state ? state.indexOf("UNSUBSCRIBE") == -1 : true;
cb.checked=checked;
}
}
}
/*
* a subscription has changed. Fire the 'cognos.hts.changed_subscriptions' event
* Example payload : action=changeSubscription&events={"STATE_CHANGE_FAILED":INDIVIDUAL_SUBSCRIBE}
*/
function _THIS_subscriptionsChanged() {
var _THIS_params = _THIS_getSubscriptionParams();
//pass the changed params to those fragments interested
_THIS_.raiseEvent('cognos.hts.changed_subscriptions',_THIS_params);
}
function _THIS_getSubscriptionParams() {
var checkboxes = _THIS_getSubscriptionCheckboxes();
var params;
var events = new Object();
for (var i=0;i<checkboxes.length;i++) {
var cb = checkboxes[i];
//only select if the subscription event has changed
if (_THIS_subscriptionObj.events[cb.value] != cb.checked) {
//we are setting the subscriptions here
if (cb.checked) {
events[cb.value]=INDIVIDUAL_SUBSCRIBE;
}else{
events[cb.value]=INDIVIDUAL_UNSUBSCRIBE;
}
update = true;
}
}
if (update) {
params = "action=changeSubscription&events=";
params += dojo.toJson(events);
}
return params;
}
function _THIS_getSubscriptionCheckboxes() {
var node = $('_THIS_taskOptions_advanced');
var subscriptionCheckboxes = new Array();
var checkboxes = new Object();
var checkboxes = node.getElementsByTagName('INPUT');//_F_DOM.selectNodes(node,"//input[@type='checkbox']");
var count=0;
for (var i=0;i<checkboxes.length;i++) {
if (checkboxes[i].type =='checkbox' && checkboxes[i].id.match("^"+'_THIS_sub_')=='_THIS_sub_' ) {
subscriptionCheckboxes[count]=checkboxes[i];
count++;
}
}
return subscriptionCheckboxes;
}
function _THIS_getCheckboxByValue(value) {
var cb;
var checkboxes = _THIS_getSubscriptionCheckboxes();
for (var i=0;i<checkboxes.length;i++) {
if (checkboxes[i].value == value) {
cb = checkboxes[i];
break;
}
}
return cb;
}
START_DEADLINE
COMPLETE_DEADLINE
STATE_CHANGE
STATE_CHANGE_STARTED
STATE_CHANGE_OWNER_CHANGED
STATE_CHANGE_COMPLETED
STATE_CHANGE_CANCELLED