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 COMMENTS STATE_CHANGE_COMPLETED STATE_CHANGE_CANCELLED