--- ../git/horde/kronolith/js/goto.js 2011-10-06 09:28:20.000000000 +0200 +++ kronolith/js/goto.js 2011-11-14 17:26:55.000000000 +0100 @@ -37,6 +37,10 @@ case 'week': url = this.weekurl; break; + + case 'workweek': + url = this.workweekurl; + break; case 'year': url = this.yearurl; @@ -65,4 +69,5 @@ document.observe('Horde_Calendar:select', KronolithGoto.calendarSelect.bindAsEventListener(KronolithGoto, 'day')); document.observe('Horde_Calendar:selectMonth', KronolithGoto.calendarSelect.bindAsEventListener(KronolithGoto, 'month')); document.observe('Horde_Calendar:selectWeek', KronolithGoto.calendarSelect.bindAsEventListener(KronolithGoto, 'week')); +document.observe('Horde_Calendar:selectWorkweek', KronolithGoto.calendarSelect.bindAsEventListener(KronolithGoto, 'workweek')); document.observe('Horde_Calendar:selectYear', KronolithGoto.calendarSelect.bindAsEventListener(KronolithGoto, 'year')); --- ../git/horde/kronolith/js/kronolith.js 2011-11-14 09:10:14.000000000 +0100 +++ kronolith/js/kronolith.js 2011-11-14 17:47:40.000000000 +0100 @@ -334,6 +334,7 @@ switch (loc) { case 'day': case 'week': + case 'workweek': case 'month': case 'year': case 'agenda': @@ -346,6 +347,7 @@ case 'day': case 'agenda': case 'week': + case 'workweek': case 'month': case 'year': var date = locParts.shift(); @@ -360,6 +362,7 @@ ((loc == 'year') || (loc == 'month' && date.getMonth() == this.date.getMonth()) || (loc == 'week' && date.getRealWeek() == this.date.getRealWeek()) || + (loc == 'workweek' && date.getRealWeek() == this.date.getRealWeek()) || ((loc == 'day' || loc == 'agenda') && date.dateString() == this.date.dateString()))) { this.addHistory(fullloc); this.loadNextView(); @@ -376,7 +379,7 @@ duration: this.effectDur, queue: 'end', afterFinish: function() { - if (loc == 'week' || loc == 'day') { + if (loc == 'week' || loc == 'workweek' || loc == 'day') { this.calculateRowSizes(loc + 'Sizes', 'kronolithView' + locCap); if ($('kronolithTimeMarker')) { this.positionTimeMarker(); @@ -686,6 +689,7 @@ hourRow = hourRow.next('tr'); } day = dates[0].clone(); + for (i = 0; i < 7; i++) { dateString = day.dateString(); this.allDays['kronolithAllDay' + dateString] = td.down('div'); @@ -710,6 +714,63 @@ } break; + case 'workweek': + this.dayEvents = []; + this.dayGroups = []; + this.allDayEvents = []; + this.allDays = {}; + this.eventsWeek = {}; + var div = $('kronolithEventsWorkweek').down('div'), + th = $('kronolithViewWorkweekHead').down('.kronolithWeekDay'), + td = $('kronolithViewWorkweekHead').down('tbody td').next('td'), + hourRow = $('kronolithViewWorkweekBody').down('tr'), + dates = this.viewDates(date, view), + today = Date.today(), + day, dateString, i, hourCol; + + $('kronolithViewWorkweek') + .down('caption span') + .update(this.setTitle(dates[0].toString('d') + ' - ' + dates[1].toString('d'))); + + for (i = 0; i < 24; i++) { + day = dates[0].clone(); + hourCol = hourRow.down('td').next('td'); + while (hourCol) { + hourCol.removeClassName('kronolithToday'); + if (day.equals(today)) { + hourCol.addClassName('kronolithToday'); + } + hourCol = hourCol.next('td'); + day.next().day(); + } + hourRow = hourRow.next('tr'); + } + day = dates[0].clone(); + + for (i = 0; i < 5; i++) { + dateString = day.dateString(); + this.allDays['kronolithAllDay' + dateString] = td.down('div'); + this.eventsWeek['kronolithEventsWorkweek' + dateString] = div; + div.store('date', dateString) + .writeAttribute('id', 'kronolithEventsWorkweek' + dateString); + th.store('date', dateString) + .down('span').update(day.toString('dddd, d')); + td.removeClassName('kronolithToday'); + this.allDays['kronolithAllDay' + dateString] + .writeAttribute('id', 'kronolithAllDay' + dateString) + .store('date', dateString); + if (day.equals(today)) { + td.addClassName('kronolithToday'); + this.addTimeMarker('kronolithEventsWorkweek' + dateString); + } + new Drop(td.down('div')); + div = div.next('div'); + th = th.next('td'); + td = td.next('td'); + day.next().day(); + } + break; + case 'month': var tbody = $('kronolithViewMonthBody'), dates = this.viewDates(date, view), @@ -786,7 +847,7 @@ */ closeView: function(loc) { - $w('Day Week Month Year Tasks Agenda').each(function(a) { + $w('Day Workweek Week Month Year Tasks Agenda').each(function(a) { a = $('kronolithNav' + a); if (a) { a.removeClassName('on'); @@ -999,6 +1060,18 @@ return; } break; + case 'workweek': + if ($('kronolithTimeMarker').up().retrieve('date') != today.dateString()) { + var newContainer = this.eventsWeek['kronolithEventsWorkweek' + today.dateString()]; + $('kronolithTimeMarker').remove(); + if (newContainer) { + this.addTimeMarker(newContainer); + } else { + this.timeMarker.stop(); + } + return; + } + break; default: $('kronolithTimeMarker').remove(); this.timeMarker.stop(); @@ -1077,6 +1150,7 @@ if (view && ((view == 'month' && this.date.between(dates[0], dates[1])) || (view == 'week' && day.between(week[0], week[1])) || + (view == 'workweek' && day.between(week[0], week[1])) || (view == 'day' && day.equals(this.date)) || (view == 'agenda' && !day.isBefore(date) && day.isBefore(date7)))) { td.addClassName('kronolithSelected'); @@ -1229,7 +1303,7 @@ loadCalendar: function(type, calendar) { if (Kronolith.conf.calendars[type][calendar].show && - $w('day week month year agenda').include(this.view)) { + $w('day workweek week month year agenda').include(this.view)) { var dates = this.viewDates(this.date, this.view); this.deleteCache([type, calendar]); this.loadEvents(dates[0], dates[1], this.view, [[type, calendar]]); @@ -1305,6 +1379,7 @@ case 'year': case 'week': + case 'workweek': case 'day': if (Object.isUndefined(this.ecache.get(type)) || Object.isUndefined(this.ecache.get(type).get(calendar))) { @@ -1507,6 +1582,7 @@ if (this.view == 'day' || this.view == 'week' || + this.view == 'workweek' || this.view == 'month' || this.view == 'agenda' || (this.view == 'year' && !$H(this.eventsLoading).size())) { @@ -1533,6 +1609,7 @@ switch (view) { case 'day': case 'week': + case 'workweek': // The day and week views require the view to be completely // loaded, to correctly calculate the dimensions. if (this.viewLoading.size() || this.view != view) { @@ -1558,20 +1635,34 @@ date = day.dateString(); switch (view) { case 'day': + this.dayEvents = []; + this.dayGroups = []; + this.allDayEvents = []; + $$('.kronolithEvent').invoke('remove'); + break; + case 'week': this.dayEvents = []; this.dayGroups = []; this.allDayEvents = []; - if (view == 'day') { - $$('.kronolithEvent').invoke('remove'); - } else { - this.eventsWeek['kronolithEventsWeek' + date] - .select('.kronolithEvent') - .invoke('remove'); - this.allDays['kronolithAllDay' + date] - .childElements() - .invoke('remove'); - } + this.eventsWeek['kronolithEventsWeek' + date] + .select('.kronolithEvent') + .invoke('remove'); + this.allDays['kronolithAllDay' + date] + .childElements() + .invoke('remove'); + break; + + case 'workweek': + this.dayEvents = []; + this.dayGroups = []; + this.allDayEvents = []; + this.eventsWeek['kronolithEventsWorkweek' + date] + .select('.kronolithEvent') + .invoke('remove'); + this.allDays['kronolithAllDay' + date] + .childElements() + .invoke('remove'); break; case 'month': @@ -1793,6 +1884,7 @@ switch (view) { case 'day': case 'week': + case 'workweek': var storage = view + 'Sizes', div = _createElement(event), margin = view == 'day' ? 1 : 3, @@ -1804,6 +1896,38 @@ if (event.value.al) { if (view == 'day') { $('kronolithViewDay').down('.kronolithAllDayContainer').insert(div.setStyle(style)); + } else if (view == 'workweek') { + var allDay = this.allDays['kronolithAllDay' + date], + existing = allDay.childElements(), + weekHead = $('kronolithViewWorkweekHead'); + if (existing.size() == 3) { + if (existing[2].className != 'kronolithMore') { + existing[2].purge(); + existing[2].remove(); + allDay.insert({ bottom: new Element('span', { className: 'kronolithMore' }).store('date', date).insert(Kronolith.text.more) }); + } + } else { + allDay.insert(div.setStyle(style)); + if (event.value.pe) { + div.addClassName('kronolithEditable'); + var layout = div.getLayout(), + minLeft = weekHead.down('.kronolithFirstCol').getWidth() + this[storage].spacing + (parseInt(div.getStyle('marginLeft'), 10) || 0), + minTop = weekHead.down('thead').getHeight() + this[storage].spacing + (parseInt(div.getStyle('marginTop'), 10) || 0), + maxLeft = weekHead.getWidth() - layout.get('margin-box-width'), + maxTop = weekHead.down('thead').getHeight() + weekHead.down('.kronolithAllDay').getHeight(), + opts = { + threshold: 5, + parentElement: function() { + return $('kronolithViewWorkweek').down('.kronolithViewHead'); + }, + snap: function(x, y) { + return [Math.min(Math.max(x, minLeft), maxLeft), + Math.min(Math.max(y, minTop), maxTop - div.getHeight())]; + } + }; + new Drag(event.value.nodeId, opts); + } + } } else { var allDay = this.allDays['kronolithAllDay' + date], existing = allDay.childElements(), @@ -1843,7 +1967,7 @@ var midnight = this.parseDate(date), resizable = event.value.pe && (Object.isUndefined(event.value.vl) || event.value.vl), innerDiv = new Element('div', { className: 'kronolithEventInfo' }), - parentElement = view == 'day' ? $('kronolithEventsDay') : this.eventsWeek['kronolithEventsWeek' + date], + parentElement = view == 'day' ? $('kronolithEventsDay') : view == 'workweek' ? this.eventsWeek['kronolithEventsWorkweek' + date] : this.eventsWeek['kronolithEventsWeek' + date], minHeight = 0, draggerTop, draggerBottom; if (event.value.fi) { @@ -1971,12 +2095,18 @@ maxLeft = this.eventsWeek['kronolithEventsWeek' + dates[1].dateString()].offsetLeft - this.eventsWeek['kronolithEventsWeek' + date].offsetLeft; stepX = (maxLeft - minLeft) / 6; } + if (view == 'workweek') { + var dates = this.viewDates(midnight, view); + minLeft = this.eventsWeek['kronolithEventsWorkweek' + dates[0].dateString()].offsetLeft - this.eventsWeek['kronolithEventsWorkweek' + date].offsetLeft; + maxLeft = this.eventsWeek['kronolithEventsWorkweek' + dates[1].dateString()].offsetLeft - this.eventsWeek['kronolithEventsWorkweek' + date].offsetLeft; + stepX = (maxLeft - minLeft) / 4; + } var d = new Drag(div, { threshold: 5, nodrop: true, parentElement: function() { return parentElement; }, snap: function(x, y) { - x = (view == 'week') + x = ((view == 'week') || (view == 'workweek')) ? Math.max(minLeft, stepX * ((Math.min(maxLeft, x - (x < 0 ? stepX : 0)) + stepX / 2) / stepX | 0)) : 0; y = Math.max(0, step * (Math.min(maxDiv, y - this.scrollTop) / step | 0)); @@ -2124,6 +2254,7 @@ { switch (this.view) { case 'week': + case 'workweek': case 'day': dates.each(function(date) { date = this.parseDate(date); @@ -3653,6 +3784,11 @@ start.moveToBeginOfWeek(Kronolith.conf.week_start); end.moveToEndOfWeek(Kronolith.conf.week_start); break; + case 'workweek': + start.moveToBeginOfWeek(Kronolith.conf.week_start); + end.moveToEndOfWeek(Kronolith.conf.week_start); + end.add(-2).days(); + break; case 'month': start.setDate(1); start.moveToBeginOfWeek(Kronolith.conf.week_start); @@ -4221,6 +4357,7 @@ if ((this.view == 'month' && Kronolith.conf.max_events) || this.view == 'week' || + this.view == 'workweek' || this.view == 'day') { days = this.findEventDays(cal, eventid); } @@ -4330,6 +4467,7 @@ case 'kronolithNavDay': case 'kronolithNavWeek': + case 'kronolithNavWorkweek': case 'kronolithNavMonth': case 'kronolithNavYear': case 'kronolithNavAgenda': @@ -4494,7 +4632,7 @@ case 'kronolithDateChoice': case 'kronolithGotoToday': var view = this.view; - if (!$w('day week month year agenda').include(view)) { + if (!$w('day workweek week month year agenda').include(view)) { view = Kronolith.conf.login_view; } this.go(view + ':' + new Date().dateString()); @@ -4511,6 +4649,7 @@ newDate.add(offset).day(); break; case 'week': + case 'workweek': newDate.add(offset).week(); break; case 'month': @@ -4856,6 +4995,7 @@ if ((this.view == 'month' && Kronolith.conf.max_events) || this.view == 'week' || + this.view == 'workweek' || this.view == 'day') { days = this.findEventDays(cal, eventid); } @@ -4897,10 +5037,14 @@ elt.up().addClassName('kronolithSelected'); DragDrop.Drags.getDrag(elt).top = elt.cumulativeOffset().top; } else if (elt.hasClassName('kronolithEditable')) { - elt.addClassName('kronolithSelected').setStyle({ left: 0, width: this.view == 'week' ? '90%' : '95%', zIndex: 1 }); + elt.addClassName('kronolithSelected').setStyle({ left: 0, width: (this.view == 'week' || this.view == 'workweek') ? '90%' : '95%', zIndex: 1 }); } - this.scrollTop = $(this.view == 'day' ? 'kronolithViewDay' : 'kronolithViewWeek').down('.kronolithViewBody').scrollTop; + switch (this.view) { + case 'day': this.scrollTop = $('kronolithViewDay').down('.kronolithViewBody').scrollTop; break; + case 'week': this.scrollTop = $('kronolithViewWeek').down('.kronolithViewBody').scrollTop; break; + case 'workweek': this.scrollTop = $('kronolithViewWorkweek').down('.kronolithViewBody').scrollTop; break; + } this.scrollLast = this.scrollTop; }, @@ -4918,11 +5062,11 @@ if (elt.hasClassName('kronolithDragger')) { // Resizing the event. - var div = elt.up(), - top = drag.ghost.cumulativeOffset().top, - scrollTop = $(this.view == 'day' ? 'kronolithViewDay' : 'kronolithViewWeek').down('.kronolithViewBody').scrollTop, - offset = 0, - height; + switch (this.view) { + case 'day': var div = elt.up(), top = drag.ghost.cumulativeOffset().top, scrollTop = $('kronolithViewDay').down('.kronolithViewBody').scrollTop, offset = 0, height; break; + case 'week': var div = elt.up(), top = drag.ghost.cumulativeOffset().top, scrollTop = $('kronolithViewWeek').down('.kronolithViewBody').scrollTop, offset = 0, height; break; + case 'workweek': var div = elt.up(), top = drag.ghost.cumulativeOffset().top, scrollTop = $('kronolithViewWorkweek').down('.kronolithViewBody').scrollTop, offset = 0, height; break; + } // Check if view has scrolled since last call. if (scrollTop != this.scrollLast) { @@ -4954,7 +5098,7 @@ if (Object.isUndefined(drag.innerDiv)) { drag.innerDiv = drag.ghost.down('.kronolithEventInfo'); } - if (this.view == 'week') { + if ((this.view == 'week') || (this.view == 'workweek')) { var offsetX = Math.round(drag.ghost.offsetLeft / drag.stepX); event.offsetDays = offsetX; this.calculateEventDates(event, storage, step, drag.ghost.offsetTop, drag.divHeight, event.start.clone().addDays(offsetX), event.end.clone().addDays(offsetX)); @@ -4964,7 +5108,7 @@ } event.offsetTop = drag.ghost.offsetTop - drag.startTop; drag.innerDiv.update('(' + event.start.toString(Kronolith.conf.time_format) + ' - ' + event.end.toString(Kronolith.conf.time_format) + ') ' + event.t.escapeHTML()); - elt.clonePosition(drag.ghost, { offsetLeft: this.view == 'week' ? -2 : 0 }); + elt.clonePosition(drag.ghost, { offsetLeft: (this.view == 'week' || this.view == 'workweek') ? -2 : 0 }); } }, --- ../git/horde/kronolith/templates/index/index.inc 2011-10-10 08:55:23.000000000 +0200 +++ kronolith/templates/index/index.inc 2011-11-14 17:26:55.000000000 +0100 @@ -48,13 +48,14 @@ <div id="kronolithNav"> <ul> <li><a id="kronolithNavDay" accesskey="1"><span><?php echo _("Day") ?></span></a></li> - <li><a id="kronolithNavWeek" accesskey="2"><span><?php echo _("Week") ?></span></a></li> - <li><a id="kronolithNavMonth" accesskey="3"><span><?php echo _("Month") ?></span></a></li> - <li><a id="kronolithNavYear" accesskey="4"><span><?php echo _("Year") ?></span></a></li> + <li><a id="kronolithNavWorkweek" accesskey="2"><span><?php echo _("Week") ?></span></a></li> + <li><a id="kronolithNavWeek" accesskey="3"><span><?php echo _("Week") ?></span></a></li> + <li><a id="kronolithNavMonth" accesskey="4"><span><?php echo _("Month") ?></span></a></li> + <li><a id="kronolithNavYear" accesskey="5"><span><?php echo _("Year") ?></span></a></li> <?php if (Kronolith::hasApiPermission('tasks')): ?> - <li><a id="kronolithNavTasks" accesskey="5"><span><?php echo _("Tasks") ?></span></a></li> + <li><a id="kronolithNavTasks" accesskey="6"><span><?php echo _("Tasks") ?></span></a></li> <?php endif; ?> - <li><a id="kronolithNavAgenda" accesskey="<?php echo Kronolith::hasApiPermission('tasks') ? 6 : 5 ?>"><span><?php echo _("Agenda") ?></span></a></li> + <li><a id="kronolithNavAgenda" accesskey="<?php echo Kronolith::hasApiPermission('tasks') ? 7 : 6 ?>"><span><?php echo _("Agenda") ?></span></a></li> </ul> </div> </div> @@ -174,6 +175,7 @@ <div id="kronolithLoading" style="display:none"></div> <?php require dirname(__FILE__) . '/month.inc'; +require dirname(__FILE__) . '/workweek.inc'; require dirname(__FILE__) . '/week.inc'; require dirname(__FILE__) . '/day.inc'; require dirname(__FILE__) . '/year.inc'; --- ../git/horde/kronolith/templates/index/workweek.inc 1970-01-01 01:00:00.000000000 +0100 +++ kronolith/templates/index/workweek.inc 2011-09-22 10:31:36.000000000 +0200 @@ -0,0 +1,71 @@ +<div id="kronolithViewWorkweek" style="display:none"> + +<table class="kronolithView kronolithViewDay"> + <caption> + <span> </span> + <span class="kronolithNavigation"> + <a class="kronolithPrev" title="<?php echo _("Previous") ?>"><</a> + <a class="kronolithGotoToday"><?php echo Horde::highlightAccessKey(_("_Today"), $todayAccessKey) ?></a> + <a class="kronolithNext" title="<?php echo _("Next") ?>">></a> + <a class="kronolithPrint" onclick="print()" title="<?php echo _("Print") ?>"><span><?php echo _("Print") ?></span></a> + </span> + </caption> +</table> + +<div class="kronolithViewHead"> +<table id="kronolithViewWorkweekHead" class="kronolithView kronolithViewDay"> + <thead><tr> + <td class="kronolithFirstCol"><div id="kronolithLoadingworkweek" class="kronolithLoading"></div></td> + <td class="kronolithWeekDay"><span> </span></td> + <td class="kronolithWeekDay"><span> </span></td> + <td class="kronolithWeekDay"><span> </span></td> + <td class="kronolithWeekDay"><span> </span></td> + <td class="kronolithWeekDay"><span> </span></td> + </tr></thead> + <tbody> + <tr class="kronolithAllDay"> + <td class="kronolithFirstCol"><span><?php echo _("All day") ?></span></td> + <td><div class="kronolithAllDayContainer"> + </div></td> + <td><div class="kronolithAllDayContainer"> + </div></td> + <td><div class="kronolithAllDayContainer"> + </div></td> + <td><div class="kronolithAllDayContainer"> + </div></td> + <td><div class="kronolithAllDayContainer"> + </div></td> + </tr> + </tbody> +</table> +</div> + +<div class="kronolithViewBody"> +<div class="kronolithViewBodyContainer"> + +<table class="kronolithView kronolithViewDay"> + <tbody id="kronolithViewWorkweekBody"> + <?php for ($i = 0; $i < 24; $i++): ?> + <tr<?php if ($i < 9 || $i > 19) echo ' class="kronolithNight"' ?>> + <td class="kronolithFirstCol"><span><?php echo $ampm ? ($i % 12 ? ($i % 12): 12) : $i ?>:00</span></td> + <td> </td> + <td> </td> + <td> </td> + <td> </td> + <td> </td> + </tr> + <?php endfor; ?> + </tbody> +</table> +<div id="kronolithEventsWorkweek"> + <div class="kronolithEventsWorkweek"></div> + <div class="kronolithEventsWorkweek"></div> + <div class="kronolithEventsWorkweek"></div> + <div class="kronolithEventsWorkweek"></div> + <div class="kronolithEventsWorkweek"></div> +</div> + +</div> +</div> + +</div> --- ../git/horde/kronolith/themes/default/screen.css 2011-11-14 09:10:14.000000000 +0100 +++ kronolith/themes/default/screen.css 2011-11-14 17:28:33.000000000 +0100 @@ -116,6 +116,13 @@ padding: 3px; font-size: 90%; } +.workweek-eventbox { + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + padding: 3px; + font-size: 90%; +} .day-eventbox { -moz-border-radius: 10px; -webkit-border-radius: 10px; @@ -146,7 +153,7 @@ text-decoration: none; background: #e9e9e9; } -.week { +.week, .workweek { float: left; font-size: 90%; padding-left: 2px; @@ -384,7 +391,7 @@ #kronolithLoadingday, #kronolithLoadingmonth { top: 22px; } -#kronolithLoadingweek { +#kronolithLoadingweek, #kronolithLoadingworkweek { top: 0; } #kronolithLoadingtasks, #kronolithLoadingagenda { @@ -488,7 +495,7 @@ #kronolithNavDay { background-image: url("graphics/dayview.png"); } -#kronolithNavWeek { +#kronolithNavWeek, #kronolithNavWorkweek { background-image: url("graphics/weekview.png"); } #kronolithNavMonth { @@ -1181,7 +1188,7 @@ bottom: 3px; left: 22px; } -#kronolithEventsWeek { +#kronolithEventsWeek, #kronolithEventsWorkweek { position: absolute; top: 1px; right: 0; @@ -1194,7 +1201,13 @@ height: 100%; width: 14.285714%; } -.kronolithEventsWeek div.kronolithEvent { +.kronolithEventsWorkweek { + position: relative; + float: left; + height: 100%; + width: 20%; +} +.kronolithEventsWeek div.kronolithEvent, .kronolithEventsWorkweek div.kronolithEvent { margin: 0 1px; } @@ -1454,7 +1467,9 @@ float: left; margin: 0 2px 2px 0; } -#kronolithViewDay div.kronolithEvent, #kronolithViewWeek div.kronolithEvent { +#kronolithViewDay div.kronolithEvent, +#kronolithViewWeek div.kronolithEvent, +#kronolithViewWorkweek div.kronolithEvent { position: absolute; opacity: .8; filter: alpha(opacity=80); @@ -1464,7 +1479,8 @@ } #kronolithViewMonth div.kronolithEvent, #kronolithViewDay .kronolithViewHead div.kronolithEvent, -#kronolithViewWeek .kronolithViewHead div.kronolithEvent { +#kronolithViewWeek .kronolithViewHead div.kronolithEvent, +#kronolithViewWorkweek .kronolithViewHead div.kronolithEvent { position: relative; width: auto; line-height: 15px; @@ -1479,13 +1495,15 @@ font-size: 90%; } #kronolithViewDay .kronolithViewHead div.kronolithEvent, -#kronolithViewWeek .kronolithViewHead div.kronolithEvent { +#kronolithViewWeek .kronolithViewHead div.kronolithEvent, +#kronolithViewWorkweek .kronolithViewHead div.kronolithEvent { white-space: nowrap; } #kronolithViewDay .kronolithViewHead div.kronolithEvent { float: left; } -#kronolithViewWeek .kronolithViewHead div.kronolithEvent { +#kronolithViewWeek .kronolithViewHead div.kronolithEvent, +#kronolithViewWorkweek .kronolithViewHead div.kronolithEvent { margin-right: 10%; } div.kronolithEvent .kronolithDragger {