Changeset 2944

Show
Ignore:
Timestamp:
07/02/10 22:26:24
Author:
johnsa
Message:

user client: rudimentary add attendees working in scheduling grid

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/attendees.xsl

    r2942 r2944  
    2626  <xsl:template match="attendees" mode="loadBwGrid"> 
    2727    <xsl:for-each select="attendee"> 
     28      <xsl:sort select="attendeeUri"/> 
    2829      {name:"<xsl:value-of select="cn"/>",uid:"<xsl:value-of select="attendeeUri"/>",role:"<xsl:value-of select="role"/>",status:"<xsl:value-of select="partstat"/>",type:"person"}<xsl:if test="position()!=last()">,</xsl:if> 
    2930    </xsl:for-each> 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/head.xsl

    r2942 r2944  
    185185        var bwGridAttees = new Array(<xsl:apply-templates select="/bedework/formElements/form/attendees" mode="loadBwGrid"/>); 
    186186        var bwGridOrganizer = "<xsl:value-of select="/bedework/formElements/form/organizer/organizerUri"/>"; 
    187         var bwGrid = new bwSchedulingGrid("bwFreeBusyDisplay",bwGridSDate,8,17,bwGridAttees,true,100,"<xsl:value-of select="$resourcesRoot"/>","<xsl:value-of select="$requestFreeBusy"/>",bwGridOrganizer); 
     187        var bwGrid = new bwSchedulingGrid("bwFreeBusyDisplay",bwGridSDate,8,17,bwGridAttees,true,100,"<xsl:value-of select="$resourcesRoot"/>","<xsl:value-of select="$requestFreeBusy"/>","<xsl:value-of select="$event-attendeesForEvent"/>",bwGridOrganizer); 
    188188         
    189189        // set the grid size 
  • trunk/deployment/webuser/webapp/resources/demoskins/themes/bedeworkTheme/javascript/bedeworkScheduling.js

    r2943 r2944  
    6161var bwFreeBusyDispTypeTentative = "TENTATIVE"; 
    6262var bwAddAttendeeDisp = "add attendee..."; 
     63var bwAttendeeExistsDisp = "attendee exists"; 
    6364 
    6465/* An attendee 
     
    177178 * organizerUri:    string - e.g. "someone@mysite.edu"  
    178179 */ 
    179 var bwSchedulingGrid = function(displayId, startRange, startHoursRange, endHoursRange, attendees, workday, zoom, browserResourcesRoot, fbUrlPrefix, organizerUri) { 
     180var bwSchedulingGrid = function(displayId, startRange, startHoursRange, endHoursRange, attendees, workday, zoom, browserResourcesRoot, fbUrlPrefix, attUrlPrefix, organizerUri) { 
    180181  this.displayId = displayId; 
    181182  this.startRange = new Date(startRange); 
     
    189190  this.resourcesRoot = browserResourcesRoot; 
    190191  this.fbUrlPrefix = fbUrlPrefix; 
     192  this.attUrlPrefix = attUrlPrefix; 
    191193  this.organizer = organizerUri; 
    192194   
     
    240242  }; 
    241243   
    242   // add/update attendees 
     244  // update attendees when loading an event - data comes from event XML 
    243245  /* examples: 
    244246     bwGrid.updateAttendee("Venerable Bede", "vbede@mysite.edu", "CHAIR", "ACCEPTED", "person"); 
     
    251253     
    252254    // check to see if attendee already exists 
    253     for (var i=0; i < this.attendees.length; i++) { 
    254       if (newAttendee.uid == this.attendees[i].uid) { 
     255    for (var i=0; i < bwGrid.attendees.length; i++) { 
     256      if (newAttendee.uid == bwGrid.attendees[i].uid) { 
    255257        attendeeIsNew = false; 
    256258        break; 
     
    259261     
    260262    if (attendeeIsNew) { 
    261       this.attendees.push(newAttendee);  
    262       this.requestFreeBusy();       
     263      // add the attendee to the local array 
     264      bwGrid.attendees.push(newAttendee);  
     265      bwGrid.requestFreeBusy();       
     266    } 
     267  }; 
     268   
     269  // add attendee in the bwGrid 
     270  this.addAttendee = function(name, uid, role, status, type) { 
     271    var attendeeIsNew = true; 
     272     
     273    // display the processing message 
     274    $("#bwSchedProcessingMsg").show(); 
     275     
     276    // check to see if attendee already exists 
     277    for (var i=0; i < bwGrid.attendees.length; i++) { 
     278      if (uid == bwGrid.attendees[i].uid) { 
     279        attendeeIsNew = false; 
     280        alert(bwAttendeeExistsDisp); 
     281        // hide the processing message 
     282        $("#bwSchedProcessingMsg").hide(); 
     283        break; 
     284      }  
     285    } 
     286     
     287    if (attendeeIsNew) { 
     288      // try to add attendee to the back end 
     289      $.ajax({ 
     290        type: "POST", 
     291        url: bwGrid.attUrlPrefix, 
     292        data: "uri=" + uid + "&attendee=true&submit=add", 
     293        success: function(){ 
     294          // add the attendee to the local array 
     295          // this data must be completed by the ajax call (coming) 
     296          var newAttendee = new bwAttendee(name, uid, role, status, type); 
     297          bwGrid.attendees.push(newAttendee);  
     298          bwGrid.requestFreeBusy(); 
     299        }, 
     300        error: function(msg) { 
     301          // there was a problem 
     302          alert(msg.statusText); 
     303        } 
     304      }); 
    263305    } 
    264306     
     
    267309  this.removeAttendee = function(index) { 
    268310    var uid = bwGrid.attendees[index].uid; 
     311     
     312    // display the processing message 
     313    $("#bwSchedProcessingMsg").show(); 
    269314     
    270315    // try to remove the attendee from the back end 
    271316    $.ajax({ 
    272317      type: "POST", 
    273       url: "http://localhost:8080/ucal/event/attendeesForEvent.do"
     318      url: bwGrid.attUrlPrefix
    274319      data: "uri=" + uid + "&attendee=true&delete=true", 
    275320      success: function(){ 
     
    714759       
    715760      // create the add attendee form  
    716       var addAttendeeHtml = '<td class="status"></td><td class="role"></td><td class="addAttendee" colspan="2">'; 
    717       addAttendeeHtml += '<input type="text" value="' + bwAddAttendeeDisp +'" name="attendee" id="bwAddAttendee" class="pending" size="14"/>'; 
     761      var addAttendeeHtml = '<td class="addAttendee" colspan="4">'; 
     762      addAttendeeHtml += '<input type="text" value="' + bwAddAttendeeDisp +'" name="attendee" id="bwAddAttendee" class="pending" size="30"/>'; 
    718763      addAttendeeHtml += '<span id="bwAddAttendeeAdd" class="invisible">add</span>'; 
    719764      addAttendeeHtml += '<span id="bwAddAttendeeAdvanced">advanced</span>'; 
    720       //addAttendeeHtml += '<div id="bwAddAttendeeFields">'; 
     765      addAttendeeHtml += '<div id="bwAddAttendeeFields">'; 
     766      addAttendeeHtml += ''; 
    721767      //addAttendeeHtml += '<select><option>person</option><option>group</option><option>resource</option></select>'; 
    722768      //addAttendeeHtml += '<input type="checkbox"/>personal <input type="checkbox"/>public'; 
    723       //addAttendeeHtml += '</div>'; 
     769      addAttendeeHtml += '</div>'; 
    724770      addAttendeeHtml += '</td><td class="fbBoundry"></td>'; 
    725771       
     
    942988      $("#bwScheduleTable #bwAddAttendeeAdd").click ( 
    943989        function () { 
    944           alert("adding " + $("#bwAddAttendee").val()); 
     990          var uid = $("#bwAddAttendee").val(); 
     991          var role = bwAttendeeRoleRequired; 
     992          // these are preliminary values - will get more from backend after ajax call 
     993          bwGrid.addAttendee("",uid,role,"","person"); 
    945994        } 
    946995      );