Skip to content

Commit 6ac0c83

Browse files
committed
Merged [2963] from adam@nostrum.com:
Meeting boxes now expand to reveal all text when users hover over them. Fixes ticket ietf-tools#602. - Legacy-Id: 2972 Note: SVN reference [2963] has been migrated to Git commit f95ab9c
1 parent c609c95 commit 6ac0c83

1 file changed

Lines changed: 103 additions & 2 deletions

File tree

ietf/templates/meeting/week-view.html

Lines changed: 103 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@
4444
'Friday'
4545
];
4646

47+
var divlist = [];
48+
4749
var lastfrag;
4850
var lastheight;
4951
var lastwidth;
5052

53+
setInterval("animate()",50);
54+
5155
function draw_calendar()
5256
{
5357
window.setTimeout("draw_calendar()",1000);
@@ -123,6 +127,9 @@
123127

124128
for (i = 0; i < num_days; i++)
125129
{
130+
//-----------------------------------------------------------------
131+
// Draw weekday name
132+
//-----------------------------------------------------------------
126133
var e = document.createElement("div");
127134

128135
e.style.border="solid";
@@ -154,6 +161,8 @@
154161
e.appendChild(div);
155162
body.appendChild(e);
156163

164+
//-----------------------------------------------------------------
165+
// Draw weekday column border
157166
//-----------------------------------------------------------------
158167
e = document.createElement("div");
159168

@@ -180,6 +189,11 @@
180189
body.appendChild(e);
181190
}
182191

192+
//-----------------------------------------------------------------
193+
// Draw a block for each meeting
194+
//-----------------------------------------------------------------
195+
var resize_func = function(div,t,l,w,h,to_fit)
196+
{ return function(){resize(div,t,l,w,h,to_fit);} }
183197

184198
for (i = 0; i < items.length; i++)
185199
{
@@ -194,8 +208,8 @@
194208
var sess_width = day_width / sessions[items[i].time_id];
195209
var sess_height = ((end_time - start_time) * minute_height)
196210
- 2 * (padding + border);
197-
var sess_left = ((items[i].day - start_day) * day_width
198-
+ sess_width * used[items[i].time_id]);
211+
var day_left = ((items[i].day - start_day) * day_width);
212+
var sess_left = day_left + sess_width * used[items[i].time_id];
199213
var sess_top = ((start_time - day_start) * minute_height) + header_height;
200214

201215
sess_width = sess_width - 2 * (padding + border);
@@ -230,6 +244,13 @@
230244
e.style.padding=padding;
231245
e.style.fontFamily="sans-serif";
232246
e.style.fontSize="8pt";
247+
e.id=i;
248+
249+
e.onmouseover=resize_func(e,sess_top,day_left,
250+
day_width-2*(padding+border),
251+
sess_height, true);
252+
253+
e.onmouseout=resize_func(e,sess_top,sess_left,sess_width,sess_height,false);
233254

234255
var div = document.createElement("div");
235256
div.appendChild(document.createTextNode(items[i].time));
@@ -252,8 +273,11 @@
252273
div.appendChild(italics);
253274

254275
e.appendChild(div);
276+
255277
body.appendChild(e);
256278

279+
e=undefined;
280+
257281
}
258282
}
259283

@@ -262,6 +286,83 @@
262286
lastfrag = window.location.hash;
263287
}
264288

289+
function resize(div,t2,l2,w2,h2,to_fit)
290+
{
291+
// Move the element to the front
292+
document.body.removeChild(div);
293+
document.body.appendChild(div);
294+
295+
div.t2 = t2;
296+
div.l2 = l2;
297+
div.w2 = w2;
298+
div.h2 = h2;
299+
div.to_fit = to_fit;
300+
div.percent = 0;
301+
divlist.push(div);
302+
}
303+
304+
function animate()
305+
{
306+
var i;
307+
for (i = divlist.length - 1; i >= 0; i--)
308+
{
309+
var div = divlist[i];
310+
if (div.percent < 100)
311+
{
312+
div.percent += 5;
313+
var t1 = parseFloat(div.style.top.replace("px",""));
314+
var l1 = parseFloat(div.style.left.replace("px",""));
315+
var w1 = parseFloat(div.style.width.replace("px",""));
316+
var h1 = parseFloat(div.style.height.replace("px",""));
317+
318+
div.style.top = wavg(t1,div.t2,div.percent);
319+
div.style.left = wavg(l1,div.l2,div.percent);
320+
div.style.width = wavg(w1,div.w2,div.percent);
321+
div.style.height = wavg(h1,div.h2,div.percent);
322+
323+
if (t1 == div.t2 && l1 == div.l2 &&
324+
w1 == div.w2 && h1 == div.h2) { div.percent = 100; }
325+
326+
}
327+
else
328+
{
329+
if (div.to_fit)
330+
{
331+
var tmp = div.style.height;
332+
div.style.removeProperty("height");
333+
if (div.h2 < div.clientHeight)
334+
{
335+
div.h2 = div.clientHeight;
336+
div.percent = 0;
337+
}
338+
else
339+
{
340+
divlist.remove(i);
341+
}
342+
div.style.height = tmp;
343+
}
344+
else
345+
{
346+
divlist.remove(i);
347+
}
348+
}
349+
}
350+
351+
}
352+
353+
function wavg(x1,x2,percent)
354+
{
355+
var res = x2 * (percent / 100) + x1 * ((100 - percent) / 100);
356+
return res;
357+
}
358+
359+
// Array Remove - By John Resig (MIT Licensed)
360+
Array.prototype.remove = function(from, to) {
361+
var rest = this.slice((to || from) + 1 || this.length);
362+
this.length = from < 0 ? this.length + from : from;
363+
return this.push.apply(this, rest);
364+
};
365+
265366
</script>
266367
</head>
267368
<body onload="draw_calendar()" onresize="draw_calendar()" id="body">

0 commit comments

Comments
 (0)