From 29d78bf10f491b3431a07bd04fbb02e5ad048639 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 26 Oct 2006 16:43:50 +0000 Subject: [PATCH] Monotone-Parent: c033959aa88812d1a781175679569b9f48e74d12 Monotone-Revision: d055fa1fca7ca1d2c2be96916837e95fdddcac10 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-10-26T16:43:50 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/SchedulerUI.css | 46 +++++++++----- .../UIxFreeBusyUserSelector.js | 62 ++++++++++++++++--- 2 files changed, 85 insertions(+), 23 deletions(-) diff --git a/UI/WebServerResources/SchedulerUI.css b/UI/WebServerResources/SchedulerUI.css index ec6fad840..7b1a0aaa2 100644 --- a/UI/WebServerResources/SchedulerUI.css +++ b/UI/WebServerResources/SchedulerUI.css @@ -476,20 +476,24 @@ DIV.freeBusyView -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow; -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow; } +TABLE.freeBusy TD, +TABLE.freeBusy TH +{ padding: 0px; + margin: 0px; + border: 0px; } + TABLE.freeBusy TH.attendees, TABLE.freeBusy TD.attendees { position: absolute; padding: 0px .5em; - margin: 0px; + border: 0px !important; background: #dbdad5 !important; width: 10em; overflow: hidden; - left: 1em; - border-bottom: 0px none; - border-right: 0px none; } + left: 1em; } TABLE.freeBusy TD.attendees INPUT -{ width: 100%; } +{ width: 95%; } TABLE.freeBusy TR.freeBusyHeader2 TH { font-weight: normal; } @@ -502,18 +506,18 @@ TABLE.freeBusy TR.freeBusyHeader3 TH background: #fff; border-collapse: collapse; } -TABLE.freeBusy TR.freeBusyHeader3 TH -{ border: 0px; - padding: 0px; - margin: 0px; - border-bottom: 1px solid #cecbff; } - TABLE.freeBusy TR.freeBusyHeader2 TH -{ width: 5em; } +{ width: 6em; } + +TABLE.freeBusy TR.freeBusyHeader3 TH +{ border-bottom: 1px solid #cecbff; } TABLE.freeBusy TR.attendeeModel { display: none; } +TABLE.freeBusy TR.futureAttendee TD +{ border-right: none; } + TABLE.freeBusy TD { border-bottom: 1px solid #cecbff; border-right: 1px solid #cecbff; @@ -521,19 +525,29 @@ TABLE.freeBusy TD background: #fff; } TABLE.freeBusy TD.noFreeBusy -{ background: #bbb; +{ background: #559; border-right: 0px; } SPAN.freeBusyZoneElement { display: block; float: left; - width: 25%; } + width: 25%; + margin: 0px; + padding: 0px; + border: 0px; } TABLE.freeBusy TR.freeBusyHeader3 SPAN.freeBusyZoneElement { height: .25em; } TABLE.freeBusy TD SPAN.freeBusyZoneElement -{ height: 100%; } +{ height: 100%; + background-color: #8ca6bd; } + +TABLE.freeBusy TH SPAN[class~="freeBusyZoneElement"].busy +{ background-color: #c55 !important; } SPAN[class~="freeBusyZoneElement"].busy -{ background-color: #c55; } +{ background-color: #5a6b79 !important; } + +SPAN[class~="freeBusyZoneElement"].maybe-busy +{ background-color: #adc0d0 !important; } diff --git a/UI/WebServerResources/UIxFreeBusyUserSelector.js b/UI/WebServerResources/UIxFreeBusyUserSelector.js index 716234471..c65fc6cfe 100644 --- a/UI/WebServerResources/UIxFreeBusyUserSelector.js +++ b/UI/WebServerResources/UIxFreeBusyUserSelector.js @@ -4,6 +4,8 @@ var running = false; var address; var delay = 500; var requestField; +var awaitingFreeBusyRequests = new Array(); +var freeBusySelectorId; function onContactKeyUp(node, event) { @@ -140,12 +142,13 @@ function checkAttendee(node) displayFreeBusyForNode(node); node.hasfreebusy = true; } + resetAttendeesValue(); } function displayFreeBusyForNode(node) { + var nodes = node.parentNode.parentNode.cells; if (node.uid) { - var nodes = node.parentNode.parentNode.cells; for (var i = 1; i < nodes.length; i++) { nodes[i].removeClassName("noFreeBusy"); nodes[i].innerHTML = ('' @@ -160,12 +163,12 @@ function displayFreeBusyForNode(node) var sd = startDayAsShortString(); var ed = endDayAsShortString(); var urlstr = ( UserFolderURL + "../" + node.uid + "/freebusy.ifb/ajaxRead?" - + "sday=" + sd + "&eday=" + ed); - document.contactFreeBusyAjaxRequest = triggerAjaxRequest(urlstr, - updateFreeBusyData, - node); + + "sday=" + sd + "&eday=" + ed + "&additional=2" ); + document.contactFreeBusyAjaxRequest + = triggerAjaxRequest(urlstr, + updateFreeBusyData, + node); } else { - var nodes = node.parentNode.parentNode.cells; for (var i = 1; i < nodes.length; i++) { nodes[i].addClassName("noFreeBusy"); nodes[i].innerHTML = ''; @@ -185,7 +188,10 @@ function setSlot(tds, nbr, status) { var i = (days * 11 + tdnbr - 7); var td = tds[i]; var spans = td.childNodesWithTag("span"); - spans[spannbr].addClassName("busy"); + if (status == '2') + spans[spannbr].addClassName("maybe-busy"); + else + spans[spannbr].addClassName("busy"); } } @@ -202,5 +208,47 @@ function updateFreeBusyData(http) } } document.contactFreeBusyAjaxRequest = null; + if (awaitingFreeBusyRequests.length > 0) + displayFreeBusyForNode(awaitingFreeBusyRequests.shift()); } } + +function resetAttendeesValue() +{ + var table = $("attendeesView").childNodesWithTag("div")[0].childNodesWithTag("table")[0]; + var inputs = table.getElementsByTagName("input"); + var uids = new Array(); + for (var i = 0; i < inputs.length - 2; i++) { + var currentInput = inputs[i]; + var uid = currentInput.getAttribute("uid"); + if (uid) { + currentInput.uid = uid; + currentInput.setAttribute("uid", null); + } + uids.push(currentInput.uid); + } + var input = $(freeBusySelectorId); + input.value = uids.join(","); +} + +function initializeFreeBusyUserSelector(selectorId) +{ + freeBusySelectorId = selectorId; + resetAttendeesValue(); + resetAllFreeBusys(); +} + +function resetAllFreeBusys() +{ + var table = $("attendeesView").childNodesWithTag("div")[0].childNodesWithTag("table")[0]; + var inputs = table.getElementsByTagName("input"); + + for (var i = 0; i < inputs.length - 2; i++) { + var currentInput = inputs[i]; + currentInput.hasfreebusy = false; + log ("input: " + currentInput.uid); + awaitingFreeBusyRequests.push(currentInput); + } + if (awaitingFreeBusyRequests.length > 0) + displayFreeBusyForNode(awaitingFreeBusyRequests.shift()); +}