Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var jQT = new $.jQTouch({
- icon: 'jqtouch.png',
- statusBar: 'black-translucent',
- preloadImages: [
- 'lib/themes/jqt/img/chevron_white.png',
- 'lib/themes/jqt/img/bg_row_select.gif',
- 'lib/themes/jqt/img/back_button_clicked.png',
- 'lib/themes/jqt/img/button_clicked.png'
- ]
- });
- var sessionSecret;
- var guid;
- var dn;
- var username;
- var workitems=[];
- var requests=[];
- var comments=[];
- var currentItem;
- var creds;
- var showUserComments=true;
- var showSystemComments=true;
- var definitions=[];
- var currentDefinition;
- var categories=[];
- function doLogout(){
- sessionSecret=null;
- guid=null;
- dn=null;
- username=null;
- workitems=[];
- requests=[];
- currentitem=null;
- creds=null;
- jQT.goBack('#login');
- }
- function doLogin() {
- username=($("input[name=username]").val());
- password=($("input[name=password]").val());
- unenc=username+":"+password;
- creds=$.base64Encode(unenc);
- data="{ 'Authorization': '"+creds+"' }";
- $.ajax({
- type: "POST",
- contentType: "application/json; charset=utf-8",
- url: rootUrl+jsonUrl+'/AuthorizationSession',
- data: data,
- dataType: "json",
- success: function(msg) {
- sessionSecret=msg.SessionSecret;
- checkCreds();
- }
- });
- }
- function initUser(cn) {
- doAjax('initUser', {
- url: rootUrl+jsonUrl+"/identities",
- urlparms: "filter=CN%3D'"+cn+"'",
- success: function(msg) {
- guid=msg[0].GUID;
- dn=msg[0].DN;
- updateMain();
- }
- });
- }
- function doAction(code, value){
- payload="\"AvailableActions\": [{ \"Code\": \""+code+"\", "
- +"\"Value\": \""+value+"\"}]";
- dataitems='';
- comment=$('input[name=comment]').val();
- if(comment!=undefined) comment="";
- payload+= ", \"Comment\":\""+comment+"\"";
- payload+=", \"DataItems\": [";
- payload+="]";
- payload="{"+payload+"}";
- doAjax('doAction', {
- type: "PUT",
- url: rootUrl+currentItem.Link,
- processData: false,
- data: payload,
- success: function(msg) {
- updateMain();
- jQT.goBack();
- statusAndFade('WorkItem Forwarded');
- return;
- },
- });
- }
- function showItem(item) {
- // Do we have a custom renderer for this Item?
- $('#taskDetails').empty();
- doAjax('showItem', {
- url: rootUrl+workitems[item].Link,
- success: function(msg) {
- currentItem=msg;
- renderer=null;
- factory=new RendererFactory();
- for(i=0;i<renderers.length;i++){
- if(currentItem.Definition.DN==renderers[i].dn) renderer=factory.getRenderer(renderers[i].renderer);
- }
- if(renderer==null) renderer=new DefaultRenderer();
- renderer.render(currentItem.ActivityId, $('#taskdetails'));
- renderer.populate(currentItem);
- // this is to make the buttons always appear in the same order
- // there's only three, right? So this shouldn't take long
- for(actcode=0;actcode<2;actcode++) {
- for(i=0;i<currentItem.AvailableActions.length;i++){
- act=currentItem.AvailableActions[i];
- if(act.Code==actcode) $('#taskActions').append('<li><a href="#" onClick=\'doAction("'+act.Code+'", "'+act.Value+'")\'>'+act.Value+'</a></li>');
- }
- }
- getComments(currentItem.Process);
- }
- });
- jQT.goTo('#task', 'slide');
- }
- function submitNewRequest() {
- // Put items from for into DataItems
- dataitems=currentDefinition.DataItems;
- for(i=0;i<dataitems.length; i++) {
- dataitem=dataitems[i];
- if(dataitem.Name=='recipient') {
- // Do nothing? dataitem.Values=[{"Value": dn}];
- }
- else {
- if (!dataitem.MultiValue) {
- if (dataitem.Type == 'string') {
- alert('string '+dataitem.Name+'='+$('#newRequest_formlist #' + dataitem.Name).val());
- dataitem.Values = [{
- "Value": $('#newRequest_formlist #' + dataitem.Name).val()
- }];
- } else {
- alert('can\'t submit unknown dataItem type '+dataitem.Type);
- }
- }
- }
- }
- currentDefinition.Recipient=dn;
- doAjax('submitNewRequest', {
- url: rootUrl+jsonUrl+'/wf/definitions/'+currentDefinition.GUID,
- type: "POST",
- contentType: "application/json; charset=utf-8",
- data: JSON.stringify(currentDefinition),
- processData: false,
- // dataType: "json",
- success: function(msg) {
- jQT.goBack('#main');
- statusAndFade('New Request Submitted');
- updateMain();
- }
- });
- }
- function statusAndFade(msg) {
- id=''+new Date().getTime();
- $('.current').append("<div id='"+id+"' class='fadeout'>"+msg+"</div>");
- setTimeout( function() { $('#'+id).css('opacity', '0')}, 1000);
- }
- function getComments(process) {
- doAjax('getComments', {
- url: rootUrl+process.Link+"/comments",
- success: function(msg) {
- comments=msg;
- $('#commentsList').empty();
- if (comments!=undefined && comments!=null) {
- for(i=0; i<comments.length; i++) {
- comment=comments[i];
- commentContent='<li class=\"'+comment.Type+'\">'+comment.Comment+'<span class="subtext">'+comment.Identity.Value;
- commentDate=parseDate(comment.Created);
- date=' on '+commentDate.getDate()+'/'+commentDate.getMonth()+'/'+commentDate.getFullYear()+" at "+commentDate.getHours()+":"+commentDate.getMinutes();
- $('#commentsList').append(commentContent+date+'</span></li>');
- }
- }
- },
- error: function() {
- // do nothing
- }
- });
- }
- function makeWorkitem(idx) {
- timeleft=-1;
- if (workitems[idx].ExpiryDate != undefined) {
- timeoutDate = parseDate(workitems[idx].ExpiryDate);
- date = new Date();
- timeleft = timeoutDate.getTime() - date.getTime();
- daysleft = Math.floor(timeleft / 86400000);
- hoursleft = Math.floor((timeleft - (86400000 * daysleft)) / 3600000);
- minsleft = Math.floor((timeleft - ((86400000 * daysleft) + (hoursleft * 3600000))) / 60000);
- }
- item = "<li class='arrow' >" /*onClick='showItem("+idx+")'*/
- + "<a href='#' onClick='showItem("+idx+")'>";
- // add timeout if there is one
- if (timeleft != -1) {
- item += "<small>Time Left<br/>";
- if (daysleft > 0)
- item += daysleft + " days";
- else
- item += hoursleft + ":" + minsleft + " hours";
- item +="</small>";
- }
- if (workitems[idx].Definition.Value!='')
- item += workitems[idx].Definition.Value;
- else
- item +=workitems[idx].ActivityName;
- item +=" <span class=\"subtext\">Initiated by: "+workitems[idx].Initiator.Value+"<br/>Recipient: "
- +workitems[idx].Recipient.Value+"</span>"
- + "</a>"
- + "</li>";
- return item;
- }
- function updateMain() {
- getTasks();
- getRequests();
- }
- function getTasks(){
- doAjax('getTasks', {
- url: rootUrl+jsonUrl+"/wf/workitems",
- urlparms: "filter=addressee%3d"+dn.replace(/=/g, '%3d'),
- success: function(msg) {
- workitems=msg;
- if(workitems!=undefined) {
- $('#numTasks').text(workitems.length);
- $('#myTasks_taskList').empty();
- if (workitems.length == 0) {
- $('#myTasks_taskList').append('No outstanding Tasks');
- }
- else {
- sod=false;
- for (i = 0; i < workitems.length; i++) {
- if( (workitem[i].ActivityName).indexOf('SOD')!=-1 )
- sod=true;
- $('#myTasks_taskList').append(makeWorkitem(i));
- }
- if(sod) {
- alert('sod');
- $('#numTasks').html( '<img src="lib/Red_flag_icon.png" alt="flag"/>' + $('#numTasks').text() );
- }
- }
- }
- }
- });
- }
- function getRequests() {
- doAjax('getRequests', {
- url: rootUrl+jsonUrl+"/wf/workitems",
- urlparms: "filter=recipient%3d"+dn.replace(/=/g, '%3d'),
- success: function(msg) {
- requests=msg;
- $('#numRequests').text(requests.length);
- }
- });
- }
- function checkCreds() {
- doAjax('checkCreds', {
- url: rootUrl+jsonUrl+'/wf/definitions',
- success: function(msg) {
- initUser(username);
- definitions=msg;
- setCategories();
- jQT.goTo('#main', 'slide');
- },
- error: function (xhr, textStatus, errorThrown) {
- alert(xhr.status+' '+textStatus);
- }
- });
- }
- function setCategories() {
- categories=['All'];
- for(i=0;i<definitions.length;i++){
- // get category
- category=definitions[i].Category;
- found=false;
- for(j=0;j<categories.length;j++){
- if(categories[j]==category) {
- found=true;
- break;
- }
- }
- if(!found) {
- categories[categories.length]=category;
- }
- }
- $('#newRequest_categorylist').empty();
- for(i=0;i<categories.length;i++){
- $('#newRequest_categorylist').append('<li class="arrow"><a href="#" onclick="javascript:selectCategory('+i+');">'
- +categories[i]+'</a></li>');
- }
- }
- function selectCategory(x) {
- $('#newRequest_prdlist').empty();
- for(i=0;i<definitions.length; i++) {
- if(x==0 || definitions[i].Category==categories[x]) {
- $('#newRequest_prdlist').append('<li class="arrow"><a href="#" onclick="javascript:selectPRD('+i+')">'
- +definitions[i].Description+'</a></li>');
- }
- }
- jQT.goTo('#newRequest_prds', 'slide');
- }
- function selectPRD(prd) {
- //TODO: Do this better
- //Need to find some way of finding out what's on the 'Start' form
- definitionID=definitions[prd].GUID;
- doAjax('selectPRD', {
- url: rootUrl+jsonUrl+'/wf/definitions/'+definitionID,
- success: function(msg) {
- currentDefinition=msg;
- prepForm(msg);
- },
- });
- jQT.goTo('#newRequest_form', 'slide');
- }
- function prepForm(definition) {
- $('#newRequest_formlist').empty();
- for(i=0;i<definition.DataItems.length;i++) {
- item=definition.DataItems[i];
- if(item.Name!='recipient') {
- if(item.Type=='string') {
- addStringItem(item.Name, item.MultiValued);
- }
- else
- {
- addUnknownItem(item.Name, item.type);
- }
- }
- }
- }
- function addStringItem(name, mv) {
- if(mv) {
- addUnknownItem(name, 'MultiValued String');
- return;
- }
- $('#newRequest_formlist').append('<li><input type="string" name="'+name+'" id="'+name+'" placeholder="'+name+'"/></li>');
- }
- function addUnknownItem(name, type) {
- $('#newRequest_formlist').append('<li>Unknown type \''+type+'\' for '+name+'</li>');
- }
- function parseDate(sDate) {
- year=sDate.substr(0,4);
- month=sDate.substr(4,2);
- day=sDate.substr(6,2);
- hour=sDate.substr(8,2);
- minute=sDate.substr(10,2);
- date=new Date();
- date.setYear(Number(year));
- date.setMonth(Number(month));
- date.setDate(Number(day));
- date.setHours(Number(hour));
- date.setMinutes(Number(minute));
- return date;
- }
- function userCommentsClick(){
- showUserComments=$('#userComments').attr('checked');
- showHideComments('User', showUserComments);
- }
- function systemCommentsClick() {
- showSystemComments=$('#systemComments').attr('checked');
- showHideComments('System', showSystemComments);
- }
- function showHideComments(type, show){
- if(show) {
- $('#commentsList li.'+type).removeClass('hiddenComment');
- } else {
- $('#commentsList li.'+type).addClass('hiddenComment');
- }
- }
- function doAjax( caller, parameters ) {
- ajax={
- type: "GET",
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- beforeSend: function(xhr) {
- xhr.setRequestHeader("RESTSessionSecret", sessionSecret);
- },
- success: function(msg) {
- alert(caller+': success');
- },
- error: function (xhr, textStatus, errorThrown) {
- if(xhr.status==204) {
- ajax.success({});
- return;
- }
- alert(caller+' failed at '+ajax.url+' ('+errorThrown+') '+textStatus);
- alert(xhr.responseText);
- },
- complete: function() {
- $('.progress').remove();
- }
- };
- if(parameters!=undefined) $.extend( ajax, parameters);
- if( ajax.debug || (ajax.debug==undefined&&debug) ) ajax.url+=";debug";
- if(ajax.urlparms) ajax.url+="?"+ajax.urlparms;
- $('.current').append("<div class=\"progress\">Loading...</div>");
- $.ajax(ajax);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement